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

2023-09-13 20:25:17

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

更多推荐

在字节当了几个月的牛马,醒悟了。

作者:阿秀InterviewGuide大厂面试真题网站:https://top.interviewguide.cn小伙伴们大家好,我是阿秀。以前也分享过不少实习体验,比如去年就分享了一位师弟的美团实习体验:美团实习三个月,我受益良多,今天来分享一下一位学习圈中学弟的字节实习体验。他周围同事都是硕士起步,只有他是双非本,

Java毕业设计-基于SpringBoot的租房网站的设计与实现

大家好,今天为大家打来的是基于SpringBoot的租房网站的设计与实现博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌文章目录一、前言介绍二、主要技术三、系统设计(部分)3.1、主要功能模块设计3.

普中51-矩阵按键

矩阵按键原理图如下:行列扫描行列扫描法检测时,先送一列为低电平,其余几列全为高电平(此时我们确定了列数),然后立即轮流检测一次各行是否有低电平,若检测到某一行为低电平(这时我们又确定了行数),则我们便可确认当前被按下的键是哪一行哪一列的,用同样方法轮流送各列一次低电平,再轮流检测一次各行是否变为低电平,这样即可检测完所

Web自动化测试理解

最近几天,由于工作需要接触Web自动化测试,所以我从网上找的资料,学习了解,然后自己总结汇总的随笔,如文章中有不足的地方,请大家多多指教;或者文章内容与他人相似,望见谅。手工测试跟自动化测试区别:手工测试:就是由人去一个一个输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。自动化测试:自动化测试

植隆业务中台与金蝶云星空对接集成服务工单查询接口连通应收单新增(6202-开票申请(代理商-销售类))

植隆业务中台与金蝶云星空对接集成服务工单查询接口连通应收单新增(6202-开票申请(代理商-销售类))数据源系统:植隆业务中台承载了企业核心关键业务,是企业的核心业务能力,也是企业数字化转型的重点。业务中台的建设目标是:“将可复用的业务能力沉淀到业务中台,实现企业级业务能力复用和各业务板块之间的联通和协同,确保关键业务

竞赛选题 基于深度学习的中文情感分类 - 卷积神经网络 情感分类 情感分析 情感识别 评论情感分类

文章目录1前言2情感文本分类2.1参考论文2.2输入层2.3第一层卷积层:2.4池化层:2.5全连接+softmax层:2.6训练方案3实现3.1sentence部分3.2filters部分3.3featuremaps部分3.41max部分3.5concat1max部分3.6关键代码4实现效果4.1测试英文情感分类效果

72、Spring Data JPA 的 Specification 动态查询

Specification:规范、规格★Specification查询它也是SpringData提供的查询——是对JPA本身Criteria动态查询的包装。▲为何要有动态查询页面上常常会让用户添加不同的查询条件,程序就需要根据用户输入的条件,动态地组合不同的查询条件。JPA为动态查询提供了Criteria查询支持。Sp

基于SpringBoot的驾校管理系统

基于SpringBoot+Vue的驾校管理系统、前后端分离开发语言:Java数据库:MySQL技术:SpringBoot、Vue、MybaitsPlus、ELementUI工具:IDEA/Ecilpse、Navicat、Maven【主要功能】角色:管理员、用户、教练管理员:学员管理、教练管理、驾校信息管理、报名信息管理

P7075 [CSP-S2020] 儒略日

题目题目描述为了简便计算,天文学家们使用儒略日(Julianday)来表达时间。所谓儒略日,其定义为从公元前4713年1月1日正午12点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的计算它们的差值。现在,给定一个不含小数部分的儒略日,请你

反向动力学Ik学习

参考文章:(非本人原创)英文原文:InverseKinematicsTechniquesinComputerGraphics:ASurvey(andreasaristidou.com)知乎翻译文章:【游戏开发】逆向运动学(IK)详解-知乎(zhihu.com)概念正向运动学(Forwardkinematics,FK):

如何理解和掌握数据的意义和数据分类?

如今,数据是最重要的资源。在大数据时代,一切被记录的事实都是数据,它既可以变现为数值,也可以变现为任何其他形式。那么对于数据的意义和数据分类我们如何去理解和掌握呢?一般可以从这几个方面入手:第一,明确数据的含义。数据可以是数字、文字、字母、符号、图形、图像、视频、音频等,也可以是这些元素的组合。数据可以是对客观事物的记

热文推荐