7-数字系统设计的核心知识_第1页
7-数字系统设计的核心知识_第2页
7-数字系统设计的核心知识_第3页
7-数字系统设计的核心知识_第4页
7-数字系统设计的核心知识_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

1、1数字系统设计的核心知识数字系统设计的核心知识 复杂数字系统的构成;复杂数字系统的构成; 基本电路和基本电路和 Verilog Verilog 的对应关系;的对应关系; 同步有限状态机在电路中的作用;同步有限状态机在电路中的作用; 时钟树与自动综合技术时钟树与自动综合技术 2- 。3数字逻辑电路的构成数字逻辑电路的构成- 组合逻辑组合逻辑:由与、或、非门组成的网络。常用的有:由与、或、非门组成的网络。常用的有:多路器、数据通路开关、加法器、乘法器等,没有记忆功多路器、数据通路开关、加法器、乘法器等,没有记忆功能。能。- 时序逻辑时序逻辑: 由多个触发器和多个组合逻辑块组成的网由多个触发器和多个

2、组合逻辑块组成的网络。常用的有:计数器、复杂的数据流动控制逻辑、运算络。常用的有:计数器、复杂的数据流动控制逻辑、运算控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设控制逻辑、指令分析和操作控制逻辑。同步时序逻辑的设计是设计复杂的数字逻辑系统的核心。计是设计复杂的数字逻辑系统的核心。- 存储器和寄存器存储器和寄存器:用于暂时存储数据信息。用于暂时存储数据信息。4组合逻辑举例之一组合逻辑举例之一一个八位数据通路控制器一个八位数据通路控制器define ON 1 b 1define OFF 1 b 0 wire ControlSwitch; wire 7:0 out, in; assign ou

3、t = (ControlSwith= ON) ? in : 8 h005in 7:0开关out7:0tt31 0215 3262 88 0215 32 00 006in7ControlSwitchout7CLOCKDQ7CLOCKin0ControlSwitchout0DQ0out7out078module regena (clock,ena,reset,R,Q);parameter n=8;input n-1:0 R;input clock, ena, reset;output n-1:0 Q;always (posedge clock or negedge reset) if (!rese

4、t) Q=0; else if (ena) Q=R; else Q=Q;endmoduleenaRclockD Q Qreset9R1enawclockD Q QresetQ1D QQ0R0load1011.outbuf712outbuf 7:0开bus7:0tt31 0215 3262 88 0215 32 ZZ ZZLinkBusSwitch关outbuf713 SelData14Sel0Data0Sel1Data115Data outputAddressAm-1A1A0Am-2writereadData inputsel0sel1sel2m-2 sel2m-1地址译码器16qdqdqdq

5、dqdqdqdqdqdqdqdqdclock开关S1开关S2组合逻辑组合逻辑寄存器1寄存器2寄存器317clock开关S5寄存器Cqd开关S6开关S3寄存器Bqd开关S4开关S1寄存器Aqd开关S218组合逻辑输出控制开关Snin 7:0out 15:0in 7:0 8 d 31 8d 202 16d 93 16d 606延时10nsSn开关out15:0ttt19全局时钟网络触发器缓冲器 触发器1触发器n图1 全局时钟网示意图 图2 平衡树结构示意图20 由于组合逻辑和布线的延迟引起由于组合逻辑和布线的延迟引起abttcclockabc21 组合逻辑和布线的延迟在组合逻辑中的叠加组合逻辑和布

6、线的延迟在组合逻辑中的叠加ba#2#3#4cedba#2#3#4ced#1#1clock222324clock 10nsS2开关S1tttSnS3tttS42526同步有限状态机同步有限状态机ena_2ena_3ena_1组合逻辑 1寄存器组组合逻辑 2寄存器组组合逻辑 3寄存器组组合逻辑 N寄存器组input_1 input_2input_n272829图图1 时钟同步的状态机结构时钟同步的状态机结构 (Mealy 状态机状态机)下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器 clk 输入输入30下一状下一状态的逻态的逻辑辑 F F输出逻辑输出逻辑 G G状

7、态状态寄存器寄存器图图2 时钟同步的状态机结构时钟同步的状态机结构 (Moor状态机状态机)31图图3 带流水线输出的带流水线输出的Mealy 状态机状态机 输出输出逻辑逻辑 G G 32状态转移图表示状态转移图表示RTLRTL级可综合的级可综合的 Verilog Verilog 模块表示模块表示33有限状态机的图形表示有限状态机的图形表示 图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图3.4 状态转移图Idle Start Stop Clear A/K1=0 !A A/K2=1 !Reset /K2=0 K1=0!Reset /K2=0 K1=0!Reset /

8、K2=0 K1=0 |!A / K2=0 K1=1!Reset /K2=0 K1=03435表示方法之一表示方法之一module fsm (Clock, Reset, A, K2, K1);module fsm (Clock, Reset, A, K2, K1);input Clock, Reset, A; input Clock, Reset, A; /定义时钟、复位和输入信号定义时钟、复位和输入信号output K2, K1; output K2, K1; /定义输出控制信号的端口定义输出控制信号的端口reg K2, K1; reg K2, K1; /定义输出控制信号的寄存器定义输出控制信

9、号的寄存器reg 1:0 state; reg 1:0 state; /定义状态寄存器定义状态寄存器parameter Idle = 2b00, Start = 2b01, parameter Idle = 2b00, Start = 2b01, Stop = 2b10, Clear = 2b11; Stop = 2b10, Clear = 2b11;/定义状态变量参数值定义状态变量参数值 always (posedge Clock or negedge Reset)always (posedge Clock or negedge Reset) if (!Reset) if (!Reset)

10、begin begin /定义复位后的初始状态和输出值定义复位后的初始状态和输出值 state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end end36表示方法之一(续)表示方法之一(续)elseelse case (state) case (state) Idle: begin Idle: begin if (A) begin if (A) begin state = Start; state = Start; K1 = 0; K1 = 0; end end else state = Idle; else state = Idle; en

11、d end Start: begin Start: begin if (!A) state = Stop; if (!A) state = Stop; else state = Start; else state = Start; end end37表示方法之一(续)表示方法之一(续) Stop: begin Stop: begin if (A) begin if (A) begin state = Clear; state = Clear; K2 = 1; K2 = 1; end end else state = Stop; else state = Stop; end end Clear:

12、 begin Clear: begin if (!A) begin if (!A) begin state = Idle; state = Idle; K2=0; K1=1; K2=0; K1=1; end end else state = Clear; else state = Clear; end end endcase endcaseendmodule endmodule 38表示方法之二表示方法之二我们还可以用另一个我们还可以用另一个 Verilog HDLVerilog HDL模型来表示同一个有限状态,模型来表示同一个有限状态,见下例。(用可综合的见下例。(用可综合的VerilogV

13、erilog模块设计用独热码表示状态的状态机)模块设计用独热码表示状态的状态机) module fsm (Clock, Reset, A, K2, K1);module fsm (Clock, Reset, A, K2, K1);input Clock, Reset, A;input Clock, Reset, A;output K2, K1;output K2, K1;reg K2, K1;reg K2, K1;reg 3:0 state;reg 3:0 state;parameter Idle = 4b1000, parameter Idle = 4b1000, Start = 4b010

14、0, Start = 4b0100, Stop = 4b0010, Stop = 4b0010, Clear = 4b0001; Clear = 4b0001; 39表示方法之二(续)表示方法之二(续) always (posedge clock or negedge Reset) always (posedge clock or negedge Reset) if (!Reset) if (!Reset) begin begin state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end end else else case (state)

15、 case (state) Idle: if (A) begin Idle: if (A) begin state = Start; state = Start; K1 = 0; K1 = 0; end end else state = Idle; else state = Idle; 40表示方法之二(续)表示方法之二(续) 41表示方法之二(续)表示方法之二(续) 42在比较复杂的状态机设计过程中,我们往往把状在比较复杂的状态机设计过程中,我们往往把状态的变化与输出开关的控制分成两部分来考虑。态的变化与输出开关的控制分成两部分来考虑。就象前面讲过的就象前面讲过的Mealy状态机输出部分的组

16、合逻状态机输出部分的组合逻辑。为了调试方便,还常常把每一个输出开关写辑。为了调试方便,还常常把每一个输出开关写成一个个独立的成一个个独立的always组合块。在调试多输出状组合块。在调试多输出状态机时,这样做比较容易发现问题和改正模块编态机时,这样做比较容易发现问题和改正模块编写中出现的问题。建议同学们在设计复杂的多输写中出现的问题。建议同学们在设计复杂的多输出状态机时采用下面的风格举例,说明如下:出状态机时采用下面的风格举例,说明如下: 4344454647表示方法之四表示方法之四用输出指定的码表示状态的状态机用输出指定的码表示状态的状态机 方法四采用了另一种方法:直接把状态码定义方法四采用

17、了另一种方法:直接把状态码定义为输出。也就是把状态码的指定与状态机控制为输出。也就是把状态码的指定与状态机控制的输出联系起来,把状态的变化直接用作输出,的输出联系起来,把状态的变化直接用作输出,这样做可以提高输出信号的开关速度并节省电这样做可以提高输出信号的开关速度并节省电路器件。这种设计方法常用在高速状态机中。路器件。这种设计方法常用在高速状态机中。建议同学们在设计高速状态机时采用方法四的建议同学们在设计高速状态机时采用方法四的风格。例中风格。例中state3 state3 和和state0state0分别表示前分别表示前面两个例子中的输出面两个例子中的输出K2K2和和K1K1。48表示方法

18、之四(续)表示方法之四(续)module fsm (Clock, Reset, A, K2, K1, state);module fsm (Clock, Reset, A, K2, K1, state);input Clock, Reset, A;input Clock, Reset, A;output K2, K1;output K2, K1;output 4:0 state;output 4:0 state;reg 4:0 state ;reg 4:0 state ;assign assign K2= state4; / K2= state4; / 把状态变量的最高位用作输出把状态变量的最

19、高位用作输出K2K2assign assign K1= state0; / K1= state0; / 把状态变量的最低位用作输出把状态变量的最低位用作输出K1K14950表示方法之四(续)表示方法之四(续) always (posedge Clock or negedge Reset)always (posedge Clock or negedge Reset) if (!Reset) if (!Reset) begin begin state = Idle; state = Idle; end end else elsecase (state)case (state) Idle : if

20、(A) Idle : if (A) state = Start; state = Start; else state = Idle; else state = Idle; Start: if (!A) state = Stop; Start: if (!A) state = Stop; else state = Start; else state = Start;51表示方法之四(续)表示方法之四(续)Stop: if (A)Stop: if (A) state = StopToClear; state = StopToClear; else state = Stop; else state

21、= Stop;StopToClear: state = Clear;StopToClear: state = Clear; Clear: if (!A) Clear: if (!A) state = ClearToIdle; state = ClearToIdle; else state = Clear; else state = Clear; ClearToIdle: state = Idle;ClearToIdle: state = Idle;default: state = Idle;default: state = Idle;endcaseendcaseendmoduleendmodu

22、le52状态机的测试状态机的测试 不同风格的描述适合不同规模的状态机和不同不同风格的描述适合不同规模的状态机和不同的综合工具,有的风格查错和修改较容易,但的综合工具,有的风格查错和修改较容易,但写简单的状态机时比较麻烦。写简单的状态机时比较麻烦。Synopsys公司的公司的综合器建议使用这种风格来描述状态机。综合器建议使用这种风格来描述状态机。 上面四个例子是同一个状态机的四种不同的上面四个例子是同一个状态机的四种不同的Verilog HDL模型,它们都是可综合的,在设模型,它们都是可综合的,在设计复杂程度不同的状态机时有它们各自的优势。计复杂程度不同的状态机时有它们各自的优势。如用不同的综合

23、器对这四个例子进行综合,综如用不同的综合器对这四个例子进行综合,综合出的逻辑电路可能会有些不同,但逻辑功能合出的逻辑电路可能会有些不同,但逻辑功能是相同的。下面列出测试这些不同风格状态机是相同的。下面列出测试这些不同风格状态机的测试模块,供同学们参考:的测试模块,供同学们参考:5354 状态机的测试模块状态机的测试模块 always #50 clock = clock; /产生周期性的时钟产生周期性的时钟 always (posedge clock) /在每次时钟正跳变沿时刻产生不同的在每次时钟正跳变沿时刻产生不同的a begin #30 a = $random%2; / 每次每次a是是 0还

24、是还是1是随机的。是随机的。 #(3*50+12); / a 的值维持一段时间的值维持一段时间 endinitial begin #100000 $stop; end /系统任务,暂停仿真以便观察仿真波形。系统任务,暂停仿真以便观察仿真波形。 /- 调用被测试模块调用被测试模块t.m - fsm m(.Clock(clock), .Reset(rst),.A(a),.K2(k2),.K1(k1); endmodule55状态机设计的总结:状态机设计的总结:有限状态机设计的一般步骤:有限状态机设计的一般步骤: 1) 1) 逻辑抽象,得出状态转换图逻辑抽象,得出状态转换图 2) 2) 状态化简状态

25、化简 3) 3) 状态分配状态分配 在触发器资源丰富的在触发器资源丰富的FPGAFPGA或或ASICASIC设计中采用设计中采用独热编码(独热编码(one-hot-codingone-hot-coding)既可以使电路性)既可以使电路性能得到保证又可充分利用其触发器数量多的优能得到保证又可充分利用其触发器数量多的优势,也可以采取输出编码的状态指定来简化电势,也可以采取输出编码的状态指定来简化电路结构,并提高状态机的运行速度。路结构,并提高状态机的运行速度。 4) 4) 选定触发器的类型并求出状态方程、驱动方选定触发器的类型并求出状态方程、驱动方程和输出方程。程和输出方程。 5) 5) 按照方程得出逻辑图按照方程得出逻辑图56状态机设计的总结:状态机设计的总结: 用用Verilog HDLVerilog HDL来描述有限状态机,可以充分发来描述有限状态机,可以充分发挥硬件描述语言的抽象建模能力,使用挥硬件描述语言的抽象建模能力,使用alwaysalways块语句和块语句和casecase(ifif)等条件语句及赋值语句即)等条件语句及赋值语句即可方便地实现。具体的逻辑化简及逻辑电路到可方便地实现。具体的逻辑化简及逻辑电路到触发器映射均可由计算机自动完成,上述设计触发器映射均可由计算机自动完成,上述设计步骤中的第步骤中的第2 2步及步及4

温馨提示

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

评论

0/150

提交评论