FPGA多bit跨時(shí)鐘域適合將計(jì)數(shù)器信號(hào)轉(zhuǎn)換為格雷碼。
格雷碼的特點(diǎn):從一個(gè)數(shù)變?yōu)橄噜彽囊粋€(gè)數(shù)時(shí),只有一個(gè)數(shù)據(jù)位發(fā)生跳變,
這種特點(diǎn),就可以將跨時(shí)鐘域中的多bit跨時(shí)鐘域轉(zhuǎn)換為單bit跨時(shí)鐘域,最大限度的提高系統(tǒng)穩(wěn)定性。
格雷碼常用于通信,F(xiàn)IFO 或者 RAM 地址尋址計(jì)數(shù)器中。

格雷碼編碼
原碼:b[0~n];格雷碼:g0~n;編碼:g=G(b);
編碼:g=b XOR bi+1,g[n]=b[n];
最高位不變,其它位和高1位信號(hào)做異或

其代碼如下:
//============================================================
// File Name: cm_bin2gray
// VERSION : V1.0
// DATA : 2022/10/2
// Author : FPGA干貨分享
// ============================================================
// 功能:二級(jí)制編碼轉(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 , ///輸入時(shí)鐘
input wire [C_DATA_WIDTH-1:0] I_data_bin , ///輸入二進(jìn)制數(shù)據(jù)
output reg [C_DATA_WIDTH-1:0] O_data_gray ///輸出二進(jìn)制數(shù)據(jù)
);
// ============================================================
// main code
// ============================================================
always @(posedge I_sys_clk)
O_data_gray <= I_data_bin ^ (I_data_bin >> 1);
endmodule
代碼綜合結(jié)果如下:

下一篇將介紹gray轉(zhuǎn)二進(jìn)制及其仿真
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
FPGA
+關(guān)注
關(guān)注
1660文章
22408瀏覽量
636252 -
fifo
+關(guān)注
關(guān)注
3文章
407瀏覽量
45746 -
格雷碼
+關(guān)注
關(guān)注
2文章
34瀏覽量
13537 -
bit
+關(guān)注
關(guān)注
0文章
48瀏覽量
32829 -
時(shí)鐘域
+關(guān)注
關(guān)注
0文章
53瀏覽量
10042
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
熱點(diǎn)推薦
FPGA設(shè)計(jì)中解決跨時(shí)鐘域的三大方案
介紹3種跨時(shí)鐘域處理的方法,這3種方法可以說(shuō)是FPGA界最常用也最實(shí)用的方法,這三種方法包含了單bit和
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域問(wèn)題?
以手到擒來(lái)。這里介紹的三種方法跨時(shí)鐘域處理方法如下:打兩拍;異步雙口 RAM;格雷碼轉(zhuǎn)換。01方
發(fā)表于 09-22 10:24
探尋FPGA中三種跨時(shí)鐘域處理方法
以手到擒來(lái)。這里介紹的三種方法跨時(shí)鐘域處理方法如下:打兩拍;異步雙口 RAM;格雷碼轉(zhuǎn)換。01方
發(fā)表于 10-20 09:27
三種FPGA界最常用的跨時(shí)鐘域處理法式
時(shí)鐘域處理方法如下:打兩拍;異步雙口RAM;格雷碼轉(zhuǎn)換。01方法一:打兩拍大家很清楚,處理
發(fā)表于 02-21 07:00
FPGA初學(xué)者的必修課:FPGA跨時(shí)鐘域處理3大方法
時(shí)鐘域處理方法如下:打兩拍;異步雙口RAM;格雷碼轉(zhuǎn)換。01方法一:打兩拍大家很清楚,處理
發(fā)表于 03-04 09:22
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域間的數(shù)據(jù)
介紹3種跨時(shí)鐘域處理的方法,這3種方法可以說(shuō)是FPGA界最常用也最實(shí)用的方法,這三種方法包含了單bit和
發(fā)表于 07-29 06:19
FPGA界最常用也最實(shí)用的3種跨時(shí)鐘域處理的方法
介紹3種跨時(shí)鐘域處理的方法,這3種方法可以說(shuō)是FPGA界最常用也最實(shí)用的方法,這三種方法包含了單bit和
發(fā)表于 11-15 20:08
?1.5w次閱讀
如何把二進(jìn)制轉(zhuǎn)換為格雷碼?格雷碼是如何判斷讀空寫(xiě)滿呢?
在傳遞讀寫(xiě)時(shí)鐘域的指針使用格雷碼來(lái)傳遞,如何把二進(jìn)制轉(zhuǎn)換為格
揭秘FPGA跨時(shí)鐘域處理的三大方法
跨時(shí)鐘域處理的方法,這三種方法可以說(shuō)是 FPGA 界最常用也最實(shí)用的方法,這三種方法包含了單 bit 和
如何解決單bit和多bit跨時(shí)鐘處理問(wèn)題?
一、簡(jiǎn)要概述: 在芯片設(shè)計(jì)過(guò)程中,一個(gè)系統(tǒng)通常是同步電路和異步電路并存,這里經(jīng)常會(huì)遇到CDC也就是跨時(shí)鐘域處理的問(wèn)題,常見(jiàn)的處理方法,可能大
FPGA多bit跨時(shí)鐘域之格雷碼(一)
評(píng)論