ch06-7用Verilog描述时序逻辑电路.pptx
6.7.1 移位寄存器的移位寄存器的Verilog建模建模 6.7.2 计数器的计数器的Verilog建模建模 6.7.3 状态转换图状态转换图的的Verilog建模建模 6.7.4 数字钟的数字钟的Verilog建模建模 6.7 用用Verilog HDL描述时序逻辑电路描述时序逻辑电路用用行为级描述行为级描述always描述一个位双向移位寄存描述一个位双向移位寄存器器,有异步清零、同步置数、左移、右移和保持。功,有异步清零、同步置数、左移、右移和保持。功能同能同74xx19474xx194。6.7.1 移位寄存器的移位寄存器的Verilog建模建模module shift74x194(S1,S0,D,Dsl,Dsr,Q,CP,CR);input S1,S0;/控制输入控制输入 input Dsl,Dsr;/串行输入串行输入 input CP,CR;/时钟及清零时钟及清零 input 3:0 D;/并行输入并行输入 output 3:0 Q;/寄存器输出寄存器输出 reg 3:0 Q;6.7.1 移位寄存器的移位寄存器的Verilog建模建模 always (posedge CP or negedge CR)if(CR)Q=4b0000;else case(S1,S0)2b00:Q=Q;/保持保持 2b01:Q=Q2:0,Dsr;/右移右移 2b10:Q=Dsl,Q3:1;/左移左移 2b11:Q=D;/并行输入并行输入 endcaseendmodule 6.7.2 计数器的计数器的Verilog建模建模module updowncount_beh#(parameter n=4)(input Load,Up_down,En,CP,/输入端口声明输入端口声明inputn-1:0D,/并行数据输入并行数据输入output regn-1:0Q /数据输出端口及数据输出端口及变量数据类型变量数据类型声明声明);integer direction;/中间变量中间变量声明声明 用用Verilog描述带使能端和同步置数端的可逆描述带使能端和同步置数端的可逆4位二进制位二进制计数器计数器always(posedge CP)begin if(Up_down)direction=1;elsedirection=-1;if(Load)Q=D;/Load=1,同步置数同步置数else if(En)Q=Q+direction;/加加1或减或减1elseQ=Q;/输出保持不变输出保持不变endendmodule6.7.3 状态转换图状态转换图的的Verilog建模建模module Mealy_sequence_detector(A,CP,CR,Y);input A,CP,CR;output Y;reg Y;reg 1:0 current_state,next_state;parameter S0=2b00,S1=2b01,S2=2b11;always(negedge CP or negedge CR)begin if(CR)current_state=S0;/在在CR下降沿设下降沿设s0为初态为初态 else current_state=next_state;end用用Verilog描述描述状态状态转换转换图图非常方便,常用非常方便,常用always或或case语句。语句。下面程序,下面程序,第一个第一个always语句描述状态转移语句描述状态转移6.7.3 状态转换图状态转换图的的Verilog建模建模always(current_state,A)/组合电路组合电路begincase(current_state)/准备下一状态准备下一状态,电路输出电路输出Y=0;S0:begin next_state=(A=1)?S1:S0;endS1:begin next_state=(A=1)?S2:S0;endS2:if(A=1)begin next_state=S2;end else begin Y=1;next_state=S0;end default begin next_state=S0;endendcaseendendmodule 第二第二个个always是将是将current_state和输入和输入A作为敏感作为敏感变量,判断状态转移条件。变量,判断状态转移条件。