跨时钟域电路设计——多bit信号FIFO

多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的。

如下图:

虽然信号都同步到目的时钟域,可完成的功能却与设计的初衷不相符。

解决方案之一为对信号进行格雷码编码,但此方案只适用于连续变化的信号。另一种方案为增加新的控制信号en,确保传输信号稳定时采样。比如在传输信号稳定输出1、2个clk后再进行采样。

一、异步FIFO

上面说到的为多bit指示信号传输,而数据流的传输与指示信号不同在于:数据流大多具有连续性,及背靠背传输;数据流要求信号具有较快的传输速度。主要的方案是利用FIFO进行传输。

异步FIFO结构如下:

 

1、FIFO的参数

  • 宽度:一次读写操作的数据位
  • 深度:可以存储的N位数据的数目(宽度为N)
  • 满标志:FIFO已满或将要满时,由FIFO的状态电路送出的信号,阻止FIFO写操作
  • 空标志:FIFO已空或将要空时,由FIFO的状态电路送出的信号,阻止FIFO读操作
  • 读时钟:读操作所遵循的时钟
  • 写时钟:写操作所遵循的时钟

2、设计空满标志位电路

正确产生空满信号是任何FIFO设计的关键。其设计原则是:能写满而不溢出,能读空而不多读

  • 在写时钟域下,判断读写指针的关系,生成满标志
  • 在读时钟域下,判断读写指针的关系,生成空标志

对于空满判断,可看下图

在判断空和满的情况下,都会有读写指针相等的情况,可采用以下方法进行区分:

在地址中额外添加一个位,当写指针增加并越过最后一个地址位时,就将这个额外的位(MSB)加一,其他位回0。读指针也进行同样的操作。额外的位作为折回标志位。如果两个指针的MSB不同,其余位相等,说明读指针比写指针少折回了一次,这种情况下,FIFO为满。而读写指针所有位都相等,说明折回次数相等,此时FIFO为空。

解决空满判断后,则是读写指针同步的问题。二进制的读写指针通常位宽超过了1bit,而多比特信号是不可以直接使用两级同步器的。这时,考虑到FIFO地址是连续变化的,我们使用格雷码来进行传输。格雷码相邻两个数值只有一位发生变化,0和最大数之间也只有一位不同。

而转换为格雷码进行传输后,如何进行空满判断?如下图:

至于为什么选择格雷码进行传输,我们来看格雷码传输失效的情况:

格雷码传输失效,只有一位同步出错,此时地址没有跳变。如果是写地址同步失效,用这个错误的写地址在读时钟域进行空判断时不会出错,最多是让空标志在FIFO不是真正空的时候产生,而不会产生空读的情况。格雷码保证的是同步后的读写地址即使在出错的情况下依然能够保证FIFO功能的正确性。

 

3、设计FIFO的深度

先从一个例题入手,

假设FIFO的写时钟为100MHZ,读时钟为80MHZ。在FIFO输入侧,每100个时钟,写入80个数据;FIFO读入测,每个时钟读取一个数据。设计合理的FIFO深度,使FIFO不会溢出。

我们需要考虑数据轻载和重载的情况,对缓存能力要求最高的情况为背靠背传输,则FIFO深度为160-(160/100)*80=32

我们将问题一般化:

  1. 写时钟频率WCLK
  2. 读时钟频率RCLK
  3. 写入测每B个时钟周期有A个数据写入
  4. 读取测每Y个时钟周期有X个数据读出

则FIFO的深度为Depth=burst\_length-\frac{burst\_length}{wclk}*(rclk*\frac{X}{Y}),其中burst_length与写入测情况有关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/253869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF 打印实例

原文:WPF 打印实例在WPF 中可以通过PrintDialog 类方便的实现应用程序打印功能&#xff0c;本文将使用一个简单实例进行演示。首先在VS中编辑一个图形&#xff08;如下图所示&#xff09;。 将需要打印的内容放入同一个<Canvas>中&#xff0c;并起名为“printArea”&…

静态时序分析——基础概念

一、简述 静态时序分析是检查系统时序是否满足要求的主要手段。以往时序的验证依赖于仿真&#xff0c;采用仿真的方法&#xff0c;覆盖率跟所施加的激励有关&#xff0c;有些时序违例会被忽略。此外&#xff0c;仿真方法效率非常的低&#xff0c;会大大延长产品的开发周期。静…

静态时序分析——单周期

一、建立时间的检查 建立时间的检查是指检查电路里每一个触发器的数据和时钟的关系是否满足建立时间的要求。 我们以上图为例进行建立时间检查。由图可知&#xff0c;我们主要针对第二个触发器UFF1进行检查。我们可以梳理时序关系如下&#xff1a; 通过这个图&#xff0c;我们…

自己搭建的CISCO实验环境

交换机&#xff1a;设备型号&#xff1a; CISCO 3750 24-TS 3台CISCO 3750 48-PS 1台路由器&#xff1a;设备型号&#xff1a;1.CISCO 2821 3台2.CISCO 3745 3台 物理拓扑图如下&#xff1a; 转载于:https://blog.51cto.com/zxs3026/2156424

CMOS组合逻辑

1. 静态互补CMOS 实际上就是静态CMOS反相器扩展为具有多个输入。更反相器一样具有良好的稳定性&#xff0c;性能和功耗。 静态的概念&#xff1a;每一时刻每个门的输出通过低阻抗路径连到VDD或VSS上。任何时候输出即为布尔函数值。动态电路通常依赖把信号暂存在高阻抗节点的电…

绘制泰森多边形

使用到的数据文件&#xff0c;内容如图&#xff1a; 代码&#xff1a; clc; clear; close all; % 导入需要的坐标数据成矩阵 a load(test.txt); x a(:,1); y a(:,2); x x;%获取坐标的横坐标 y y;%获取坐标的纵坐标 %根据点 绘制泰森多边形 voronoi(x,y); %设定x轴的边界 x…

(八)限定某个目录禁止解析php、限制user_agent和PHP相关配置

2019独角兽企业重金招聘Python工程师标准>>> 限定某个目录禁止解析php 对于使用php语言编写的网站&#xff0c;有一些目录是有需求上传文件的。如果网站代码有漏洞&#xff0c;让黑客上传了一个用PHP写的木马&#xff0c;由于网站可以执行PHP程序&#xff0c;最终会…

静态时序分析——多周期、半周期和伪路径

一、多周期 multicycle paths 在一些情况下&#xff0c;如下图所示&#xff0c;两个寄存器之间的组合电路传输的逻辑延时超过一个时钟周期。在这样的情况下&#xff0c;这个组合路径被定义为多周期路径&#xff08;multicycle path&#xff09;。尽管后一个寄存器会在每一个的…

网络七层协议之物理层

我们以一个非常简单的例子开始&#xff1a; 两服务器通讯问题 如上图&#xff0c;有两台服务器&#xff0c;分别是 Server 1 和 Server 2 。 我们先做一个假设&#xff1a;计算机网络现在还没有被发明出来&#xff0c; 作为计算机科学家的你&#xff0c;想在这两台服务器间传递…

静态时序分析——On-chip Variation

OCV&#xff08;on-chip variation&#xff09;是指在同一个芯片上, 由于制造工艺和环境等原因导致芯片上各部分特征不能完全一样&#xff0c;从而造成偏差&#xff0c;对时序分析造成影响。这些偏差对互联线和cell的延时都是有影响的。 由于OCV对延时有影响&#xff0c;那么我…

[转载]IIS7报500.23错误的解决方法

原文出处&#xff1a; 原文作者&#xff1a;pizibaidu 原文链接&#xff1a;http://pizibaidu.blog.51cto.com/1361909/1794446 背景&#xff1a;今天公司终端上有一个功能打开异常&#xff0c;报500错误&#xff0c;我用Fiddler找到链接&#xff0c;然后在IE里打开&#xff0c…

关于用户空间和内核空间

当一个任务&#xff08;进程&#xff09;执行系统调用而陷入内核代码中执行时&#xff0c;我们就称进程处于内核运行态&#xff08;内核态&#xff09;。在内核态下&#xff0c;CPU可执行任何指令。当进程在执行用户自己的代码时&#xff0c;则称其处于用户运行态&#xff08;用…

静态时序分析——Timing borrow

Timing Borrow技术又称为cycle stealing技术&#xff0c;主要是利用latch的电平敏感特性&#xff0c;通过有效电平获取数据&#xff0c;通过无效电平保持被锁存的数据&#xff0c;主要用于解决路径时序不满足电路要求的情况。 通过TimingBorrow可以对电路进行加速,当路径延迟较…

基于MTD的NAND驱动开发(二)

基于MTD的NAND驱动开发(二) 基于MTD的NAND驱动开发(三) http://blog.csdn.net/leibniz_zsu/article/details/4977853 http://blog.csdn.net/leibniz_zsu/article/details/4977869 四、基于MTD的NAND 驱动架构 1 、platform_device 和platform_driver 的定义和注册 对于我们的…

静态时序分析——Data to data check

setup和hold的检查也有可能发生在任意两个数据端口&#xff0c;其中不包括时钟端口。 我们将其中一个端口&#xff08;pin&#xff09;设置为约束端口&#xff08;constrainted pin&#xff09;&#xff0c;就像触发器中的数据端口&#xff1b;将另一个一个端口&#xff08;pin…

静态时序分析——Clock Gating check

门控时钟是RTL级进行低功耗设计的最常用方法&#xff0c;能够有效降低动态功耗。在实际使用中&#xff0c;一般用ICG&#xff08;集成门控时钟单元&#xff09;来完成clock gating。ICG电路和时序如下&#xff1a; 通常来说&#xff0c;工艺库已经集成了ICG&#xff0c;在做门控…

IC设计常见设计思想

速度与面积互换原则 所谓速度&#xff0c;是指整个工程稳定运行所能够达到的最高时钟频率&#xff0c;它不仅和电路内部各个寄存器的建立时间、保持时间以及外部器件接口的各种时序要求有关&#xff0c;而且还和两个紧邻的寄存器间的逻辑延时&#xff0c;走线延时有关。所谓面…

eclipse中如何配置tomcat

1.打开eclipse上面的Windows选项&#xff0c;选择Preferences>Server>Runtime Environments>Add 2.选择你电脑中安装的tomcat的版本我的是8所以我选的是Apache Tomcat v8.0 3,Next>Browse选择Tomcat的安装目录&#xff0c;选择jdk 4.Finish>OK tomcat配置完成。…

数字IC验证学习(一)

一、数据类型 1、logic logic类型只能有一个驱动。使用wire和reg的地方均可使用logic&#xff0c;但如双向总线等有多个驱动的地方&#xff0c;则不可使用logic。 2、二值逻辑 对于二值逻辑变量与DUT中的四值逻辑变量连接时&#xff0c;如果DUT中产生了X和Z&#xff0c;会被…