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

对时序图与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开发实战指南》

相关推荐
爱吃汽的小橘16 小时前
异步串口通信和逻辑分析仪
运维·服务器·网络·单片机·嵌入式硬件·fpga开发
bnsarocket21 小时前
Verilog和FPGA的自学笔记3——仿真文件Testbench的编写
笔记·fpga开发·verilog·自学
Eloudy1 天前
Verilog可综合电路设计:重要语法细节指南
fpga开发
ARM+FPGA+AI工业主板定制专家1 天前
基于ZYNQ FPGA+AI+ARM 的卷积神经网络加速器设计
人工智能·fpga开发·cnn·无人机·rk3588
szxinmai主板定制专家2 天前
基于 ZYNQ ARM+FPGA+AI YOLOV4 的电网悬垂绝缘子缺陷检测系统的研究
arm开发·人工智能·嵌入式硬件·yolo·fpga开发
ooo-p2 天前
FPGA学习篇——Verilog学习之计数器的实现
学习·fpga开发
bnsarocket2 天前
Verilog和FPGA的自学笔记1——FPGA
笔记·fpga开发·verilog·自学
最遥远的瞬间2 天前
一、通用的FPGA开发流程介绍
fpga开发
weixin_450907282 天前
第八章 FPGA 片内 FIFO 读写测试实验
fpga开发
cycf3 天前
以太网接口(一)
fpga开发