第3章——VerilogHDL使用简介_第1页
第3章——VerilogHDL使用简介_第2页
第3章——VerilogHDL使用简介_第3页
第3章——VerilogHDL使用简介_第4页
第3章——VerilogHDL使用简介_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Shandy IME of Tsinghua Univ. 10/11/2004数字大规模集成电路讲义数字大规模集成电路讲义Shandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog HDL? Verilog HDL vs. VHDL Verilog HDL语法 设计描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004提纲提纲什么是Verilog HDL? Verilog HDL vs. VHDL Verilog HDL语法 设计

2、描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004什么是什么是Verilog HDL?Verilog HDL是一种硬件描述语言,用于从算法级、结构级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于开关级电路(例如pmos/nmos)、简单的门(例如库单元描述)和完整的复杂电子数字系统之间(例如CPU)Shandy IME of Tsinghua Univ. 2004什么是什么是Verilog HDL? (cont.)Verilo

3、g HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。提供了编程语言接口(PLI),通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。支持多个设计层次的混合层次建模Shandy IME of Tsinghua Univ. 2004更重要的是更重要的是.Verilog HDL语言与C语言很相似,从C语言中继承了多种操作符和结构,其核心子集非常易于学习和使用而这对大多数建模应用来说这已经足够。Shandy IME of Tsinghua Univ. 2004Verilog HDL的历史的历史

4、最初是于1 9 8 3年由Gateway Design Automation 公司(后被Cadence Design Systems公司收购)为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言,由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。 Verilog HDL语言于1 9 9 0年被推向公众领域。Open Verilog International(O V I)是促进Ve r i l o g发展的国际性组织,1 9 9 2年, O V I决定致力于推广Verilog OVI标准成为I E E E标准。这一努力最后获得

5、成功, Verilog 语言于1 9 9 5年成为I E E E标准,称为IEEE Std1 3 6 41 9 9 5。完整的标准在Ve r i l o g硬件描述语言参考手册中有详细描述。Shandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog HDL? Verilog HDL vs. VHDL Verilog HDL语法 设计描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004Verilog HDL vs. VHDL Ve

6、rilog HDL 和VHDL 都是用于逻辑设计的硬件描述语言并且都已成为IEEE 标准。VHDL 是在1987 年成为IEEE 标准,Verilog HDL 则在1995 年才正式成为IEEE 标准。 Verilog HDL 和VHDL 共同的特点: 能形式化地抽象表示电路的行为和结构 支持逻辑设计中层次与范围的描述,可借用高级语言的精巧结构来简化电路行为的描述 具有电路仿真与验证机制以保证设计的正确性 支持电路描述由高层到低层的综合转换 硬件描述与实现工艺无关,有关工艺参数可通过语言提供的属性包括进去便于文档管理易于理解和设计重用。Shandy IME of Tsinghua Univ.

7、2004Verilog HDL vs. VHDL (cont.) Verilog HDL 和VHDL 又各有其自己的特点: Verilog HDL 拥有更广泛的设计群体,成熟的资源也远比VHDL 丰富 Verilog HDL 是一种非常容易掌握的硬件描述语言(类C语言),而掌握VHDL 设计技术就相对比较困难(类Ada语言)。 一般认为Verilog HDL 在系统级抽象方面比VHDL 略差一些而在门级开关电路描述方面比VHDL 强得多 大学、研究机构更多使用VHDL,而工业界更多使用Verilog HDLShandy IME of Tsinghua Univ. 2004提纲提纲 什么是Ver

8、ilog HDL? Verilog HDL vs. VHDL Verilog HDL语法 设计描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004/ sampel_reg.v / sampel_reg.v 数据采样模块数据采样模块module sample_reg(clk, rst, din, dout);module sample_reg(clk, rst, din, dout);input clk, rst;input clk, rst;input 3:0 di

9、n;input 3:0 din;output 3:0 dout;output 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout = data;assign dout = data;alwaysalways (posedge clk or negedge rst) (posedge clk or negedge rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;end else beginend else begin data = din; data , =, =相等操作

10、符:=, !=, =, !=逻辑操作符:&, |, !按位操作符:, &, |, , , 归约操作符:&, &, |, |, , 移位操作符:条件操作符:exp ? exp1 : exp2;连接和复制操作符:exp1, exp2, repexpassign bus3:0 = bus0, bus1, bus2, bus3; /反转assign bus3:0 = 2bus0, 2bus3; /扩展Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 过程结构过程结构initial语句:只执行一次,并在模拟开始时执行,即在0

11、时刻开始执行。通常用于初始化(例如赋给寄存器一个初始值)、波形产生和仿真控制always语句:也是在0时刻开始执行,但是在整个仿真期间被反复多次执行initial块和always块内部的语句顺序执行一个模块中可以包含任意多个initial或always语句。这些语句相互并行执行,即这些语句的执行顺序与其在模块中的顺序无关。一个initial语句或always语句的执行产生一个单独的控制流注意#的时延控制用法initialinitialbeginbeginreset = 0;reset = 0;a = 4b0101a = 4b0101b = 4b1010;b = 4b1010;#20#20 re

12、set = 1; reset = 1;#50#50 $display(“sum is %d”, sum); $display(“sum is %d”, sum);$finish;$finish;endendalways (always (posedgeposedge clk or clk or negedgenegedge reset) reset)beginbeginif(!reset) beginif(!reset) begindata = 0;data = 0;end else beginend else begindata = din;data = din;endendendendSh

13、andy IME of Tsinghua Univ. 2004Verilog HDL语法语法 表达式表达式 线网类型使用assign语句赋值,称为连续赋值 寄存器使用“=”或”=“赋值,并只能用于initial、always、task和function块内!注意两者区别:a = b; /执行到此语句后a的值马上更新为b,称为阻塞性赋值a 10) beginresult = 123;end else if(a0) beginroll = roll 1;cnt = cnt - 1;endfor(cnt=0; cnt 1;endShandy IME of Tsinghua Univ. 2004Ver

14、ilog HDL语法语法 函数与任务函数与任务Verilog HDL还定义了函数(function)和任务(task),可以用于完成复杂的行为描述函数只能有一个输出,而任务可以具有多个输出;两者都可以有多个输入函数和任务必须定义在module内Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 顺序执行与并行执行顺序执行与并行执行initial, always, function, task块内部的语句是顺序执行的,所有begin . end之间的语句也是顺序执行的同一个模块内部的所有initial, always块都是并行执行的fork . jo

15、in块之间的语句是并行执行的(略)Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 编译指令编译指令以(反引号)开始的某些标识符是编译器指令。在Verilog 语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。完整的标准编译器指令如下:define, undef define, undef 宏定义,类似于宏定义,类似于#define #undef#define #undef,例如:,例如: define MAX_BUS_SIZE define MAX_BUS_SIZE3232. . . .

16、 .reg MAX_BUS_SIZE-1:0 AddReg; reg MAX_BUS_SIZE-1:0 AddReg; 注意引用时要加注意引用时要加 ifdef, else, endif ifdef, else, endif 类似于类似于#ifdef #else #endif#ifdef #else #endifinclude include 类似于类似于#include#include,用于包含另外一个,用于包含另外一个verilogverilog文件文件timescale timescale resetalldefault_nettypeunconnected_drive, nouncon

17、nected_drivecelldefine, endcelldefineShandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 编译指令编译指令(cont.) timescale timescale 定义时延单位和精度定义时延单位和精度在Verilog HDL 模型中,所有时延都用单位时间表述。使用该指令将时间单位与实际时间相关联。指令格式为: timescale timescale time_unit / time_precision time_unit 和 time_precision由值1、10、和100以及单位s、ms、us、ns、ps和fs

18、组成。例如:timescale timescale 1ns / 100ps表示时延单位为1ns, 时延精度为100ps。timescale 编译器指令在模块说明外部出现, 并且影响后面所有的时延值。Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 系统函数系统函数以$字符开始的标识符表示系统任务或系统函数。任务提供了一种封装行为的机制,可在设计的不同部分被调用。任务可以返回0个或多个值。函数除只能返回一个值以外与任务相同。此外,函数在0时刻执行,即不允许延迟,而任务可以带有延迟。$display $monitor $strobe $time $s

19、time $realtime $printtimescale $timeformat $stop $finish $fopen $fclose $fdisplay $fwrite $fmonitor $fstrobe $readmemb $readmemh$rtoi $itor $realtobits $bittoreal$random例如:$display display (“hello world!”); /打印输出hello world$time /time /该系统任务返回当前的模拟时间。Shandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog

20、HDL? Verilog HDL vs. VHDL Verilog HDL语法设计描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次算法(行为)级描述结构级描述寄存器传输级(RTL)描述开关级(门级)描述混合层次描述Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 - 算法(行为)级描述算法(行为)级描述 主要用于快速验证算法的正确性 不一定可以综合成实际电路结构实例:n位整数除法器, D = A/

21、B, R = A%Bmodule div (A, B, D, R);parameter n = 32;input n-1:0 A, B;output n-1:0 D, R;reg n-1:0 D, R;always (A or B)begin D = 0; for(R=A; RB; R = R - B) begin D = D + 1; endendendmoduleShandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 结构级描述结构级描述 更接近电路的实际结构 电路的层次化描述 类似于电路框图module HA(A , B , S , C)module

22、HA(A , B , S , C);input A, B;input A, B;output S, C;output S, C;parameter AND_DELAY = 1, XOR_DELAY = 2;parameter AND_DELAY = 1, XOR_DELAY = 2;assign #XOR_DELAYS = A Bassign #XOR_DELAYS = A B;assign #AND_DELAYC = A & Bassign #AND_DELAYC = A & B;endmoduleendmodulemoduleFA(P, Q, Cin, Sum, Cout

23、) ;moduleFA(P, Q, Cin, Sum, Cout ) ;input P, Q, Cin;input P, Q, Cin;output Sum, Cout;output Sum, Cout;parameter OR_DELAY = 1;parameter OR_DELAY = 1;wire S1, C1, C2;wire S1, C1, C2;/两个模块实例语句两个模块实例语句HA h1 (P, Q, S1, C1); /HA h1 (P, Q, S1, C1); /通过位置关联。通过位置关联。HA h2 ( .A(C i n), .S(S u m), .B(S 1), .C(C

24、 2); /HA h2 ( .A(C i n), .S(S u m), .B(S 1), .C(C 2); /通过端口通过端口与信号的名字关联。与信号的名字关联。/门实例语句:门实例语句:or #OR_DELAYO1 (Cout, C1, C2) ;or #OR_DELAYO1 (Cout, C1, C2) ;endmoduleendmodule使用两个半加器模使用两个半加器模块构造的全加器块构造的全加器Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 - RTL级描述级描述 贴近实际电路结构的描述 描述的细节到寄存器内容传输级别 可以精确描述电路的工

25、作原理、执行顺序 细化到寄存器级别的结构描述也就是RTL级描述,并无绝对划分标准module sample_reg(clk, rst, din, dout);input clk, rst;input 3:0 din;output 3:0 dout;reg 3:0 data;assign dout = data;always (posedge clk or negedge rst)beginif(!rst) begin data = 4b0;end else begin data = din;endendendmoduleShandy IME of Tsinghua Univ. 2004设计描述

26、层次设计描述层次 开关级(门级)描述开关级(门级)描述 完整描述了电路的细节 最底层的电路描述 可以描述pmos/nmosmodule MUX4x1(Z, D0, D1, D2, D3, S0, S1);output Z;input D0, D1, D2, D3, S0, S1;and u0 (T0, D0, S0bar, S1bar) , u1(T1, D1, S0bar, S1), u2 (T2, D2, S0, S1bar), u3 (T3, D3, S0, S1) ,not u4 (S0bar, S0), u5 (S1bar, S1);or u6 (Z, T0, T1, T2, T3)

27、;endmodule4路选路选1多选器多选器Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 混合层次描述混合层次描述 以上各种层次描述方式可以任意混合使用,因此一个设计可能某些模块使用了行为描述的方式,而另外一些模块使用了开关级描述 在实际设计中,功能复杂的模块可以先用行为级或结构级的描述来表示,而对功能简单的模块则使用RTL级的描述,以尽早完成系统的仿真和算法的验证;在设计的过程中逐步细化复杂模块,替代原来的行为描述,直至设计可以综合并满足设计指标Shandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog HD

28、L? Verilog HDL vs. VHDL Verilog HDL语法 设计描述层次设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004设计的测试与验证设计的测试与验证 一般需要编写测试文件对设计进行仿真测试,称为testbench testbench一般采用行为级描述,产生一定的输入激励,得到设计的输出响应,并检查输出结果的正确性 在规范的模块设计中,每一个模块都需要编写独立的测试文件对模块进行充分的测试 注意选择合适的输入激励,保证测试能够覆盖典型输入和特殊输入Sha

29、ndy IME of Tsinghua Univ. 2004/ sampel_reg.v / sampel_reg.v 数据采样模块数据采样模块module sample_reg(clk, rst, din, dout);module sample_reg(clk, rst, din, dout);input clk, rst;input clk, rst;input 3:0 din;input 3:0 din;output 3:0 dout;output 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout = data;assign dout = d

30、ata;alwaysalways (posedge clk or negedge rst) (posedge clk or negedge rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;end else beginend else begin data = din; data , =, , , , &(按位与), |(按位或), (连接运算)等位操作运算符 ,=,assign等赋值语句 always块Shandy IME of Tsinghua Univ. 2004不可综合的语法举例不可综合的语法举例

31、 initial块 forever块 for, while, repeat, force, release, task, enable, disable一般不可综合(注:某些特定情况下for和while等可能可以综合) 系统函数如$display等 除法,求模运算,实数运算等复杂算术运算一般不可综合(注:可能极少数综合器有库可以引用,可以综合) #延时赋值语句一般综合时会被忽略 . .Shandy IME of Tsinghua Univ. 2004可综合的设计举例可综合的设计举例(1)module sample_reg(clk, rst, din, dout);input clk, rst;

32、input 3:0 din;output 3:0 dout;reg 3:0 data;assign dout = data;always (posedge clk or negedge rst)beginif(!rst) begin data = 4b0;end else begin data = din;endendendmodule这是一个采样锁存模块,在时钟上升沿锁存输入数据din到寄存器data(四位)中,dout连到data寄存器的输出。 data对应的是带复位端的寄存器,其时钟信号为clk(上升沿有效),复位信号为rst(低电平有效)clkrstdin3:0dout3:0data3

33、:0DQRSTCKShandy IME of Tsinghua Univ. 2004可综合的设计举例可综合的设计举例(2)module sample_latch(clk, rst, din, dout);input clk, rst;input 3:0 din;output 3:0 dout;reg 3:0 data;assign dout = data;always (clk or rst)beginif(!rst) begin data = 4b0;else if(clk) begin data = din;endendendmodule这也是一个采样锁存模块,但是data对应的不是寄存器

34、(register)而是锁存器(latch)clkrstdin3:0dout3:0data3:0DQRSTENAShandy IME of Tsinghua Univ. 2004可综合的设计举例可综合的设计举例(3)module mux4(sel, a, b, c, d, r);input 1:0 sel;input a, b, c, d;output r;reg r;always (sel or a or b or c or d)begincase(sel) 2b00 : r = a; 2b01 : r = b; 2b10 : r = c; 2b11 : r = d;endcaseenden

35、dmodule这是一个四选一的多选器,虽然用了always块,但是对应的电路结构是一个纯组合逻辑sel1:0abcdrShandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog HDL? Verilog HDL vs. VHDL Verilog HDL语法 设计描述层次 设计的测试与验证 可综合的设计有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004有限状态机(有限状态机(FSM) 状态机是绝大部分控制电路的核心结构 有限状态机可以使用always语句和case语句描

36、述,状态保存在寄存器中,根据寄存器不同的值(状态)执行不同的操作,case语句的多个分支则代表了不同状态的行为 moore有限状态机:输出仅依赖于内部状态,跟输入无关 mealy有限状态机:输出不仅决定于内部状态,还跟外部输入有关Shandy IME of Tsinghua Univ. 2004moore有限状态机实例有限状态机实例module moore_fsm(clk, reset, A, Z, finish);module moore_fsm(clk, reset, A, Z, finish);parameter STATE_INIT = 0;parameter STATE_INIT =

37、 0;parameter STATE_ST1 = 1;parameter STATE_ST1 = 1;parameter STATE_ST2 = 2;parameter STATE_ST2 = 2;parameter STATE_FINISH = 3;parameter STATE_FINISH = 3;input clk, reset;input clk, reset;input A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;reg 1:0 state;reg 1:0 state;reg 1:0 Z;reg 1

38、:0 Z;reg finishreg finishalwaysalways (negedge reset or posedge clk) (negedge reset or posedge clk)beginbegin if(!reset) begin if(!reset) begin state = STATE_INIT; state = STATE_INIT; Z = 2b00; Z = 2b00; finish = 1b0; finish = 1b0; end else begin end else begin case(state)case(state) STATE_INIT: beg

39、in STATE_INIT: begin state = STATE_ST1;state = STATE_ST1; Z = 2b01; Z = 2b01; finish = 1b0; finish = 1b0; end end STATE_ST1: begin STATE_ST1: begin if(A) state = STATE_ST2;if(A) state = STATE_ST2; else state = STATE_FINISH; else state = STATE_FINISH; Z = 2b11; Z = 2b11; finish = 1b0; finish = 1b0; e

40、nd end STATE_ST2: begin STATE_ST2: begin state = STATE_FINISH;state = STATE_FINISH; Z = 2b10; Z = 2b10; finish = 1b0; finish = 1b0; end end STATE_FINISH: begin STATE_FINISH: begin /state = STATE_FINISH;/state = STATE_FINISH; Z = 2b01; Z = 2b01; finish = 1b1; finish = 1b1; end end endcaseendcase end

41、end endendendmoduleendmoduleShandy IME of Tsinghua Univ. 2004moore有限状态机实例有限状态机实例(cont.)STATE_ST1STATE_INITSTATE_ST2STATE_FINISHreset=1, A = 1reset=1, A = 0reset = 0reset = 1reset=1reset=1reset = 0reset = 0Shandy IME of Tsinghua Univ. 2004mealy有限状态机实例有限状态机实例module mealy_fsm(clk, reset, A, Z, finish);

42、module mealy_fsm(clk, reset, A, Z, finish);parameter STATE_INIT = 4b0001;parameter STATE_INIT = 4b0001;parameter STATE_ST1 = 4b0010;parameter STATE_ST1 = 4b0010;parameter STATE_ST2 = 4b0100;parameter STATE_ST2 = 4b0100;parameter STATE_FINISH = 4b1000;parameter STATE_FINISH = 4b1000;input clk, reset;

43、input clk, reset;input A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;reg 3:0 current_state, next_state;reg 3:0 current_state, next_state;reg 1:0 Z;reg 1:0 Z;reg finish;reg finish;always (negedge reset or posedge clk)always (negedge reset or posedge clk)beginbeginif(!reset) current_

44、state = STATE_INIT;if(!reset) current_state = STATE_INIT;else current_state = next_state;else current_state = next_state;endendalways (currenet_state or A)always (currenet_state or A)beginbeginfinish = 1b0;finish = 1b0;case(current_state)case(current_state) STATE_INIT: begin STATE_INIT: begin next_s

45、tate = STATE_ST1;next_state = STATE_ST1; Z = 2b01; Z = 2b01; end end STATE_ST1: begin STATE_ST1: begin if(A) beginif(A) begin next_state = STATE_ST2; next_state = STATE_ST2; Z = 2b11; Z = 2b11; end else begin end else begin next_state = STATE_FINISH; next_state = STATE_FINISH; Z = 2b10; Z = 2b10; en

46、d end end end STATE_ST2: begin STATE_ST2: begin next_state = STATE_FINISH;next_state = STATE_FINISH; Z = 2b10; Z = 2b10; end end STATE_FINISH: begin STATE_FINISH: begin / next_state = STATE_FINISH;/ next_state = STATE_FINISH; Z = 2b01; Z = 2b01; finish = 1b1;finish B; R = R - B) D = D + 1;for(R=A; R

47、B; R = R - B) D = D + 1;endendok = 1;ok = 1;endendendmoduleendmoduleShandy IME of Tsinghua Univ. 2004算法验证算法验证 上面给出了行为级的描述,可以用于验证算法的正确性 可以编写testbench文件对算法的正确性进行验证 更换A, B的值进行多次仿真,尤其注意对特殊输入的测试(例如除数为0,被除数小于或等于除数等) 可以编写更复杂的测试,产生n组随机数作为激励,并自动把输出响应与正确结果相比较/除法器设计的测试文件除法器设计的测试文件timescale 1ns/100pstimescale 1

48、ns/100psmodule tb_div;module tb_div;reg start;reg start;reg 31:0 A, B;reg 31:0 A, B;wire 31:0 D, R;wire 31:0 D, R;wire err, ok;wire err, ok;div UDIV(start, A, B, D, R, err, ok);div UDIV(start, A, B, D, R, err, ok);initial $monitor(“at %t A=%x, B=%x, start=%d, initial $monitor(“at %t A=%x, B=%x, star

49、t=%d, D=%d, R=%d, err=%d, ok=%d”, A, B, start, D=%d, R=%d, err=%d, ok=%d”, A, B, start, D, R, err, ok);D, R, err, ok);initialinitialbeginbeginstart = 0;start = 0;A = 32h12345678;A = 32h12345678;B = 32habcd;B = 32habcd;#20#20start = 1;start = 1;#50#50$stop$stopendendendmoduleendmoduleShandy IME of Ts

50、inghua Univ. 2004结构设计结构设计 考虑设计的可综合性,可用计数器来代替for语句 使用状态机控制运算的开始、进行、和结束 可以编写行为级模型对结构进行再次验证STATE_INITSTATE_RUNSTATE_FINISHstart = 1start = 0B=0 or count=32reset = 0count!=32状态转移图Shandy IME of Tsinghua Univ. 2004结构设计(结构设计(cont.) 把设计根据控制部分和运算部分划分控制逻辑和数据通路 分析和优化关键路径 分别设计各个模块,对于一些基本运算(+, -, 计数器,移位等),可以用自动综

51、合的方法产生,但需要对预期的结果有基本的电路概念;对于复杂的运算和控制逻辑,可以考虑采用RTL的描述减法器D寄存器状态寄存器R寄存器B计数器控制逻辑数据通路加法器(加1)Amux关键路径Shandy IME of Tsinghua Univ. 2004RTL设计设计module div(clk, reset, start, A, B, module div(clk, reset, start, A, B, D, R, ok, err);D, R, ok, err); parameter n = 32; parameter n = 32; input clk, reset, start; inp

52、ut clk, reset, start; input n-1:0 A, B; input n-1:0 A, B; output n-1:0 D, R; output n-1:0 D, R; output ok, err; output ok, err; wire invalid, load, run; wire invalid, load, run; div_ctl #(n) UCTL(clk, reset, div_ctl #(n) UCTL(clk, reset, start, invalid, load, run, err, start, invalid, load, run, err

53、, ok);ok); div_datapath #(n) UDATAPATH(clk, div_datapath #(n) UDATAPATH(clk, reset, A, B, load, run, invalid, reset, A, B, load, run, invalid, D, R);D, R); endmoduleendmodulemodule div_ctl(clk, reset, start, invalid, module div_ctl(clk, reset, start, invalid, load, run, err, ok);load, run, err, ok);

54、 parameter STATE_INIT = 3b001; parameter STATE_INIT = 3b001; parameter STATE_RUN = 3b010; parameter STATE_RUN = 3b010; parameter STATE_FINISH = 3b100; parameter STATE_FINISH = 3b100; input clk, reset, start, invalid; input clk, reset, start, invalid; output load, run, err, ok; output load, run, err,

55、 ok; reg 2:0 current_state, next_state; reg 2:0 current_state, next_state; reg 4:0 cnt; reg 4:0 cnt; reg load, run, err, ok; reg load, run, err, ok; always (posedge clk or negedge reset) always (posedge clk or negedge reset) begin begin if(!reset) current_state = STATE_INIT; if(!reset) current_state

56、 = STATE_INIT; else current_state = next_state; else current_state = next_state; end end . .除法器:包含控制模块和数据通路控制模块:使用了状态机Shandy IME of Tsinghua Univ. 2004RTL设计(设计(cont.)always (current_state or invalid or cnt)always (current_state or invalid or cnt) begin begin case(current_state) case(current_state) S

57、TATE_INIT: begin STATE_INIT: begin if(start) next_state = STATE_RUN; if(start) next_state = STATE_RUN; err = 0; err = 0; ok = 0; ok = 0; cnt = 0; cnt = 0; load = 1; load = 1; run = 0; run = 0; end end STATE_RUN : begin STATE_RUN : begin load = 0; load = 0; run = 1; run = 1; cnt = cnt + 1b1; cnt = cnt + 1b1; if(invalid) begin if(invalid) begin err = 1; err = 1; next_state = STATE_FINISH; next_state = STATE_FINISH; end else if(cnt=31) begin end else if(cnt=31) begin next_state = STATE_FINISH; next_state = STATE_F

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论