一、定时器代码
module freq_tim (
input clk,
input rstn,
output [4:0] hour,
output [5:0] min,
output [5:0] sec
);
parameter CLK_TIM = 60;
parameter CLK_HOUR = 24;
reg [5:0] idc = 6'b0;
reg [5:0] idc_min = 6'b0;
reg [5:0] idc_sec = 6'b0;
reg [4:0] idc_hour = 6'b0;
assign sec = idc_sec;
assign min = idc_min;
assign hour = idc_hour;
always @(posedge clk or negedge rstn) begin
if (!rstn)
idc <= 1'b0;
else if (idc == 60)
idc <= 1'b0;
else
idc <= idc + 1'b1;
end
always @(posedge clk or negedge rstn) begin
if (!rstn)
idc_sec <= 1'b0;
else if (idc_sec == CLK_TIM)
idc_sec <= 1'b0;
else if (idc == 60)
idc_sec <= idc_sec + 1'b1;
else
idc_sec <= idc_sec;
end
always @(posedge clk or negedge rstn) begin
if (!rstn)
idc

本文详细描述了一个使用Verilog编写的定时器模块,包括计时逻辑和测试代码,以及测试过程中产生的波形。它展示了如何用时钟信号控制小时、分钟和秒的计数,并在测试台上进行时钟周期性的模拟操作。
最低0.47元/天 解锁文章
2650

被折叠的 条评论
为什么被折叠?



