(,)漢明碼編解碼器的設計_第1頁
(,)漢明碼編解碼器的設計_第2頁
(,)漢明碼編解碼器的設計_第3頁
(,)漢明碼編解碼器的設計_第4頁
(,)漢明碼編解碼器的設計_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

/15(2.2.3)1011001H?AT=OT,可以用來作為判斷接收碼字A是否出錯的依據(jù)。Ir]H=1101010=[P2.3生成矩陣G把監(jiān)督方程補充完整并改寫為矩陣形式TOC\o"1-5"\h\za61000a50100a40010a6(2.3.1)2.3.2)a3=0001?a5(2.3.1)2.3.2)a21110a4a11101a3a01011A=[a6a5a4a3]?G其中10001110100110G=0010101(2.3.3)G稱為生成矩陣,由G和信息組就可以產(chǎn)生全部碼字。生成矩陣也可以分成2部分,即G=[IkQ](2.3.4)其中111Q=110=PT(2.3.5)1010112.4伴隨式(校正子)S設發(fā)送碼組A二[an—l,an—2,…,al,aO],在傳輸過程中可能發(fā)生誤碼。接收碼組B=[bn—l,bn—2,…,bl,bO],收發(fā)碼組之差定義為錯誤圖樣E,即E=B-A(2.4.1)令S=BHT,稱為伴隨式或校正子。S=BHT=(A+E)HT=EHT(2.4.2)上述(7,4)漢明碼的伴隨式與錯誤圖樣的對應關系如表2-2所示。表2-2(7,4)漢明碼S與E的對應關系錯ES序誤號碼位e6e5e4e3e2ele0s2s1s00/00000000001b000000010012bl00000100103b200001001004b300010000115b400100001016b501000001107b61000000111第3章(7,4)漢明碼編解碼器的設計(7,4)漢明碼的編碼思路及程序設計(7,4)漢明碼的編碼思路(7,4)漢明碼的編碼就是將輸入的四位信息碼編成七位的漢明碼,即加入三位監(jiān)督位。根據(jù)式(2.3.2)A=[a6a5a4a3]?G可知,信息碼與生成矩陣G的乘積就是編好以后的(7,4)漢明碼,而生成矩陣G又是已知的,由式(2.3.3)得10001110100110G=0010101(3.1.1)0001011所以,可以得出如下方程組a6=a6a5=a5a4=a4a3a3(3.1.2)a2=a6+a5+a4a1=a6+a5+a3a0=a6+a4+a3根據(jù)式(3.1.2)就可以編出編碼程序了。(7,4)漢明碼的編碼程序設計根據(jù)(7,4)漢明碼的編碼原理,首先畫出程序設計的流程圖圖3.1編碼流程圖輸入信息碼a3a2ala0,輸出億4)漢明碼b6b5b4b3b2blb0。首先,輸入信息碼a3a2ala0,即使用以下語句:port(a:instd_logic_vector(3downto0);然后,根據(jù)式(3.1.2),就可以得到監(jiān)督位與信息碼之間的對應關系,使用異或運算,即:TOC\o"1-5"\h\zb(2)<=a(3)xora(2)xora(1);b(1)<=a(3)xora(2)xora(0);b(0)<=a(3)xora(1)xora(0);最后,將算好的監(jiān)督位與原來輸入的信息碼一起輸出,這樣,編碼程序就算完成了。(7,4)漢明碼的譯碼思路及程序設計(7,4)漢明碼的譯碼思路

(7,4)漢明碼的譯碼就是將輸入的七位漢明碼翻譯成四位的信息碼,并且糾正其中可能出現(xiàn)

的一個錯誤。

[IkQ],可以得到矩陣Q的值由于生成矩陣G[IkQ],可以得到矩陣Q的值PT(3.2.1)101011那么1110P1101(3.2.2)1011而監(jiān)督矩陣H與PT又存在-定的關系,即H=[PIr](3.2.3)那么就可以算出監(jiān)督矩陣H的值,即1110100H=1101010(3.2.4)1011001所以111110101HT=011(3.2.5)100010001根據(jù)式(2.4.2)S=BHT=(A.+E)HT=EHT可以看出校正子S:與錯誤圖樣E之間有確定的線性變換關系。而E=[en-l,en-2,…,el,eO]這樣就可以算出校正子S與(7,4)漢

明碼各位之間的關系,即S2=a2+a6+a5+a4

S1=a1+a6+a5+a3(3.2.6)S0=a0+a6+a4+a3對照表2-2,就可以確定每一位出錯時,對應的校正子s2sls0的值。這樣,譯碼問題就迎刃而解了。

(7,4)漢明碼的譯碼程序設計根據(jù)(7,4)漢明碼的譯碼原理,首先畫出程序設計的流程圖開始結(jié)束4校正子S2S1SQ為0開始結(jié)束4校正子S2S1SQ為0否"根瑕逋入的碼,算出校正子:S2S1SQ+J根據(jù)S2S1S0,糾正岀錯的位4輸出4位信息碼屮輸入7位碼4圖3.2.1譯碼流程圖首先,輸入7位漢明碼a6a5a4a3a2ala0,用以下語句來實現(xiàn):port(a:instd_logic_vector(6downto0);然后,根據(jù)這7位碼a6a5a4a3a2ala0,計算校正子s2sls0的值,根據(jù)式(3.2.6)可知校正子S與(7,4)漢明碼各位之間的關系,即:ss(2):=a(6)xora(5)xora(4)xora(2)ss(1):=a(6)xora(5)xora(3)xora(1)ss(0):=a(6)xora(4)xora(3)xora(0)

第三,要判定校正子與0的關系,使用if語句,若等于0,則表示沒有錯誤;若不為0,

則表示其中有一位出錯。根據(jù)表2-2,可以得到校正子S與錯誤圖樣E之間的關系,才用

case語句,編寫程序如下:when"001"=>bb(0):=notbb(0);c<="000";when"010"=>bb(1):=notbb(1);c<="001";when"100"=>bb(2):=notbb(2);c<="010";when"011"=>bb(3):=notbb(3);c<="011";when"101"=>bb(4):=notbb(4);c<="100";when"110"=>bb(5):=notbb(5);c<="101";

when"111"=>bb(6):=notbb(6);c<="110";上述程序中,bb是變量,存放的是輸入7位漢明碼a6a5a4a3a2ala0,當S="001",時,表示a0出錯,則只需將這一位的值取反,然后再送給輸出。al、a2、a3、

a4、a5、a6出錯的原理也是一樣的。最后,將沒有錯誤的(7,4)漢明碼或已經(jīng)糾正1個錯誤的(7,4)漢明碼輸出,這樣譯碼程序

就完成了。為了方便閱讀波形,加入輸出了校正子S和錯誤位數(shù)C。若第0位(a0)出錯,貝憶輸出0,

依次類推;若無錯,則輸出7。第4章編譯程序的調(diào)試與分析4.1(7,4)漢明碼的編碼程序調(diào)試與分析(7,4)漢明碼的編碼程序的編譯

按照上述編碼程序的編寫思路,編寫好程序,點擊,進行編譯,出現(xiàn)一些錯誤,如下:

Error1:VHDLerroratym.vhd(3):object"std_logic_vector"isusedbutnotdeclaredError2:VHDLerroratbm.vhd(7):entity"bm"isusedbutnotdeclaredError1表明在使用"std_logic_vector"時,沒有打開可以使用這個函數(shù)的庫,應該在程序

的最前面加上如下語句:libraryieee;useieee.std_logic_1164.all;Error2表明程序中的文件名與保存時的文件名不一致,兩者應該相同。

排除上述錯誤后,就可以進行波形仿真了。(7,4)漢明碼的編碼程序的仿真分析建好波形文件,設置好輸入信息碼a3a2a1a0的初始值,點擊,進行波形仿真,出現(xiàn)如下波

形:□G9MMIOL]r;□G9MMIOL]r;Li|i)!JIXflIi7TLcrtO]uLLOI~XO]]J.)]i~):'u[i^iy>IQUIIDOXfft'sbj)LLO&L叮冋n顧tiCWM11%宜冋00閃XTO而戈iHM旳諂工1L呻坤Q丈TTTTTm閩麗圖4.1(7,4)漢明碼的編碼仿真波形從波形中,可以看出輸入信息0000?1111,對應的編碼情況。對照表2-1,可以確定(7,4)漢明碼的編碼程序完全正確,編碼成功。(7,4)漢明碼的編譯碼程序分析及調(diào)試(7,4)漢明碼的譯碼程序的編譯

按照上述譯碼程序的編寫思路,編寫好程序,點擊,進行編譯,出現(xiàn)一些錯誤,如下:

Error1:VHDLsyntaxerroratym.vhd(12)neartext"variable";expecting"end",

or"(",oranidentifier("variable"isareservedkeyword),orasequential

statement,Error2:VHDLCaseStatementerroratym.vhd(19):CaseStatementchoicesmustcover

allpossiblevaluesofexpressionError1表明"variable"變量定義的位置有誤。變量的定義一定要放在process(a)之后,

begin之前。Error2表明case語句使用有誤。使用case語句時,必須列出它的所有可能值,或者列出

部分值,然后使用whenothers=>語句即可。

改正上述錯誤,就可以對其進行波形仿真了。(7,4)漢明碼的譯碼程序的仿真分析

建好波形文件,設置好輸入(7,4)漢明碼a6a5a4a3a2a1a0的初始值,點擊,進行波形仿真,

出現(xiàn)如下波形:圖4.2(7,4)漢明碼的譯碼仿真波形1由于設置的分別是aO、al、a2、a3、a4、a5、a6出錯,從波形上就可以清楚的看出該程序

存在一定的問題,雖然沒有語法錯誤,但存在著邏輯錯誤。由波形可知:aO出錯時的校正子S為100,al出錯時的校正子S為010,a2出錯時的校正子S為001,a3出錯時的校正子S為110,a4出錯時的校正子S為101,a5出錯時的校正子S為011,a6出錯時的校正子S為111。而根據(jù)表2-2可知:a0出錯時的校正子S為100,al出錯時的校正子S為010,a2出錯時的校正子S為100,a3出錯時的校正子S為011,a4出錯時的校正子S為101,a5出錯時的校正子S為110,a6出錯時的校正子S為111。由此可以推斷是校正子S的高低位搞錯了,仔細查看程序,發(fā)現(xiàn)的確是這個問題,改正后,

編譯仿真的以下波形:C6UXX1JXOOCHOOiXXXQMdiLlOXdoooismuIuiin6lO3£:0x■JX■J■Xa■廠Q1.:010100OH11OL.J—LLOLWALlOlLaJ£■DOOILOLxIUKIJ]XObMOOO¥L0O1JMJa*DIMY-C?i]X1WT-"1I5X77.X7Jtyfl1-:!Xno¥HEYmor血iY1圖4.3(7,4)漢明碼的譯碼仿真波形2

對照表2-2,仔細觀察波形,可以確定波形沒有問題,這樣,(7,4)漢明碼的譯碼程序就完

全正確了,譯碼成功。參考文獻辛春艷.VHDL硬件描述語言[M].北京:國防工業(yè)出版社,2002.侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設計[M].西安:西安電子科技大學出版社,2002。金西.VHDL與復雜數(shù)字系統(tǒng)設計[M].西安:西安電子科技大學出版社,2003.

體會與建議為期一周的課程設計就這么結(jié)束了,忙碌而又辛勞,但是卻讓我學到了許多東西,為不久

的將來走上工作崗位打下了一定的基礎。一開始老師給我們布置了題目——(7,4)漢明碼的編解碼器的設計。拿到題目,我們非常著

急,以為這個題目很難,象一只沒頭的蒼蠅,我們開始亂鉆,最后,一頭扎進了圖書館,

借了好幾本書。來仔細的翻看了通信原理的書和筆記,對(7,4)漢明碼的一些基本概念有了

進一步的會議。突然發(fā)現(xiàn)這個課題其實一點也不難,一點技術含量都沒有,似乎一個人也

可以完成的。仔細閱讀了(7,4)漢明碼的原理以后,我就開始構(gòu)思程序的編寫,準備畫流程

圖。其實編譯碼的思路非常清晰,流程圖很快就畫好了。接下來就是程序的編寫,由于好

久沒有使用VHDL語言,有好多語句都遺忘了,于是翻出以前EDA的書和筆記,認真的看了

幾遍,對一些語句的用法和使用時的注意事項有了一個大概的了解。然后就開始編程序。

編碼程序比較簡單,只有十幾行,僅半個小時,編碼程序就編好了,并且運行正確了,是

心里就踏實了很多。接下來的譯碼程序也比較簡單,半小時就編好了程序,但是卻遇到了

一個問題——編譯沒有錯誤,但是仿真波形卻不對,很郁悶,很疑惑,找了半天也沒有發(fā)

現(xiàn)問題。后來仔細的觀察了仿真波形,才發(fā)現(xiàn)問題所在——校正子的高低位弄錯了。一周的課程設計結(jié)束了,讓我收益頗豐。通過這次的課程設計,我對VHDL語言有了新的認識,掌握了用VHDL語言編程的方法,并且能夠熟練的運用它去編寫各種各樣的程序,它為以后能夠從事這方面的工作提供了一定的基礎。在掌握VHDL語言的基礎上,進一步理解了漢明碼的編解碼原理以及一些重要的公式。最后,我想提一點建議,希望老師以后可以盡可能的讓我們一人一組。題目雖然有些難度

但是可以更好的鍛煉自己,充分發(fā)揮個人潛能,同時也杜絕了一些同學光看別人做,等著

別人的成果,到時再熟悉程序就可以蒙混過關的現(xiàn)象。附錄漢明碼的編碼程序:libraryieee;useieee.std_logic_1164.all;entitybmisport(a:instd_logic_vector(3downto0);b°utstd_logic_vector(6downto0));end;architectureoneofbmisbeginb(6)<=a(3);b(5)<=a(2);b(4)<=a(1);b(3)<=a(0);b(2)<=a(3)xora(2)xora(1)b(1)<=a(3)xora(2)xora(0)b(0)<=a(3)xora(1)xora(0)end;漢明碼的譯碼程序:

libraryieee;useieee.std_logic_1164.all;

entityymisport(a:instd_logic_vector(6downto0);舒1sutstd_logic_vector(2downto0);£IbJ'utstd_logic_vector(3downto0);cuts

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論