3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)
上一篇文章总结了四种常用的多比特跨时钟域的设计。这篇我们主要来看一下 格雷码,文章目录如下:
- 什么是格雷码
- 格雷码转二进制码
- 二进制码转格雷码
- N比特格雷码转N-1比特格雷码
什么是格雷码 ?
A Gray code is an encoding of numbers so that adjacent numbers have a single digit differing by 1
符合这个条件的序列都可以叫做格雷码。
比如下面序列1和序列2都是格雷码。我们常用的标准格雷码是序列1的格式。
序列1:000 -> 001 -> 011 -> 010 -> 110 -> 111 -> 101 -> 100
序列2:000 -> 001 -> 011 -> 111 -> 101 -> 100 -> 000
图1是格雷码和二进制码的对比。
格雷码转二进制码
module gray2bin #(parameter WIDTH=4)
( input logic [WIDTH-1:0] gray,output logic [WIDTH-1:0] bin
);always_comb beginfor (int i=0 ; i<WIDTH ; i++) beginbin[i] = ^(gray >> i);endend
endmodule
这段代码是论文(参考资料1)中的推荐代码。那么如何理解呢。
符号 '^' 在verilog中如果其只有一个操作符表示缩减异或,可以用来判断操作数中1的个数的奇偶。如 ^1001, 含偶数个1,结果为0,而 ^1101,含奇数个1,结果为1。
所以上面代码是意思是 bin的不同位的值可以由gray不同子序列含1的奇偶 来判断。我们可以对比图1来验证一下,发现确实是这个规律的。
二进制码转格雷码
module bin2gray #(parameter WIDTH=4)
( input logic [WIDTH-1:0] bin,output logic [WIDTH-1:0] gray
);always_comb begingray = (bin >> 1)^bin;end
endmodule
这段代码也是论文(参考资料1)中的推荐代码。对应的电路结构如图2所示,意味着bin的每一比特 异或 其前一位的比特可以得到对应的gray的比特。
N比特格雷码转N-1比特格雷码
一开始我以为N比特格雷码转N-1比特格雷码可以像二进制码那样,直接取低N-1比特即可
assign gray_new = gray_old[N-2:0];
后来发现是错误的,太想当然了。
格雷码其实还有一个特点,我们看图3。可以发现N比特格雷码的低N-1比特是有 对称 关系的。如果我们直接取低N-1比特,100 之后还是 100,不会回到 000。
那么如何正确转换呢,将N比特格雷码的高两位异或一下作为N-1比特格雷码的最高位即可。
assign gray_new = {gray[N-1]^gray[N-2], gray[N-3:0]}; // N must be larger than 2
总结
本篇文章主要总结了格雷码的特点以及其与二进制码之间的转换。
参考资料
- 《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》
- 《Simulation and Synthesis Techniques for Asynchronous FIFO Design》
3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)相关推荐
- 3位格雷码的顺序编码_一种优化格雷码编码方式实现跨时钟域的装置的制作方法...
本发明属于信号处理技术领域,尤其是涉及一种优化格雷码编码方式实现跨时钟域的装置. 背景技术: 随着时间的推移,集成电路行业发展至今,已有类似如intel这样先进的foundry,提出迈入10nm制程的 ...
- 4位格雷码的顺序编码_八位格雷码转换器.doc
八位格雷码转换器 物理与信息技术系本科学年论文 题 目八位格雷码转换器设计 学生姓名 专业名称 测控技术与仪器 指导教师 2009年 9月30日 八位格雷码转换器设计 摘要8 Gray code co ...
- 4位格雷码的顺序编码_一种基于格雷码的方形QAM星座图编码方法和系统与流程...
本发明属于测试技术领域,尤其涉及一种基于格雷码的方形QAM星座图编码方法和系统. 背景技术: 矢量信号分析中通常采用星座图来表征调制信号质量,星座图中星座点的编码方法直接影响信号解调后的BER(即比特 ...
- 4位格雷码的顺序编码_格雷码编码 解码 实现(Python)
作者:曹博 01 二值码 02 格雷码编码 2.1 编码优点 2.2 编码生成 2.3 递归生成 2.4 二值码转换 2.5 编码图 03 格雷码投影 3.1 投影图案生成 3.2 DLP投影图像 0 ...
- 4位格雷码的顺序编码_格雷码那点事——递归非递归实现
简介 在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即"首尾相连",因此又称循环 ...
- 3位格雷码的顺序编码_绝对值编码器当中的格雷码
格雷码:又叫循环二进制码或反射二进制码.格雷码是我们在旋转编码器中常会遇到的一种编码方式. 格雷码的特点: 任意两个相邻的代码只有一位二进制数不同: 循环码,0和最大数(2^n-1)之间只有一位不同: ...
- 4位格雷码的顺序编码_整理丨一文掌握编码器的工作原理!
编码器的定义与功能 在数字系统里,常常需要将某一信息(输入)变换为某一特定的代码(输出).把二进制码按一定的规律编排,例如8421码.格雷码等,使每组代码具有一特定的含义(代表某个数字或控制信号)称为 ...
- 4位格雷码的顺序编码_格雷码编码规则_格雷码有什么规律
格雷码 典型的二进制格雷码简称格雷码,因1953年公开的弗兰克·格雷专利"Pulse Code Communication"而得名,当初是为了通信,现在则常用于模拟-数字转换和位置 ...
- 3位格雷码的顺序编码_第3部分-计算机程序员(FPGA嵌入式应用)_3级_理论知识复习题...
第3部分 理论知识复习题 基本概念 数字电路基础 一.判断题(将判断结果填入括号中.正确的填"√",错误的填"×"): 1.要构成5进制计数器,至少需要3个触发 ...
最新文章
- Serverless 工程实践 | Serverless 应用开发观念的转变
- python字典 items函数
- PHP curl采集
- error: undefined reference to 'cv::_OutputArray::_OutputArray(std::__ndk1
- SAP 电商云 Spartacus UI 同 SAP Customer Data Cloud 的集成
- phpcms点赞:表情点击(的统计功能) - 代码剥离篇
- 几何画板怎样添加操作按钮
- 贾跃亭发文祝父亲节快乐:FF就像我的孩子
- 【leetcode】【动态规划】股票买卖
- vue 绑定背景图片、图片
- python百分号字符串_python--003--百分号字符串拼接、format
- 装饰模式/适配器模式/代理模式
- 短信接口防盗刷解决方案
- 博客园2013年5月份第2周源码发布详情
- Android对接蓝牙打印机
- Java前景如何,容易找工作嘛
- Drag Drop 入门介绍
- 编译原理——中间代码生成(逆波兰表示)
- 对话Oneledger联合创始人Edwin Zhang
- idea 复制java文件_IDEA复制项目Module出现java文件夹source root解决方法
热门文章
- 【转】使用Apache CXF开发WebServices服务端
- vimrepress
- error: xxxx.o: Relocations in generic ELF (EM: 3)解决办法
- 学习-SQL查询连续号码段的巧妙解法--转载
- ASM - 条件判断
- ASP.NET一般处理程序新建一个方法里使用context.Response.Write的解决方法
- java异常——捕获异常+再次抛出异常与异常链
- 解决IDEA快捷键 Alt+Insert 失效的问题
- IntelliJ IDEA中跳转到上一个视图位置(向后/向前导航)的键盘快捷键
- 如何强制除法为浮点数? 除数一直舍入到0?