FPGA数字IC笔试面试019—CDC跨时钟域处理

1.(大疆2020数字芯片)下列关于多bit数据跨时钟域的处理思路,错误的有()

A. 发送方给出数据,接收方用本地时钟同步两拍再使用;

B. 发送方把数据写到异步fifo,接收方从异步fifo里读出;

C. 对于连续变化的信号,发送方转为格雷码发送,接收方收到后再转为二进制;

D. 发送方给出数据,发送方给出握手请求,接收方收到后回复,发送方撤销数据。

答案:A

解析:多bit跨时钟域不能简单使用打两拍,打拍后可能数据错乱;


CDC(Clock Domain Conversion)跨时钟域分单bit和多bit传输,其中:

单bit(慢时钟域到快时钟域):用快时钟打两拍,直接采一拍大概率也是没问题的,两拍的主要目的是消除亚稳态;

单bit(快时钟域到慢时钟域):握手、异步FIFO、异步双口RAM;快时钟域的信号脉宽较窄,慢时钟域不一定能采到,可以通过握手机制让窄脉冲展宽,慢时钟域采集到信号后再“告诉”快时钟域已经采集到信号,确保能采集到;

多bit:异步FIFO、异步双口RAM、握手、格雷码;


多bit中,强烈推荐异步FIFO,我在实际工程中使用多次,简单方便。


2. 关于异步处理,以下说法正确的是:

A、静态配置信号可以不做异步处理

B、异步FIFO采用格雷码的原因是为了提高电路速度

C、异步处理需要考虑发送和接收时钟之间的频率关系

D、单比特信号打两拍后可以避免亚稳态的发生

答案:AC

解析:

A. 静态不变,直接采,不会出现亚稳态,因为不会在采集时钟的边沿处发生变化;

B. 异步 FIFO 中确实采用了异步 FIFO,但是目的是为了跨时钟传输,不是为了提高电路速度;

将多 bit 的自然二进制读写地址转成格雷码,相邻数据仅有 1 bit 的不同,可以使用“打两拍”的二级同步器进行读写地址传输;

C. 异步处理需要考虑两个时钟的频率,比如前面提到的

单bit(慢时钟域到快时钟域): 快的一定能采到慢的,用快时钟打两拍;
单bit(快时钟域到慢时钟域): 快时钟域的信号脉宽较窄,慢时钟域不一定能采到,可以通过握手机制让窄脉冲展宽,慢时钟域采集到信号后再“告诉”快时钟域已经采集到信号,确保能采集到;

D. 这里的说法有几个问题

(1)像 C 里提到的,快到慢就没办法只使用“打两拍”;

(2)慢到快的单比特信号打两拍,仅仅是降低了亚稳态发生的概率,但是没有消除亚稳态

亚稳态无法消除,只能降低发生的概率,二级同步不够的时候可以使用三级甚至四级,具体相关的参数是 MTBF 平均无故障时间(Mean Time Between Failure),可以去查阅一下相关的。


欢迎留言讨论、咨询。

FPGA探索者:FPGA和数字IC求职必备向导~ ~

祝大家都能找到满意的实习和秋招offer!

【收藏!】FPGA数字IC求职必备知识点目录——持续更新 https://www.nowcoder.com/discuss/959891?source_id=profile_create_nctrack&channel=-1

本文正在参与【内行知多少】 征文活动,一起来聊聊内行人才懂的那些事吧,高额牛币和百元京东卡等你来领~


#搞技术你要知道##FPGA工程师##数字IC设计工程师##芯片设计工程师##芯片IC验证工程师#
FPGA数字IC笔试100道题 文章被收录于专栏

笔试刷题及解析,FPGA和数字IC类的笔试题汇总、解析,助力实习、提前批、秋招

全部评论
1 回复 分享
发布于 2022-06-08 17:11
1 回复 分享
发布于 2022-06-08 17:26
抱紧大佬大腿
1 回复 分享
发布于 2022-06-08 17:42
每天都跟着大佬学,每天进步一点点,不积跬步,无以至千里!
2 回复 分享
发布于 2022-06-08 17:09
抱紧大腿
点赞 回复 分享
发布于 2022-06-08 18:53

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
点赞 评论 收藏
分享
11-03 14:38
重庆大学 Java
AAA求offer教程:我手都抬起来了又揣裤兜了
点赞 评论 收藏
分享
头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
13 42 评论
分享
牛客网
牛客企业服务