input wire clk ,
input wire rest_n ,
output reg clk2 )
always@(posedge clk or negedge rest_n)
begin
if (!rest_n)
clk2 <= 'h0
else
clk2 <= ~clk2
end
endmodule
那是2倍频,不是分频。基本思想:通过逻辑延时,使同频时钟相位改变,而后将两个时钟相或即可得到二倍频电路,不过占空比不可调,由两个时钟相位差决定。
Verilog代码如下:
module twice (clk,
clk_out
)
input clkoutput 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
一般的FPGA里面有多个PLL, DLL模块, 用于产生高质量时钟信号,供特定单元使用.基本的备频原理是由模拟电路提取低频的高次谐波, 再整形输出. 高次谐波衰减厉害,备频效率都不高.1Hz到4kHz是不可能一次完成的. 建议买个24MHz晶振挂在适当的时钟脚, 然后利用PLL分频.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)