码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    [Django开源学习 1]django-vue-admin
    springboot运行jar生成的日志到指定文件进行管理
    使用Python绘制CPI和PPI曲线
    前端二面手写面试题总结
    【设计模式】Head First 设计模式——构建器模式 C++实现
    开放式耳机选择什么品牌?六款口碑好爆的开放式耳机盘点
    Webpack打包
    基于GoogleNet深度学习网络的花朵类型识别matlab仿真
    新一代云数据库的引领者---AWS
    GuLi商城-商品服务-API-品牌管理-JSR303数据校验
  • 原文地址:https://blog.csdn.net/weixin_67803687/article/details/133750426
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号