50Mhz产生时间

分频:单个时钟周期变长,频率变小,若50Mhz实现2分频,则分频后为25Mhz

倍频:单个时钟周期变短,频率变大

50Mhz 对应一个计数为0.02us,也就是20纳秒,计数到1us要50个计数,其他可自己算,下面是产生1us、1ms、1s的方法

cpp 复制代码
module count_time
#(
    parameter CNT_1US_MAX = 6'd49,
    parameter CNT_1MS_MAX = 10'd999,
    parameter CNT_1S_MAX = 10'd999
)
(
    input wire sys_clk,
    input wire sys_rst_n,
    output reg  led_out
);
//50Mhz为20ns

reg [9:0]cnt_1s;     //让1ms计数到1000
reg [9:0]cnt_1ms;    //让1us计数到1000
reg [5:0]cnt_1us;  //计数到50
reg cnt_en;
//1us
always@ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_1us <= 6'd0;
    else if(cnt_1us == CNT_1US_MAX)
        cnt_1us <= 6'd0;
    else 
        cnt_1us <= cnt_1us +6'd1;
 //1ms       
always@ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_1ms <= 10'd0;
    else if(cnt_1ms == CNT_1MS_MAX && cnt_1us == CNT_1US_MAX)
        cnt_1ms <= 10'd0;
    else if(cnt_1us == CNT_1US_MAX)
        cnt_1ms <= cnt_1ms +10'd1;
    else
        cnt_1ms <= cnt_1ms;
 //1s      
always@ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_1s <= 10'd0;
    else if(cnt_1s == CNT_1S_MAX && cnt_1ms == CNT_1MS_MAX && cnt_1us == CNT_1US_MAX)
        cnt_1s <= 10'd0;
    else if(cnt_1us == CNT_1US_MAX && cnt_1ms == CNT_1MS_MAX )
        cnt_1s <= cnt_1s + 10'd1;
    else
        cnt_1s <= cnt_1s;
        
//控制状态        
always@ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        cnt_en <= 1'b0;
    else if(cnt_1s == CNT_1S_MAX && cnt_1ms == CNT_1MS_MAX && cnt_1us == CNT_1US_MAX)
        cnt_en <= ~cnt_en;
    else 
        cnt_en <= cnt_en;
        
always@ (posedge sys_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        led_out <= 1'b1;
    else if((cnt_en == 1'b0) && (cnt_1ms <= cnt_1s) 
            || (cnt_en == 1'b1) && (cnt_1ms >= cnt_1s))
        led_out <= 1'b0;
    else 
        led_out <= 1'b1;
endmodule

时钟频率对应的时钟周期

5MHz 200ns

10MHz 100ns

20MHz 50ns

25MHz 40ns

33MHz 30ns

40MHz 25ns

50MHz 20ns

66MHz 15ns

80MHz 12ns

100MHz 10ns

120MHz 8.3ns

133MHz 7.5ns

166MHz 6.0ns

200MHz 5.0ns

250MHz 4.0ns

300MHz 3.3ns

333MHz 3.0ns

400MHz 2.5ns

500MHz 2.0ns

800MHz 1.2ns

1GHz 1.0ns

4GHz 0.25ns

常用单位换算

1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz

1s=1000ms,1 ms=1000μs,1μs=1000ns

s(秒)、ms(毫秒)、μs(微秒)、ns(纳秒)

相关推荐
传感器与混合集成电路12 小时前
伺服数据采集控制模块系统集成实战手册:接口设计要点、上电顺序与开发环境配置全解析
fpga开发
xxLearn20 小时前
Vivado 2025.2 下载程序时提示:“ERROR : invalid command name ps7_init“
fpga开发
科恒盛远1 天前
【无标题】
fpga开发·硬件工程·信号处理
千寻xun2 天前
一、理论篇-NVME协议学习笔记
笔记·学习·fpga开发·nvme ssd·nvme协议
AndyHeee2 天前
【PCIe中的BAR、MMIO、MMU、mmap函数与页表】
fpga开发
nuoxin1142 天前
HR4988替代A4988-富利威
网络·人工智能·嵌入式硬件·fpga开发·dsp开发
一口一口吃成大V2 天前
vivado的bit 和 bin的区别
fpga开发
尤老师FPGA3 天前
HDMI数据的接收发送实验(十八)
fpga开发
北京青翼科技3 天前
青翼科技 JFM7K325T FPGA+FT-M6678 DSP 的全国产化信号处理平台丨FPGA开发板
fpga开发·数据采集卡·fmc子卡·fpga开发板·ad采集卡·图像处理卡·dsp信号处理
zlinear数据采集卡4 天前
从0到1硬核拆解:工业级数据采集卡的隔离设计与Modbus通信实战
arm开发·单片机·嵌入式硬件·fpga开发·开源