《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于VHDL的漢明碼編解碼器實現(xiàn)
基于VHDL的漢明碼編解碼器實現(xiàn)
2014年微型機與應(yīng)用第24期
孫志雄,謝海霞
(瓊州學(xué)院 電子信息工程學(xué)院,海南 三亞 572022)
摘要: 介紹了漢明碼的原理,分析了漢明碼編碼、解碼電路設(shè)計思路。利用VHDL語言設(shè)計(7,4)漢明碼編解碼器并通過Quartus II仿真平臺進行仿真驗證,最后下載到FPGA芯片EP1K30QC208-2實現(xiàn)了漢明碼編解碼電路。仿真及實驗結(jié)果證明,該方法實現(xiàn)的漢明碼編解碼電路方案正確,并具有速度快、修改方便、可移植性好等優(yōu)點。
關(guān)鍵詞: 漢明碼 編碼器 解碼器 FPGA VHDL
Abstract:
Key words :

  摘  要: 介紹了漢明碼的原理,分析了漢明碼編碼、解碼電路設(shè)計思路。利用VHDL語言設(shè)計(7,4)漢明碼編解碼器并通過Quartus II仿真平臺進行仿真驗證,最后下載到FPGA芯片EP1K30QC208-2實現(xiàn)了漢明碼編解碼電路。仿真及實驗結(jié)果證明,該方法實現(xiàn)的漢明碼編解碼電路方案正確,并具有速度快、修改方便、可移植性好等優(yōu)點。

  關(guān)鍵詞: 漢明碼;編碼器;解碼器;FPGA;VHDL

0 引言

  由于數(shù)字信號在傳輸過程中受到干擾,碼元波形將變壞,接收端收到后可能發(fā)生錯誤判決,因此在設(shè)計數(shù)字通信系統(tǒng)時,就要考慮差錯控制編碼。在差錯控制編碼中,每種編碼所依據(jù)的原理是不同的,其中常用的是線性分組碼,線性分組碼中的信息位和監(jiān)督位是由一些線性代數(shù)方程聯(lián)系著的。而漢明碼(Hamming Code)就是一種能夠糾正一位錯碼且編碼效率較高的線性分組碼。由于漢明碼的編解碼在工程上較易實現(xiàn),因此應(yīng)用廣泛。本文通過對信道糾錯編碼漢明碼的研究,提出了利用FPGA實現(xiàn)漢明碼編解碼的方法,并實現(xiàn)了(7,4)漢明碼的自動糾錯和檢錯的功能[1]。

1 漢明碼的編解碼原理

  漢明碼是由Richard Hamming于1950年提出的,它屬于線性分組編碼方式,用以糾正單個錯誤的線性分組碼,在軟件無線電中應(yīng)用廣泛。在線性碼分組碼(n,k)中,若碼長為n,信息位數(shù)為k,則監(jiān)督位數(shù)r=n-k。

  如果用r個監(jiān)督位構(gòu)造出r個監(jiān)督關(guān)系式來指示1位錯碼的n種可能位置,則要求:

  2r-1≥n或2r≥k+r+1(1)

  這種能夠糾正1位錯碼的線性分組碼就稱為漢明碼。其基本原理是,將信息碼元與監(jiān)督碼元通過線性方程式聯(lián)系起來,每一個監(jiān)督位被編在傳輸碼字的特定比特位置上。系統(tǒng)對于錯誤的數(shù)位無論是原有信息位中的,還是附加監(jiān)督位中的,都能把它分離出來。由漢明碼的性質(zhì)可知,(7,4)漢明碼能糾正1位錯碼,檢測2個錯碼[2]。

  2 漢明碼的編解碼方法

  設(shè)漢明碼(n,k)中k=4,為了糾正1位錯碼,由式(1)可知,要求監(jiān)督位數(shù)r≥3。若取r=3,則n=k+r=7,即(7,4)漢明碼。若用a6 a5…a0表示這7個碼元,其中a6、a5、a4和a3為信息位,a2、a1和a0為監(jiān)督位;用S2、S1和S0表示3個監(jiān)督關(guān)系式中的校正子,則S2、S1和S0的值與錯碼位置的對應(yīng)關(guān)系可以規(guī)定如表1所示,其對應(yīng)監(jiān)督關(guān)系式如式(2)所示[3]。

005.jpg

  2.png

  在信息傳輸中,在發(fā)送端編碼時,信息位a6、a5、a4和a3的值由輸入信號決定,是隨機的。監(jiān)督位a2、a1和a0根據(jù)信息位的取值按監(jiān)督關(guān)系來確定,即監(jiān)督位應(yīng)使S2、S1和S0的值為0,如式(3)所示,即表示發(fā)送端編成的碼組中應(yīng)無錯碼。

  3.png

  式(3)經(jīng)過移項運算,解出監(jiān)督位a2、a1和a0,如式(4)所示。

  4.png

  因此,(7,4)漢明碼給定信息位后,可以直接按式(4)算出監(jiān)督位,結(jié)果如表2所示。

  接收端收到每個碼組后,先計算出S2、S1和S0,若為000,則表示無錯碼;若不全為0,則表示有錯碼,這時可查表1判斷錯碼情況。例如,若接收碼組為0000011,按式(2)計算可得:S2=0,S1=1,S0=1。由于S2S1S0=011,查表1可知在a3位有一錯碼,因此便可以在接收端糾正1位錯碼。表2中所列的(7,4)漢明碼的最小碼距d0=3,因此,這種碼能夠糾正1位錯碼或檢測2位錯碼。由于碼率k/n=(n-r)/n=1-r/n,故當(dāng)n很大或r很小時,碼率接近1。可見,漢明碼是一種高效碼[4]。

3 基于VHDL的漢明碼編解碼仿真及實現(xiàn)

  3.1基于VHDL的漢明碼編碼仿真

  根據(jù)漢明碼的編碼方法,利用VHDL語言編程實現(xiàn)一種(7,4)漢明碼的編碼及仿真,其碼長為7位,信息位為高4位,監(jiān)督位為低3位。對應(yīng)上述編碼方法實現(xiàn)的漢明碼編碼器的VHDL程序如下:

  //A 4-bit Hamming Encoder

  LIBRARY IEEE;

  USE IEEE.STD_LOGIC_1164.ALL;

  ENTITY hammingenc IS

  PORT(datain : IN BIT_VECTOR(0 TO 3);

  //d0 d1 d2 d3

  en :IN bit;

  hamout : OUT BIT_VECTOR(0 TO 6));

  //d0 d1 d2 d3 p0 p1 p2

  END hammingenc;

  ARCHITECTURE one OF hammingenc IS

  SIGNAL p0,p1,p2 : BIT;    //check bits

  BEGIN

  //generate check bits

  p0<=(datain(0)XOR datain(1))XOR datain(3)WHEN EN=′1′ELSE′0′;

  p1<=(datain(0)XOR datain(2))XOR datain(3)WHEN EN=′1′ ELSE′0′;

  p2<=(datain(1)XOR datain(2))XOR datain(3)WHEN EN=′1′ ELSE ′0′;

  //connect up outputs

  hamout(0 TO 2)<=(p0&p1&p2);

  hamout(3 TO 6)<=datain(0 TO 3);

  END one;

001.jpg

  用VHDL語言完成的漢明碼編碼器設(shè)計電路符號如圖1所示,其中datain[3..0]為輸入的4位信息碼;en為編碼輸入使能端,高電平有效;hamout[6..0]為漢明碼編碼輸出,其高4位hamout[6..3]為信息位,其低3位hamout[2..0]為監(jiān)督位。

002.jpg

  實現(xiàn)的(7,4)漢明碼編碼器仿真波形圖如圖2所示。從圖2可以看出,當(dāng)輸入信息位datain[3..0]為0000時,輸出hamout[6..0]漢明碼編碼為0000000;輸入信息位datain[3..0]為0001時,輸出hamout[6..0]漢明碼編碼為0001011,其余類推,其(7,4)漢明碼編碼結(jié)果與表2一致。

  3.2 基于VHDL的漢明碼解碼仿真

003.jpg

  用VHDL語言完成的漢明碼解碼器設(shè)計電路符號如圖3所示。其中hamin[6..0]為輸入的漢明碼。en1為譯碼器使能端,高電平有效。dataout[3..0]為漢明碼解碼輸出,輸出為4位信息位。ne為解碼輸出錯誤指示端,當(dāng)ne為高電平1時表示接收的漢明碼沒有錯誤,相應(yīng)的err為000;當(dāng)ne為低電平0時表示接收的漢明碼有一位錯誤,并用err指出錯碼的位置,當(dāng)err為001時表示錯碼為a0,當(dāng)err為010時表示錯碼為a1,其余類推。經(jīng)過糾正后,解碼輸出dataout[3..0]正確。

  與上述解碼方法對應(yīng)的漢明碼解碼器的VHDL程序如下:

  //A 7 bit Hamming Decoder

  LIBRARY IEEE;

  USE IEEE.STD_LOGIC_1164.ALL;

  ENTITY hammingdec IS

  PORT(hamin:IN BIT_VECTOR(6 downTO 0);

  //a6 a5 a4 a3 p2 p1 p0

  EN1:IN BIT;

  dataout : OUT BIT_VECTOR(3 downto 0);

  //a6 a5 a4 a3

  ne: OUT BIT;

  err:OUT STD_LOGIC_VECTOR(2 downto 0)); //diagnostic outputs

  END hammingdec;

  ARCHITECTURE ONE OF hammingdec IS

  BEGIN

  PROCESS(hamin)

  VARIABLE syndrome:BIT_VECTOR(2 DOWNTO 0);

  BEGIN

  //generate syndrome bits

  IF EN1=′1′ THEN

  syndrome(0):=(((hamin(0) XOR hamin(3))

  XOR hamin(4)) XOR hamin(6));

  syndrome(1):=(((hamin(1) XOR hamin(3))

  XOR hamin(5)) XOR hamin(6));

  syndrome(2):=(((hamin(2) XOR hamin(4))

  XOR hamin(5)) XOR hamin(6));

  IF (syndrome="000") THEN  //no errors

  ne<=′1′;

  err<="000";

  dataout(3 downTO 0)<=hamin(6 downTO 3);

  ELSE ne<=′0′;

  CASE syndrome IS

  WHEN "001"=>err<="001";dataout(3 downTO 0)

  <=hamin(6 downTO 3);

  WHEN"010"=>err<="010";dataout(3 downTO 0)

  <=hamin(6 downTO 3);

  WHEN"100"=>err<="011";dataout(3 downTO 0)

  <=hamin(6 downTO 3);

  WHEN "011"=>err<="100";dataout(0)<=NOT hamin

  (3);dataout(3 downTO 1)<=hamin(6 downTO 4);

  WHEN "101"=>err<="101";dataout(1)<=NOT hamin(4);dataout(3 downTO 2)<=hamin(6 downTO 5);dataout(0)<=hamin(3);

  WHEN "110"=>err<="110";dataout(2)<=NOT hamin(5);dataout(1 downTO 0)<=hamin(4 downTO 3);dataout(3)<=hamin(6);

  WHEN "111"=>err<="111";dataout(3)<=NOT hamin(6);dataout(2 downTO 0)<=hamin(5 downTO 3);

  WHEN OTHERS=>err<="000";

  END CASE;

  END IF;

  END IF;

  END PROCESS;

  END ONE;

004.jpg

  (7,4)漢明碼解碼器仿真波形如圖4所示。例如,當(dāng)解碼器輸入hamin[6..0]為0001010,對應(yīng)的ne為低電平0說明接收的漢明碼有1位錯誤,相應(yīng)的err為001時,表示錯碼為a0,經(jīng)糾錯后a0為1,所以正確接收碼應(yīng)為:0001011,對應(yīng)的解碼為0001。從圖4可以看出,經(jīng)解碼器解碼后,其正確解碼結(jié)果與編碼輸入的信息位一致。

  在仿真的基礎(chǔ)上,將漢明碼編解碼的配置程序下載到FPGA芯片EP1K30QC208-2,并在EDA實驗開發(fā)板進行測試,實驗結(jié)果表明漢明碼編解碼正確[5]。

4 結(jié)論

  本文利用VHDL語言編程,并基于FPGA實現(xiàn)了(7,4)漢明碼編解碼器的設(shè)計,體現(xiàn)了軟件無線電設(shè)計通信系統(tǒng)的思想,實現(xiàn)了硬件設(shè)計實驗軟件化,其加速了數(shù)字通信系統(tǒng)設(shè)計的效率,降低了設(shè)計成本,為通信系統(tǒng)的設(shè)計提供了很好的平臺[6]。

參考文獻

  [1] 盛孟剛.漢明碼編譯碼的FPGA設(shè)計與實現(xiàn)[J].山西電子技術(shù),2007(6):43-47.

  [2] 章學(xué)靜,薛琳,李金平,等.漢明(Hamming)碼及其編譯碼算法的研究與實現(xiàn)[J].北京聯(lián)合大學(xué)學(xué)報(自然科學(xué)版),2008,22(1):46-49.

  [3] 方國濤.基于FPGA的漢明碼編譯碼系統(tǒng)[J].信息技術(shù),2010(7):79-81.

  [4] 樊昌信,曹麗娜.通信原理(第6版)[M].北京:國防工業(yè)出版社,2006.

  [5] 江國強.EDA技術(shù)與應(yīng)用(第3版)[M].北京:電子工業(yè)出版社,2010.

  [6] 孫志雄,謝海霞.基于FPGA的CRC編解碼器實現(xiàn)[J].電子器件,2012,35(6):657-660.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲成人在线网站| 在线日本成人| 欧美成人在线影院| 久久se精品一区精品二区| av不卡在线| 亚洲三级电影在线观看| 国产午夜精品一区二区三区视频| 亚洲精品视频二区| 亚洲高清激情| 欧美在线免费观看视频| 性久久久久久久| 亚洲欧美国产毛片在线| 亚洲午夜高清视频| 一本色道88久久加勒比精品| 亚洲精品国产欧美| 亚洲精品人人| 亚洲精品中文字幕有码专区| 亚洲国产精品小视频| 在线观看欧美日韩国产| 亚洲电影免费观看高清完整版在线| 精品91视频| 激情欧美亚洲| 在线观看国产日韩| 亚洲国产成人在线播放| 亚洲国产精品成人久久综合一区 | 国产精品久久999| 欧美日韩一二区| 欧美日韩综合| 国产精品乱码一区二区三区| 国产精品乱码一区二区三区 | 国产酒店精品激情| 国产女人aaa级久久久级| 国产精品日韩欧美一区二区| 国产精品欧美风情| 国产欧美日韩另类视频免费观看| 国产欧美日韩亚州综合| 国内一区二区三区| 亚洲高清不卡在线| 日韩视频在线观看国产| 亚洲一区二区三区激情| 欧美亚洲日本网站| 亚洲风情亚aⅴ在线发布| 亚洲韩国日本中文字幕| 亚洲精品午夜| 在线中文字幕不卡| 午夜精品成人在线| 久久久久欧美精品| 模特精品在线| 欧美日韩精品免费观看视一区二区 | 欧美在线地址| 久久综合九色欧美综合狠狠| 欧美福利小视频| 欧美成人精品1314www| 欧美日韩一区二区免费在线观看| 国产精品久久久久免费a∨大胸| 国产日韩欧美成人| 亚洲高清免费视频| 亚洲小说欧美另类婷婷| 久久精品一区二区三区不卡| av成人免费在线观看| 欧美一区二区视频在线观看2020 | 国产精品亚洲综合久久| 黄色在线一区| 亚洲黄色一区| 欧美激情欧美激情在线五月| 欧美性感一类影片在线播放| 国产午夜精品全部视频在线播放| 亚洲第一福利视频| 亚洲一区成人| 亚洲激情一区二区| 午夜精品久久| 免费观看久久久4p| 国产精品入口夜色视频大尺度| 在线观看视频日韩| 亚洲一区二区三区精品在线观看| 久久精品毛片| 亚洲欧美不卡| 欧美xart系列在线观看| 国产精品亚洲片夜色在线| 亚洲经典在线看| 午夜在线电影亚洲一区| 亚洲蜜桃精久久久久久久| 亚久久调教视频| 欧美国产在线电影| 国产视频久久久久久久| 亚洲精品一区二区三区婷婷月 | 亚洲欧洲一区二区天堂久久 | 美女日韩在线中文字幕| 国产精品美女久久久久久久| 亚洲国产精品国自产拍av秋霞| 亚洲一区二区三区高清不卡| 亚洲美女少妇无套啪啪呻吟| 久久久精品五月天| 国产精品九九久久久久久久| 亚洲国产精品尤物yw在线观看| 欧美一级片一区| 亚洲一区二区三区四区视频| 免费观看一级特黄欧美大片| 国产欧美三级| 在线视频欧美日韩精品| 亚洲精品自在久久| 久久婷婷国产综合精品青草| 国产精品一区二区久激情瑜伽| 亚洲精品在线免费观看视频| 亚洲高清不卡| 国产精品草草| 一本大道久久a久久综合婷婷 | 在线亚洲精品福利网址导航| 麻豆九一精品爱看视频在线观看免费| 国产精品亚洲第一区在线暖暖韩国| 日韩视频免费看| 亚洲乱码国产乱码精品精98午夜| 久久久国产精品亚洲一区| 国产精品亚洲视频| 亚洲一区二区黄| 亚洲私人黄色宅男| 欧美女主播在线| 亚洲区中文字幕| 亚洲欧洲在线观看| 男女激情视频一区| 黄色资源网久久资源365| 久久精品麻豆| 开心色5月久久精品| 国产综合久久| 久久不射网站| 久久久久久久综合日本| 国产欧美日韩一区二区三区在线| 亚洲影视综合| 小黄鸭精品密入口导航| 国产精品久久久久国产精品日日| 在线午夜精品自拍| 亚洲少妇诱惑| 国产精品国产自产拍高清av| 在线中文字幕日韩| 亚洲中字黄色| 国产精品日韩专区| 午夜日韩福利| 久久精品在线播放| 国产综合色在线| 久久精品一二三| 免费日韩av| 最近中文字幕mv在线一区二区三区四区| 亚洲日本欧美| 欧美日韩精品| 亚洲私人影院| 欧美在线三区| 黄色日韩精品| 亚洲精品欧美| 欧美日韩在线高清| 亚洲丝袜av一区| 久久精品国产免费| 精品成人国产在线观看男人呻吟| 亚洲黄页一区| 欧美日韩一二区| 亚洲综合色婷婷| 久久精品国产亚洲一区二区| 一区二区在线看| 99精品视频免费观看| 国产精品成人一区二区三区吃奶| 亚洲欧美日韩精品久久奇米色影视| 久久久精品tv| 亚洲国产日韩一区二区| 亚洲午夜激情网页| 国产一区 二区 三区一级| 亚洲韩国一区二区三区| 欧美日韩在线一区二区三区| 亚洲欧美在线看| 免费不卡中文字幕视频| 9i看片成人免费高清| 欧美专区在线观看一区| 亚洲国产精品一区二区www| 亚洲免费在线视频| 伊人久久婷婷色综合98网| 一区二区欧美在线| 国产啪精品视频| 日韩亚洲国产欧美| 国产欧美日韩综合一区在线观看| 亚洲精品一区二区在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 久久精品国产99精品国产亚洲性色 | 免费成人网www| 一本到12不卡视频在线dvd| 久久久久久久久综合| 亚洲精品永久免费| 久久精品人人做人人爽| 91久久综合| 久久精品视频亚洲| 亚洲裸体视频| 久久人人看视频| 艳妇臀荡乳欲伦亚洲一区| 欧美成人tv| 国产真实精品久久二三区| 亚洲伦理中文字幕| 国产欧美亚洲一区| 欧美影院久久久| 亚洲第一福利社区| 欧美日韩中文精品| 亚洲国产mv| 国产精品美女久久久| 日韩天堂av|