奋斗的小孩 发表于 2016-6-4 20:35:23

分频电路的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;

奋斗的小孩 发表于 2016-6-4 20:36:04

敬请关注百度贴吧“奋斗的小孩fpga之旅”。

Esmiamor 发表于 2016-7-28 17:44:01

                     感谢分享,会持续关注

fpga_feixiang 发表于 2017-5-22 16:09:28

厉害,牛,很好的程序

fpga_wuhan 发表于 2017-5-24 10:53:32

分频电路的verilog代码

小舍YZ 发表于 2017-6-16 11:07:53

赞,,,,,,,,,,,,,,,,,谢谢分享。。。。。。。。。。。。。。。。。。。。。。:lol

4798345 发表于 2017-6-16 13:58:26

感谢楼主分享

fpga_feixiang 发表于 2024-10-29 14:55:54

6                  

雷1314521景 发表于 2024-10-29 16:50:41

分频电路的verilog代码
http://www.fpgaw.com/forum.php?mod=viewthread&tid=85430&fromuid=59831
(出处: fpga论坛|fpga设计论坛)
页: [1]
查看完整版本: 分频电路的verilog代码