FPGA基础:格雷码及FIFO应用概述

news/2024/9/13 10:04:10/文章来源:https://www.cnblogs.com/cnlntr/p/18378130

1简介

反射二进制码反射二进制码(RBC),也称为反射二进制(RB)或格雷码(Gray code),得名于Frank Gray,是二进制数制的一种排列方式,使得连续两个值之间仅有一个比特(二进制位)不同。格雷码在数字电路中的应用有助于减少误差、提高系统的可靠性,并简化逻辑操作,因此被广泛应用于各种数字系统和电子设备中。

2格雷码原理

自然二进制码

 

许多设备通过关闭和打开开关来指示位置。如果该设备使用自然二进制编码,位置3和4是相邻的,但二进制表示的所有三个比特都不同。自然二进制编码的问题在于物理开关并非理想的,理想的二进制码应该是连续两个值之间仅有一个比特变化。

格雷码

 


格雷码应运而生,对于十进制数,编码在仅改变一个开关的情况下会回到十进制数0。

在现代数字通信中,格雷码在错误纠正中扮演着重要的角色。例如,在诸如QAM这样的数字调制方案中,数据通常以4位或更多位的符号传输,信号的星座图被安排成相邻星座点传达的位模式仅相差一个比特。通过结合能够纠正单比特错误的前向错误纠正,接收器可以纠正导致星座点偏离到相邻点区域的任何传输错误。这使得传输系统对噪声的影响更小。

格雷码也可以用于编码跨时钟FIFO的地址,以确保在不同时钟域之间读写操作的正确执行。使用格雷码编码地址可以减少在不同时钟域之间发生的时序问题,提高跨时钟FIFO的可靠性和性能。

3格雷码在FIFO中的应用

 

 

在FIFO中,通常我们需要一个指针计数器来标识我们读取FIFO的位置。然而,在异步FIFO中,将一个时钟域中的二进制计数值同步到另一个时钟域是有问题的。这是因为一个n位计数器的每一位都可能同时改变(例如,二进制数从7变为8是0111->1000,所有位都改变了)。通常,当我们处理1位跨越时钟域的信号时,会使用多级DFF来避免亚稳态的问题。但是,如果我们有多个信号线(例如,4位计数器),并且这些信号线的延迟不一致,即skew不同,使用异步时钟采样可能导致数据不一致的问题。为了避免这一问题,FIFO计数指针的常见方法是使用格雷码计数器。格雷码每个时钟转换只允许一位改变,从而消除了尝试在同一时钟边缘上同步多个改变信号所带来的问题。

3总结

本章主要探讨了格雷码以及格雷码在FIFO中的应用,后续会进一步探讨FIFO的详细应用以及数字电路中跨时钟的处理方法。

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

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

相关文章

[操作系统]访问一个逻辑地址发生了什么

当CPU想要访问一个逻辑地址的时候,我们需要做两个步骤,地址转换和内存访问 地址转换 逻辑地址是程序内部使用的地址,并非真正的物理地址。 从逻辑地址到物理地址的映射,由页表来完成,页表的内容包括,逻辑页号,物理页号,有效位,有效位表示这一页是否在内存中。 页表存放…

[Ynoi2011] 初始化

题目链接 : [Ynoi2011] 初始化 神仙trick + 卡常题,前缀后缀和根本没听过。 根号分治 + 分块。 对于修改操作,发现是跳着修改,考虑根号分治。若\(x \ge \sqrt{n}\),直接暴力更改,复杂度\(O(\sqrt{n})\)。 反之,可以将序列抽象成一堆大小为\(x\)的段,如图,\(l,r\)是查询…

windows Tauri 构建(Release)时下载 WiX等其它打包文件失败

方法 手动下载放到指定的目录 参考这幅图:注意:随着版本的更新上面的方法存在一个小问题,需要把文件夹名字改一下,WixTools改成WixTools314参考 https://github.com/tauri-apps/tauri/issues/7338

【微信小程序开发】栀子手作花花微信小程序商城开发最佳实践

本文介绍了通过uniapp技术实现了一套栀子手作在线购物商城系统。包含首页、分类、我的等常用功能入口。本文介绍了通过uniapp技术实现了一套栀子手作在线购物商城系统。包含首页、分类、我的等常用功能入口。一、功能演示 首页:包含了商品介绍,领劵中心和商品列表区域。 商品…

《Programming from the Ground Up》阅读笔记:p103-p116

《Programming from the Ground Up》学习第7天,p103-p116总结,总计14页。 一、技术总结 1.读写文件 (1)linux.s linux.s: #file name:linux.s# system call numbers(按数字大小排列,方便查看) .equ SYS_READ, 0 .equ SYS_WRITE, 1 .equ SYS_OPEN, 2 .equ SYS_CLOSE, 3 .equ …

控件与布局

1.控件的分类:主要要6大类一.布局控件:可以容纳多个控件或者嵌套其他布局控件,用于在UI上组织和排列控件。Grid、StackPanel、DockPanel等都属于此类,他们拥有共同的父类Panel二.内容控件:只能容纳一个其他控件或者布局控件作为他的内容。Window、Button等都属于此类,因为…

第7篇:在虚拟机 centos7上搭建jira管理工具

本文详细介绍了如何在CentOS7系统上下载配置Jira,包括创建文件夹、下载安装包、解压、修改配置文件以及设置JVM和MySQL环境。同时,文章还涉及了JDK1.8的安装,数据库的创建,以及Jira的破解步骤,包括替换特定jar文件和配置数据库连接。最后,文章提到了启动Jira服务并进行汉…

最近遇到的一些奇奇怪怪奇技淫巧

然后我CF上绿了————DaisySunchaser要多思考。构造——从哪里入手?CF交互指南要多注意。 我的最初想法:当我查看了他使用了冰茶几的代码: #include<bits/stdc++.h> #define ll long long #define N 200005 #define mp make_pair using namespace std; int T,n,u[N]…

Qt/C++音视频开发81-采集本地麦克风/本地摄像头带麦克风/桌面采集和麦克风/本地设备和桌面推流

一、前言 随着直播的兴起,采集本地摄像头和麦克风进行直播推流,也是一个刚需,最简单的做法是直接用ffmpeg命令行采集并推流,这种方式简单粗暴,但是不能实时预览画面,而且不方便加上一些特殊要求。之前就已经打通了音视频文件和视频流的采集,那是不是可以简单点的方式就能…

如何缩短微信文章链接长度

有时候,我们想把微信公众号的文章发到其他平台上,这时候就需要复制文章的链接。有时候,我们想把微信公众号的文章发到其他平台上,这时候就需要复制文章的链接。 ‍ 手机端复制方式如下: ​ ‍ 微信对于短网址的优化 以前,微信公众号文章的链接特别长。但在 2016 年末,微…

verilog代码与设计总结

Verilog编码风格及设计建议相比于case语句,casez语句将z态看做不关心,casex语句将z态和x态看做不关心。并且所有case类型语句均没有优先级。 锁存器是组合逻辑产生的,一般没有复位端,所以根据其所存特性,在上电的时候没法确定其初始状态,因此正常情况下要避免使用。 组合…