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

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

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

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

时间:2023-05-25 15:22

人气:

作者:admin

标签: 格雷码  时钟  二进制码  FPGA 

导读:上一篇文章我们讲了二进制转gray码,这次我们聊一下gray码转二进制码。...

上一篇文章我们讲了二进制转gray码,这次我们聊一下gray码转二进制码。

格雷码解码:

原码:b[0~n]; 格雷码:g0~n; 解码:b=F(g);

??:b[n]=g[n],b=g XOR bI+1.

图片图片

代码如下:

//============================================================
// File Name: cm_gray2bin
// 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_gray2bin #(
    parameter                         C_DATA_WIDTH = 4 )
    (                  
    input wire                        I_sys_clk    , ///输入时钟
    input wire [C_DATA_WIDTH-1:0]     I_data_gray  , ///输入gray码
    output reg [C_DATA_WIDTH-1:0]     O_data_bin     ///输出二进制数据
    );

// ============================================================
// wire reg
// ============================================================
wire [C_DATA_WIDTH-1:0]     S_data_bin  ;
// ============================================================
// main code
// ============================================================
assign S_data_bin[C_DATA_WIDTH-1]     = I_data_gray[C_DATA_WIDTH-1];
assign S_data_bin[C_DATA_WIDTH-2:0] = I_data_gray[C_DATA_WIDTH-2:0]^S_data_bin[C_DATA_WIDTH-1:1];






always @(posedge I_sys_clk)
    O_data_bin <= S_data_bin;




endmodule

代码综合结果如下:

图片

仿真如下:

图片

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

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

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

关注微信