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, doutmodule sample_reg(clk, rst, din, dout); );input clk, rstinput clk, rst; ;input 3:0 d
9、in;input 3:0 din;output 3:0 doutoutput 3:0 dout; ;regreg 3:0 data; 3:0 data;assign doutassign dout = data; = data;alwaysalways (posedge clk or negedge rst) (posedge clk or negedge rst)beginbeginif(!rstif(!rst) begin) 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 reset = 1; reset
12、 = 1;#50#50 $display(“sum $display(“sum is %d”, sum); is %d”, sum);$finish;$finish;endendalways (always (posedgeposedge clk clk or or negedgenegedge reset) reset)beginbeginif(!resetif(!reset) begin) begindata = 0;data = 0;end else beginend else begindata = din;data = din;endendendendShandy IME of Ts
13、inghua 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. 2004Verilog HDL语法语法 函
14、数与任务函数与任务Verilog HDL还定义了函数(function)和任务(task),可以用于完成复杂的行为描述函数只能有一个输出,而任务可以具有多个输出;两者都可以有多个输入函数和任务必须定义在module内Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 顺序执行与并行执行顺序执行与并行执行initial, always, function, task块内部的语句是顺序执行的,所有begin . end之间的语句也是顺序执行的同一个模块内部的所有initial, always块都是并行执行的fork . join块之间的语句是并行执行的
15、(略)Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 编译指令编译指令以(反引号)开始的某些标识符是编译器指令。在Verilog 语言编译时,特定的编译器指令在整个编译过程中有效(编译过程可跨越多个文件),直到遇到其它的不同编译程序指令。完整的标准编译器指令如下:define, undef define, undef 宏定义,类似于宏定义,类似于#define #undef#define #undef,例如:,例如: define MAX_BUS_SIZE define MAX_BUS_SIZE3232. . . . .reg MAX_BUS_
16、SIZE-1:0 AddReg; reg MAX_BUS_SIZE-1:0 AddReg; 注意引用时要加注意引用时要加 ifdef, else, endififdef, else, endif 类似于类似于#ifdef #else #endif#ifdef #else #endifinclude include 类似于类似于#include#include,用于包含另外一个,用于包含另外一个verilogverilog文件文件timescale timescale resetalldefault_nettypeunconnected_drive, nounconnected_drivecel
17、ldefine, 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组成。例如:timescale
18、 timescale 1ns / 100ps表示时延单位为1ns, 时延精度为100ps。timescale 编译器指令在模块说明外部出现, 并且影响后面所有的时延值。Shandy IME of Tsinghua Univ. 2004Verilog HDL语法语法 系统函数系统函数以$字符开始的标识符表示系统任务或系统函数。任务提供了一种封装行为的机制,可在设计的不同部分被调用。任务可以返回0个或多个值。函数除只能返回一个值以外与任务相同。此外,函数在0时刻执行,即不允许延迟,而任务可以带有延迟。$display $monitor $strobe $time $stime $realtime
19、$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 HDL? Verilog HD
20、L vs. VHDL Verilog HDL语法设计描述层次 设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次算法(行为)级描述结构级描述寄存器传输级(RTL)描述开关级(门级)描述混合层次描述Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 - 算法(行为)级描述算法(行为)级描述 主要用于快速验证算法的正确性 不一定可以综合成实际电路结构实例:n位整数除法器, D = A/B, R = A%Bmodul
21、e 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 HA(A , B , S ,
22、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, CoutmoduleFA(P, Q, Cin, Sum,
23、 Cout ) ; ) ;input P, Q, Cininput P, Q, Cin; ;output Sum, Coutoutput 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 2); /HA h2 ( .A(C i
24、n), .S(S u m), .B(S 1), .C(C 2); /通过端口通过端口与信号的名字关联。与信号的名字关联。/门实例语句:门实例语句:or #OR_DELAYO1 (Coutor #OR_DELAYO1 (Cout, C1, C2) ;, 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);endmodule4路选路选1多选器多选
27、器Shandy IME of Tsinghua Univ. 2004设计描述层次设计描述层次 混合层次描述混合层次描述 以上各种层次描述方式可以任意混合使用,因此一个设计可能某些模块使用了行为描述的方式,而另外一些模块使用了开关级描述 在实际设计中,功能复杂的模块可以先用行为级或结构级的描述来表示,而对功能简单的模块则使用RTL级的描述,以尽早完成系统的仿真和算法的验证;在设计的过程中逐步细化复杂模块,替代原来的行为描述,直至设计可以综合并满足设计指标Shandy IME of Tsinghua Univ. 2004提纲提纲 什么是Verilog HDL? Verilog HDL vs. VH
28、DL Verilog HDL语法 设计描述层次设计的测试与验证 可综合的设计 有限状态机(FSM) 一个除法器的设计实例 常用仿真器和综合软件 网络资源Shandy IME of Tsinghua Univ. 2004设计的测试与验证设计的测试与验证 一般需要编写测试文件对设计进行仿真测试,称为testbench testbench一般采用行为级描述,产生一定的输入激励,得到设计的输出响应,并检查输出结果的正确性 在规范的模块设计中,每一个模块都需要编写独立的测试文件对模块进行充分的测试 注意选择合适的输入激励,保证测试能够覆盖典型输入和特殊输入Shandy IME of Tsinghua U
29、niv. 2004/ sampel_reg.v/ sampel_reg.v 数据采样模块数据采样模块module sample_reg(clk, rst, din, doutmodule sample_reg(clk, rst, din, dout); );input clk, rstinput clk, rst; ;input 3:0 din;input 3:0 din;output 3:0 doutoutput 3:0 dout; ;regreg 3:0 data; 3:0 data;assign doutassign dout = data; = data;alwaysalways (p
30、osedge clk or negedge rst) (posedge clk or negedge rst)beginbeginif(!rstif(!rst) begin) begin data = 4b0; data = 4b0;end else beginend else begin data = din; data , =, , , , &(按位与), |(按位或), (连接运算)等位操作运算符 ,=,assign等赋值语句 always块Shandy IME of Tsinghua Univ. 2004不可综合的语法举例不可综合的语法举例 initial块 forever块 for,
31、 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;input 3:0 din;output 3:
32、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:0DQRSTCKShandy IME of
33、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对应的不是寄存器(register)而是锁存器(latch)c
34、lkrstdin3: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;endcaseendendmodule这是一个四选一的多选器,虽然用了
35、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(clkmodule moore_fsm(clk, reset, A, Z, finish);, reset, A, Z, finish);parameter STATE_INIT = 0;parameter STATE_INIT = 0;parameter STATE_ST1
37、= 1;parameter STATE_ST1 = 1;parameter STATE_ST2 = 2;parameter STATE_ST2 = 2;parameter STATE_FINISH = 3;parameter STATE_FINISH = 3;input clkinput clk, reset;, reset;input A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;regreg 1:0 state; 1:0 state;regreg 1:0 Z; 1:0 Z;regreg finish fini
38、shalwaysalways (negedge reset or posedge clk (negedge reset or posedge clk) )beginbegin if(!reset if(!reset) begin) begin state = STATE_INIT; state = STATE_INIT; Z = 2b00; Z = 2b00; finish = 1b0; finish = 1b0; end else begin end else begin case(statecase(state) ) STATE_INIT: begin STATE_INIT: begin
39、state = STATE_ST1;state = STATE_ST1; Z = 2b01; Z = 2b01; finish = 1b0; finish = 1b0; end end STATE_ST1: begin STATE_ST1: begin if(Aif(A) state = STATE_ST2;) state = STATE_ST2; else state = STATE_FINISH; else state = STATE_FINISH; Z = 2b11; Z = 2b11; finish = 1b0; finish = 1b0; end end STATE_ST2: beg
40、in 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 end endendendmoduleen
41、dmoduleShandy 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(clkmodule mealy_fsm(clk, reset, A, Z, finish);,
42、 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 clkinput clk, reset;, reset;inpu
43、t A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;reg 3:0 current_state, next_statereg 3:0 current_state, next_state; ;regreg 1:0 Z; 1:0 Z;regreg finish; finish;always (negedge reset or posedge clkalways (negedge reset or posedge clk) )beginbeginif(!reset) current_stateif(!reset) cur
44、rent_state = STATE_INIT; = STATE_INIT;else current_state = next_stateelse current_state = next_state; ;endendalways (currenet_statealways (currenet_state or A) or A)beginbeginfinish = 1b0;finish = 1b0;case(current_statecase(current_state) ) STATE_INIT: begin STATE_INIT: begin next_statenext_state =
45、STATE_ST1; = STATE_ST1; Z = 2b01; Z = 2b01; end end STATE_ST1: begin STATE_ST1: begin if(Aif(A) begin) begin next_state next_state = STATE_ST2; = STATE_ST2; Z = 2b11; Z = 2b11; end else begin end else begin next_state next_state = STATE_FINISH; = STATE_FINISH; Z = 2b10; Z = 2b10; end end end end STA
46、TE_ST2: begin STATE_ST2: begin next_statenext_state = STATE_FINISH; = STATE_FINISH; Z = 2b10; Z = 2b10; end end STATE_FINISH: begin STATE_FINISH: begin / next_state/ next_state = STATE_FINISH; = STATE_FINISH; Z = 2b01; Z = 2b01; finish = 1b1;finish B; R = R - B) D = D + 1;for(R=A; RB; R = R - B) D =
47、 D + 1;endendok = 1;ok = 1;endendendmoduleendmoduleShandy IME of Tsinghua Univ. 2004算法验证算法验证 上面给出了行为级的描述,可以用于验证算法的正确性 可以编写testbench文件对算法的正确性进行验证 更换A, B的值进行多次仿真,尤其注意对特殊输入的测试(例如除数为0,被除数小于或等于除数等) 可以编写更复杂的测试,产生n组随机数作为激励,并自动把输出响应与正确结果相比较/除法器设计的测试文件除法器设计的测试文件timescale 1ns/100pstimescale 1ns/100psmodule tb
48、_divmodule tb_div; ;regreg start; start;regreg 31:0 A, B; 31:0 A, B;wire 31:0 D, R;wire 31:0 D, R;wire err, ok;wire err, ok;div UDIV(startdiv UDIV(start, A, B, D, R, err, ok);, A, B, D, R, err, ok);initial $monitor(“atinitial $monitor(“at %t A=%x, B=%x, start=%d, %t A=%x, B=%x, start=%d, D=%d, R=%d,
49、 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 Tsinghua Univ. 2004
50、结构设计结构设计 考虑设计的可综合性,可用计数器来代替for语句 使用状态机控制运算的开始、进行、和结束 可以编写行为级模型对结构进行再次验证STATE_INITSTATE_RUNSTATE_FINISHstart = 1start = 0B=0 or count=32reset = 0count!=32状态转移图Shandy IME of Tsinghua Univ. 2004结构设计(结构设计(cont.) 把设计根据控制部分和运算部分划分控制逻辑和数据通路 分析和优化关键路径 分别设计各个模块,对于一些基本运算(+, -, 计数器,移位等),可以用自动综合的方法产生,但需要对预期的结果有