0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA设计中这两种情形该怎么约束

FPGA技术驿站 来源:FPGA技术驿站 2023-09-07 09:47 次阅读

FPGA设计中,我们经常会碰到这样的情形:从快时钟域到慢时钟域完成位宽转换,这时,这两个时钟是同步的。例如:源时钟是400MHz,数据位宽为4;目的时钟为200MHz,数据位宽为8,这样源时钟域和目的时钟域的吞吐率是一致的。这种位宽转换可直接通过寄存器采样实现,时序关系如下图所示。

wKgaomT5K7mANDKqAAAKJKhvKiQ648.png

图中Source为源时钟域(400MHz)4位数据,L0代码0号数据的低4位,H0代表0号数据的高4位,L1代表1号数据的低4位,H1代表1号数据的高4位,依此类推。Delay1为源时钟域经一级流水寄存器的输出结果。Destination为目的时钟域(200MHz)8位数据。

我们很容易搭建此电路,如下图所示。图中绿色计数器为400MHz时钟域计数器,产生源端4位数据,蓝色模块为源端流水寄存器,红色模块为目的端采样寄存器。

wKgaomT5K7mAALLXAACeZCm9IX4652.png

在这种情况下,能否使用多周期路径约束呢?这里我们看一下数据的发起沿和捕获沿的位置,如下图所示。图中红色方框为数据发起沿(400MHz),绿色方框(黄色标记线所在位置)为捕获沿,两者相差一个400MHz时钟对应的时钟周期。因此,并不满足多周期规则。这时,我们只用做常规的时钟周期约束即可,工具会自动将这里的跨时钟域按400MHz进行约束。

wKgaomT5K7mAYLyuAADerVUkYmw958.png

那么快时钟域到慢时钟域在什么情况下可以用多周期路径进行约束呢?本质上,多周期路径是指数据的采样率(SampleRate)是按慢时钟域的速率进行变化,其变化周期在慢时钟域是单周期(一个时钟周期变化一次),而在快时钟域是多周期(多个时钟周期变化一次)。满足这种情形就可以判断为多周期路径。

有时在设计中会有测试模块,或者出现这样的状况:模块1和模块2都工作在相同的时钟下,该时钟会根据设计的需要频率会发生变化,但无论怎么变化模块2只要满足最低时钟频率的要求即可。因此,这时可对模块2放松时序要求。只按照最低时钟频率约束即可。问题是只要定义了全局时钟(通过create_clock创建),该时钟就会在模块2中发生作用。如何覆盖这个约束呢?如果仍通过create_clock创建时钟,选项-period的值为时钟周期最大值(对应最低频率),但以模块2作为顶层,指定该约束针对的对象为模块2是否可行呢?答案是否定的,因为这时时序分析工具会把BUFG作为时钟的起点,而不是把全局时钟管脚作为起点。

wKgZomT5K7mANmsUAADEKluJeRw776.png

一种可行的方法是用set_max_delay,其对象是模块2内的所有时序单元(模块2内只有一个时钟),采用如下方式约束。第一条Tcl命令用于获取模块2内所有的时序单元。

wKgZomT5K7mANmVIAAAWj0BD2IA758.png

这时就可以看到时钟的起点是期望的位置了。这里可以看到set_max_delay的一个用法就是覆盖create_clock创建的约束。

wKgZomT5K7qAOD3QAANkn5fD8d0783.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1625

    文章

    21650

    浏览量

    601493
  • FPGA设计
    +关注

    关注

    9

    文章

    428

    浏览量

    26472
  • 寄存器
    +关注

    关注

    31

    文章

    5305

    浏览量

    119926
  • 时钟
    +关注

    关注

    10

    文章

    1716

    浏览量

    131327

原文标题:这两种情形该怎么约束

文章出处:【微信号:Lauren_FPGA,微信公众号:FPGA技术驿站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    FPGA设计两种IO约束:管脚约束,延迟约束

    I/O约束 I/O约束是必须要用的约束,又包括管脚约束和延迟约束。 管脚约束 管脚
    的头像 发表于 10-30 16:08 1.5w次阅读
    <b class='flag-5'>FPGA</b>设计<b class='flag-5'>中</b><b class='flag-5'>两种</b>IO<b class='flag-5'>约束</b>:管脚<b class='flag-5'>约束</b>,延迟<b class='flag-5'>约束</b>

    蜂鸣器驱动电路,下面这两种有什么区别?

    请问下面这两种电路都可以用吗?能不能给讲一下工作原理?
    发表于 11-18 12:55

    大家看看这两种电路接法对吗?哪个好点?

    大家帮我看看这两种电路的接法对吗?用于51单片机的输出口。如果对的话,帮我分析下哪个好?
    发表于 10-15 11:31

    这两种放大电路有什么区别呢

    这两种放大电路有什么区别呢
    发表于 07-06 09:23

    请问TPS74201和TPS74301这两种LDO的主要区别是什么?

    小弟问题有点多……1、请问TPS74201和TPS74301这两种LDO的主要区别是什么?我看了datasheet,感觉这两种芯片的性能基本一样。2、LDO的静态电流主要影响什么?这两种芯片的静态
    发表于 07-16 11:21

    为什么我的Altium只有这两种模式?

    为什么我的只有这两种模式?设置那边是三
    发表于 09-09 01:56

    多路电子负载在这两种电源测试的优势是什么

    电源是保障电子仪器正常工作的装置,因此对于电源各项性能指标都有严格要求。随着电子设备对电源的要求不断变化,电源对于测试仪器及技术的要求也越来越高。本文着重对多路输出电源和大功率电源测试进行阐述,分析多路电子负载在这两种电源测试的优势。 
    发表于 05-10 07:03

    如何使HDMI和VGA这两种接口互连?

    先进的半导体解决方案和灵巧的软件如何帮助实现HDMI?如何使HDMI和VGA这两种接口互连?
    发表于 05-11 06:47

    常见的ARM架构分为两种是M系列另外一是A系列,这两种有什么区别啊?

    现在市面上常见的ARM架构分为两种是M系列另外一是A系列,这两种有什么区别啊,用的时候他们一般分别用在什么地方啊。
    发表于 10-26 07:00

    终于看懂了iic与spi这两种通讯协议了

    )的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。
    的头像 发表于 11-02 11:06 17.5w次阅读
    终于看懂了iic与spi<b class='flag-5'>这两种</b>通讯协议了

    FPGA的时序约束设计

    一个好的FPGA设计一定是包含个层面:良好的代码风格和合理的约束。时序约束作为FPGA设计
    发表于 11-17 07:54 2540次阅读
    <b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的时序<b class='flag-5'>约束</b>设计

    FPGA时序约束分析余量

    FPGA在与外部器件打交道时,端口如果为输入则与input delay约束相关,如果最为输出则output delay,这两种约束的值究竟是什么涵义,在下文中我也会重点刨析,但是前提是
    发表于 11-10 10:06 4311次阅读
    <b class='flag-5'>FPGA</b>时序<b class='flag-5'>约束</b>分析余量

    Vivado进行时序约束两种方式

    上面我们讲的都是xdc文件的方式进行时序约束,Vivado还提供了两种图形界面的方式,帮我们进行时序约束:时序约束编辑器(Edit Tim
    的头像 发表于 03-08 17:17 2w次阅读
    Vivado进行时序<b class='flag-5'>约束</b>的<b class='flag-5'>两种</b>方式

    在MATLAB/simulink建模时的两种不同实现方式

    导读:本期文章主要介绍在MATLAB/simulink建模时的两种不同实现方式,一是直接用现成的文件库的模块进行搭建,一是用Sfun
    的头像 发表于 09-15 10:07 1821次阅读

    MATLAB/simulink两种实现建模方式的优势

    导读:本期文章主要介绍在MATLAB/simulink建模时的两种不同实现方式,一是直接用现成的文件库的模块进行搭建,一是用Sfun
    的头像 发表于 09-15 10:10 4897次阅读