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

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

3天内不再提示

在做仿真时有没有办法更好得模拟跨时钟域的情况?

FPGA开发之路 来源:FPGA开发之路 2024-01-24 10:01 次阅读

首先需要指出本文题目所指的仿真指的是功能仿真,即不带时序信息的仿真。

每个FPGA developer都会做功能仿真验证RTL代码功能的正确性。我们知道在功能仿真中是没有考虑延迟的,组合逻辑是零延迟,寄存器也是在时钟跳变沿瞬时完成采样。

对于同步电路来说,功能仿真完成后,再加上静态时序分析,我们基本能确保设计的电路能正确工作(有一些情况例外,比如综合的结果和仿真的结果不同)。但是对于异步电路,功能仿真的零延迟特性没法很好模拟跨时钟域时的情况,在静态时序分析时我们一般也是false path,不做后仿真(时序仿真)则很难确保跨时钟域电路设计的正确性。

那么我们在做仿真时有没有办法更好得模拟跨时钟域的情况?

先看看跨时钟域有什么特性?一是亚稳态导致采样到的信号出现随机值,二是跨时钟域不是瞬时结束的,而是会持续一段时间。

依据此特性,我们在功能仿真时可以手动给跨时钟域信号加延迟。延迟的大小可以是random的一个值来更好得模拟随机采样值,而且最好是能在真实延迟的大概范围。

举个例子。

假设我们是跨时钟域采样一个bit的信号,输入信号不停在0和1之间跳变。如下图所示,data1_q是输入单bit信号的寄存器输出,data1_q_delay则是对data1_q添加延迟后的信号。data2_q是在目的时钟域clk2对data1_q的采样,data2_q_delay则是在目的时钟域对data1_q_delay的采样。

370ae564-b9ed-11ee-8b88-92fbcf53809c.jpg

从图中可以看到,data2_q在跨时钟域时只有一个cycle采到错误的值,data2_q_delay则较好的模拟出了采样值的随机性,而且会持续多个cycle出现“随机”值。




审核编辑:刘清

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

    关注

    31

    文章

    5342

    浏览量

    120298
  • 静态时序分析

    关注

    0

    文章

    28

    浏览量

    9587
  • 时钟信号
    +关注

    关注

    4

    文章

    448

    浏览量

    28559

原文标题:跨时钟域如何仿真?

文章出处:【微信号:FPGA开发之路,微信公众号:FPGA开发之路】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IGBT驱动波形负压关断时有上升尖峰,请问有没有办法可以抑制?

    逆变器,用的一个桥臂IGBT模块,IGBT驱动波形下管负压关断时有上升尖峰,请问有没有办法可以抑制?图中黄色是下管驱动波形,蓝色是上管驱动波形。
    发表于 04-03 11:20

    gpio0有没有办法切换复位以防止获取时钟输出?

    我发现在原型设计情况下,gpio0 输出 26Mhz 时钟这一事实可能会导致相当多的噪声问题。电缆等由于 gpio0 必须被拉高或拉低才能控制引导模式,因此它必须连接到编程器,通常通过电缆。有没有办法
    发表于 07-08 06:45

    quartus仿真双口RAM 实现时钟通信

    双口RAM如何实现时钟通信啊?怎么在quartus ii仿真???
    发表于 05-02 21:51

    有没有办法模拟FET的大信号时域

    亲爱的All有没有办法在ADS 2011.10中使用实时有源负载牵引技术模拟FET的大信号时域?如果这是可能的话,如果有例子,它将是值得的。先谢谢你 以上来自于谷歌翻译 以下为原文Dear All
    发表于 10-09 09:52

    TCL有没有办法没有重新运行模拟情况下获得HDL对象的值?

    get_value将在当前时间获取HDL对象的值。我想要一个命令来获取更早的值。一种方法是通过重新运行模拟来使用get_value进行日志记录。有没有办法没有重新运行模拟
    发表于 05-18 08:51

    有没有办法找出触摸按钮时的X和Y坐标呢?

    谢谢你的帮忙。在按下视图类的按钮时有没有办法找出触摸的X,Y坐标?谢谢你。
    发表于 12-26 06:36

    有没有办法在不清洁ZMK的情况下更换新电池?

    我正在研究 IMX8MP evk,我想实现篡改保护,当篡改发生时,ZMK 将被清除。在我看来SNVS是工作在power-always-on,所以我们需要放置一个cell battery。 我的问题是当电池没电时,ZMK 会被清洗吗?我有没有办法在不清洁 ZMK 的
    发表于 03-24 08:27

    AT+HTTPCLIENT有没有办法打断命令?

    版本: v2.2.0.0 ESP32-WROVER_AT_Bin_V2.2.0.0 问题描述: 1) AT+HTTPCLIENT命令看上去没有办法中止 有没有办法打断这样的命令? 2
    发表于 04-24 08:09

    如何利用FPGA设计一个时钟的同步策略?

    基于FPGA的数字系统设计中大都推荐采用同步时序的设计,也就是单时钟系统。但是实际的工程中,纯粹单时钟系统设计的情况很少,特别是设计模块与外围芯片的通信中,
    的头像 发表于 09-01 08:29 5554次阅读
    如何利用FPGA设计一个<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的同步策略?

    关于时钟的详细解答

    每一个做数字逻辑的都绕不开时钟处理,谈一谈SpinalHDL里用于时钟处理的一些手段方法
    的头像 发表于 04-27 10:52 4271次阅读
    关于<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>的详细解答

    时钟电路设计总结

    时钟操作包括同步时钟操作和异步
    的头像 发表于 05-18 09:18 741次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计总结

    FPGA时钟处理方法(一)

    时钟是FPGA设计中最容易出错的设计模块,而且一旦时钟出现问题,定位排查会非常困难,因为
    的头像 发表于 05-25 15:06 1989次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(一)

    FPGA时钟处理方法(二)

    上一篇文章已经讲过了单bit时钟的处理方法,这次解说一下多bit的时钟方法。
    的头像 发表于 05-25 15:07 1030次阅读
    FPGA<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>处理方法(二)

    有没有办法像debug RTL代码一样将UVM中变量拉到波形上看呢?

    我们常用的debug UVM的方法是通过打印log实现。有没有办法像 debug RTL代码一样将 UVM 中变量拉到波形上看呢?答案是有的,下面让我们看看是怎么做到的。
    的头像 发表于 06-29 15:14 1595次阅读
    <b class='flag-5'>有没有办法</b>像debug RTL代码一样将UVM中变量拉到波形上看呢?

    时钟电路设计:单位宽信号如何时钟

    的个数,取值范围为2~10;参数INIT_SYNC_FF决定了仿真时是否使用初始值;参数SIM_ASSERT_CHK用于检查仿真中的问题;参数SRC_INPUT_REG用于是否对输入信号(待
    的头像 发表于 08-16 09:53 1337次阅读
    <b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>电路设计:单位宽信号如何<b class='flag-5'>跨</b><b class='flag-5'>时钟</b><b class='flag-5'>域</b>