FPGA多bit跨时钟域之格雷码(一)

fpga多bit跨时钟域适合将计数器信号转换为格雷码。
格雷码的特点:从一个数变为相邻的一个数时,只有一个数据位发生跳变,
这种特点,就可以将跨时钟域中的多bit跨时钟域转换为单bit跨时钟域,最大限度的提高系统稳定性。
格雷码常用于通信,fifo 或者 ram 地址寻址计数器中。
格雷码编码
原码:b[0~n];格雷码:g0~n;编码:g=g(b);
编码:g=b xor bi+1,g[n]=b[n];
最高位不变,其它位和高1位信号做异或
其代码如下:
//============================================================// file name: cm_bin2gray// version : v1.0// data : 2022/10/2// author : fpga干货分享// ============================================================// 功能:二级制编码转格雷码// // 原码:b[0~n];格雷码:g[0~n](n∈n);编码:g=g(b);解码:b=f(g);// 编码:g=b xor b[i+1](i∈n,0≤i≤n-1),g[n]=b[n];// 解码:b[n]=g[n],b=g xor b[i+1](i∈n,0≤i≤n-1).// // ============================================================`timescale 1ns/1psmodule cm_bin2gray #( parameter c_data_width = 4 ) ( input wire i_sys_clk , ///输入时钟 input wire [c_data_width-1:0] i_data_bin , ///输入二进制数据 output reg [c_data_width-1:0] o_data_gray ///输出二进制数据 );// ============================================================// main code// ============================================================always @(posedge i_sys_clk) o_data_gray > 1);endmodule代码综合结果如下:
下一篇将介绍gray转二进制及其仿真

如何实现简单的步进电机多段控制呢?
SOLIDWORKS机械设计如何控制尺寸?
苹果iPhone12出现降频和打字卡顿严重问题?
**分布式数据库|数据库数据类型**
数字下变频(DDC)中坐标变换模块的ASIC实现
FPGA多bit跨时钟域之格雷码(一)
交叉带式分拣机的工作原理是什么
N32L40XCL-STB开发板模块评测任务大挑战之UART
为什么要进行电机定子检测
如何连接LabVIEW与Arduino板
GPU算力云服务提供商,蓝耘科技获数千万元战略轮融资
数字孪生技术在园区建设中的应用与实践
谷歌宣布Alphabet正关闭互联网气球项目Loon
CF7631双电源构成的高输入阻抗三运放电路图
苹果iOS10.3正式版怎么样?这11大功能更新让果粉炸锅了!
Zillow提供的100万美元机器学习房价预测大赛奖金会花落谁家?
如何通过在Python中使用并发来加速网页数据抓取项目
机器越智能,人们预测解释和理解其影响的能力就越差
业界先进的7nm工艺技术,集成594亿个晶体管
变频器损坏的原因及维修常识