摘要
摘?要:文章提出了一種基于VHDL語(yǔ)言的串行、并行轉(zhuǎn)換及漢明碼的編碼和譯碼的實(shí)現(xiàn)方法秸歧。在介紹漢明碼編碼和譯碼原理的基礎(chǔ)上,給出了基于VHDL實(shí)現(xiàn)的源程序,通過(guò)Quartus Ⅱ軟件進(jìn)行設(shè)計(jì)并利用FPGA開(kāi)發(fā)板進(jìn)行驗(yàn)證。
關(guān)鍵詞:VHDL 粘姜;漢明碼形入;串/并轉(zhuǎn)換
Absrtact: This paper presents a method of serial and parallel conversion based on VHDL and the implementation of Hamming code coding and decoding. Based on the introduction of the coding and decoding principle of Hamming code, the source program based on VHDL is given, which is designed by Quartus II software and verified by FPGA development board.
Keywords: VHDL; Hamming code; Serial; Parallel?
1.?目錄
2. 正文
2.1 系統(tǒng)設(shè)計(jì)
2.1.1 設(shè)計(jì)要求
已知(7,4)漢明碼的編碼和譯碼電路原理圖如下,完成相應(yīng)編碼及譯碼模塊的開(kāi)發(fā)藕赞,實(shí)現(xiàn)串行比特流的編碼和譯碼(輸入和輸出都是串行比特流)成肘。
【圖片】----------------------------------
2.1.2 系統(tǒng)設(shè)計(jì)方案
工作原理
漢明碼是在原編碼的基礎(chǔ)上附加一部分碼字,使其滿足糾錯(cuò)碼的條件。它屬于線性分組碼, 由于漢明碼的抗干擾能力較強(qiáng) ,至今仍是應(yīng)用比較廣泛的一類碼已日。
在工程設(shè)計(jì)中常常涉及到信號(hào)傳輸鹦倚,主流的方法有串行傳輸方法和并行傳輸方法,串行方法只有一根線洒闸,干擾少但傳輸速度慢。并行方案大大提升了傳輸速度均芽,但傳輸距離短丘逸,易受干擾。故在實(shí)際的工程設(shè)計(jì)中常常要進(jìn)行串掀宋、并轉(zhuǎn)換深纲。
本系統(tǒng)通過(guò)漢明碼的編碼與譯碼以及引入串并轉(zhuǎn)換仲锄,展示了一種較為有效的自動(dòng)糾錯(cuò)電路設(shè)計(jì)方案。
總體方案的論證與比較
有兩種系統(tǒng)總體方案:
1.?引入時(shí)鐘脈沖信號(hào)湃鹊,數(shù)據(jù)自動(dòng)輸入儒喊,同時(shí)系統(tǒng)進(jìn)行相應(yīng)的編碼\解碼操作;
2.?手動(dòng)輸入數(shù)據(jù)涛舍,每傳送4位數(shù)據(jù)系統(tǒng)進(jìn)行一次編碼\解碼操作澄惊;
方案1增加了模塊數(shù)量,但進(jìn)行的操作數(shù)更少富雅,系統(tǒng)穩(wěn)定性更高掸驱;
方案2設(shè)計(jì)簡(jiǎn)單,但增加了操作的復(fù)雜程度没佑;
綜合考慮設(shè)計(jì)難度和操作的直觀性毕贼,選擇方案1。
各功能塊的劃分與組成
系統(tǒng)設(shè)計(jì)流程圖如下圖所示蛤奢,串行數(shù)據(jù)進(jìn)入串行轉(zhuǎn)并行模塊鬼癣,被轉(zhuǎn)換為4位并行數(shù)據(jù),送入漢明碼編碼器啤贩。數(shù)據(jù)在漢明碼編碼器中生成7位編碼數(shù)據(jù)待秃,通過(guò)信道模塊傳輸至漢明碼解碼模塊。解碼模塊將7位數(shù)據(jù)解碼糾錯(cuò)后輸出4位解碼數(shù)據(jù)痹屹。4位解碼數(shù)據(jù)經(jīng)由并行轉(zhuǎn)串行模塊后章郁,轉(zhuǎn)換為串行數(shù)據(jù)。
漢明碼編碼器輸出4路未調(diào)制數(shù)據(jù)志衍,信道模塊輸出7路編碼信號(hào)暖庄,漢明碼解碼模塊輸出1路糾錯(cuò)指示標(biāo)志,并行轉(zhuǎn)串行模塊輸出1路輸出信號(hào)
【圖片】---------------------------------------
2.2 單元電路設(shè)計(jì)
2.2.1?時(shí)鐘脈沖模塊(1Hz)
本模塊對(duì)FPGA芯片的內(nèi)部時(shí)鐘源進(jìn)行分頻楼肪,將50MHz時(shí)鐘脈沖轉(zhuǎn)換為50%占空比的1Hz脈沖培廓。
其本質(zhì)是一個(gè)計(jì)數(shù)器,每當(dāng)計(jì)數(shù)器計(jì)數(shù)到25M時(shí)將輸出信號(hào)進(jìn)行翻轉(zhuǎn)春叫,從而輸出50%占空比的1Hz脈沖肩钠。
2.2.2 串行轉(zhuǎn)并行模塊
本模塊將串行數(shù)據(jù)轉(zhuǎn)換為4位二進(jìn)制并行數(shù)據(jù),每送入4位串行數(shù)據(jù)刷新輸出的4位并行數(shù)據(jù)暂殖。
其本質(zhì)是一個(gè)4位移位寄存器价匠,每送入一個(gè)并行數(shù)據(jù),模塊就將原來(lái)的數(shù)據(jù)進(jìn)行左移央星,丟棄最高位霞怀,將新數(shù)據(jù)寫(xiě)入最低位惫东。每當(dāng)寄存器內(nèi)被送入4位新數(shù)據(jù)莉给,模塊將寄存器內(nèi)的數(shù)據(jù)讀取并行輸出毙石。
模塊結(jié)構(gòu)圖如圖所示
【圖片】
2.2.3?漢明碼編碼模塊
本模塊將4位并行數(shù)據(jù)進(jìn)行漢明碼編碼,輸出7位并行編碼數(shù)據(jù)颓遏。
漢明碼編碼原理:XXXX
2.2.4?信道模塊
本模塊模擬7位并行數(shù)據(jù)信道徐矩,同時(shí)在每一路信道添加可調(diào)非門,模擬傳輸數(shù)據(jù)出錯(cuò)的情況叁幢。
模塊結(jié)構(gòu)圖如圖所示
【圖片】
2.2.5?漢明碼譯碼模塊
本模塊將7位并行數(shù)據(jù)進(jìn)行漢明碼譯碼滤灯,輸出4位并行譯碼數(shù)據(jù)。
漢明碼譯碼原理:本模塊將4位并行數(shù)據(jù)進(jìn)行漢明碼編碼曼玩,輸出7位并行編碼數(shù)據(jù)鳞骤。
漢明碼編碼原理:
在(n, k)漢明碼中, (n-k)個(gè)附加的監(jiān)督碼元是由信息碼元的線性運(yùn)算產(chǎn)生的。碼長(zhǎng)為n 黍判,信息元長(zhǎng)度為k , 2^k個(gè)碼字構(gòu)成n維線性空間中的一個(gè)k維子空間豫尽,編碼的實(shí)質(zhì)就是要在n維空間中, 找出一組長(zhǎng)為n 的k 個(gè)線性無(wú)關(guān)的向量g0 g1 gk - 1 , 使得每個(gè)碼字C都可以表示為k個(gè)向量的線性組合 , 即
C=[C_(n-1) C_(n-2)?C_0 ]=C_(k-1 ) g_0+C_(k-2 ) g_1+?+C_(0 ) g_(k-1)? ? (1)
其中, ci ?{ 0 , 1} , i = 0 , 1 , ? , k - 1 顷帖。將上式寫(xiě)成矩陣形式得
C=[■(■(C_(k-1 )&C_(k-2 ) )&?&C_(0 ) )][■(■(g_0@g_1 )@?@g_(k-1) )]=[■(■(C_(k-1 )&C_(k-2 ) )&C_(k-2 )&C_(0 ) )]? G? (2)
由此[■(■(C_(k-1 )&C_(k-2 ) )&?&C_(0 ) )]是帶編碼信息的信息組, G是一個(gè)n×k 階矩陣,稱為(n, k)漢明碼的生成矩陣美旧。
本系統(tǒng)中,采用7,4漢明碼編碼方式贬墩,由設(shè)計(jì)要求得生成矩陣
G=[■(1&1&■(1&0)@0&1&■(1&1)@1&1&■(0&1))]
當(dāng)G確定以后榴嗅,編碼的問(wèn)題也就解決了。
根據(jù)監(jiān)督碼元是有信息碼元的線性運(yùn)算產(chǎn)生的關(guān)系可知陶舞,監(jiān)督碼(a0,a1,a2)滿足以下關(guān)系式:
{█(a_2=a_6 ?a_5 ?a_4@a_1=a_5 ?a_4 ?a_3@a_0=a_6 ?a_5 ?a_3 )┤
即可算出三位監(jiān)督位嗽测,再與信息位(a6,a5,a4,a3)結(jié)合,可得到(7吊说,4)漢明碼论咏。
2.2.6?并行轉(zhuǎn)串行模塊
本模塊將4位二進(jìn)制并行數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù)依次輸出
其本質(zhì)是一個(gè)4位移位讀取寄存器,每輸入一個(gè)時(shí)鐘脈沖信號(hào)颁井,模塊就將寄存器內(nèi)數(shù)據(jù)讀取標(biāo)志位左移并讀取對(duì)應(yīng)位置寄存器內(nèi)的數(shù)據(jù)厅贪,讀取標(biāo)志位從D0開(kāi)始,讀取4位后歸零雅宾。
模塊結(jié)構(gòu)圖如圖所示
【圖片】
2.2.7? ? 顯示模塊
本模塊將漢明碼編碼器輸出的4路未調(diào)制數(shù)據(jù)信號(hào)养涮,
信道模塊輸出的7路編碼信號(hào),
漢明碼解碼模塊輸出的1路糾錯(cuò)指示標(biāo)志信號(hào)眉抬,
并行轉(zhuǎn)串行模塊輸出的1路輸出信號(hào)顯示出來(lái)贯吓。
2.3 軟件設(shè)計(jì)
2.3.1 設(shè)計(jì)平臺(tái)、開(kāi)發(fā)工具和實(shí)現(xiàn)方法
本系統(tǒng)利用EDA技術(shù)在Quartus II軟件下用VHDL語(yǔ)言實(shí)現(xiàn)(7蜀变,4)漢明碼的編譯碼及串/并行轉(zhuǎn)換設(shè)計(jì)悄谐,并在基于Cyclone II EP2C5T144I8芯片的FPGA實(shí)驗(yàn)板上進(jìn)行演示。
2.3.2?頂層設(shè)計(jì)圖
本系統(tǒng)的頂層設(shè)計(jì)圖如圖所示
【圖片】
2.3.3 程序清單
2.3.3.1?時(shí)鐘脈沖模塊(1Hz)
2.3.3.2?串行轉(zhuǎn)并行模塊
2.3.3.3?漢明碼編碼模塊
2.3.3.4?信道模塊
2.3.3.5?漢明碼譯碼模塊
2.3.3.6?并行轉(zhuǎn)串行模塊
2.3.3.7?四位并行信號(hào)轉(zhuǎn)四路顯示信號(hào)模塊
2.3.3.8?數(shù)碼管譯碼模塊
2.4?系統(tǒng)測(cè)試
2.4.1 性能指標(biāo)
實(shí)現(xiàn)串行库北,并行數(shù)據(jù)轉(zhuǎn)換
實(shí)現(xiàn)數(shù)據(jù)檢錯(cuò)與糾錯(cuò)爬舰,并指出錯(cuò)誤位置
2.4.2 測(cè)試方法们陆、步驟
在數(shù)據(jù)模塊中輸入想要輸入的數(shù)據(jù),調(diào)整信道模塊連接方法(將任意一路非門接入信道)情屹;
燒錄并接通電源坪仇,系統(tǒng)將在數(shù)碼管前四位顯示輸入的并行信號(hào),在第五位顯示輸出的一位并行信號(hào)垃你,在第八位顯示誤碼的位置椅文,在LED燈1~7位顯示漢明碼編碼后的七位數(shù)據(jù);
按下按鍵K1惜颇,系統(tǒng)將復(fù)位皆刺,數(shù)據(jù)重新輸入,重新顯示系統(tǒng)輸出及各項(xiàng)信息凌摄。
2.4.3 測(cè)試數(shù)據(jù)
假設(shè)輸入數(shù)據(jù)為00001111循環(huán)芹橡,信道第4位接非門,則數(shù)碼管前四位將循環(huán)顯示0000=>1111=>0000=>...
第五位依次循環(huán)顯示0,0,0,0,1,1,1,1望伦,...
最后一位顯示3(信道第4位)林说。
2.5?結(jié)論
本次設(shè)計(jì)實(shí)現(xiàn)了串行數(shù)據(jù)和并行數(shù)據(jù)間的相互轉(zhuǎn)換,用漢明碼編碼/譯碼方法實(shí)現(xiàn)數(shù)據(jù)傳輸中的自動(dòng)檢錯(cuò)與糾錯(cuò)屯伞,使用頂層設(shè)計(jì)的方法進(jìn)行了EDA程序設(shè)計(jì)與FPGA開(kāi)發(fā)腿箩,完成了全部設(shè)計(jì)要求和擴(kuò)展要求。
3.?參考文獻(xiàn)
[1] 樊昌信 曹麗娜.通信原理(第6版)[M].國(guó)防工業(yè)出版社,2006.
[2] 劉愛(ài)蓮.糾錯(cuò)編碼原理及MATLAB實(shí)現(xiàn)[M].清華大學(xué)出版社:北京,2013.53-55.
[3 ] 金西. VHDL與復(fù)雜數(shù)字系統(tǒng)設(shè)計(jì)[M] .西安:西安電子科技大學(xué)出版社,2003. 81-115.
[4] 潘松 黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學(xué)出版社:北京,2005