《EDA技术及应用—Verilog HDL版》课件第3章.ppt
ql=4h0;
end
else
if(load) //同步置数
begin
qh=d[7:4];
ql=d[3:0];
end
elsebegin
if(ena) //模60的实现
if(ql==4h9)
begin
ql=4h0;
if(qh==4h5)
qh=4h0;
else //计数功能的实现
qh=qh+1;
end
elseql=ql+1;
end
end
//进位输出控制过程
always@(qhorqlorena)
if(qh==4h5ql==4h9ena==1b1)
co=4h1;
else
co=4h0;
endmodule【例3.47】由8个D触发器构成的异步计数器。
//D触发器d_ff1.v
moduled_ff1(clk,clr,d,q,qn);
inputclk,clr;
inputd;
outputq,qn;
regq,qn;
regq_in;
always@(posedgeclk)
begin
if(clr)begin
q=q_in;
qn=~q_in;
end
else
begin
q=d;
qn=~d;
end
end
endmodule//由8个D触发器构成的8位计数器dcnt8.v
moduledcnt8(clk,clr,cnt);
inputclk;
inputclr;
output[7:0]cnt;
wire[8:0]cnt;
wires1,s2,s3,s4,s5,s6,s7,s8;
d_ff1uut0(.clk(clk),.clr(clr),.d(s1),.q(cnt[0]),.qn(s1));
d_ff1uut1(.clk(s1),.clr(clr),.d(s2),.q(cnt[1]),.qn(s2));d_ff1uut2(.clk(s2),.clr(clr),.d(s3),.q(cnt[2]),.qn(s3));
d_ff1uut3(.clk(s3),.clr(clr),.d(s4),.q(cnt[3]),.qn(s4));
d_ff1uut4(.clk(s4),.clr(clr),.d(s5),.q(cnt[4]),.qn(s5));
d_ff1uut5(.clk(s5),.clr(clr),.d(s6),.q(cnt[5]),.qn(s6));
d_ff1uut6(.clk(s6),.clr(clr),.d(s7),.q(cnt[6]),.qn(s7));
d_ff1uut7(.clk(s7),.clr(clr),.d(s8),.q(cnt[7]),.qn(s8));
endmodule4.分频器
在基于EDA技术的数字电路系统设计中,分频电路应用得十分广泛,常常使用分频电路来得到数字系统中各种不同频率的控制信号。所谓分频电路,就是将一个给定的频率较高的数字输入信号,经过适当的处理后,产生一个或数个频率较低的数字输出信号。分频电路本质上是加法计数器的变种,其计数值由分频常数N=fin/fout决定,其输出不是一般计数器的计数结果,而是根据分频常数对输出信号的高、低电平进行控制。
【例3.48】将1?kHz的方波信号变为正、负周不等的50?Hz信号的非均匀分频电路。//将1kHz的信号变为50?Hz非均匀分频器fjydiv.v
modulefjydiv(clk_in,reset,clk_out);
inputclk_in,reset;
outputclk_out;
reg[4:0]cnt;
regclk_out;
parameterdivide_period=