FPGA——同步转换——FPGA对输入信号的处理
本文来源于网络,感谢网友无私分享
文章参考:http://tech.ic5.cn/News_1228.html
文章参考:https://blog.csdn.net/qq_15026001/article/details/99689876
文章参考:https://www.cnblogs.com/digital-wei/p/6014450.html(*典型异步电路设计-脉冲同步(2))
由于信号在不同时钟域之间传输,容易发生亚稳态的问题导致,不同时钟域之间得到的信号不同。处理亚稳态常用打两拍的处理方法。多时钟域的处理方法很多,最有效的方法异步fifo,具体可以参考博主的verilog异步fifo设计,仿真(代码供参考)异步fifo适合处理不同时钟域之间传输的数据组,但有时不同时钟域之间仅仅传递脉冲,异步fifo就显的有点大材小用的,因此单信号的跨时钟域处理通常有,
两级寄存器串联。
脉冲同步器。
结绳法。
采用握手。
我们像主要讨论一下跨时钟域的同步:
我们将问题分解为2部分,来自同步时钟域信号的处理和来自异步时钟域信号的处理。前者要简单许多,所以先讨论前者,再讨论后者。
1.同步时钟域信号的处理
一般来说,在全同步设计中,如果信号来自同一时钟域,各模块的输入不需要寄存。只要满足建立时间,保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。但是如果模块需要使用输入信号的跳变沿(比如帧同步信号),千万不要直接这样哦。
always @ (posedge inputs)
begin
...
end
因为这个时钟inputs很有问题。如果begin ... end语句段涉及到多个D触发器,你无法保证这些触发器时钟输入的跳变沿到达的时刻处于同一时刻(准确的说是相差在一个很小的可接受的范围)。因此,如果写出这样的语句,EDA工具多半会报clock skew > data delay,造成建立/保持时间的冲突。本人曾经也写出过这样的语句,当时是为了做分频,受大二学的数字电路的影响,直接拿计数器的输出做了后面模块的时钟。当初用的开发工具是max+plusII,编译也通过了,烧到板子上跑倒也能跑起来(估计是因为时钟频率较低, 6M :lol:),但后来拿到QuartusII中编译就报clock skew > data delay。大家可能会说分频电路很常见的啊,分频输出该怎么用呢。我一直用的方法是采用边沿检测电路,用HDL语言描述大概是这样:
always @ (posedge Clk)
begin
inputs_reg <= inputs;
if (inputs_reg == 1'b0 && inputs == 1'b1)
begin
...
end
...
end
这是上跳沿检测的电路,下跳沿电路大家依此类推。
2.异步时钟域信号的处理
这个问题也得分单一信号和总线信号来讨论
2.1单一信号(如控制信号)的处理
如果这个输入信号来自异步时钟域(比如FPGA芯片外部的输入),一般采用同步器进行同步。最基本的结构是两个紧密相连的触发器,第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。需要再寄存一拍,减少(注意是减少)亚稳态带来的影响。这种最基本的结构叫做电平同步器。
如果我们需要用跳变沿而不是电平又该怎样处理呢,还记得1里面讲的边沿检测电路么?在电平同步器之后再加一级触发器,用第二级触发器的输出和第三级触发器的输出来进行操作。这种结构叫做边沿同步器。
always @ (posedge Clk)
begin
inputs_reg1 <= inputs;
inputs_reg2 <= inputs_reg1;
inputs_reg3 <= inputs_reg2;
if (inputs_reg2 == 1'b1 && inputs_reg3 == 1'b0)
begin
...
end
...
end
以上两种同步器在慢时钟域信号同步入快时钟域时工作的很好,但是反过来的话,可能就工作不正常了。举一个很简单的例子,如果被同步的信号脉冲只有一个快时钟周期宽,且位于慢时钟的两个相邻跳变沿之间,那么是采不到的。这时就需要采用脉冲同步器。这种同步器也是由3个触发器组成。
脉冲同步器
由于脉冲在快时钟域传递到慢时钟域时,慢时钟有时无法采样的信号奈奎是特采样定理,
因此需要对信号进行处理,可以让慢信号采样到。脉冲同步器的结果如图:
脉冲同步详细代码参考文档上传
2.2总线信号的处理
如果简单的对异步时钟域过来的一组信号分别用同步器的话,那么对这一组信号整体而言,亚稳态出现的几率将大大上升。基于这一观点,对于总线信号的处理可以有两种方式。
如果这组信号只是顺序变化的话(如存储器的地址),可以将其转换为格雷码后再发送,由于格雷码相邻码字只相差一个比特,上面说的同步器可以很好的发挥作用
但是如果信号的变化是随机的(如存储器的数据),这种方法便失效了,这时可以采用握手的方式或者采用FIFO或DPRAM进行缓存。RAM缓存的方式在突发数据传输中优势比较明显,现在高档一点的FPGA中都有不少的BlockRAM资源,且支持配置为DPRAM或FIFO,这种处理方法在通信电路中非常常用。
FPGA——同步转换——FPGA对输入信号的处理相关推荐
- skew算法_一种基于FPGA的多通道高速输入信号自动de‑skew算法的制作方法
本发明涉及高速数据采集技术,更具体的涉及一种基于FPGA的多通道高速输入信号自动de-skew算法. 背景技术: 随着对精度和速率要求越来越高,目前数据采集系统向着多通道和超高速两个方向发展.多通道高 ...
- 【FPGA】FPGA中的缓冲与驱动那些事
目录 转载说明 原文精彩片段 缓冲: 驱动: 转载说明 为解决问题而学习才是由效率的,今天重新看了以前的那个项目的Verilog HDL程序,到现在我还没有弄明白细节,只有慢慢蚕食.看到了这样一串程序 ...
- 【FPGA】FPGA对AD7606进行串行数据采集
个人笔记.这段时间在用FPGA对AD7606进行数据采集,现在把检测过程和遇到的问题记录一下,方便以后避坑.文章最后有相关资料链接. 1.AD7606概述 AD7606是16位,8通道同步采集模数数据 ...
- FPGA技术——FPGA的灵魂(FSM)你悟了吗?
文章目录 前言 一.FSM是什么 ? 1.概念 2.要素 状态机组成的六个要素 状态机工作的四个要素 3.分类 二.如何设计FSM ? 1.状态抽象与转换 2.状态化简 3.状态编码 4.编程实现 三 ...
- FPGA学习---FPGA练习与解答
FPGA练习与解答 练习题目如下,可以练习一下,后面是我做的,欢迎指出错误~ 最后面是可能有用的一些总结,这篇文章可能有用 FPGA学习-数电及verilog知识补充 第一阶段 1.设计4位全加器. ...
- Linux下rgmii接口与fpga相连,FPGA控制RGMII接口PHY芯片88E1512网络通信
一.前言 网络通信中的PHY芯片接口种类有很多,之前接触过GMII接口的PHY芯片RTL8211EG.但GMII接口数量较多,本文使用RGMII接口的88E1512搭建网络通信系统.这类接口总线位宽小 ...
- [FPGA]基于FPGA的数字跑表
基于FPGA的数字跑表的设计与实现 一.设计要求 用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒.可以实现数字跑表进行启动.停止计时和显示读数三个操作,可以在数码管上显示读数. 二.设 ...
- 【安路FPGA】FPGA开发日记(一)
一.开发环境的安装 首先去安路官网下载安装包工具与资料下载-国产FPGA创新者 - 安路科技 下载后解压点击安装包直接傻瓜式安装即可 备注:安装后无法打开或者缺文件等情况是安路安装包不包含一些C++库 ...
- 【FPGA】FPGA的介绍及入门
文章目录 FPGA应用场景 一.FPGA的工作原理 二.FPGA的编程方式 .FPGA开发流程 三.FPGA设计方法 1.功能定义 2.设计输入 3.功能仿真 4.综合优化 五.综合后仿真 六.布局布 ...
- 如何学习FPGA,FPGA学习教程学习经验
队长 路飞的电子设计宝藏 4月16日 一.入门首先要掌握HDL(HDL=verilog+VHDL). 第一句话是:还没学数电的先学数电.然后你可以选择verilog或者VHDL,有C语言基础的,建议选 ...
最新文章
- Linux课堂随笔---第四天
- 无线网络未来十年十大产业趋势
- 6_jfoenix_自定义舞台,JFXSlider
- Visual Studio中将打开的代码与类文件进行关联
- 倒计时或按任意键返回首页_超实用excel小技巧之时间倒计时及动态显示
- Angular8 - 稳定版修改概述(Angular 8的新特性介绍)
- html标签转换含义,html标签含义
- 如何用Mybatis分库分表
- 计算机主板的概念,华硕新型概念主机大爆料:内置未来主板
- Jquery-数组删除元素
- delphi 从字符串末尾向前查找_零基础学python之字符串
- 机器学习之使用sklearn构造决策树模型
- MyBatis集合Spring(三)之mapper
- Linux文件系统(七)---系统调用之open操作(二) 之 get_unused_fd
- 酷似js的java函数简写——lambda表达式
- Windows 11 配置JDK 环境变量
- ubuntu嵌入式linux实训报告总结,利用ubuntu建立嵌入式linux开发环境的总结
- JDBC 连接mysql数据库出现 client does not support authen…… update mysql client
- OLED屏幕应用实验
- 【USACO题库】3.2.4 Feed Ratios饲料调配