异步FIFO跨时钟域亚稳态如何解决?
跨时钟域的问题:前一篇已经提到要通过比较读写指针来判断产生读空和写满信号,但是读指针是属于读时钟域的,写指针是属于写时钟域的,而异步FIFO的读写时钟域不同,是异步的,要是将读时钟域的读指针与写时钟域的写指针不做任何处理直接比较肯定是错误的,因此我们需要进行同步处理以后进行比较。
解决方法:两级寄存器同步 + 格雷码
同步的过程有两个:
(1)将写时钟域的写指针同步到读时钟域,将同步后的写指针与读时钟域的读指针进行比较产生读空信号;
(2)将读时钟域的读指针同步到写时钟域,将同步后的读指针与写时钟域的写指针进行比较产生写满信号;
异步FIFO的写指针和读指针分属不同时钟域,这样指针在进行同步过程中很容易出错,比如写指针在从0111到1000跳变时4位同时改变,这样读时钟在进行写指针同步后得到的写指针可能是0000-1111的某个值,一共有2^4个可能的情况,而这些都是不可控制的,你并不能确定会出现哪个值,那出错的概率非常大,怎么办呢?到了格雷码发挥作用的时候了,而格雷码的编码特点是相邻位每次只有 1 位发生变化, 这样在进行指针同步的时候,只有两种可能出现的情况:
指针同步正确,正是我们所要的;
指针同步出错,举例假设格雷码写指针从000->001,将写指针同步到读时钟域同步出错,出错的结果只可能是000->000,因为相邻位的格雷码每次只有一位变化,这个出错结果实际上也就是写指针没有跳变保持不变,我们所关心的就是这个错误会不会导致读空判断出错?答案是不会,最多是让空标志在FIFO不是真正空的时候产生,而不会出现空读的情形。所以gray码保证的是同步后的读写指针即使在出错的情形下依然能够保证FIFO功能的正确性。在同步过程中的亚稳态不可能消除,但是我们只要保证它不会影响我们的正常工作即可。
版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处
作者:杭州卿萃科技ALIFPGA
原文地址:杭州卿萃科技FPGA极客空间 微信公众号
扫描二维码关注杭州卿萃科技FPGA极客空间
异步FIFO跨时钟域亚稳态如何解决?相关推荐
- 异步fifo_跨时钟域同步(异步FIFO)
本文使用 Zhihu On VSCode 创作并发布 跨时钟域同步(异步FIFO) 之前学习了跨时钟域下的单bit信号同步的方法,这些单bit信号多是作为控制信号或者标志信号来使用,再实际的项目中,处 ...
- FIFO跨时钟域读写
今天面试,要走时问了我一个问题:如果两个时钟一个时钟慢一个时钟快,来读写FIFO,其中读出的数据是 连续的一段一段的. 图1 图1为写时序控制,可以看出数据是两个时钟周期的长度,当然实际中可以是任意周 ...
- CDC:跨时钟域处理
前言(还未整理好) CDC(clock domain crossing)检查(跨时钟域的检查)是对电路设计中同步电路设计的检查.非同步时钟没有固定的相位关系,这样Setup/Hold不满足而产生了亚稳 ...
- 竞争冒险 亚稳态 跨时钟域 异步fifo
1竞争冒险 竞争冒险存在组合电路中,以下图为例,对于图a中的与门,初始时刻A是高电平,B是低电平,输出Y是低电平.在某一个时刻B先开始跳变,并且达到了与门的VIL(max),此时B被视为高电平,A在某 ...
- 异步时钟引起的亚稳态问题和跨时钟域电路设计
本文总结由数字电路设计的异步时钟引起的亚稳态问题,并针对亚稳态问题提出的处理方法和跨时钟域电路设计方法.重点是分析由异步时钟引起的跨时钟域CDC问题,后续将会总结由复位引起的电路亚稳态问题. 一.亚稳 ...
- 跨时钟域方法(同步器、异步FIFO、边沿检测器、脉冲同步器、同步FIFO)
目录 1.跨时钟域方法的原因 2.跨时钟处理的两种思路 3.跨时钟域分类--单比特信号跨时钟 3.1.1慢时钟---快时钟.(满足三边沿准则,有效事件可以被安全采样) 3.1.2慢时钟---快时钟.( ...
- 异步fifo_数字IC校招基础知识点复习(五)——跨时钟域涉及part2(异步FIFO)
1.跨时钟域设计(CDC)-part 2 在上一篇中我们主要关注的是单比特的控制信号,而对于多比特信号的跨时钟域传输则需要一些其他的手段. 首先需要明确的是,一般不采用对多比特信号中的每个比特单独使用 ...
- 跨时钟域信号处理(二)——异步fifo的Verilog实现(附同步fifo的实现)
需要回答几个问题: 1.什么是异步FIFO,异步FIFO有什么功能? 跨时钟域的数据交换,防止亚稳态. 2.在产生写满与读空信号时需要进行跨时钟域如何做的,且如何能正确指示空满状态? 寄存器打两拍+格 ...
- 数字IC笔面常考,跨时钟域神器。——异步FIFO(简介及手撕代码)
异步FIFO 写在前面的话 异步FIFO相关知识点 FIFO简介 FIFO结构 应用场景(来源小梅哥 <FPGA 系统设计与验证实战指南> 章节4.4) 相关参数 异步FIFO 内部组成 ...
- 跨时钟域的亚稳态处理、为什么要打两拍不是打一拍、为什么打两拍能有效?...
转自|https://blog.csdn.net/Hide_in_Code/article/details/126600563 整理|比特波特 个人疑惑 在学习 "跨时钟域的亚稳态的应对措施 ...
最新文章
- Android 自定义圆形图片
- python为啥这么受欢迎_Python为什么这么受欢迎?原因竟在于它的10个知识点
- 画一个皮卡丘项目小结(4)
- 面向对象和面向过程,python中的类class,python中程序的入口——main方法,
- 工业POE交换机使用中的常见问题汇总
- 一篇文章搞懂数据仓库:数据仓库规范设计
- 《BI那点儿事》三国数据分析系列——蜀汉五虎上将与魏五子良将武力分析,绝对的经典分析...
- 重磅汇总!2015-2019学硕国家线走势情况!
- 几个容器网络相关问题的分析和解决总结
- java 蓝桥杯算法提高 9-2 文本加密
- linux下.so、.ko、.a的区别
- mysql 常用日期,时间函数
- Excel空值导入mysql_excel导入sqlserver时,数据为null的处理方法分享
- 免费下载《程序员面试宝典》.pdf
- robocode_摇滚,袜子,Robocode!
- Java GUI实现图书管理系统
- python字典找相同值_python-找出字典dic中重复值
- 如何利用linux分析转录组数据库,对转录组测序数据进行分析以及注释
- 计算机的安全保障机制,技术安全保障管理制度
- iOS中 断点下载详解 韩俊强的博客