module clk_div( input wire Clk , //system clock 100MHz input wire Rst_n , //reset ,low valid output wire clk_us // ); //Parameter Declarations parameter CNT_MAX = 9'd100;//1us的计数值为 50 * Tclk(10ns) //Interrnal wire/reg declarations reg [5:00] cnt ; //Counter wire add_cnt ; //Counter Enable wire end_cnt ; //Counter Reset //Logic Description always @(posedge Clk or negedge Rst_n)begin if(!Rst_n)begin cnt <= 'd0; end else if(add_cnt)begin if(end_cnt)begin cnt <= 'd0; end else begin cnt <= cnt + 1'b1; end end else begin cnt <= cnt; end end assign add_cnt = 1'b1; assign end_cnt = add_cnt && cnt >= CNT_MAX - 9'd1; assign clk_us = end_cnt; endmodule
时间: 2024-04-06 08:32:20 浏览: 61
AWS_aes加密Demo使用说明1
这段代码是一个时钟分频模块,将输入的时钟信号 Clk 分频后输出。具体来说,输入的时钟信号 Clk 的频率为 100MHz,输出的时钟信号 clk_us 的频率为 1MHz,即 Clk 的频率除以 100。该模块的工作原理是在每个 Clk 上升沿或 Rst_n 下降沿时,检查计数器 cnt 的值,如果 cnt 达到一个预设值 CNT_MAX,则输出一个脉冲并将计数器复位。计数器的值每次在 Clk 上升沿时加 1,因此当计数器的值达到 CNT_MAX 时,输出一个低电平脉冲,并将计数器复位。
需要注意的是,该模块的输出 clk_us 在每个计数周期的末尾才会变为低电平,因此在使用时需要考虑这一点。
阅读全文