8、FPGA重要设计思想

1、速度和面积互换原则

        速度指整个工程稳定运行所能达到的最高时钟频率,与寄存器建立时间、保持时间、外部接口时序要求、逻辑延时、走线延时等因素相关。

        面积指消耗的触发器、查找表等硬件资源数量。

        速度与面积是相互矛盾且可相互转换的。

2、乒乓操作

        乒乓操作主要对数据流进行控制,实现数据流的无缝衔接。原理如下:

                

3、串/并转换

        串并转换可采用寄存器、双口RAM、SDRAM、SRAM、FIFO等实现。

                                   

4、流水线设计

        如果某个设计可以分为若干个步骤进行处理,且数据处理过程是单向的,没有反馈运算或迭代运算,就可以考虑采用流水线设计,以提高系统的工作频率。

                                  

        如上图所示,可将复杂组合逻辑分为多个组合逻辑,并插入触发器实现流水线处理。 

                                 

5、模块化设计

         模块化设计将大规模复杂系统按照一定规则划分为多个模块,如下图。

                                 

        对于顶层及中间模块,一般只做模块的黏合,只在叶子模块做逻辑设计,实现模块间的低耦合,便于后期维护与升级。 

6、时钟设计

        1) 内部逻辑产生的时钟

        避免组合逻辑直接输出时钟信号,可使用专用时钟信号(外部晶振输入或PLL输出时钟)打一拍,进行同步处理。时钟和复位信号最好走全局时钟网络。

        2) 使用使能时钟

        对于时钟分频,可使用原来的时钟信号,利用使能信号实现分频功能。

module clk_div_en
    #(
    parameter     CLKDIV = 4    // 时钟分频数
    )
    (
    input       clk,    // 时钟
    input       rst_n,  // 复位信号

    output wire en      // 使能信号
    );

    /* 时钟计数器 */
    reg [15:0] clk_cnt;
    always @(posedge clk or negedge rst_n) begin
        if(!rst_n) clk_cnt <= 1'b0;
        else if(clk_cnt == CLKDIV - 1)  clk_cnt <= 1'b0;
        else clk_cnt <= clk_cnt + 1'b1;
    end

    /* 产生使能信号 */
    assign en = (clk_cnt == CLKDIV - 1);
    
endmodule

        3) 门控时钟

        门控时钟通常使用门控信号与时钟信号相与实现,能够降低系统功耗。

            

 

        门控时钟不符合同步设计的思想,可采用如下设计进行改善。

             

         在时钟下降沿将门控信号打一拍,再与时钟信号相与。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值