Vivado从此开始(进阶篇)读书笔记——跨时钟处理
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
Vivado从此开始(进阶篇)读书笔记——跨时钟处理
- 前言
- ASYNC_REG
- 高效设计异步跨时钟域电路
- 单bit异步跨时钟域电路
- 多bit异步跨时钟域电路
前言
最近买了几本书,对知识进行细节方面查漏补缺,从0分到90分容易,从90分到95分难。主要记录一些自认为有用,但平时又没有用到的一些小知识点或者技巧,包括例如一些新奇的设计、一些忽略的报表分析或者约束等等,也许不关注这些东西,工程也能正常编译和使用,但为了更加精益求精,还是要广泛吸收其他人的一些总结和经验,才能不断进步。
在这篇文章中提到的XPM_CDC模板,以前我从来没关注过,直到看到这本书中写到,因此记录下来,准备研究看看
ASYNC_REG
在异步跨时钟域场合,对于控制信号(通常位宽为1bit)常使用双触发器的方式完成跨时钟域操作。如图所示。对于图中标记的1和2的触发器,需要使用综合属性ASYNC_REG,其目的有两个:表明1触发器接收的数据来自与接收时钟异步的时钟域;表明2触发器是同步链路上的触发器。这样就能保证1/2触发器在布局时会被放置在同一个SLICE内,从而减少线延迟对时序的影响
在实际工程中,1和2触发器往往会被设计者忘记标记ASYNC_REG。一个好的解决方法是使用Xilinx提供的XPM_CDC模板来避免遗忘,相应的代码如图所示。可以看到,这里只需要实例化xpm_cdc_single即可,无需标记ASYNC_REG(该属性已被标记)
结论:
(1)ASYNC_REG用于单bit信号采用双(或多)触发器实现异步跨时钟域的场合,此时所有用于同步的触发器都要标记ASYNC_REG。
(2)可使用Xilinx提供的XPM_CDC模板避免遗忘标记ASYNC_REG
高效设计异步跨时钟域电路
单bit异步跨时钟域电路
对于同步跨时钟域电路,由于时钟之间有明确的相位关系,因此可通过时序约束明确建立时间需求,保证电路正常工作。对于异步跨时钟域电路,由于发送时钟与接收时钟之间没有明确的相位关系,因此,需要通过电路本身保证数据被稳定地传输。Xilinx提供了单bit跨时钟域时钟电路设计流程,可减小设计开发的难度。
多bit异步跨时钟域电路
对于多bit异步跨时钟域电路,首先,需要明确数据是否已经处于稳定状态,不会再翻转。例如,由clka驱动的4个触发器,其输入端口是固定数值(0或1),其输出端口连接到由clkb驱动的4个触发器,那么此时并不需要跨时钟域电路。又或者,由clka驱动的4个触发器,其输入端由外部CPU提供,只在上电时给数据,之后保持不变,那么此时也不需要跨时钟域电路。其次,判断是否每个时钟周期都要传输数据,如果是,则需要用到XPM_FIFO_ASYNC;如果不是,则明确数据是否需要缓存,如果需要,则仍需要使用XPM_FIFO_ASYNC,否则就要检查数据是否是个计数器,如果是,就需要用到XPM_CDC_GRAY,如果不是,则明确所有bit是否要求在同一时钟周期内到达,如果是,则需要用到XPM_CDC_HANDSHAKE;否则,就需要用到XPM_CDC_ARRAY_SINGLE。整个流程如图所示。
以上所有的模板都位于:
后续还需添加一些实例
Vivado从此开始(进阶篇)读书笔记——跨时钟处理相关推荐
- 鸟哥的linux私房菜-基础学习篇 读书笔记
从事linux工作一年多,算是能够熟练运用linux服务器,但仍觉得自己对Linux的原理,理论缺乏空洞,潜下心来认真阅读尘封的鸟哥经典,知识点很全,收获颇多,实践与知识结合,知行合一,对linux开 ...
- 鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一)
鸟哥的LINUX私房菜 基础学习篇 读书笔记 -- 第零章 计算机概论 (一) 第零章 计算机概论 0.1 电脑:辅助人脑的好工具 0.1.1 计算机硬件五大组成部分 0.1.2 一切设计的起点: C ...
- Android进阶之光 读书笔记
第一章, Android 5.6.7新特性 1.RecycleView的自定义分割线 public class DividerItemDecoration extends RecycleView.It ...
- 3星|《工作是最好的修行》:樊登读书会节目文稿,14篇读书笔记
工作是最好的修行 全书是樊登读书会的14期免费节目的文稿,也就是14篇樊登的读书笔记,把书的内容用樊登的话概括转述一遍,夹杂樊登个人的理解和联想. 14本书都是经管类的,清单如下:<干法> ...
- 第一篇读书笔记,关于UML和模式应用(1)--书籍简介
新添加了一个读书笔记分类,以后多写一些读书笔记吧.因为真的觉得自己技术太差了,写不出好文章了. 关于UML和模式应用(1)--书籍简介 Applying UML and patterns(Craig ...
- 12篇读书笔记系列-1、置身事内
导语:当今社会短视频横行,导致全民专注力下降:年关将近,我回顾近几年看过的书籍,竟没有一本能简要复述,不能回想起获取了作者的哪些观点,更别提对作者观点的升华:所以,接下来的12本书,我强迫自己静下心来 ...
- 《大数据之路:阿里巴巴大数据实践》第二篇 数据模型篇-读书笔记
目录 8.大数据领域建模综述 8.1 为什么需要数据建模 8.2 关系数据库系统和数据仓库 8.3 从OLTP和OLAP系统的区别看模型方法论的选择 8.4 典型的数据仓库建模方法论 8.4.1 ER ...
- 管理者的50堂课之创始人篇 读书笔记
第12章 创始人 12.1 创始人的3个角色 12.2 创始人的第一职责:确定战略 12.3 创始人的第二职责:促进变革 12.4 创始人的第三职责:构建团队 12.5 创始人的第四职责:形成文化 1 ...
- 【c语言】进阶篇学习笔记
C语言高级特性 C语言的高级部分.指针板块,需要理解计算机内存模型,需要格外注意. 函数 程序帮我们补充好的main函数: int main() { //这是定义函数... } 程序的入口点就是mai ...
最新文章
- Linux之软件安装 apt-get
- Web Service 的工作原理
- 【经典书籍】深度强化学习实战(附最新PDF和源代码下载)
- 惠州学院、智能车和我
- android 入门-工序
- 用c语言编辑房间长和宽求面积_房间地砖规格怎么选?
- c#匿名方法用途_C#的匿名方法
- 7-189 帅到没朋友 (20 分)
- 人人都在谈的图数据库到底是个啥?
- 小白也能看懂的 Java 异常处理
- 移动金库模式保护客户信息 覆盖17套关键系统
- centos7上先要关闭httpd服务之后再卸载,反正卸载之后就是安装不上一脸懵逼
- 样本切分器—利用python按比例均匀切分样本
- php实现自定义中间logo的微信小程序码
- 2021 年 9 项优秀在线电话会议服务比较(带免费选项)
- ping命令的常用参数
- 【毕业设计/Matlab系列】基于PCA和BP神经网络的人脸识别系统(附matlab代码)
- Unity实现动作游戏的技能系统(Ability System)设计原型
- centos7 安装rtl8821ce教程
- 基于jsp java的汽车维修管理系统