全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 可编程逻辑 >

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

时间:2023-05-25 15:21

人气:

作者:admin

标签: 时钟域  bit  格雷码  FPGA  fifo 

导读: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/1ps
module 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 <= I_data_bin ^ (I_data_bin >> 1);




endmodule

代码综合结果如下:

图片

下一篇将介绍gray转二进制及其仿真

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信