FPGA多bit跨時鐘域適合將計數(shù)器信號轉(zhuǎn)換為格雷碼。
格雷碼的特點:從一個數(shù)變?yōu)橄噜彽囊粋€數(shù)時,只有一個數(shù)據(jù)位發(fā)生跳變,
這種特點,就可以將跨時鐘域中的多bit跨時鐘域轉(zhuǎn)換為單bit跨時鐘域,最大限度的提高系統(tǒng)穩(wěn)定性。
格雷碼常用于通信,F(xiàn)IFO 或者 RAM 地址尋址計數(shù)器中。
格雷碼編碼
原碼: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干貨分享
// ============================================================
// 功能:二級制編碼轉(zhuǎn)格雷碼
//
// 原碼: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 , ///輸入二進制數(shù)據(jù)
output reg [C_DATA_WIDTH-1:0] O_data_gray ///輸出二進制數(shù)據(jù)
);
// ============================================================
// main code
// ============================================================
always @(posedge I_sys_clk)
O_data_gray <= I_data_bin ^ (I_data_bin >> 1);
endmodule
代碼綜合結(jié)果如下:
下一篇將介紹gray轉(zhuǎn)二進制及其仿真
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618497 -
fifo
+關(guān)注
關(guān)注
3文章
402瀏覽量
44813 -
格雷碼
+關(guān)注
關(guān)注
2文章
34瀏覽量
13399 -
bit
+關(guān)注
關(guān)注
0文章
48瀏覽量
32456 -
時鐘域
+關(guān)注
關(guān)注
0文章
53瀏覽量
9791
發(fā)布評論請先 登錄
評論