【转】FPGA优化讨论:门控时钟与多扇出问题解决方案

本文讨论了FPGA设计中常见的门控时钟与多扇出问题,详细解释了这些问题可能导致的后果,并提供了有效的解决方案,包括使用全局时钟资源优化门控时钟及通过复制寄存器策略减少多扇出。

 FPGA设计中,经常会出现由于设计不合理产生的布线问题,较为突出的一点就是门控时钟和多扇出问题。

 

 门控时钟指的是不用FPGA内部的全局时钟资源BUFG来控制触发器的时钟沿输入端而是采用组合逻辑和其它时序逻辑(如分频器)产生的信号作为触发器的时钟沿输入端。门控时钟容易带来时钟漂移、毛刺等,使得触发器误动作,通常,对于驱动的触发器数量较少的门控时钟,编译器可以自动将分布时钟缓冲器将其布线优化,但是对于驱动触发器较多的门控时钟,将会使布线不稳定,重者造成设计混乱。门控时中较多,也会使得整个设计的最大工作速度下降,降低产品的性能。

 

 对于门控时钟问题,通常的解决办法是将分频器做成与系统时钟宽度一个周期宽度的脉冲信号,所谓系统时钟就是用全局时钟资源BUFG驱动的高扇出、零漂移、零畸变的时钟资源,在FPGA内部的布线结构是树形结构。

 

 将分频器的输出送入触发器的ce端,当系统时钟到来时,检测ce信号的有效性,当ce信号有效时,将触发器的输出改变,和分频器的作用完全一样,而且这样处理也使得布线更加优化。

 

 对于多扇出问题,通常是指用一个节点驱动多个下级逻辑器件,对于门控时钟驱动较多的触发器,也可以归为此类问题,此问题会严重影响FPGA布线的稳定性,设计的时候要多加注意,此时采用的是复制寄存器策略:

 

 CLK为系统时钟,M1为1MHz方波信号,由于M1信号驱动的模块较多,所以M1的扇出较多(假定扇出数为140),为了减少扇出,用系统时钟采样,将M1信号驱动7个D触发器,然后将7个D触发器的输出端分给7个模块,这样每个复制点(DUP0~DUP6)平均扇出变为20,M1的信号扇出变为7,这样就减少了每个信号的扇出,优化了逻辑,也提高了设计的整体性能。

 

上述模块的VHDL语言描述为:

 

library ieee;

use ieee.std_logic_1164.all;

 

entity RegDup is

port(clk:in std_logic;

        Dup:out std_logic_vector(6 downto 0);

        M1:in std_logic);

end RegDup;

 

architecture rtl of RegDup is

begin

process(Clk)

begin

  if Clk'event and Clk='1'then          --系统时钟采样

    Dup(0)<=M1;            --复制M1信号

    Dup(1)<=M1;

    Dup(2)<=M1;

    Dup(3)<=M1;

    Dup(4)<=M1;

    Dup(5)<=M1;

    Dup(6)<=M1;

  end if;

end process;

end rtl;

转载于:https://www.cnblogs.com/Jerome_Lee/archive/2009/11/30/1612017.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值