fpga中跨异步时钟处理的方法,是面试中经常碰到的问题,也是我们平时工作中经常会碰到的场景,对于单bit的跨异步时钟处理,我们最常用的方法就是打两拍,但这时这两级寄存器最好是放到同一个slice中,比如下面的代码:
reg reg_1;reg reg_2, reg_3;always @ ( posedge clk_src ) begin reg_1 <= ~reg_1;end always @ ( posedge clk_dst) begin reg_2 <= reg_1; reg_3 <= reg_2;end
reg_2和reg_3应该放到同一个slice中,但综合工具并不是那么智能,有时并不会综合到同一个slice中,这时就需要我们添加async_reg的属性:
(*async_re*)reg reg_2, reg_3;
其实vivado中还提供了另外一种处理单bit跨时钟的方式,就是xpm_cdc_single
对于上面的跨时钟域场景,我们可以采用如下方式例化:
xpm_cdc_single #( .dest_sync_ff(2), // decimal; range: 2-10 .init_sync_ff(0), // decimal; 0=disable simulation init values, 1=enable simulation init values .sim_assert_chk(0), // decimal; 0=disable simulation messages, 1=enable simulation messages .src_input_reg(1) // decimal; 0=do not register input, 1=register input ) xpm_cdc_single_inst ( .dest_out(reg_3), // 1-bit output: src_in synchronized to the destination clock domain. this output is // registered. .dest_clk(clk_dst), // 1-bit input: clock signal for the destination clock domain. .src_clk(clk_src), // 1-bit input: optional; required when src_input_reg = 1 .src_in(reg_1) // 1-bit input: input signal to be synchronized to dest_clk domain.
xpm_cdc_single的原语,会自动插入async_reg属性,保证放到同一个slice中。
毫米波雷达与摄像头单应性变换标定方法误差因素分析
多层级网格划分技术如何做到便捷、高效?积鼎CFD大幅减少前处理时间
跨界合作推动创新:IEEE标准协会与多方达成全球战略合作,引领无线局域网络和超高清视频等关键技术的全球
17部门近日印发《“机器人+”应用行动实施方案》
CV芯片作为整个视觉感知技术中最关键的一环,目前也还处在初期
FPGA跨异步时钟ASYNC_REG和XPM_CDC处理
计算光学成像:突破传统光学成像极限
放大器中幅频特性和相频特性的概念及实例测量
王斌正式加入小米集团,任AI实验室自然语言处理首席科学家
资源整合随区人力资源中心走访-国家高性能医疗器械创新中心交流
Imec致力于打造更好的SWIR传感器
Arm平台将成为加速计算领域和人工智能计算领域的前沿
4G智能手表发力 中国智能穿戴设备Q3增长2.6倍
最强游戏主机Xbox One X将亮相ChinaJoy展台 Xbox负责人:即将开启预订!
2022年游戏蓝牙耳机排行榜:四款口碑最好的游戏蓝牙耳机
浅谈智能供配电系统的定义、特点、优势及价值
评估物联网产品的信息安全风险 必须考虑端到端的整体系统
谁来给人工智能泼泼冷水
新形势下智能制造发展趋势
未来汽车电子应用的五大发展趋势是什么?