电子发烧友网 > 可编程逻辑 > 正文

跨时钟域信号处理中同步通信的设计的重要性及解决方法

2020年03月03日 10:10 次阅读

上次提出了一个处于异步时钟域的MCUFPGA直接通信的实现方式,其实在这之前,特权同学想列举一个异步时钟域中出现的很典型的问题。也就是要用一个反例来说明没有足够重视异步通信会给整个设计带来什么样的危害。

特权同学要举的这个反例是真真切切的在某个项目上发生过的,很具有代表性。它不仅会涉及使用组合逻辑和时序逻辑在异步通信中的优劣、而且能把亚稳态的危害活生生的展现在你面前。

从这个模块要实现的功能说起吧,如图1所示,实现的功能其实很简单的,就是一个频率计,只不过FPGA除了脉冲采集进行计数外,还要响应CPU的控制。

跨时钟域信号处理中同步通信的设计的重要性及解决方法

图1 功能模块

CPU的控制总线是指一个片选信号和一个读选通信号,当二者都有效时,FPGA需要对CPU的地址总线进行译码,然后把采样脉冲值送到CPU的数据总线上。

跨时钟域信号处理中同步通信的设计的重要性及解决方法

图2 CPU读时序

对于这样“简单”的功能,不少人可能会给出类似下面的以组合逻辑为主的实现方式:

input clk;

input rst_n;

input pulse;

input cs_n;

input rd_n;

input[3:0] addr_bus;

output reg[15:0] data_bus;

reg[15:0] counter;

always @(posedge pulse or negedge rst_n)

if(!rst_n) counter 《= 16‘d0;

else if(pulse) counter 《= counter+1’b1;

wire dsp_cs = cs_n & rd_n;

always @(dsp_cs or addr_bus)

if(dsp_cs) data_bus 《= 16‘hzzzz;

else begin

case(addr_bus)

4’h0: data_bus 《= counter;

4‘h1: ……;

……

default: ;

endcase

end

咋一看,可能你会觉得这个代码也没什么问题,功能似乎都实现了。而且你会觉得这个代码简洁,也不需要耗费多少逻辑就能实现。但是,对于这种时钟满天飞的设计,存在着诸多亚稳态危害爆发的可能。脉冲信号和由CPU控制总线产生的选通信号是来自两个异步时钟域的信号。它们作为内部的时钟信号时,一个写寄存器counter,一个读寄存器counter。那么,很明显的,存在着发生冲突的可能。换句话说,如果寄存器正处于改变状态(被写)时被读取了,问题就随着而来,如图3所示。

跨时钟域信号处理中同步通信的设计的重要性及解决方法

图3 数据冲突

脉冲信号pulse和CPU读选通信号cpu_cs是异步信号,pulse什么时候出现上升沿和cpu_cs什么时候出现下降沿是不可控的。所以,如果它们很不幸的一起触发了,那么,结果可想而知。计数器counter[15:0]正在加一,这个自增的过程还在进行中,CPU数据总线data_bus[15:0]来读取counter[15:0],那么到底读取的值是自增之前的值还是自增之后的值呢?或者是其它的值呢?

所示,它是一个计数器的近似模型。当计数器自增一的时候,如果最低位为0,那么自增的结果只会使最低位翻转;当最低位为1,那么自增一的后果除了使最低位翻转,还有可能使其它任何位翻转,比如4’b1111自增一的后果会使4个位都翻转。由于每个位之间从发生翻转到翻转完成都需要经过一段逻辑延时和走线延时,对于一个16位的计数器,要想使这16位寄存器的翻转时间一致,那是不可能做到的。所以,对于之前的设计中出现了如图3的冲突时,被读取的脉冲值很可能是完全错误的。

跨时钟域信号处理中同步通信的设计的重要性及解决方法

图4 计数器模型

上面的代码是最典型的组合逻辑实现方式,是很不可行的。也许很多朋友会提出异议,也许还会提出很多类似的组合逻辑方案。但是,如果没有同步设计的思想,不把这两个异步时钟域的信号同步到一个时钟域里进行处理,冲突的问题在无法得到有效解决的。

那么,这个设计该如果同步呢?实现的方案其实上一次提到FPGA与MCU通信的文里已经给出了答案。它的设计思想可以如图5所示。图5先是使用脉冲检测法把脉冲信号与系统时钟信号clk同步,然后依然使用脉冲检测法得到一个系统时钟宽度的使能脉冲作为数据存信号,也将CPU的控制信号和系统时钟信号clk同步了。如此处理后,两个异步时钟域的信号就不存在任何读写冲突的情况了。

跨时钟域信号处理中同步通信的设计的重要性及解决方法

图5 同步处理

这里提出来的解决方案就是使用了脉冲检测法进行同步,还有一些其它的同步方式,譬如专用握手信号同步、异步FIFO等等。

责任编辑:gt

下载发烧友APP

打造属于您的人脉电子圈

关注电子发烧友微信

有趣有料的资讯及技术干货

关注发烧友课堂

锁定最新课程活动及技术直播

电子发烧友观察

一线报道 · 深度观察 · 最新资讯
收藏 人收藏
分享:

评论

相关推荐

对话FPGA原厂——既聊技术,也谈市场

感谢大家对Mil往期FPGA直播的支持!最后一期,大家要继续加油哟!关于直播中,Mill老师有提到的FPGA众筹,为大家
发烧友学院发表于 2019-05-22 00:00 5441次阅读
对话FPGA原厂——既聊技术,也谈市场

采用StratixⅡ FPGA器件提高加法树性能...

图2列出了和传统的4输入LUT结构的FPGA相比较,采用ALM的StratixⅡFPGA器件例化3输....
发表于 2020-03-03 10:45 0次阅读
采用StratixⅡ FPGA器件提高加法树性能...

Intel去年四季度西欧服务器CPU份额跌至79...

对于份额下滑,Intel一方面不否认,一方面也自圆其说,认为只要把可寻址市场的蛋糕做更大,一城一池的....
发表于 2020-03-03 10:10 18次阅读
Intel去年四季度西欧服务器CPU份额跌至79...

基于视频速度应用在FPGA上实现的结构光中心线提...

随着测控技术及数字图像处理技术的高速发展,基于三角法线结构光的三维测量具有高精度、非接触、实时性和强....
发表于 2020-03-03 09:38 15次阅读
基于视频速度应用在FPGA上实现的结构光中心线提...

微软Xbox Series X性能相当于12nm...

上周,微软公布了Xbox Series X主机的机能数据,CPU运算性能是Xbox One的4倍,G....
发表于 2020-03-03 09:17 58次阅读
微软Xbox Series X性能相当于12nm...

Intel CEO司睿博是如何重整研发的

去年初Intel将临时CEO、时任CFO司睿博扶正,成为Intel正式CEO,执掌51岁的半导体巨头....
发表于 2020-03-03 09:13 46次阅读
Intel CEO司睿博是如何重整研发的

AMD服务器CPU西欧份额反弹 呈现爆炸性增长

对于份额下滑,Intel一方面不否认,一方面也自圆其说,认为只要把可寻址市场的蛋糕做更大,一城一池的....
发表于 2020-03-03 09:03 44次阅读
AMD服务器CPU西欧份额反弹 呈现爆炸性增长

AMD的7nm Zen2是全球多个团队协力设计的

AMD在7nm Zen2架构锐龙处理器上使用了chiplets小芯片设计,这是AMD的一大创举,使得....
发表于 2020-03-03 09:02 67次阅读
AMD的7nm Zen2是全球多个团队协力设计的

十代酷睿游戏本旗舰露面,频率提高300MHz兑现...

今年初的CES 2020大展期间,Intel正式宣布了代号Comet Lake-H的十代酷睿高性能处....
发表于 2020-03-03 08:50 127次阅读
十代酷睿游戏本旗舰露面,频率提高300MHz兑现...

MathWorks通过Universal Ver...

Wilson Research Group 的一项最近研究发现,48% 的 FPGA 设计项目和 7....
发表于 2020-03-02 18:12 25次阅读
MathWorks通过Universal Ver...

微软Xbox Series X具有12TFlop...

  据消息,国外网友根据微软官方公布的消息,以及数据库中出现的跑分结果,分析得出Xbox Serie....
发表于 2020-03-02 15:58 249次阅读
微软Xbox Series X具有12TFlop...

AMD锐龙处理器销量占比已达87% Intel ...

在AMD去年7月正式推出锐龙3000系列桌面处理器之后,7nm Zen2真的可以让AMD CPU改头....
发表于 2020-03-02 15:45 314次阅读
AMD锐龙处理器销量占比已达87% Intel ...

可编程模拟IC可将FPGA的优势带入混合信号世界

对于工程师而言,设计、评估和调试带有模拟输入/输出(I/O)接口的混合信号电路始终面临巨大挑战。
发表于 2020-03-02 13:45 81次阅读
可编程模拟IC可将FPGA的优势带入混合信号世界

波形相位频率可调DDS信号发生器(设计分享)

波形相位频率可调DDS信号发生器(设计分享) --作者:造就狂野青春 本文为明德扬原创及录用文章,转载请注明出...
发表于 2020-03-02 11:15 162次阅读
波形相位频率可调DDS信号发生器(设计分享)

海韵推出TX系列四款无风扇电源

应该有很多同学想过要打造一台零噪音主机,CPU和显卡的散热器相对容易搞定,无风扇的高端电源的确难找。
发表于 2020-03-02 10:51 305次阅读
海韵推出TX系列四款无风扇电源

真随机数发生器在安全控制器解决方案中的应用

随机数是以现代密码学为基础的信息安全系统的基石。在现代信息安全系统中,密码体制和算法本身可以被公开,....
发表于 2020-03-02 09:56 105次阅读
真随机数发生器在安全控制器解决方案中的应用

【答疑】关于锁存器问题的讨论

关于锁存器问题的讨论    很多同学提问到锁存器的相关问题,说明大家对这方面知识还不是很了解,今天我们就...
发表于 2020-03-02 00:25 264次阅读
【答疑】关于锁存器问题的讨论

国产ARM CPU之路没那么坦途

近年来,国际大环境跌宕起伏和多次被卡脖子,使国人充分认识到芯片自主可控的重要性和意义。
发表于 2020-03-01 19:29 814次阅读
国产ARM CPU之路没那么坦途

飞腾CPU为什么能用在银河系超级计算机

国产芯片中,飞腾的名气来自于它强大的性能。虽然其性能比不上国外因特尔和AMD的最新产品,但在国产芯片....
发表于 2020-03-01 19:18 126次阅读
飞腾CPU为什么能用在银河系超级计算机

MathWorks实现自动化视觉系统设计 提高了...

2020 年 2 月 27 日– MathWorks 宣布,随着 2019b 发行版的 MATLAB....
发表于 2020-03-01 12:40 103次阅读
MathWorks实现自动化视觉系统设计 提高了...

NXP推出基于i.MX RT106F本地人脸识别...

NXP MCU级别的人脸识别解决方案利用i.MX RT106F来实现,使开发者轻松便捷地将人脸识别功....
发表于 2020-03-01 10:07 371次阅读
NXP推出基于i.MX RT106F本地人脸识别...

Linux驱动编程基础知识讲解

由于Linux驱动编程的本质属于Linux内核编程,因此我们非常有必要熟悉Linux内核以及Linu....
发表于 2020-03-01 08:27 292次阅读
Linux驱动编程基础知识讲解

CPU初创公司Nuvia会是英特尔和AMD的劲敌

到目前为止,我们还没有讨论过Nuvia(与Nvidia没有关系),但自从去年年底它走出隐身模式以来,....
发表于 2020-03-01 08:08 623次阅读
CPU初创公司Nuvia会是英特尔和AMD的劲敌

华为为什么不研发新的指令集,而去买ARM的专利

很多人都在讨论,为什么华为公司不自己研发一套芯片指令集,要买ARM的专利,是没能力研发吗?
发表于 2020-03-01 08:00 355次阅读
华为为什么不研发新的指令集,而去买ARM的专利

笔记本cpu温度高怎么解决

cpu温度高怎么办最为简单有效而又节省开支的办法就是我们自己动手使用毛刷和皮老虎清理cpu散热器的风....
发表于 2020-03-01 07:19 479次阅读
笔记本cpu温度高怎么解决

cpu使用率忽高忽低问题原因有哪些

cpu使用率忽高忽低可能是大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。
发表于 2020-03-01 05:21 365次阅读
cpu使用率忽高忽低问题原因有哪些

FPGA原型系统可加速物联网的发展进程

当我们谈论物联网 (IoT) 的时候,不夸张地说,它可以将我们所使用的智能设备互相连接,彼此分享大量....
发表于 2020-02-29 14:36 90次阅读
FPGA原型系统可加速物联网的发展进程

CMOS传感器和FPGA如何助力智能相机的发展

人们很难预测哪些新技术会带来机器视觉发展的下一个突破,它可能来自多年学术研究的结果,或仅仅来自一个简....
发表于 2020-02-29 14:28 92次阅读
CMOS传感器和FPGA如何助力智能相机的发展

龙芯中科宣布捐赠20台基于龙芯CPU的医疗自助终...

疫情防控期间,科技企业纷纷捐资出力,作为国产CPU的代表,龙芯中科也为防疫战争贡献了力量。
发表于 2020-02-29 13:42 456次阅读
龙芯中科宣布捐赠20台基于龙芯CPU的医疗自助终...

Intel的CVE漏洞大多数都是Intel发现的

当前的CPU处理器极其复杂,内部有数十乃至上百亿晶体管,出现一些问题是不可避免的。2018年幽灵、熔....
发表于 2020-02-29 11:31 880次阅读
Intel的CVE漏洞大多数都是Intel发现的

半导体巨头为什么追捧EUV光刻机

近些年来EUV光刻这个词大家应该听得越来越多,三星在去年发布的Exynos 9825 SoC就是首款....
发表于 2020-02-29 10:58 286次阅读
半导体巨头为什么追捧EUV光刻机

微星新型CPU散热器公布 可将CPU产生的70%...

如今影响高性能CPU处理器的一个瓶颈要属散热了,当前的8核及以上CPU在高负载下发热严重,不上水冷很....
发表于 2020-02-29 10:50 340次阅读
微星新型CPU散热器公布 可将CPU产生的70%...

【工程源码】BMP2mif文件软件,方便使用ROM存储图像数据并显示

本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。 ...
发表于 2020-02-28 20:03 174次阅读
【工程源码】BMP2mif文件软件,方便使用ROM存储图像数据并显示

【工程源码】已经安装器件库却报未安装——解决方案

本文和设计代码由FPGA爱好者小梅哥编写,未经作者许可,本文仅允许网络论坛复制转载,且转载时请标明原作者。 ...
发表于 2020-02-28 19:52 168次阅读
【工程源码】已经安装器件库却报未安装——解决方案

请教,lattice mxo2做环形振荡器综合报错,什么原因?

fpga初学者,尝试做一个环形振荡器,使用lattice mxo2平台,diamond软件做。代码如下: [code]module  rin...
发表于 2020-02-28 15:37 182次阅读
请教,lattice mxo2做环形振荡器综合报错,什么原因?

AXI 代码 不通过 AXI Protocol Checker IP 的检测

https://gist.github.com/promach/251cbb3c9c9af401bf712dc4ccb76fb3 为何这个 AXI 代码 不通过 AXI Protoc...
发表于 2020-02-28 13:44 238次阅读
AXI 代码 不通过 AXI Protocol Checker IP 的检测

尽管是制程压制 可为什么7nm锐龙单核性能跟14...

这几年来,提到CPU挤牙膏,不少玩家就很不爽,还有人表示2600K再战5年,这都差不多是9年前的CP....
发表于 2020-02-28 10:37 324次阅读
尽管是制程压制 可为什么7nm锐龙单核性能跟14...

利用片上高速网络(2D NoC)创新地实现FPG...

Achronix 最新基于台积电(TSMC)的7nm FinFET工艺的Speedster7t FP....
发表于 2020-02-27 17:08 587次阅读
利用片上高速网络(2D NoC)创新地实现FPG...

为什么测温仪的升级不可缺少FPGA

近段时间微信工作群最火的接龙莫过于“体温接龙”,一场来势汹汹的疫情让“测温”成为日常生活的一部分,更....
发表于 2020-02-27 14:58 152次阅读
为什么测温仪的升级不可缺少FPGA

莱迪思发布首款SOI的FPGA产品,AI芯片发展...

AI芯片设计大厂莱迪思半导体(Lattice Semiconductor),基于本身Nexus技术平....
发表于 2020-02-27 14:54 150次阅读
莱迪思发布首款SOI的FPGA产品,AI芯片发展...

酷比魔方与高通骁龙合作,有望推出更有竞争力的产品

  2月26日下午,酷比魔方在微信公众号上宣布将会与高通骁龙合作,但尚未透露具体的合作细节。
发表于 2020-02-27 14:35 398次阅读
酷比魔方与高通骁龙合作,有望推出更有竞争力的产品

MathWorks在FPGA和ASIC上实现自动...

Vision HDL Toolbox 自动生成经过 FPGA 验证的代码,适用于高达 8k 分辨率的....
发表于 2020-02-27 14:04 87次阅读
MathWorks在FPGA和ASIC上实现自动...

采用MSP430FR4xx微控制器实现红外遥控的...

红外遥控采用红外(IR)光来传送信息。发射器MCU的调制信号控制IR LED发射红外光。调制能够帮助....
发表于 2020-02-27 09:40 73次阅读
采用MSP430FR4xx微控制器实现红外遥控的...

英飞凌发布iMOTION™ IMC300系列 增...

英飞凌经实践验证的MCE 2.0实现了永磁同步电机(PMSM)的高效的FOC(Field Orien....
发表于 2020-02-27 08:50 77次阅读
英飞凌发布iMOTION™ IMC300系列 增...

基于FPGA的汉明码译码器如何对码元数据添加噪声干扰?

入门小白求助,我最近在做毕业设计的时候 看到一篇《基于FPGA的汉明码译码器》相关论文,其中学者对该译码器是这样...
发表于 2020-02-26 23:29 197次阅读
基于FPGA的汉明码译码器如何对码元数据添加噪声干扰?

电脑装上两颗CPU 性能会不会翻倍

如果DIY让你觉得头疼,说明你的思路是正确的。
发表于 2020-02-26 10:42 334次阅读
电脑装上两颗CPU 性能会不会翻倍

宅家不停学,0元领FPGA入门到进阶全集视频教程!

宅家里抗疫 追剧、刷短视频已不足打发闲暇时间 出去瞎逛游又有染病的风险 还不如来点实际学习 能抵消大部...
发表于 2020-02-26 10:19 398次阅读
宅家不停学,0元领FPGA入门到进阶全集视频教程!

新款ThinkPad锐龙版搭载雷电3接口,支持W...

一直以来,搭载雷电3接口的笔记本的绝大多数的都是酷睿芯,锐龙本由于成本限制和授权原因很少搭载雷电3。....
发表于 2020-02-25 15:45 677次阅读
新款ThinkPad锐龙版搭载雷电3接口,支持W...

高云半导体与Rutronik GmbH打造分销联...

高云半导体宣布,授予Rutronik GmbH公司为其在EMEA和美洲地区的特许分销商。
发表于 2020-02-25 10:50 146次阅读
高云半导体与Rutronik GmbH打造分销联...

奇缺无比,需求爆增!手持红外测温仪成2020年第...

现在随便打开一个电子微信群,刷一下朋友圈,恐怕大家都能看到询问手持红外测温仪物料或者整机的信息。自新....
发表于 2020-02-25 08:23 2045次阅读
奇缺无比,需求爆增!手持红外测温仪成2020年第...

中国自研CPU的发展道路如何

让我们快速描述一下CPU。CPU在设备上运行OS和各种应用程序,处理数据并提供输出。现在的CPU通常....
发表于 2020-02-24 20:44 490次阅读
中国自研CPU的发展道路如何

面对新冠肺炎,FPGA能为我们做些什么

2020年伊始,新型冠状病毒肺炎突然爆发并迅速蔓延,严格的防控措施成了这场战“疫”的关键。
发表于 2020-02-24 18:57 258次阅读
面对新冠肺炎,FPGA能为我们做些什么

中国首家主攻车规MCU芯片团队蜂驰高芯成立

据津滨网报道,日前中国首家主攻车规MCU的芯片研发团队-蜂驰高芯(天津)科技有限公司(以下简称“蜂驰....
发表于 2020-02-24 18:09 718次阅读
中国首家主攻车规MCU芯片团队蜂驰高芯成立

电脑变卡顿了应该如何解决

因为不可抗力的原因,我们都要在家里呆上一段时间,在这期间之中如果电脑出现问题可是一件非常糟心的事情,....
发表于 2020-02-24 17:52 348次阅读
电脑变卡顿了应该如何解决

7nm 8核锐龙4000在手 AMD的CPU在笔...

最近一段时间,荣耀、联想等公司把一些锐龙处理器的笔记本杀到了3000元内,四舍五入好像不要钱一样,A....
发表于 2020-02-24 17:35 788次阅读
7nm 8核锐龙4000在手 AMD的CPU在笔...

新款GPD WIN Max便携笔记本细节披露,采...

  在今年的1月14日,GPD官方确认即将推出新款GPD WIN Max便携笔记本,今天官方又公布了....
发表于 2020-02-24 16:45 861次阅读
新款GPD WIN Max便携笔记本细节披露,采...

高云半导体受邀德国Embedded World展...

广东高云半导体科技股份有限公司(以下简称“高云半导体”)将于2月25日至27日在德国纽伦堡参加Emb....
发表于 2020-02-24 16:36 190次阅读
高云半导体受邀德国Embedded World展...

Linux虚拟内存和物理内存的详细资料讲解

1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构
发表于 2020-02-24 15:53 294次阅读
Linux虚拟内存和物理内存的详细资料讲解

Linux内核中有哪些锁

在LInux操作系统里,同一时间可能有多个内核执行流在执行,因此内核其实象多进程多线程编程一样也需要....
发表于 2020-02-24 15:26 366次阅读
Linux内核中有哪些锁

树莓派4B的详细资料说明

核心 CPU:Broadcom BCM2711,1.5 GHz,64-bit,4核心,ARM ....
发表于 2020-02-24 15:13 693次阅读
树莓派4B的详细资料说明

realme真我X50 Pro跑分高达到60W+...

据消息报道,realme将于2月24日在西班牙马德里和印度新德里同时举办新品发布会活动,正式推出X5....
发表于 2020-02-24 15:10 1304次阅读
realme真我X50 Pro跑分高达到60W+...

关于使用verilog设计五级流水CPU时,使用Vivado IP核RAM时,读数据延后一周期的问题

因为参与比赛的原因,比赛要求RAM与CPU所用时钟相同,但这种情况下因为RAM读数据延后一周期,无法立即取指或...
发表于 2020-02-23 11:49 178次阅读
关于使用verilog设计五级流水CPU时,使用Vivado IP核RAM时,读数据延后一周期的问题

【教程】“最恶劣”的FIFO深度计算

分析:典型的“背靠背”情况,此时最恶劣的情况是第一次100个写周期内后60个周期连续写入60个数据和第二次100个写...
发表于 2020-02-22 20:37 630次阅读
【教程】“最恶劣”的FIFO深度计算