• 阶段性总结:跨时钟域同步处理


    时序图与Verilog语言之间的转化的认识:

    首先明确工程要实现一个什么功能;用到的硬件实现一个什么功能。

    要很明确这个硬件的工作时序,即:用什么样的信号,什么变化规则的信号去驱动这个硬件。

    然后对工程进行模块划分,顶层尽量不要有逻辑设计,尽量只放在子模块里,尽量提升模块复用性

    按照模块划分,画出子模块的时序图。

    重点:再画的时候,一定要清晰的想好,

    这个信号是用reg型还是wire型,以及区别。

    reg型,延迟条件一个时钟周期。

    计数器的开启条件归零条件保持条件是什么。是否需要保持?

    常用的信号:标志信号,请求信号,应答信号,计数信号。

    Verilog语言:硬件描述语言。描述的就是驱动它的信号的时序。

    所以一定要清楚的理解好硬件的工作时序。

    以及一个清晰,缜密的逻辑思维。

    我觉得主要难在一些逻辑条件,在设计的时候可能会忽略,在写代码或者通过功能仿真,不断修改吧。

    看仿真波形的经验总结:

    如果一个信号处于高阻态:没有用到三态逻辑或者三态门,那么大概率是信号例化时没有连接好。

    如果一个信号处于X :可能是没有给这个信号赋值,或者这个信号的逻辑描述,有问题。因为不是预想中的逻辑,以外的给这个信号赋了一个未知的值。所以要检查信号产生的逻辑。

    在看计数器波形时:要注意开始计数条件对不对,递增条件对不对,归零条件对不对,保持条件对不对。发现不对,再看是不是计数器逻辑错误,还是这个条件信号的描述有问题。逐渐深挖。

    哦对了,先看仿真的输入信号描述是否正确。

    然后看被测试的模块,由上至下,由顶至内。

    确保所有子模块都正确的情况下,再对顶层模块进行仿真。

    现在我遇到的都是小实验,都进行了仿真。在仿真顶层时,一般只需要看模块间的连接信号。也就是你的输出是我的输入,这种信号,看他们是否一致,完全相同嘛。

    容易出错的是位宽,容易忽略的是连接错误。

    然后来总结一下跨时钟域同步处理

    跨时钟域同步处理:

    同步处理,既可以解决两个不同时钟域之间的信号传递问题,又可以解决异步信号亚稳态的问题。

    慢速时钟域到快速时钟域:

    首先举一个uart rx模块的数据接收信号rx,外界给rx模块的数据信号变化时间是不确定的,那么rx信号就有可能在时钟上升沿检测到变化的rx信号而产生亚稳态。

    这个属于单bit慢速时钟域到快速时钟域的同步,采用一个同步信号,两个打拍信号,来解决这个问题。同步打拍

    我在做课设《数字频率计》的时候也遇到过这个问题,具体情况就是一开始用待检测的信号的上升沿做计数器always块的驱动信号,但计数器的结束条件是1秒钟,这个一秒钟的结束(归零)信号,是在sys_clk下的,就会出现一个问题:当1秒钟结束条件满足后,计数器always块没有执行,也就是跳过了这个结束信号。

    我的解决办法是:由于是低速到高速的单bit信号,先同步一拍,再打两拍子,用打拍的信号进行一个上升沿(或者下降沿)的检测,每检测到一个边沿就拉高一个sys_clk ,这样就把待检测信号,同步到sys_clk下了,计数器always块用sys_clk驱动。

    我愿称之为脉冲信号检测同步法。还可以把这个信号输出出去,做标志信号,又名单向握手信号,哈哈,因为不需要接收应答信号。

    由此引出了专用握手信号

    这个应该是不论慢到块,还是快到慢,单bit还是多bit都适用的方法。

    用双口ram和双口fifo,解决多bit异步时钟域传输问题。(慢到快,快到慢都适用)。

    听说还有一个先用格雷码编码,然后再同步打拍的方法,我没研究过这个。不清楚。

    推荐几本书:

    我看过的比较适合新手:

    《FPGA设计与Verilog实现》《深入浅出玩转FPGA》《那些年,我们拿下了FPGA》《野火征途pro开发实战指南》

  • 相关阅读:
    SSM学习42:SpringMVC入门案例(重点)
    线性dp,优化,库特鸽鸽的时间分配
    Centos7 + kubenetes 一键安装实战
    多线程经典案例
    一文教你Linux 磁盘管理
    跨越HTTP无状态边界:Cookie与Session在Django中的实战应用
    Ivs+keepalived:高可用集群
    DRF JWT认证(一)
    怎么写好宣传稿件?纯干货
    C++ Reference: Standard C++ Library reference: C Library: cwchar: wcstoull
  • 原文地址:https://blog.csdn.net/Meng_long2022/article/details/132863052