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(纳秒)

相关推荐
博览鸿蒙1 天前
如何为春招的金三银四做好准备
fpga开发
FPGA小迷弟1 天前
FPGA处理图像需要用到的主流接口详解
学习·fpga开发·verilog·fpga·modelsim
LeoZY_1 天前
CH347 USB转JTAG功能使用笔记:CH347根据SVF文件实现任意FPGA下载
笔记·stm32·嵌入式硬件·fpga开发·硬件架构·硬件工程
博览鸿蒙1 天前
FPGA在高性能计算中的应用:数据流加速与优化
fpga开发
maverick_1111 天前
【数字图像处理与FPGA实现】00 绪,建立“算法思维“与“硬件思维“的桥梁
图像处理·fpga开发
乌恩大侠2 天前
【OAI】 USRP 在conf文件中的配置,RU选项
fpga开发
qq_小单车3 天前
xilinx-DNA
fpga开发·xilinx
Flamingˢ3 天前
FPGA中的嵌入式块存储器RAM:从原理到实现的完整指南
fpga开发
Flamingˢ3 天前
FPGA中的存储器模型:从IP核到ROM的深度解析与应用实例
网络协议·tcp/ip·fpga开发
FPGA小c鸡4 天前
【FPGA深度学习加速】RNN与LSTM硬件加速完全指南:从算法原理到硬件实现
rnn·深度学习·fpga开发