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

2023-11-09

多个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与写入测情况有关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

跨时钟域电路设计——多bit信号&FIFO 的相关文章

  • Module build failed (from ./node_modules/less-loader/dist/cjs.js): Error: Cannot find module ‘less‘

    使用vuex时 运行时报错 发现是版本问题 less loader和less不兼容 less loader默认最高版本 可以在package json里面查看 下载低版本的less loader npm install D less loa
  • 小朋友看了都会的二叉树,你确定不来看看吗?

    努力的程序员会在梦中敲代码 所谓人在床上躺 技术自然涨 这一期将带你走入梦一般的编程 内容抽象 请备好枕头 目录 1 二叉树的概念及结构 2 二叉树链式结构的实现 1 二叉树的概念及结构 概念 一棵二叉树是结点的一个有限集合 该集合或者为空
  • electron 拦截所有页面跳转

    const win new BrowserWindow 处理链接跳转 win webContents on will navigate e url gt e preventDefault shell openExternal url 处理
  • 原码反码补码的概念,以及原码反码的表示形式

    本文主要讲解计算机的原码 反码和补码 的概念 以及原码反码的表示形式 以及原码反码补码之前如何相互转换 还有计算机中数字是怎么样存储的 原码 假设机器字长为n 原码 自然二进制码 是一种计算机中对数字的二进制定点表示方法 原码表示法在数值前
  • Movicon/Connext设备连接实例(四)——Movicon.NExT与西门子1200PLC 以太网通讯

    Movicon Next是全新一代的HMI SCADA解决方案 拥有众多超越传统的扩展功能 Movicon平台有着广泛的应用场景 且在众多行业中继承了优秀的解决方案 得到了市场广泛认证 针对不同的行业都能对快速找出解决方案并快速部署 且整个
  • 浅谈nodejs中间层

    前言 nodejs的出现为前端行业带来了无限的可能性 让很多原来只负责客户端开发的同学也慢慢开始接触和使用服务器端技术 虽然nodejs带来了很多的好处 但是它也存在自身的局限性 和那些传统老牌的编程语言相比 如JAVA PHP nodej
  • R语言中使用Keras进行深度学习文本分类

    目录 1 简介 2 安装和加载Keras 3 准备数据 4 构建模型 5 训练模型 6 评估模型
  • 【多层RNN】keras创造多层RNN

    之前写简单的DNN demo就是复制粘贴模型 今天有时间系统得看了看构造的一些事情 问题describe 创建多层RNN网络 一开始用的是tf的tf nn rnn cell GRUCell 但是报错如下 The added layer mu
  • Tomcat工作原理详解

    Tomcat简介 作者 杨晓 http blog sina com cn u 1237288325 一 Tomcat背景 自从JSP发布之后 推出了各式各样的JSP引擎 Apache Group在完成GNUJSP1 0的开发以后 开始考虑在
  • 【C语言】Static 静态变量

    null
  • AOSP源码标记、build、以及支持的设备

    build ID 定义 在 Android 8 0 0 Oreo 及更高版本中 每个 build 均采用 build ID 格式 PVBB YYMMDD bbb Cn 进行标识 其中 P 表示平台版本代号的第一个字母 例如 O 表示 Ore
  • 2020-2021期末考试爆炸记

    文章目录 友链 期中后N天 期末 不知道多少天 体育考 英语听说 DAY 0 DAY 1 地理 生物 语文 下午 DAY 2 数学 政治 历史 下午 DAY 3 英语 物理 总结 DAY XX 友链 Jackma爷 如何体育18分绝地反击
  • 用机器学习辅助设计,助你化身建筑大师!

    全文共4378字 预计学习时长8分钟 图片来源 pexels com kaboompics 从网页上的搜索提示到图像推荐 机器推荐已在无数行业得到充分应用 其实质在于推荐引擎可以从海量数据库中查询相关信息 文本 图像等 随后在用户登录某一特
  • 阿里云 MSE + ZadigX ,无门槛实现云原生全链路灰度发布

    企业发布现状痛点 目前企业在选择和实施发布策略时面临以下困境 1 缺乏云原生能力 由于从传统部署转变为云原生模式后 技术架构改造需要具备相关能力的人才 这使得企业在发布策略方面难以入手 2 缺乏自动化平台支持 即使找到适合产品现状的发布策略
  • RocketMQ-如何保证顺序消息

    1 简介 实际开发中会有以下场景 需要保证一组消息的生产顺序与消费顺序相同 例如 监听数据库表单条数据的的多次修改 需要保证监听者最终得到的消息顺序和数据库表对单条数据的修改顺序一样 网购平台创建订单的过程一般都是异步实现 订单创建和支付流
  • DC系列漏洞靶场-渗透测试学习复现(DC-7)

    DC 7是一个易受攻击的实验环境 最终目的是让攻击者获得root权限 并读取flag 本篇文档中用到了exim4漏洞提权和shell二次反弹 1 环境搭建 下载靶场文件 使用Vbox或者VM打开即可 攻击机使用kali 2020 2 主机发
  • 东北大学暑期acm夏令营第四天

    部分内容参考 点我 第一题 while循环或者string都可以 include
  • Achieving Realism in Open World Environments(转自80 LEVEL)

    Alireza Khajehali is a very talented 3d artist His focus is creating open world 3d environments His Artstation page is f

随机推荐

  • css 使图像变成灰色的技巧

    某些情况下 例如网页上如果使用合作方 logo 能使网站更显得有说服力 但是这些 logo 一般是彩色的 为了使其不过于分散网站用户的注意力 同时网页设计也应当遵循只使用一种主色的原则 所以应当将这些图像全部设为灰色 使用如下的 css 但
  • 工作三年经验总结

    一 职业规划 今年年初 职业规划方面愈发的清晰 将毕业时制定的前10年职业规划 前三步 拓展到了20年 后三步 今年5月跳槽来到网易 也标志着前10年第二步 大厂的历练 开始 二 2018计划完成情况 1 生活 1 备孕一个猪宝宝 2 攒首
  • blender工程_Blender作为3D软件有哪些缺点?

    Blender是纯粹给个人用户提供的免费且完整的三维动画3d制作软件 最多适用于小型独立工作室 缺点1 免费 开源 很多人认为免费开源是Blender最大的优势 正因为免费才来学Blender的 就像商家促销 免费 免费 大家一窝蜂过来哄抢
  • c语言库里的排序函数,C语言标准库函数qsort详解

    1 函数简介 功 能 使用快速排序例程进行排序 头文件 stdlib h 用 法 void qsort void base int nelem int width int fcmp const void const void 参数 1 待排
  • Word丢失文件怎么恢复?使用Word这些技巧你要了解

    Word是我们常用的办公软件之一 主要用来帮助我们编辑文本 但由于用法简单 很多人不知不觉中就会忽略他的一些技巧 其实 Word里面蕴含着非常多不为人知的奇技淫巧 掌握这些技巧 起码能让你使用Word的效率提高十倍 话不多说 下面我就简单列
  • STM32F10X的IAP编程详解——开发指南

    转 http blog sina com cn s blog b315f69b0102whtg html 这篇文章摘自STM32开发指南 偶然在网上翻到了一次 经典的文章和大家一起分享 IAP In Application Programm
  • js删除对象中的某一个属性

    目标对象 let obj id 001 name 张三 age 18 方法一 将对象的属性值赋值为undefined 对象的属性不变 属性值发生了变化 改变了原对象 obj name undefined console log obj gt
  • 线索二叉树,画图教你秒懂线索二叉树(线索二叉树的建立和简单操作)逻辑代码分析

    数据结构专升本学习 线索二叉树 前言 前面我们学习树和二叉树的一些基本操作 今天我们学习一个新的知识 学习一下线索二叉树 线索二叉树是由二叉链存储结构变化而来的 我们先得有个二叉链树 再做处理 就是将原来的空域链改为莫种遍历次序下该结点的前
  • mysql5.7安装及配置超详细教程_MySQL5.7的安装与配置详细操作步骤

    一 MySQL的下载 二 解压安装包 将下载的ZIP压缩包解压到任意文件夹 此处为 C mysql5 7 三 修改配置文件 将解压文件夹目录下的my default ini 文件重命名为 my ini 用文本编辑器打开并清空其中内容 添加内
  • InetAddress的用法

    InetAddress的用法 下面这个程序利用InetAddress getByName 来得到你的和百度IP地址 马克 to win 马克 java社区 防盗版实名手机尾号 73203 例 2 1 1 import java net pu
  • 【工具】网站工具转换链接推荐

    1 Json 解析及格式化验证工具 Json 在线解析及格式化验证 JSON cn 2 Properties 和 Yaml 格式互转工具 在线 yaml 转 properties 在线 properties 转 yaml ToYaml co
  • uni-app实现广告滚动条

    参数说明 circular Boolean false 是否采用衔接滑动 即播放到末尾后重新回到开头 vertical Boolean false 滑动方向是否为纵向 previous margin String 0px 前边距 可用于露出
  • 网络的基本概念

    网络 网络是由若干节点和连接这些结点的链路组成 网络中的节点可以是计算机 交换机 路由器等设备 网络设备有 交换机 路由器 集线器 传输介质有 双绞线 同轴电缆 光纤 简单的网络示意图 互联网 把多个网络连接起来就构成了互联网 目前最大的互
  • 朴素贝叶斯分类

    先上问题吧 我们统计了14天的气象数据 指标包括outlook temperature humidity windy 并已知这些天气是否打球 play 如果给出新一天的气象指标数据 sunny cool high TRUE 判断一下会不会去
  • 解决 Fedora 下部分网页不能正常打开的问题(Linux 通用)

    使用命令 ifconfig 可以查看本地的网卡信息 ifconfig a 一般以wlp开头的为无线网卡 用 ifconfig XXXX 网卡名可以单独查看某一个网卡的信息 如下所示 wlp0s20f3 flags 4163
  • 异常的笔记

    异常 很重要 有利于我们平时处理问题 异常就是代表程序出现了问题 常见的异常比如说 数组越界 除法除0 异常的体系是什么 java lang Throwable Error Exception RuntimeException 其他异常 E
  • UE4 Niagara粒子系统基础笔记

    目录 Niagara基础概念 Niagara官方建议 Niagara堆栈面板 Niagara渲染模式 材质 Niagara和蓝图 Niagara常用模块 Niagara常用技巧 Niagara ModuleScript Niagara基础概
  • RTP和RTCP详解

    1 RTP和RTCP详解 文章目录 1 RTP和RTCP详解 1 1 概述 1 2 RTP协议详解 1 3 RTCP协议详解 1 1 概述 在流媒体相关的领域 我们进场会看到RTP RTCP 其用于流式传输的最常见的码流传输协议 位于传输层
  • Python单元测试:pytest

    pytest默认使用的是main system packages 如果需要在虚拟环境中运行 需要运行 python m pytest test py 如果需要打印中间结果 pytest test py s
  • 跨时钟域电路设计——多bit信号&FIFO

    多个bit信号的跨时钟域仅仅通过简单的同步器同步时不安全的 如下图 虽然信号都同步到目的时钟域 可完成的功能却与设计的初衷不相符 解决方案之一为对信号进行格雷码编码 但此方案只适用于连续变化的信号 另一种方案为增加新的控制信号en 确保传输