• 晶振分频【FPGA】


    所有数据对齐晶振。

    6分频:【1】

    1. module divider_six // 6分频 【0~2】
    2. (
    3. input wire sys_clk , //系统时钟 50MHz
    4. input wire sys_rst_n , //全局复位
    5. output reg clk_out //对系统时钟 6 分频后的信号
    6. );
    7. reg [1:0] cnt; //用于计数的寄存器
    8. //cnt:计数器从 0 到 2 循环计数
    9. always@(posedge sys_clk or negedge sys_rst_n)
    10. if(sys_rst_n == 1'b0)
    11. cnt <= 2'b0;
    12. else if(cnt == 2'd2) // 计数 到 2
    13. cnt <= 2'b0;
    14. else
    15. cnt <= cnt + 1'b1;
    16. //clk_out:6 分频 50%占空比输出
    17. always@(posedge sys_clk or negedge sys_rst_n)
    18. if(sys_rst_n == 1'b0)
    19. clk_out <= 1'b0;
    20. else if(cnt == 2'd2)
    21. clk_out <= ~clk_out;

    6分频:【2】

    1. module divider_six
    2. (
    3. input wire sys_clk , //系统时钟 50MHz
    4. input wire sys_rst_n , //全局复位
    5. output reg clk_flag //指示系统时钟 6 分频后的脉冲标志信号
    6. );
    7. reg [2:0] cnt; //用于计数的寄存器
    8. //cnt:计数器从 0 到 5 循环计数
    9. always@(posedge sys_clk or negedge sys_rst_n)
    10. if(sys_rst_n == 1'b0)
    11. cnt <= 3'b0;
    12. else if(cnt == 3'd5) // 【5】清零
    13. cnt <= 3'b0;
    14. else
    15. cnt <= cnt + 1'b1;
    16. //clk_flag:脉冲信号指示 6 分频
    17. always@(posedge sys_clk or negedge sys_rst_n)
    18. if(sys_rst_n == 1'b0)
    19. clk_flag <= 1'b0;
    20. else if(cnt == 3'd4) // 【等于4】下周期_拉高
    21. clk_flag <= 1'b1;
    22. else
    23. clk_flag <= 1'b0;
    24. endmodule

    5分频:

    从第一个晶振开始:【3+2】

            2.5晶振高电平,2.5晶振低电平

    clk1是 3+2

    clk2是2+3

    需要 clk2下降沿【拉低】clk1上升沿【拉高】 

    逻辑上看,可以是clk1和clk2都是高电平时,输出高电平

    clk_out = clk1 & clk2;

    推荐5分频:

    原因是:所有数据对齐晶振。

  • 相关阅读:
    华硕ROG吹雪和微星刀锋钛两者如何选择
    PCB电路板特性检查项目都有哪些?
    第9章_瑞萨MCU零基础入门系列教程之SCI I2C
    浅谈Rocket_MQ笔记
    从零学算法239
    前端构建效率优化之路
    vue/html input 读取 json数据
    win11远程桌面用不了怎么解决
    《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端
    VoLTE端到端业务详解 | 应用案例三
  • 原文地址:https://blog.csdn.net/cfqq1989/article/details/134291755