之前有一篇文章讲述了跨时钟域信号的处理第1篇,ic面试中常被问到——跨时钟域信号如何处理?这是第2篇。
前面提到,用敲两级dff的办法(两级dff同步器)可以实现单比特信号跨时钟域处理。但你或许会有疑问,是所有的单比特信号跨时钟域都可以这么处理吗?
no!两级dff同步器,是对信号有一定的要求的。
想象一下,如果频率较高的时钟域a中的信号d1 要传到频率较低的时钟域b,但是d1只有一个时钟脉冲宽度(1t),clkb 就有几率采不到d1了,如图1。
图1 快时钟域信号传递到慢时钟域
因此只有当d1 在很长一段时间内为1或0,确保一定可以被clkb采样到,才能用两级dff同步器处理。
如果信号d1 只有1t或几个t的脉宽,又需要传到时钟频率较低甚至或快或慢不确定的时钟域b,这种情况该怎么如何处理呢?
1
握手协议(handshake)异步信号处理是一种常见的异步信号处理方法。常见的握手协议异步信号处理行为波形图大致如下图2:
图2 一种handshake电路波形
信号d_in 所处时钟域是clk_in,且d_in只有1t 的宽度,想要传送到clk_out 时钟域(clk_out 跟clk_in不相关)。
因为clk_out 和 clk_in相位关系不确定,时钟周期大小关系不确定,无法保证一定能采样到d_in。
因此需要把d_in展宽,产生d_req 信号;
d_req 信号一直拉高,经过clk_out时钟域两级dff 同步器后,得到d_reg_sync;
取d_req_sync 上升沿1t,即可得到传送到clk_out 时钟域的d_out。
此时,d_in 从clk_in 传送到clk_out 的任务就算是结束了。
但对于handshake 电路来说,任务还没结束,因为d_req 还一直是高电平。
因此,需要把d_req_sync 信号再用两级dff同步器,传回clk_in 时钟域,得到d_ack信号;
当clk_in 看到d_ack拉高后,就可以把d_req 信号拉低,到这里一个handshake电路行为才算是结束了。
2
根据上面的波形图,可以看到握手协议异步信号处理并不复杂,但是细心的朋友应该会注意到,这个处理方法信号传递的速度相对较慢。
从图2 的波形来看,至少需要3个clk_in 和2个clk_out时钟周期。根据不同的应用需求,人们会对图2的波形做不同的改造。但万变不离其宗,原理都是一样的,电路也大同小异。
最后留4个问题供大家思考,以增进对handshake电路的理解:
1. 图2中的d_req的逻辑怎么实现?
2. 图2中的d_out的逻辑怎么实现?
3. 假设时钟域clka比clkb 频率高,如果输入信号的两个相邻脉冲d0和d1非常较近,如下图所示,如果使用握手协议处理,会发生怎样的事情?
4.问题3里面,如果要确保d1数据一定要被能传送到clkb,电路该如何实现?
自动驾驶技术会比自己开车还安全吗
以零跑S01为例的三电系统解析
vivo宣布S系列即将迎来新成员vivo S7e
锂电池为什么会越用电总量越低呢?专家做出解答
让应用支持新iPad的Retina显示屏方法
跨时钟域信号如何处理?
400G光模块放量在即,相关数通设备成为主战场
The VOID揭示了进一步的扩张计划,首次将VR头衔带到了亚洲
拉压力传感器内部结构及原理说明
!销售AGILENT E4432B信号发生器E4432B小兵
虚拟现实技术与艺术会擦出怎样的火花
绿米联创与中国电信广州正式签署“5G+智慧社区”战略合作协议
贸泽电子开售适用于汽车外部照明的 ams OSRAM OSLON Black Flat X LED器件
土壤类检测设备种类繁多,其中土壤容重仪的意义非凡
35kv中性点接地电阻柜技术指导是什么
如何使用北鲲云超算平台
STAR机器人成功打败人类医生 机器人或将进入医疗业
学技术 | XMC™使用Dave4快速开发(五)SPI实验
一体化泵站数据采集远程监控系统
【Z站推荐】EsDA MPC-ZC1 应用——IoT 监测控制系统(一)