原创 一种跨时钟域的通信方式

2009-3-15 23:36 4376 5 8 分类: FPGA/CPLD

相信大家都知道亚稳态的发生原因及表现形式,也应该知道消除亚稳态最基本的电路是两级触发器同步,如下图所示:

点击开大图

我们该如何利用上面这个基本电路去完成一个跨时钟域的通信?Handshaking,握手通信。

点击开大图

上面定义了最基本的握手通信的信号,Request以及Acknowledge(以下简称reqack),首先,我们需要定义reqack的时序。到底用高电平还是低电平去表示信号有效,还有就是有效信号需要维持多久,假设CircuitA(以下简称CA)发送一个req信号时,CircuitB(以下简称CB)需要同步电路同步,因此req至少需要维持两个CB的同步时钟,当CB同步时钟不确定时,则CA也无法发送有效的req信号;这个问题对CBack也同样存在。


为了解决上述问题,对CB的同步时钟达到最大的兼容性,req应选用跳变沿去通知CB电路,同理,ack也用跳变沿响应CACA才能开始下一个请求req信号。


然后,CACB内部利用边沿检测电路实时监测ackreq信号,如下图:

点击开大图

其实,reqack的信号形式可以有多种多样,但是有一点是必须的:就是不同时钟域之间的信号传送,必须要经过同步,否则出现问题的隐蔽性很强。

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1122702 2009-5-27 22:40

最后一级是用于延迟,检测边沿跳变。

coyoo 2009-5-22 12:27

最后一级D+与门似乎就是去除第二个D触发器输出的毛刺。

ilove314_323192455 2009-3-17 22:30

F1-7是很经典的同步方式
相关推荐阅读
用户1122702 2015-12-20 21:29
在Emacs中应用Ctags
适宜人群 具备Emacs使用经验的程序员 什么是Tag? Tag,即标记,记录了程序重要信息(如函数、变量、宏定义等)的位置和相应的文件,方便程序浏览器进行跳转。 ...
用户1122702 2015-12-13 22:23
可综合的SystemVerilog:命名空间
关键名词解释: 编译单元(compilation unit):SystemVerilog 源代码的集合 编译单元域(compilation-unit scope):即编...
用户1122702 2015-12-13 22:15
可综合的SystemVerilog:参数化函数/任务
在Verilog中,参数化模块被广泛应用。参数可重新定义保证模块的可配置性及可复用性。但是,函数及任务并无法像模块一样被参数化,减弱了Verilog的描述化能力。 SystemVer...
用户1122702 2010-10-28 11:34
基于SOPC下RapidIO调试方法
RapidIO的一个难点在于地址转换方法,即将远端的Memory映射到当前Avalon-MM总线,所以地址需要一个转换过程——Local Avalon-MM<->RapidIO Addr&...
用户1122702 2010-08-24 14:22
西行重庆
八月初时离开生活并工作四年的深圳,来到求学四年的重庆。已经过去三周时间,对自己的将来也随之变的不可琢磨。重庆的生活水平并不如想象的低,除了房价不像沿海城市高企,其他诸如公共交通,生活日常用品基本都是一...
用户1122702 2010-07-07 18:05
Tcl用后感
                    Tcl用后感 (by Wind330)    Tcl - Tool Command Language近期做了一个Tcl脚本用于Modelsim仿真,完成如下功能...
我要评论
3
5
关闭 站长推荐上一条 /3 下一条