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

下載本文檔

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

文檔簡介

1、通信電子線路實驗與設計報告JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY 通信原理課程設計報告 課程設計題目:基于Quartus II的(7,4)漢明碼的編解碼器的設計 班 級: 學 號: 姓 名: 指導教師姓名: 錢志文 任艷玲 設計地點: 目錄序言 2第一章 軟件簡介 3第二章 工作原理 4第三章 基于Quartus II的(7,4)漢明碼的編解碼器的設計的仿真實現(xiàn) 3.1仿真方案原理 53.2仿真的功能程序 63.3仿真的結果與分析 7參考文件 10體會與建議 10附錄 10序言 漢明(Hamming)碼是一種一種能夠糾正一位錯碼或檢測兩位錯碼的一種效

2、率較高的線性分組碼。本次課程設計的任務就是利用EDA技術在Quartus II軟件下用VHDL語言實現(xiàn)(7,4)漢明碼的編譯碼的設計和仿真。從而進一步加深對漢明碼編譯碼原理的理解。 EDA(Electronic Design Automation技術是隨著集成電路和計算機技術飛速發(fā)展應運而生的一種高級、快速、有效的電子設計電動化工具。目前,VHDL語言已經(jīng)成為EDA的關鍵技術之一,VHDL是一種全方位的硬件描述語言,具有極強的描述能力,能支持系統(tǒng)行為級、寄存器傳輸級和邏輯門級三個不同層次的設計,支持結構、數(shù)據(jù)流、行為三種描述形式的混合描述,覆蓋面廣,抽象能力強,因此在實際應用中越來越廣泛。 V

3、HDL語言具有功能強大的語言結構,可用明確的代碼描述復雜的控制邏輯設計,并且具有多層次的設計描述功能,支持設計庫和可重復使用的原件的生成,近幾十年來,EDA技術獲得了飛速的發(fā)展,它以計算機為平臺,根據(jù)硬件描述語言VHDL,自動地完成邏輯編譯,化簡為割、綜合及優(yōu)化,布局布線,仿真直至對特定目標芯片的適配編譯,邏輯映射和編程下載等工作,以自頂向下的設計方法,使硬件設計軟件化,拜托了傳統(tǒng)手工設計的眾多缺點,隨著EDA技術的深入發(fā)展,基于硬件描述語言的方法將由取代傳統(tǒng)手工設計方法的趨勢。一、Quartus II軟件簡介 Quartus是Altera公司推出的CPLD/FPGA的開發(fā)工具,Quartus

4、提供了完全集成且與電路結構無關的開發(fā)環(huán)境,具有數(shù)字邏輯設計的全部特性。     Quartus 設計軟件提供完整的多平臺設計環(huán)境,可以很輕松地滿足特定設計的需要。它是可編程片上系統(tǒng)(SOPC)設計的綜合性環(huán)境,擁有FPGA 和CPLD設計的所有階段的解決方案。與其它EDA軟件相比較Quartus軟件的特點主要包括: 1、 可利用原理圖、結構框圖、Verilog HDL、AHDL和VHDL完成電路描述,并將其保存為設計實體文件。 2、 芯片(電路)平面布局連線編輯。 3、LogicLock增量設計方法,用戶可建立并優(yōu)化系統(tǒng),然后添加對原始系統(tǒng)的性

5、能影響較小或無影響的后續(xù)模塊。 4、功能強大的邏輯綜合工具。 5、完備的電路功能仿真與時序邏輯分析。 6、定時/時序分析與關鍵路徑延時分析。 7、可使用SignalTap 邏輯分析工具進行嵌入式的邏輯分析。 8、支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來生成編程文件。 9、使用組合編譯方式可一次完成整體設計流程。 10、自動定位編譯錯誤。 11、高效的期間編程與驗證工具。 12、可讀入標準的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。 13、能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。2、 (7,4)漢明碼的編解碼器的工作原理2.1漢明碼的構造原理

6、線性分組碼是一類重要的糾錯碼,應用很廣泛。在(n,k)分組碼中,若監(jiān)督碼元是按線性關系模2相加而得到的,則稱其為線性分組碼。 現(xiàn)在以(7,4)分組碼為例來說明線性分組碼的特點。設氣碼字為A=【a6,a5,a4,a3,a2,a1,a0】,前4位是信息元,后3位是監(jiān)督元,可用下列線性方程組來描述該分組碼產(chǎn)生監(jiān)督元: 顯然,這3個方程式線性無關的。代入上述公式可得(7,4)碼的全部碼組,如表1所示。信息位a6a5a4a3監(jiān)督位a2a1a0信息位a6a5a4a3監(jiān)督位a2a1a000000001000111000101110011000010101101001000111101011001010011

7、01100001010110111010100110011111010001110001111111 表1 (7,4)漢明碼的全部碼組由上表可知:(7,4)漢明碼的最小碼距d0=3,它能糾正1位錯或檢2位錯。由此可見,漢明碼是能夠糾正單個錯誤的線性分組碼,其特點是:最小碼距d0=3,碼長n與監(jiān)督位r滿足關系式:2r-1>=n,說明上述所說的(7,4)線性分組碼就是漢明碼。同時,由于碼率k/n=(n-r)/n=1-r/n,故當n很大和r很小時,碼率接近1,可見:漢明碼是一種高效碼。2.2校正子(伴隨式)S校正子與錯碼位置的關系,如表2所示S1S2S3錯碼位置S1S2S3錯碼位置001a01

8、01a4010a1110a5100a2111a6011a3000無錯 表2 校正子與錯碼位置由上表可知:當S=001時,則出錯在0位;當S=010時,則出錯在1位;當S=100時,則出錯在2位;當S=011時,則出錯在3位;當S=101時,則出錯在4位;當S=110時,則出錯在5位;當S=111時,則出錯在6位;當S=000時,則無錯。2.3(7,4)漢明碼的編解碼器的工作原理編碼:將輸入的4位信息碼編成7位漢明碼,即加入3位監(jiān)督位。解碼:輸入7位漢明碼翻譯成4位信息碼,并且能糾正其中可能出現(xiàn)的一個錯誤。3、 基于Quartus II的(7,4)漢明碼的編解碼器的設計的仿真實現(xiàn)3.1 仿真方案

9、原理編碼器的設計流程圖如下: 開始 輸入信息碼a3a2a1a0 編出監(jiān)督位b2b1b0 輸出(7,4)漢明碼 b6b5b4b3b2b1b0 結束(7,4)漢明碼的編碼就是將輸入的四位信息碼編成七位的漢明碼,即加入三位監(jiān)督位。 根據(jù)式A = a6 a5 a4 a3 ·G可知,信息碼與生成矩陣G的乘積就是編好以后 的(7,4)漢明碼,而生成矩陣G又是已知的,可以得出如下方程組 a6=a6 a5=a5 a4=a4 a3=a3 a2=a6+a5+a4 a1=a6+a5+a3 a0=a6+a4+a3 (此處+即為異或), 就可以編出編碼程序了。解碼器的設計流程圖如下: 開始 譯碼輸入7位碼 算

10、出校正子s2s1s0校正子s2s1s0為0?YN 糾正出錯的位 輸出4位信息碼 結束解碼器算出校正子S與(7,4)漢明碼之間的關系:S2=a6+a5+a4+a2;S1=a6+a5+a3+a1;S0=a6+a4+a3+a0;(此處+為異或)3.2仿真的功能程序 編碼器的主要功能程序介紹:輸入信息碼a3a2a1a0,輸出(7,4)漢明碼b6b5b4b3b2b1b0。 首先,輸入信息碼a3a2a1a0,即使用以下語句:port(a:in std_logic_vector(3 downto 0);監(jiān)督位與信息碼之間的對應關系,使用異或運算,即:

11、0;b(2)<=a(3) xor a(2) xor a(1); b(1)<=a(3) xor a(2) xor a(0); b(0)<=a(3) xor a(1) xor a(0); 最后,將算好的監(jiān)督位與原來輸入的信息碼一起輸出,這樣,編碼程序就算完成了。解碼器的主要功能程序介紹:首先,輸入7位漢明碼a6a5a4a3a2a1a0,用以下語句來實現(xiàn): port(a:in std_logic_vector(6 downto 0); 然后,根

12、據(jù)這7位碼a6a5a4a3a2a1a0,計算校正子s2s1s0的值,校正子S與(7,4)漢明碼各位之間的關系,即ss(2):=a(6) xor a(5) xor a(4) xor a(2); ss(1):=a(6) xor a(5) xor a(3) xor a(1); ss(0):=a(6) xor a(4) xor a(3) xor a(0); 第三,要判定校正子與0的關系,使用if語句,若等于0,則表示沒有錯誤;若不為0,則表示其中有一位出錯??梢缘玫叫U覵與錯碼位置之間的關系,才用 case語句,編寫程序如下:when "001" =>bb(0):= not

13、 bb(0);c<="000" when "010" =>bb(1):= not bb(1);c<="001"when "100" =>bb(2):=not bb(2);c<="010" when "011" =>bb(3):=not bb(3);c<="011" when "101" =>bb(4):=not bb(4);c<="100"when "1

14、10" =>bb(5):=not bb(5);c<="101" when "111" =>bb(6):=not bb(6);c<="110" 上述程序中,bb是變量,存放的是輸入7位漢明碼a6a5a4a3a2a1a0,當S="001",時,表示a0出錯,則只需將這一位的值取反,然后再送給輸出。a1、a2、a3、 a4、a5、a6出錯的原理也是一樣的。最后,將沒有錯誤的(7,4)漢明碼或已經(jīng)糾正1個錯誤的(7,4)漢明碼輸出,這樣譯碼程序就完成了。為了方便閱讀波形,加入輸出了校正子S

15、和錯誤位數(shù)C。若第0位(a0)出錯,則C輸出0, 依次類推;若無錯,則輸出7。3.3 仿真的結果與分析編碼器:建好波形文件,設置好輸入信息碼a3a2a1a0的初始值,點擊,進行波形仿真,出現(xiàn)如下波形:圖3-1 編碼器的仿真波形圖解碼器:(1)、如果按照表1中的(7,4)漢明碼的全部碼組來設計輸出,此時全是正確的碼組,得出下面的仿真波形圖:圖3-2 正確的解碼器的仿真波形圖(2) 、隨便改一個錯誤的碼,比如將正確的0000000改成0100000,此時得出以下的仿真波形圖:圖3-3 隨便改一個錯誤的碼的仿真波形圖由上圖可知,當輸出為0100000時,根據(jù)校正子S與錯碼位置的關系表2可得,a5出錯

16、,此時校正子為110。(3)、將a6低電平設置成高電平,來檢驗校正子的錯誤碼,其仿真波形圖如下:圖3-4 糾正一位錯誤碼的仿真波形圖由上圖可知,a為輸出7位漢明碼,與表1不同的是,a6全部變成高電平,此時b糾正高四位的漢明碼,c為出錯的位數(shù),s為校正子。參考文件1 通信原理 樊昌信、曹麗娜,國防工業(yè)出版社,20122 通信系統(tǒng)實驗與設計指導書 電信學院通信原理課程組3 VHDL硬件描述語言 辛春艷,國防工業(yè)出版社,2002體會與建議經(jīng)歷了為期1周的通信原理課程設計結束了,體會和收益頗多.這次課程設計的題目是基于Quartus ii的(7,4)漢明碼的編解碼器的設計,錢老師在分布題目的時候,就說

17、出了這個題目的重要點與要注意的地方。但是一開始還是有點手足無措,畢竟上學期的通信原理學得不是很好,還有以前的Quartus軟件的VHDL語言也遺忘了許多,去網(wǎng)上和圖書館查閱了許多資料。終于領會了(7,4)漢明碼的編解碼的原理,方法和本次課程設計需要實現(xiàn)的基于VHDL的漢明碼的編解碼方案。同時,在設計的過程中,也遇到了許多問題,比如在解碼的問題上,因為變量的增多,所以就顯得更加難了。但是在最后老師驗收的時候,因為我是將編碼和解碼分開來設計的,而老師要求在一個程序中顯示出來。但由于時間限制,結果就沒有繼續(xù)探討。同時老師提出的加分題在糾錯方面也沒有設計出來。希望以后可以多多改善,學習更多的知識。附錄

18、編碼器源程序:library ieee;use ieee.std_logic_unsigned.all;use ieee.std_logic_1164.all;entity bm isport(a:in std_logic_vector(3 downto 0); b:out std_logic_vector(6 downto 0);end bm;architecture one of bm isbeginb(6)<=a(3);b(5)<=a(2);b(4)<=a(1);b(3)<=a(0);b(2)<=a(3) xor a(2) xor a(1);b(1)<

19、=a(3) xor a(2) xor a(0);b(0)<=a(3) xor a(1) xor a(0);end;解碼器源程序:library ieee;use ieee.std_logic_1164.all; entity jm isport(a:in std_logic_vector(6 downto 0);s:out std_logic_vector(2 downto 0);b:out std_logic_vector(3 downto 0);c:out std_logic_vector(2 downto 0);end;architecture one of jm is beginprocess(a)variable ss:std_logic_vector(2 downto 0);variable bb:std_logic_vector(6 downto 0);begin ss(2):=a(6) xor a(5) xor a(4) xor a(2); ss(1):=a(6) xor a(5) xor a(3) xor a(1); ss(0):=a(6) xor a(4) xor a(3) xor a(0); bb:=a; if ss> "0

溫馨提示

  • 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

提交評論