如何快速找到组合逻辑生成的时钟

       组合逻辑生成的时钟,在FPGA设计中应该避免,尤其是该时钟扇出很大或者时钟频率较高,即便是该时钟通过BUFG进入全局时钟网络。

       组合逻辑生成时钟的典型特征是在网表中我们能够看到LUT(查找表)的输出直接连接或通过BUFG连接到时序逻辑单元比如触发器的时钟端口。最直接的危害是组合逻辑可能会产生毛刺(Glitch),从而导致电路功能错误。看个案例,如下图所示。由于毛刺的存在,计数器多计数了一次,导致错误。

       从时序角度而言,组合逻辑生成的时钟会增加时钟线上的延迟,从而导致过大的Clock Skew,最终造成建立时间和保持时间违例。此外,如果有毛刺,毛刺通常很窄,很可能无法满足触发器的Pulse Width要求。还有的工程中尽管没有直接把LUT的输出当作时钟,而是将其通过一个触发器之后再用作时钟,这可以过滤掉毛刺,但同样会增加时钟线上的延迟,导致Clock Skew过大。因此,在FPGA设计中,要避免此类时钟。

 

       拿到一个网表,如何判定设计中是否包含此类时钟呢?从上面的描述可以看到,这类时钟要么是LUT输出,要么是触发器输出,这是第一个特征。第二个特殊,既然是时钟,时钟网线的类型就是LOCAL_CLOCK,根据这两点就能找到时钟管脚,相应的Tcl脚本如下图所示。

       找到了这类时钟,如何优化呢?如果这类时钟是在MMCM或PLL可生成频率范围内,那么建议用MMCM或PLL生成,尤其是该时钟扇出比较大的时候。如果MMCM或PLL无法生成,且时钟频率很低,例如低于5MHz,而设计已经到了后期,不太可能大范围修改,那么尝试是否可能将该时钟驱动的逻辑都放在一个时钟区域内,同时保证时钟源也在该时钟区域内,这可通过手工布局的方式(画Pblock)实现。这样做对于降低Clock Skew会有些帮助。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
“使用vhdl编写的组合逻辑时钟.zip”包含了一个vhdl代码文件,它描述了一个基于FPGA芯片的时钟生成器。vhdl(VHSIC Hardware Description Language)是一种硬件描述语言,常用于FPGA和ASIC的设计开发,能够描述电路中的各个模块之间的连接关系和信号传输方式等。 该代码文件中的组合逻辑部分是指一个非寄存器电路,其输出仅依赖于其输入,而不依赖于时钟变化或存储器状态等因素。在该时钟生成器中,组合逻辑实现了时钟信号的生成:它接收外部输入信号作为时钟信号的主频,之后根据一定的逻辑关系输出高电平和低电平信号,构成了一个简单的时钟信号波形。 该代码文件采用Entity-architecture结构,以方便读者理解其中的设计过程和实现细节。Entity描述了时钟生成器的输入输出端口和信号类型等基本信息,它是一个简介而宽泛的描述。architecture描述了具体的实现方式,包含了设计所需的各种逻辑运算和信号流通路径等。 该时钟生成器代码,适用于FPGA芯片的实现,可以方便地实现调整 FPGA 板的时钟频率。当用户需要对FPGA芯片的时钟频率进行调整时,只需改变输入时钟信号的主频即可,代码会利用组合逻辑重新生成合适的时钟波形。因此,该代码具备了一定的可重构性和普适性。 总之,“使用vhdl编写的组合逻辑时钟.zip”不仅展示了一个时钟生成器的设计思想和实现方法,也为读者提供了一个学习vhdl语言的实例。通过该代码的学习和模仿,读者可以更好地理解硬件描述语言的应用场景、基本结构和实现方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值