D触发器实现二分频与二倍频
先来二分频的
其基本思想是将D触发器改成T触发器,每隔一个时钟周期,输出时钟反向一次.这样就达到了二分频的目的。
下面列出Verilog代码:
module div2(clk,rst_n,clk_out);
input clk,rst_n;
output clk_out;
wire clk_temp;
always @(posedge clk)
begin
if(~rst_n)
begin
clk_out<=0;
end
else
clk_out<=clk_temp;
end
assign clk_temp=~clk_out;
endmodule
仿真图如下:
下面是二倍频的
基本思想:通过逻辑延时,使同频时钟相位改变,而后将两个时钟相或即可得到二倍频电路,不过占空比不可调,由两个时钟相位差决定。
Verilog代码如下:
module twice (clk,
clk_out
);
input clk;
output clk_out;
wire clk_temp;
wire d_outn;
reg d_out=0;
assign clk_temp = clk ^ d_out assign clk_out = clk_temp ;
assign d_outn = ~d_out ;
always@(posedge clk_temp)
begin
d_out 〈= d_outn ;
;
end
endmodule
由于它是靠延时产生的时钟,所以只能进行时序仿真才能看到波形,仿真波形如下:
大家可以自己在quartus下仿真
因篇幅问题不能全部显示,请点此查看更多更全内容