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)慢到快的单比特信号打两拍,仅仅是降低了亚稳态发生的概率,但是没有消除亚稳态;
【收藏!】FPGA数字IC求职必备知识点目录——持续更新 https://www.nowcoder.com/discuss/959891?source_id=profile_create_nctrack&channel=-1
笔试刷题及解析,FPGA和数字IC类的笔试题汇总、解析,助力实习、提前批、秋招