FPGA多bit跨时钟域之格雷码(1)
FPGA自学笔记分享 2023-03-22
FPGA多bit跨时钟域适合将计数器信号转换为格雷码。格雷码的特点:从一个数变为相邻的一个数时,只有一个数据位发生跳变,这种特点,就可以将跨时钟域中的多bit跨时钟域转换为单bit跨时钟域,最大限度的提高系统稳定性。格雷码常用于通信,FIFO 或者 RAM 地址寻址计数器中。

格雷码编码原码:b[0~n];格雷码:g[0~n](n∈N);编码:g=G(b);编码:g=b XOR b[i+1](i∈N,0≤i≤n-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 <= I_data_bin ^ (I_data_bin >> 1);  endmodule

代码综合结果如下:



声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • FPGA
  • 可编程
  • PLC
  • verilog
下载排行榜
更多
评测报告
更多
广告