日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

格雷码的FPGA实现

發布時間:2023/12/20 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 格雷码的FPGA实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 格雷碼定義

???????? 在一組數的編碼中,若任意兩個相鄰的代碼只有一位二進制數不同,則稱這種編碼為格雷碼(Gray Code),另外由于最大數與最小數之間也僅一位數不同,即“首尾相連”,因此又稱循環碼或反射碼。

2. 轉換方法

(1)遞歸查表法

???????? 1位格雷碼有2個碼字:0和1;

???????? (n+1)位格雷碼中的前2^n(2的N次方)個字碼等于n位格雷碼的碼字,按順序書寫,加前綴0;

(n+1)位格雷碼中的后2^n(2的N次方)個字碼等于n位格雷碼的碼字,但按逆序書寫,加前綴1;

2)異或轉換

???????? 二進制碼→格雷碼(編碼,i為bit位數):

????????

???????? 格雷碼→二進制碼(解碼,i為bit位數):

(3)卡諾圖

???????? 三位格雷碼與四位格雷碼:

???????

(4)異或乘除法

異或乘除法沒有借位和進位

編碼:異或乘3后右移1位。

解碼:左移異或除3,忽略余數

3. 實現方法

???????? 程序采用遞歸循環查表法,FPGA多采用異或轉換

(1)二進制轉格雷碼

FPGA代碼:

//================================================================ // Filename : bin2gray.v // Created On : 2017-05-14 16:54:30 // Last Modified : 2017-05-14 16:55:14 // Author : ChrisHuang // Description : Converting Gray Code to Binary //================================================================`timescale 1ns/1psmodule bin2gray #(parameter pDataWidth = 4 ) (input [pDataWidth-1:0] iBinary,output [pDataWidth-1:0] oGrayCode );assign oGrayCode = (iBinary >> 1) ^ iBinary;endmodule testbench代碼:
//================================================================ // Filename : bin2gray_tb.v // Created On : 2017-05-14 16:54:30 // Last Modified : 2017-05-14 16:55:14 // Author : ChrisHuang // Description : test Converting Gray Code to Binary //================================================================`timescale 1ns/1psmodule bin2gray_tb();reg rClk; reg [3:0] rBinary; wire [3:0] wGray;initial beginrClk = 0;rBinary = 4'b0;#500 $stop; endalways #10 rClk = ~rClk;always @ (posedge rClk) beginrBinary <= rBinary + 1'b1; endbin2gray #(4) i1 (.iBinary (rBinary ),.oGrayCode (wGray ) );endmodule 仿真結果波形:

(2)格雷碼轉二進制

???????? FPGA代碼:

//================================================================ // Filename : gray2bin.v // Created On : 2017-05-14 21:22:30 // Last Modified : 2017-05-14 21:23:14 // Author : ChrisHuang // Description : Converting Gray Code to Binary //================================================================`timescale 1ns/1psmodule gray2bin #(parameter pDataWidth = 4 ) (input [pDataWidth-1:0] iGrayCode,output [pDataWidth-1:0] oBinary );reg [pDataWidth-1:0] rBinary;always @ (iGrayCode) beginrBinary[3] = iGrayCode[3];rBinary[2] = iGrayCode[2] ^ rBinary[3];rBinary[1] = iGrayCode[1] ^ rBinary[2];rBinary[0] = iGrayCode[0] ^ rBinary[1]; endassign oBinary = rBinary;endmodule testbench代碼:
//================================================================ // Filename : gray2bin_tb.v // Created On : 2017-05-14 21:22:30 // Last Modified : 2017-05-14 21:23:14 // Author : ChrisHuang // Description : Converting Gray Code to Binary //================================================================`timescale 1ns/1psmodule gray2bin_tb();`include "bin2gray.v"reg rClk; reg [3:0] rBinary; wire [3:0] wGray; wire [3:0] wBinary;initial beginrClk = 0;rBinary = 4'b0;#500 $stop; endalways #10 rClk = ~rClk;always @ (posedge rClk) beginrBinary <= rBinary + 1'b1; endbin2gray #(4) i1 (.iBinary (rBinary ),.oGrayCode (wGray ) );gray2bin #(4) i2 (.iGrayCode (wGray ),.oBinary (wBinary ) );endmodule 仿真結果:


參考:

http://www.cnblogs.com/logic3/p/5609919.html

http://blog.csdn.net/beiyeqingteng/article/details/7044471

http://baike.baidu.com/link?url=rNvrOCbvcfcU3T_zsJVAjTimZmICXlvFDZZIn-V8W5bBE4vTPlgYM50CyOIZfFZSGmwB1tskkgRAhUKvtAGR6UUp2TwrPVP9PgQ5tSiyPRvO-OjOhKVFviAGnv0azViO

總結

以上是生活随笔為你收集整理的格雷码的FPGA实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。