**cdc(clock domain conversion)**跨时钟域分单bit和多bit传输,其中:
1. 单bit(慢时钟域到快时钟域) :用快时钟打两拍,直接采一拍大概率也是没问题的,两拍的主要目的是消除亚稳态;
其中:
(1)为了更长的平均无故障时间 mtbf( mean time between failures), 需要配合一个 async_reg 的约束 ,把用作简单同步器的多个寄存器放入同一个 slice,以降低走线延时的不一致和不确定性。
(* async_reg = true *) reg rst_reg_0;(* async_reg = true *) reg rst_reg_1;(2)或者:直接在约束文件里进行约束
set_property async_reg true [get_cells [list rst_reg_0 rst_reg_1]]2. 单bit(快时钟域到慢时钟域) :握手(脉冲展宽)、异步fifo、异步双口ram;快时钟域的信号脉宽较窄,慢时钟域不一定能采到,可以通过握手机制让窄脉冲展宽,慢时钟域采集到信号后再“告诉”快时钟域已经采集到信号,确保能采集到;
3. 多bit跨时钟域 : 异步fifo 、异步双口ram、握手、格雷码;
(1)使用异步fifo的ip
实际上是用 fpga 内部的 bram 来搭建,所有的控制逻辑都在 bram 内部,是推荐的 fifo 实现方式。
时序约束简单,进行时序例外约束, 只需要 set_clock_groups 将读写时钟约束为异步时钟组即可 ,简单高效。
set_property -asynchronous -group [get_clocks write_clock] \\ -group [get_clocks read_clock](2)自己写外部控制逻辑的fifo
格雷码做异步 fifo 的跨时钟域处理,计数器和读写控制逻辑在 bram 或者 ram 的外部,除了代码的合理设计以外,还需要进行额外的时序例外约束,不能简单使用 set_clock_groups 约束异步时钟组,还需要考虑外部的读写逻辑的约束。
xilinx建议这里设置set_max_delay来约束跨时钟域路径,约束的原则是:最大路径延时等于或者略小于目的时钟的一个周期。
写逻辑从cell1到cell2的约束中,cell2的驱动时钟周期为5,如下所示,读逻辑约束进行相应约束。
set_max_delay 5 –from [get_cells cell1] –to [get_cells cell2] –datapath_only多bit中,强烈推荐使用异步fifo的ip来实现 ,我在实际工程中使用多次,简单方便。
利用单重态裂变的方式开辟一条通向高强度近红外OLED的新途径
智能显示屏实现了集中化控制和多媒体内容传输
波士顿动力推出机器人Atlas,能像人类一样慢跑,还能绕开障碍物
亚马逊推出DeepComposer音乐键盘,AI技术驱动
VR头显跑步机KAT Walk Mini 开放式设计带来无限自由空间
CDC跨时钟域处理及相应的时序约束
精益生产,通往智能制造的必由之路
海螺集团基于5G网络的无人驾驶技术将自动化物流与工业制造完美结合
变压器局部放电的原因及解决方法
如何实施交通数字化转型与智能车路协同管控?
2017中国移动终端质量报告路由排行榜出炉,腾达AC15勇夺第一
光学微处理器技术获新突破,可自主生产硅纳米线,从而进一步开发相应电子元件
适用于便携式应用的低噪声升压VCO电源
芯片巨头格罗方德放弃7纳米技术研究中芯会进入7纳米的研究中吗
太极链资讯_共识协议增长
二极管的用途
SpaceX发射的星链卫星已达955颗
基于LwIP的TCP客户端设计
在RC电路里电容需要多久能充满电呢?
我国集成电路行业发展竞争格局分析