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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/79718.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用docker创建minio镜像并上传文件,提供demo

使用docker创建minio镜像并上传文件,提供demo 1. 整体描述2. 环境搭建2.1 windows环境搭建2.2 docker部署 3. spring集成3.1 添加依赖3.2 配置文件3.3 创建config类3.4 创建minio操作类3.5 创建启动类3.6 测试controller 4. 测试操作4.1 demo运行4.2 页面查看4.3 上…

debian下快速搭建php环境并验证

目录 安装 验证 安装 更新软件包: sudo apt update 升级软件包: sudo apt upgrade 安装 sudo apt-get install php7.3 php7.3-fpm php7.3-mysql php7.3-redis php7.3-cli php7.3-curl php7.3-json php7.3-mbstring php7.3-opcache php7.3-readli…

【云计算】虚拟私有网络 VPC

虚拟私有网络 VPC 1.VPC 简介1.1 VPC 相关基本概念1.2 其他相关基本概念 2.VPC 通信场景2.1 VPC 内部互通2.2 VPC 间互通2.2.1 对等连接2.2.2 Transit Gateway 或者云联网 2.3 访问 Internet2.3.1 Internet 网关2.3.2 NAT 网关 2.4 访问本地网络2.4.1 VPN 连接2.4.2 专线接入2.…

pytorch生成CAM热力图-单张图像

利用ImageNet预训练模型生成CAM热力图-单张图像 一、环境搭建二、主要代码三、结果展示 代码和图片等资源均来源于哔哩哔哩up主:同济子豪兄 讲解视频:CAM可解释性分析-算法讲解 一、环境搭建 1,安装所需的包 pip install numpy pandas mat…

原生微信小程序中进行 API 请求

原生微信小程序中进行 API 请求 当在原生微信小程序中进行 API 请求时,封装请求可以提高代码的可维护性和可扩展性。在本篇博客中,我们将一步步介绍如何进一步封装请求,并添加请求超时、拦截器和请求取消功能。 第一步:基本请求封…

混淆矩阵细致理解

1、什么是混淆矩阵 混淆矩阵(Confusion Matrix)是深度学习和机器学习领域中的一个重要工具,用于评估分类模型的性能。它提供了一个清晰的视觉方式来展示模型的预测结果与真实标签之间的关系,尤其在分类任务中,帮助我们…

【Unity基础】2.网格材质贴图与资源打包

【Unity基础】2.网格材质贴图与资源打包 大家好,我是Lampard~~ 欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 (一)网格材质纹理 第一次接触3D物体的话,会觉得好神奇啊,这个物体究竟是由什么组…

[python 刷题] 217 Contains Duplicate

[python 刷题] 217 Contains Duplicate 题目: Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct. 一道非常简单的入门题,新建一个 set 去保存所有的值&…

基于安卓Java试题库在线考试系统uniapp 微信小程序

本文首先分析了题库app应用程序的需求,从系统开发环境、系统目标、设计流程、功能设计等几个方面对系统进行了系统设计。开发出本题库app,主要实现了学生、教师、测试卷、试题、考试等。总体设计主要包括系统功能设计、该系统里充分综合应用Mysql数据库、…

Ae 效果:CC Particle Systems II

模拟/CC Particle Systems II Simulation/CC Particle Systems II CC Particle Systems II(CC 粒子系统 II)可用于生成和模拟各种类型的粒子系统,包括火焰、雨、雪、爆炸、烟雾等等。 与 CC Particle World 效果相比有许多类似的属性。最大的…

前端该了解的网络知识

网络 前端开发需要了解的网络知识 URL URL(uniform resource locator,统一资源定位符)用于定位网络服务. URL是一个固定格式的字符串 它表达了: 从网络中哪台计算机(domain)中的哪个服务(port),获取服务器上资源的路径(path),以及要用什么样的协议通信(schema). 注意: 当…

C# wpf 实现桌面放大镜

文章目录 前言一、如何实现?1、制作无边框窗口2、Viewbox放大3、截屏显示(1)、截屏(2)、转BitmapSource(3)、显示 4、定时截屏 二、完整代码三、效果预览总结 前言 做桌面截屏功能时需要放大镜…

MySQL 导出和导入数据

文章目录 一,导出数据(一)使用SELECT ... INTO OUTFILE语句导出数据(二)使用mysqldump工具导出数据(三)使用SELECT ... INTO DUMPFILE语句导出数据 二,导入数据(一&#…

卫星物联网生态建设全面加速,如何抓住机遇?

当前,卫星通信无疑是行业最热门的话题之一。近期发布的华为Mate 60 Pro“向上捅破天”技术再次升级,成为全球首款支持卫星通话的大众智能手机,支持拨打和接听卫星电话,还可自由编辑卫星消息。 据悉,华为手机的卫星通话…

什么是数据压缩?解释数据压缩的原理和不同的压缩算法

1、什么是数据压缩?解释数据压缩的原理和不同的压缩算法。 数据压缩是一种通过减少数据的冗余来减小数据大小的计算机技术。它的原理是在保持数据完整性或可识别性的前提下,将原始数据压缩为较小的格式,以便于存储、传输和打印。 不同的压缩…

【Unity每日一记】资源加载相关和检测相关

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:uni…

Python -【多态,抽象类,鸭子类型】的区别及使用

一. 前言 Python中的抽象类、多态和鸭子类型都是实现代码灵活性的机制,但它们之间还是有一些区别的。 二. 三者的区别 抽象类: 要求子类必须实现某些方法,从而规范了子类的实现方式。多态: 同一个方法可以针对不同类型的对象进…

【计算机网络】Tcp详解

文章目录 前言Tcp协议段格式TCP的可靠性面向字节流应答机制超时重传流量控制滑动窗口(重要)拥塞控制延迟应答捎带应答标志位具体标志位三次握手四次挥手粘包问题TCP异常情况listen的第二个参数 前言 前面我们学习了传输层协议Udp,今天我们一…

invalid use of incomplete type ‘class Ui::xxx‘

MainWindow 引用自定义窗口报错:invalid use of incomplete type class Ui::xxx mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include "form.h" form.cpp #include "form.h" #include "…

使用FFmpeg+ubuntu系统转化flac无损音频为mp3

功能需求如上题,我们来具体的操作一下: 1.先在ubuntu上面安装FFmpeg:sudo apt install ffmpeg 2.进入有flac音频文件的目录使用下述命令: ffmpeg -i test.FLAC -c:a libmp3lame -q:a 2 output.mp3 3.如果没有什么意外的话,你就能看到你的文件夹里面已经有转化好的mp3文件了 批…