1、- 。in 7:0开关out7:0tt31 0215 3262 88 0215 32 00 00in7ControlSwitchout7CLOCKDQ7CLOCKin0ControlSwitchout0DQ0out7out0module 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 (!reset) Q=0; else if (ena) Q=R;endmodulee
2、naRclockD Q QresetR1enawclockD Q QresetQ1D QQ0R0load.outbuf7outbuf 7:0开bus7:0tt31 0215 3262 88 0215 32 ZZ ZZLinkBusSwitch关outbuf7 SelDataSel0Data0Sel1Data1Data outputAddressAm-1A1A0Am-2writereadData inputsel0sel1Sel2m-2 Sel2m-1地址译码器qdqdqdqdqdqdqdqdqdqdqdqdclock开关S1 开关S2组合逻辑组合逻辑寄存器1寄存器2寄存器3clock开关S5
3、寄存器Cqd开关S6开关S3 寄存器Bqd开关S4开关S1 寄存器Aqd开关S2组合逻辑输出控制开关Sn in 7:0out 15:0in 7:0 8 d 31 8 d 202 16 d 93 16 d 606延时10nsSn开关out15:0ttt全局时钟网络触发器缓冲器 触发器1触发器n图1 全局时钟网示意图 图2 平衡树结构示意图 由于组合逻辑和布线的延迟引起由于组合逻辑和布线的延迟引起abttcclockabc 组合逻辑和布线的延迟在组合逻辑中的叠加组合逻辑和布线的延迟在组合逻辑中的叠加ba#2#3#4cedba#2#3#4ced#1#1clockclock 10nsS2开关S1ttt
4、SnS3tttS4同步有限状态机同步有限状态机ena_2ena_3ena_1组合逻辑 1寄存器组组合逻辑 2寄存器组组合逻辑 3寄存器组组合逻辑 N寄存器组input_1 input_2input_n图1 . 时钟同步的状态机结构 (Mealy 状态机)下一状态下一状态的逻辑的逻辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器 clk 输入下一状下一状态的逻态的逻辑辑 F F输出逻辑输出逻辑 G G状态状态寄存器寄存器图2. 时钟同步的状态机结构 (Moor状态机)图3 带流水线输出的Mealy 状态机 输出输出逻辑逻辑 G G 状态转移图表示状态转移图表示RTLRTL级可综合的级可综合
5、的 Verilog Verilog 模块表示模块表示有限状态机的图形表示有限状态机的图形表示 图形表示:状态、转移、条件和逻辑开关图形表示:状态、转移、条件和逻辑开关图3.4 状态转移图Idle Start Stop Clear A/K1=0 !A A/K2=1 !Reset /K2=0 K1=0!Reset /K2=0 K1=0 (!Reset |!A )/ K2=0 K1=1!Reset /K2=0 K1=0表示方法之一表示方法之一module fsmmodule fsm (Clock, Reset, A, K2, K1); (Clock, Reset, A, K2, K1);input
6、Clock, Reset, A; input Clock, Reset, A; /定义时钟、复位和输入信号定义时钟、复位和输入信号output K2, K1; output K2, K1; /定义输出控制信号的端口定义输出控制信号的端口regreg K2, K1; K2, K1; /定义输出控制信号的寄存器定义输出控制信号的寄存器regreg 1:0 state ; 1:0 state ; /定义状态寄存器定义状态寄存器parameter Idle = 2parameter Idle = 2b00, Start = 2b00, Start = 2b01, b01, Stop = 2 Stop
7、= 2b10, Clear = 2b10, Clear = 2b11;b11;/定义状态变量参数值定义状态变量参数值 always (posedgealways (posedge Clock) Clock) if (!Reset) if (!Reset) begin begin /定义复位后的初始状态和输出值定义复位后的初始状态和输出值 state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end end表示方法之一(续)表示方法之一(续)elseelse case (state) case (state) Idle: begin Idle:
8、begin if (A) begin if (A) begin state = Start; state = Start; K1=0; K1=0; end end else state = Idle; else state = Idle; end end Start: begin Start: begin if (!A) state = Stop; if (!A) state = Stop; else state = Start; else state = Start; end end表示方法之一(续)表示方法之一(续) Stop: begin Stop: begin if (A) begin
9、 if (A) begin state = Clear; state = Clear; K2= 1; K2= 1; end end else state = Stop; else state = Stop; end end Clear: 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 e
10、ndmodule 表示方法之二表示方法之二我们还可以用另一个我们还可以用另一个 VerilogVerilog HDL HDL模型来表示同一个有限状态,模型来表示同一个有限状态,见下例。(用可综合的见下例。(用可综合的VerilogVerilog模块设计用独热码表示状态的状态机)模块设计用独热码表示状态的状态机) module fsmmodule fsm (Clock, Reset, A, K2, K1); (Clock, Reset, A, K2, K1);input Clock, Reset, A;input Clock, Reset, A;output K2, K1;output K2,
11、K1;regreg K2, K1; K2, K1;regreg 3:0 state ; 3:0 state ;parameter Idle = 4parameter Idle = 4b1000, b1000, Start = 4 Start = 4b0100, b0100, Stop = 4 Stop = 4b0010, b0010, Clear = 4 Clear = 4b0001;b0001; 表示方法之二(续)表示方法之二(续) always (posedgealways (posedge clock) clock) if (!Reset) if (!Reset) begin begin
12、 state = Idle; K2=0; K1=0; state = Idle; K2=0; K1=0; end end else else case (state) 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; 表示方法之二(续)表示方法之二(续) 表示方法之二(续)表示方法之二(续) fffclockDQ DQ D Q组合逻辑电路 测试向量被测试电路测试结果处理DQDQDQDQ