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

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

3天内不再提示

异步FIFO用格雷码的原因有哪些

FPGA设计论坛 来源:博客园 作者:子皿木公 2021-08-04 14:05 次阅读

异步FIFO通过比较读写地址进行满空判断,但是读写地址属于不同的时钟域,所以在比较之前需要先将读写地址进行同步处理,将写地址同步到读时钟域再和读地址比较进行FIFO空状态判断(同步后的写地址一定是小于或者等于当前的写地址,所以此时判断FIFO为空不一定是真空,这样更保守)。

将读地址同步到写时钟域再和写地址比较进行FIFO满状态判断(同步后的读地址一定是小于或者等于当前的读地址,所以此时判断FIFO为满不一定是真空,这样更保守),这样可以保证FIFO的特性:FIFO空之后不能继续读取,FIFO满之后不能继续写入。

大多数情形下,异步FIFO两端的时钟不是同频的,或者读快写慢,或者读慢写快,这时候进行地址同步的时候,可能会有地址遗漏,以读慢写快为例,进行满标志判断的时候需要将读地址同步到写时钟域,因为读慢写快,所以不会有读地址遗漏,同步后的读地址滞后当前读地址,所以可能满标志会提前产生。

进行空标志判断的时候需要将写地址同步到读地址,因为读慢写快,所以当读时钟同步写地址的时候,必然会漏掉一部分写地址(写时钟快,写地址随写时钟翻转,直到满标志出现为止),那到底读时钟会同步到哪个写地址?

不必在意是哪一个,我们关注的是漏掉的地址会不会对FIFO的空标志产生影响。比如写地址从0写到10,期间读时钟域只同步到了2,5,7这三个写地址,漏掉了其他地址。同步到7地址时,真实的写地址可能已经写到10地址,相当于“在读时钟域还没来得及觉察的情况下,写时钟域可能偷偷写了数据到FIFO去”,这样在比较读写地址的时候不会产生FIFO“空”读操作。漏掉的地址也没有对FIFO的逻辑操作产生影响。

我们可以对异步FIFO的地址采用binary编码,这样并不影响异步FIFO的功能,前提是读写地址同步时能够保持正确。这种情况在功能仿真时完全正确,问题只有到时序仿真时才会遇到。毛刺可以说是异步电路的杀手,一个毛刺被触发器采样后会被放大,然后传播,导致电路功能出错。

binary编码的地址总线在跳变时极易产生毛刺,因为binary编码是多位跳变,在实现电路时不可能做到所有的地址总线等长,address bus skew必然存在,而且写地址和读地址分属不同时钟域,读写时钟完全异步,这样地址总线在进行同步过程中出错不可避免,比如写地址在从0111到1000转换时4条地址线同时跳变,这样读时钟在进行写地址同步后得到的写地址可能是0000-1111的某个值,这个完全不能确定,所以用这个同步后的写地址进行FIFO空判断的时候难免出错。

这个时候gray码体现了价值,一次只有一位数据发生变化,这样在进行地址同步的时候,只有两种情况:1.地址同步正确;2.地址同步出错,但是只有1位出错;

第一种正确的情况不需要分析,我们关注第二种,假设写地址从000-》001,读时钟域同步出错,写地址为000-》000,也就是地址没有跳变,但是用这个错误的写地址去做空判断不会出错,最多是让空标志在FIFO不是真正空的时候产生,而不会出现空读的情形。

所以gray码保证的是同步后的读写地址即使在出错的情形下依然能够保证FIFO功能的正确性,当然同步后的读写地址出错总是存在的(因为时钟异步,采样点不确定)。

这里需要注意gray码只是在相邻两次跳变之间才会出现只有1位数据不一致的情形,超过两个周期则不一定,所有地址总线bus skew一定不能超过一个周期,否则可能出现gray码多位数据跳变的情况,这个时候gray码就失去了作用,因为这时候同步后的地址已经不能保证只有1位跳变了。

另外需要将地址总线打两拍,这是为了避免亚稳态传播,理论上将打两拍不能消除亚稳态现象,因为时钟异步,亚稳态不可避免,但是可以极大降低亚稳态传播的概率,低频情况下甚至STA不需要分析这里的异步时序,因为寄存器都可以在一拍内将亚稳态消除,恢复到正常0/1态。而在高频情况下则不一定,尤其在28nm工艺以下,需要检查两级触发器的延迟,保证延迟低,这样可以提高Tr,提高系统MTBF。

编辑:jq

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

    关注

    0

    文章

    20

    浏览量

    8342

原文标题:异步FIFO为什么用格雷码

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    具有FIFO的双异步通信元件TL16C552A数据表

    电子发烧友网站提供《具有FIFO的双异步通信元件TL16C552A数据表.pdf》资料免费下载
    发表于 06-26 11:28 0次下载
    具有<b class='flag-5'>FIFO</b>的双<b class='flag-5'>异步</b>通信元件TL16C552A数据表

    异步永磁电机无法达到同步转速的原因

    将详细分析异步永磁电机无法达到同步转速的原因异步电机的基本原理 异步电机是一种交流电机,其工作原理基于电磁感应。当交流电通过定子绕组时,会在定子中产生旋转磁场。这个旋转磁场会与转子
    的头像 发表于 06-13 09:58 566次阅读

    同步FIFO异步FIFO区别介绍

    ,并且间隔时间长,也就是突发写入。那么通过设置一定深度的FIFO,可以起到数据暂存的功能,且使得后续处理流程平滑。 时钟域的隔离:主要用异步FIFO。对于不同时钟域的数据传输,可以通过FIFO
    的头像 发表于 06-04 14:27 1158次阅读
    同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>区别介绍

    关于同步FIFO异步FIFO的基础知识总结

    FIFO是一种先进先出数据缓存器,它与普通存储器的区别是没有外部读写地址线,使用起来非常简单,缺点是只能顺序读写,而不能随机读写。
    的头像 发表于 04-09 14:23 2927次阅读
    关于同步<b class='flag-5'>FIFO</b>和<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>的基础知识总结

    FIFO漫谈之异步FIFO空满信号的产生位置

    的事聊完了,后面顺理成章的就是读写通路模块的设计。不过在读写控制通路之前还要明确下另一个问题,就是空满信号的产生位置的事情。
    的头像 发表于 03-19 13:37 569次阅读
    <b class='flag-5'>FIFO</b>漫谈之<b class='flag-5'>异步</b><b class='flag-5'>FIFO</b>空满信号的产生位置

    ​车传感器频繁损坏的原因及解决方案

    1.车传感器频繁损坏的原因?卯EMC小哥,在汽车客户做整改中发现,车传感器频繁损坏,主要的共同原因:不稳定的电压。在车辆工作过程中,电
    的头像 发表于 03-06 08:02 1101次阅读
    ​车<b class='flag-5'>用</b>传感器频繁损坏的<b class='flag-5'>原因</b>及解决方案

    传感器频繁损坏的原因?车传感器频繁损坏的解决方案

    卯EMC小哥,在汽车客户做整改中发现,车传感器频繁损坏,主要的共同原因:不稳定的电压。
    的头像 发表于 03-05 14:49 618次阅读
    车<b class='flag-5'>用</b>传感器频繁损坏的<b class='flag-5'>原因</b>?车<b class='flag-5'>用</b>传感器频繁损坏的解决方案

    cy7c68013a slave fifo写数据出现异常的原因哪些?如何解决?

    我使用68013A和MCU采用Slave Fifo 异步方式进行通讯,EP2为AUTOOUT,EP6为AUTOIN,16位。现在有一个奇怪的现象出现,当通过mcu发送0x00 00 ff ff 00
    发表于 02-29 07:00

    传感器频繁损坏的原因及解决方案

    1.车传感器频繁损坏的原因卯EMC小哥,在汽车客户做整改中发现,车传感器频繁损坏,主要的共同原因:不稳定的电压。 在车辆工作过程中
    的头像 发表于 02-26 10:59 445次阅读
    车<b class='flag-5'>用</b>传感器频繁损坏的<b class='flag-5'>原因</b>及解决方案

    异步FIFO结构设计

    电子发烧友网站提供《异步FIFO结构设计.pdf》资料免费下载
    发表于 02-06 09:06 0次下载

    电脑的pin是什么?PIN和密码什么区别?电脑如何设置pin

    电脑的pin是什么?PIN和密码什么区别?电脑如何设置pin? 电脑的PIN是个人识别号码的简称,是一种用于验证身份或访问控制的数
    的头像 发表于 01-17 11:17 2.7w次阅读

    交流异步电机比永磁同步效率低的原因

    交流异步电机比永磁同步效率低的原因 交流异步电机与永磁同步电机是现代工业应用中常见的两种电机类型,它们在结构和工作原理上存在一定的差异。尽管永磁同步电机在效率方面相对更高,但异步电机仍
    的头像 发表于 11-23 11:00 1095次阅读

    希尔快速接头帮助多种检漏方法完成和产品之间的快速与连接

    常见的气密检漏方法传统沉水气泡检漏法和干式气密检漏法,它们各有长短之处,这里都需要快速密封接头对产品进行有效的快速密封与连接。希尔GripSeal快速密封接头品类多样,助力于各种产品接口的密封连接,满足各种测试需求,无论是
    的头像 发表于 11-17 15:45 424次阅读
    <b class='flag-5'>格</b><b class='flag-5'>雷</b>希尔快速接头帮助多种检漏方法完成和产品之间的快速与连接

    FPGA学习-异步FIFO原型设计与验证

      点击上方 蓝字 关注我们   第一节:fifo基础     内容: 1. 掌握FPGA设计中关于数据缓存的使用 2. 掌握FIFO工作原理
    的头像 发表于 11-17 14:00 459次阅读

    信号协议中同步传输和异步传输什么区别

    在信号协议中,非常多的种类,如UART,I2C,SPI,PCIe等等,它们自己的一套制定规则,但是在协议制定中,一定需要在同步和异步中选择其中一项作为传输规则。 所以这其中的同步传输和异步
    的头像 发表于 11-07 14:50 1161次阅读
    信号协议中同步传输和<b class='flag-5'>异步</b>传输<b class='flag-5'>有</b>什么区别