分频电路的verilog代码
系统时钟为50MHz,分出的时钟为1KHz。module freq (clk, rst_n, clk_1k);
input clk;
input rst_n;
output reg clk_1k;
reg cnt;
always @ (posedge clk or negedge rst_n)
begin
if (!rst_n)
begin
clk_1k <= 1;
cnt <= 0;
end
else
begin
if (cnt < 24_999)
begin
cnt <= cnt + 1;
end
else
begin
cnt <= 0;
clk_1k <= ~clk_1k;
end
end
end
endmodule
那么24999是怎么来的呢?这个是计算的关键,我是这么计算的:
50MHz的周期是20ns,1KHz的周期是1ms。那么1KHz的半个周期就是500us,经过计算是20ns的25000倍,
所以计数要24999。
这么计算可以,但是我们如果把计算的过程化简一下的话,就应该是:
计数值=((系统时钟频率/想要分频得出的频率)/2)-1; 敬请关注百度贴吧“奋斗的小孩fpga之旅”。 感谢分享,会持续关注 厉害,牛,很好的程序 分频电路的verilog代码 赞,,,,,,,,,,,,,,,,,谢谢分享。。。。。。。。。。。。。。。。。。。。。。:lol 感谢楼主分享 6 分频电路的verilog代码
http://www.fpgaw.com/forum.php?mod=viewthread&tid=85430&fromuid=59831
(出处: fpga论坛|fpga设计论坛)
页:
[1]