上一篇文章我們講了二進(jìn)制轉(zhuǎn)gray碼,這次我們聊一下gray碼轉(zhuǎn)二進(jìn)制碼。
格雷碼解碼:
原碼:b[0~n]; 格雷碼:g0~n; 解碼:b=F(g);
代碼如下:
//============================================================
// File Name: cm_gray2bin
// 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_gray2bin #(
parameter C_DATA_WIDTH = 4 )
(
input wire I_sys_clk , ///輸入時(shí)鐘
input wire [C_DATA_WIDTH-1:0] I_data_gray , ///輸入gray碼
output reg [C_DATA_WIDTH-1:0] O_data_bin ///輸出二進(jìn)制數(shù)據(jù)
);
// ============================================================
// 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
代碼綜合結(jié)果如下:
仿真如下:
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報(bào)投訴
-
FPGA
+關(guān)注
關(guān)注
1630文章
21796瀏覽量
605409 -
格雷碼
+關(guān)注
關(guān)注
2文章
34瀏覽量
13216 -
bit
+關(guān)注
關(guān)注
0文章
48瀏覽量
32036 -
時(shí)鐘域
+關(guān)注
關(guān)注
0文章
52瀏覽量
9559 -
二進(jìn)制碼
+關(guān)注
關(guān)注
0文章
3瀏覽量
6133
發(fā)布評論請先 登錄
相關(guān)推薦
如何處理好FPGA設(shè)計(jì)中跨時(shí)鐘域問題?
以手到擒來。這里介紹的三種方法跨時(shí)鐘域處理方法如下:打兩拍;異步雙口 RAM;格雷碼轉(zhuǎn)換。01方
發(fā)表于 09-22 10:24
探尋FPGA中三種跨時(shí)鐘域處理方法
以手到擒來。這里介紹的三種方法跨時(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種方法可以說是FPGA界最常用也最實(shí)用的方法,這三種方法包含了單bit和
發(fā)表于 07-29 06:19
FPGA界最常用也最實(shí)用的3種跨時(shí)鐘域處理的方法
介紹3種跨時(shí)鐘域處理的方法,這3種方法可以說是FPGA界最常用也最實(shí)用的方法,這三種方法包含了單bit和
發(fā)表于 11-15 20:08
?1.4w次閱讀
揭秘FPGA跨時(shí)鐘域處理的三大方法
跨時(shí)鐘域處理的方法,這三種方法可以說是 FPGA 界最常用也最實(shí)用的方法,這三種方法包含了單 bit 和
如何解決單bit和多bit跨時(shí)鐘處理問題?
一、簡要概述: 在芯片設(shè)計(jì)過程中,一個系統(tǒng)通常是同步電路和異步電路并存,這里經(jīng)常會遇到CDC也就是跨時(shí)鐘域處理的問題,常見的處理方法,可能大家也已經(jīng)比較熟悉了,主要有單bit
評論