用verliog语言写时钟分频模块 cnt1hz:将 50MHz 时钟分频到 1Hz 输出,作为 10 秒计数显示模 块的时钟;为了观察分频器计数结果的输出,可以增加输出端 cnt,宽度为 26 位,且带有复位功能,锁定引脚 时空着就好。
时间: 2023-11-22 19:55:07 浏览: 114
Verilog代码如下:
```verilog
module cnt1hz (
input clk,
input rst,
output reg [25:0] cnt,
output reg clk1hz
);
reg [24:0] count = 0;
always @(posedge clk or posedge rst) begin
if (rst) begin
count <= 0;
cnt <= 0;
clk1hz <= 0;
end else begin
count <= count + 1;
if (count == 25000000) begin
count <= 0;
cnt <= cnt + 1;
clk1hz <= ~clk1hz;
end
end
end
endmodule
```
说明:
该模块有两个输入信号:`clk`为50MHz的时钟信号,`rst`为复位信号;有两个输出信号:`cnt`为26位的计数结果,`clk1hz`为1Hz的时钟信号。
使用一个25位的计数器`count`来计数50MHz时钟的脉冲个数,当计数器计数达到25000000(50MHz/2/25000000=1Hz)时,将`count`清零,`cnt`加1,`clk1hz`信号取反,即输出1Hz的时钟信号。同时,`cnt`也要清零,以便在10秒计数显示模块中重新计数。当`rst`信号为高电平时,所有输出信号都要被清零,以便模块重新开始计数。
阅读全文