格雷碼的特點:從一個數變為相鄰的一個數時,只有一個數據位發生跳變,
這種特點,就可以將跨時鐘域中的多bit跨時鐘域轉換為單bit跨時鐘域,最大限度的提高系統穩定性。
格雷碼常用于通信,FIFO 或者 RAM 地址尋址計數器中。
格雷碼編碼
原碼:b[0~n];格雷碼:g0~n;編碼:g=G(b);
最高位不變,其它位和高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轉二進制及其仿真
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
FPGA
+關注
關注
1626文章
21667瀏覽量
601843 -
fifo
+關注
關注
3文章
387瀏覽量
43552 -
格雷碼
+關注
關注
2文章
34瀏覽量
13176 -
bit
+關注
關注
0文章
48瀏覽量
31988 -
時鐘域
+關注
關注
0文章
52瀏覽量
9529
發布評論請先 登錄
相關推薦
FPGA界最常用也最實用的3種跨時鐘域處理的方法
介紹3種跨時鐘域處理的方法,這3種方法可以說是FPGA界最常用也最實用的方法,這三種方法包含了單bit和
發表于 11-15 20:08
?1.4w次閱讀
如何解決單bit和多bit跨時鐘處理問題?
一、簡要概述: 在芯片設計過程中,一個系統通常是同步電路和異步電路并存,這里經常會遇到CDC也就是跨時鐘域處理的問題,常見的處理方法,可能大
評論