FPGA基于计数器的分频器时序违例的解决方法

现象:约束分频出来的时钟编译后:建立时间或保持时间违例。

原因:分频器关键路径过长。

解决方案:使用流水线优化。

XML 复制代码
// 流水线化分频器
module pipelined_divider (
    input wire clk_in,
    input wire rst_n,
    output reg clk_out
);

    reg [7:0] counter_pipe1, counter_pipe2;
    reg clk_out_pipe;

    // 第一级流水线
    always @(posedge clk_in or negedge rst_n) begin
        if (!rst_n) begin
            counter_pipe1 <= 0;
        end else begin
            counter_pipe1 <= counter_pipe1 + 1;
        end
    end

    // 第二级流水线
    always @(posedge clk_in or negedge rst_n) begin
        if (!rst_n) begin
            counter_pipe2 <= 0;
            clk_out_pipe <= 0;
        end else begin
            counter_pipe2 <= counter_pipe1;
            clk_out_pipe <= (counter_pipe2 == 255);
        end
    end

    // 输出寄存器
    always @(posedge clk_in or negedge rst_n) begin
        if (!rst_n) begin
            clk_out <= 0;
        end else begin
            clk_out <= clk_out_pipe;
        end
    end

endmodule
相关推荐
Industio_触觉智能13 小时前
RK3506 Buildroot系统目录地图-上|7个关键符号链接与构建产物全解析
嵌入式硬件·sdk·智能硬件·固件·瑞芯微·系统编译·rk3506
lzj_pxxw15 小时前
STM32移植FreeRTOS(Cmake+CubeMX)
vscode·stm32·嵌入式硬件
물の韜17 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
无敌贵点大王20 小时前
从寄存器层面重学STM32(7)——定时器
stm32·单片机·嵌入式硬件
碧海银沙音频科技研究院20 小时前
粉色笔记本电脑每次要等把电池电耗尽才能开机问题解决方法
嵌入式硬件
LabVIEW开发1 天前
LabVIEW FPGA 编程:少编译几次的办法(系列 04/05)
fpga开发·labview
cmc10281 天前
318.关于在ip内部封装PLL,MMCM的注意事项
fpga开发
wuyk5551 天前
Keil工具链-第05讲-启动文件与__main到底做了什么
c语言·stm32·单片机·嵌入式硬件·物联网
LabVIEW开发2 天前
LabVIEW CompactRIO 编程模式怎么选(系列 02/05)
fpga开发·labview
shijuejianceliu2 天前
传统规则视觉与嵌入式AI智能相机的技术差异
人工智能·嵌入式硬件·视觉检测·相机