FPGA面试题(4)(跨时钟域处理)

跨时钟域处理方法

慢->快快->慢
单bit在快时钟域同步打拍,将信号同步到快时钟域展宽后同步打拍
多bit异步FIFO异步FIFO+握手信号

一.打两拍

  • 适用于单bit跨时钟域处理
  • 所谓的打两拍就是定义两级寄存器实现延时
    在这里插入图片描述

那为什么是打两拍,不是打一拍,打三拍?

  • 打拍的作用:第一拍是异步信号转同步信号,第二拍及以后是防止亚稳态传递。理论来说,打两拍也不是完全消除亚稳态,只是降低了亚稳态出现的概率。触发器进入亚稳态的时间计算可以用参数MBTF计算,其公式如下
    在这里插入图片描述


    其中MBTF的值越大,亚稳态出现的概率越小。而打拍可以增大MBTF的值。
    简而言之就是:打一拍仍然有很大概率出现亚稳态,打两拍出现亚稳态概率不大,打三拍相较于打两拍亚稳态出现的概率更低,但是除非超高频没必要

二.异步双口RAM

  • 这个比较好理解,就是用时钟1来写入,时钟2来读出。可以使用异步FIFO实现同样的目的。

三.格雷码转换

  • 在异步双口RAM操作时,写入RAM后要在读时钟下判断写地址,当写地址大于某个值时再去读取RAM。如果直接打两拍,在高速环境下容易出错。那么更稳妥的方法就是先把RAM的写地址转换为格雷码,再将这个转换后的格雷码打两拍,最后在读时钟域恢复为十进制。在FIFO中也是一样,转换格雷码能够有效降低指针在跳变时出现的亚稳态风险,冒险现象。
  • 格雷码是和FIFO,双口RAM结合使用的

补充格雷码知识点

在这里插入图片描述

  • 规律如下:

    1.最右边一位取反

    2.从右往左第一个0变为1

    (重复上述两个操作)

  • 二进制如何转换为格雷码

    1.格雷码中的最高有效位(最左边)等同于二进制数中相应的最高有效位。

    2.从左到右,加上每一对相邻的二进制编码位,从而得到下一个格雷码位,舍去进位。

    在这里插入图片描述

  • 格雷码如何转为二进制

    1.二进制码的最高有效位(最左边)等同于格雷码中相应的最高有效位。

    2.将所产生的每个二进制码位加下一个相邻位置的格雷码位,从而得到下一个二进制位。舍去进位。

    在这里插入图片描述

参考:

1.https://cloud.tencent.com/developer/article/1664923

2.https://blog.csdn.net/Hide_in_Code/article/details/126600563?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169692141116800225522215%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=169692141116800225522215&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-1-126600563-null-null.142^v95^insert_down1&utm_term=单bit跨时钟域为什么打两拍不是打一拍&spm=1018.2226.3001.4187

3.https://www.zhihu.com/question/43571892

4.https://blog.csdn.net/fpga_start/article/details/122652715?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169692603816800225524240%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169692603816800225524240&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-122652715-null-null.142^v95^insert_down1&utm_term=格雷码&spm=1018.2226.3001.4187

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值