CRC編碼模塊設(shè)計實驗報告_第1頁
CRC編碼模塊設(shè)計實驗報告_第2頁
CRC編碼模塊設(shè)計實驗報告_第3頁
CRC編碼模塊設(shè)計實驗報告_第4頁
CRC編碼模塊設(shè)計實驗報告_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上湖南科技大學(xué)數(shù)字系統(tǒng)設(shè)計綜合實驗報告實驗題目: CRC編碼模塊設(shè)計 班級: 學(xué)號: 姓名: 日期: 一:題目功能分析;設(shè)計一個在數(shù)字傳輸中常用的校驗、糾錯模塊,CRC循環(huán)冗余校驗?zāi)K設(shè)計簡介:循環(huán)冗余校驗(CRC)是一種根據(jù)網(wǎng)絡(luò)數(shù)據(jù)封包或電腦檔案等數(shù)據(jù)產(chǎn)生簡短固定位數(shù)校驗碼的一種散列函數(shù),主要用來檢測或校驗數(shù)據(jù)傳輸或者保存后可能出現(xiàn)的錯誤。生成的數(shù)字在傳輸或者儲存之前計算出來并且附加到數(shù)據(jù)后面,然后接收方進(jìn)行檢驗確定數(shù)據(jù)是否發(fā)生變化。而且CRC碼是目前通信系統(tǒng)中最常用的一種差錯控制編碼,利用其進(jìn)行檢錯的過程可簡單描述為:在發(fā)送端根據(jù)要傳送的二進(jìn)制碼序列,以一定的規(guī)則產(chǎn)

2、生一個校驗用的監(jiān)督碼,附在原始信息后邊,構(gòu)成一個新的二進(jìn)制碼序列數(shù),然后發(fā)送出去。在接收端根據(jù)信息碼和CRC 碼之間所遵循的規(guī)則進(jìn)行檢驗,一旦傳輸過程中發(fā)生差錯,則信息碼元與監(jiān)督碼元之間的關(guān)系遭到破壞,從而可以發(fā)現(xiàn)錯誤,乃至糾正錯誤。CRC實驗原理: CRC檢驗原理實際上就是在一個p位二位進(jìn)制數(shù)據(jù)序列之后附加一個r位二進(jìn)制檢驗碼(序列),從而構(gòu)成一個總長為npr位的二進(jìn)制序列;附加在數(shù)據(jù)序列之后的這個檢驗碼與數(shù)據(jù)序列的內(nèi)容之間存在著某種特定的關(guān)系。如果因干擾等原因使數(shù)據(jù)序列中的某一位或某些位發(fā)生錯誤,這種特定關(guān)系就會被破壞。因此,通過檢查這一關(guān)系,就可以實現(xiàn)對數(shù)據(jù)正確性的檢驗。本設(shè)計需要完成1

3、6位信息和5位CRC校驗碼發(fā)送、接收,其功能實現(xiàn)為:采用平臺上的A、B兩組開關(guān)輸入16位二進(jìn)制數(shù),輸出為X、Y、Z三組發(fā)光二極管,同時要求6個數(shù)碼管顯示其相對應(yīng)的16進(jìn)制編碼結(jié)果。二:總模塊劃分; 由兩個模塊構(gòu)成:CRC校驗生成模塊(發(fā)送)和CRC校驗檢錯模塊(接收),采用輸入、輸出否為并行的CRC校驗生成方式。 (結(jié)構(gòu)圖)三:代碼實現(xiàn);VHDL代碼:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity crc is port(cl

4、k :in std_logic; sdata:in std_logic_vector(15 downto 0); smg:out std_logic_vector(7 downto 0); led:out std_logic_vector(7 downto 0); error,hsend:out std_logic); end crc;architecture comm of crc is constant multi_coef:std_logic_vector(5 downto 0):="" -signal sdata:std_logic_vector(15 downto

5、 0):="00011" signal datacrco:std_logic_vector(23 downto 0); signal cnt:std_logic_vector(4 downto 0); signal dtemp:std_logic_vector(15 downto 0); signal sdatam:std_logic_vector(15 downto 0); signal rdtemp:std_logic_vector(15 downto 0); signal rdatacrc:std_logic_vector(20 downto 0); signal r

6、cnt:std_logic_vector(4 downto 0); signal st:std_logic; signal rt:std_logic; signal cn:std_logic; signal state:integer range 0 to 8; signal tdata1,tdata2,tdata3,tdata4,tdata5,tdata6,data:std_logic_vector(3 downto 0);begin p1:process(clk) variable crcvar:std_logic_vector(5 downto 0); begin if clk'

7、event and clk='1' then if (st='0') then dtemp<=sdata; sdatam<=sdata; cnt<=(others=>'0'); hsend<='0' st<='1' elsif(st='1'and cnt<11)then cnt<=cnt+1; if(dtemp(15)='1')then crcvar:=dtemp(15 downto 10)xor multi_coef; dtemp&l

8、t;=crcvar(4 downto 0) & dtemp(5 downto 0) & '0'& '0'& '0'& '0'& '0' else dtemp<=dtemp(14 downto 0)&'0' end if; elsif(st='1'and cnt=11)then datacrco<='0'& '0'& '0'&sdata&d

9、temp(15 downto 11); hsend<='1' cnt<=cnt+1; elsif(st='1' and cnt=11)then hsend<='0' st<='0' end if; end if; end process p1;tdata1<=datacrco(23 downto 20);tdata2<=datacrco(19 downto 16);tdata3<=datacrco(15 downto 12);tdata4<=datacrco(11 downto 8)

10、;tdata5<=datacrco(7 downto 4);tdata6<=datacrco(3 downto 0);cn<='1'process(clk)begin if (clk'event and clk='1'and cn='1') then state<=state+1; end if;end process;process(data,state)begin case data is when "0000"=>smg<="" when "000

11、1"=>smg<="" when "0010"=>smg<="" when "0011"=>smg<="" when "0100"=>smg<="" when "0101"=>smg<="" when "0110"=>smg<="" when "0111"=>smg<

12、;="" when "1000"=>smg<="" when "1001"=>smg<="" when "1010"=>smg<="" when "1011"=>smg<="" when "1100"=>smg<="" when "1101"=>smg<="" whe

13、n "1110"=>smg<="" when "1111"=>smg<="" when others=>smg<="" end case;end process; process(tdata1,tdata2,tdata3,tdata4,tdata5,tdata6,state)begin case state is when 1=>led<=""data<=tdata1; when 2=>led<="&

14、quot;data<=tdata2; when 3=>led<=""data<=tdata3; when 4=>led<=""data<=tdata4; when 5=>led<=""data<=tdata5; when 6=>led<=""data<=tdata6; when others=>led<=""data<="1111" end case; end process; e

15、nd comm;四:仿真與實驗結(jié)果; 首先在工程下VHDL file編寫上述代碼,編寫完成,點擊電腦上的complication圖標(biāo),然后再點擊assignments,選擇pins選項,按照所編程程序的要求,完成對輸入輸出引腳的綁定,在點擊仿真模擬的圖標(biāo),將程序仿真模擬,在實驗平臺上顯示結(jié)果如上圖。五:小組成員及分工說明;小組成員: 分工說明:首先各自通過老師發(fā)的資料安裝破解quartus軟件,再看視頻來學(xué)習(xí)其軟件的基礎(chǔ)使用。然后再翻閱書籍和在網(wǎng)上查閱資料了解到CRC編碼模塊設(shè)計的基本原理,一起編寫VHDl代碼,在軟件上進(jìn)行調(diào)試,運行,糾錯。通過多次,最后在實驗平臺上進(jìn)行功能實現(xiàn)。六:設(shè)計心得

16、,體會; 通過這次的EDA課題設(shè)計,讓我們對CRC校驗碼有了很深的了解,也相應(yīng)的對quartus軟件的使用有了很大的加深。經(jīng)過我們幾周的努力,還是比較符合要求的完成了課題的設(shè)計。這使我們明白了,學(xué)習(xí)上的很多事情,只要肯下工夫去鉆研,就一定能夠有所收獲,提高了我們對通信電路設(shè)計領(lǐng)域的認(rèn)識,通過與同學(xué)分工合作既鍛煉了我們合作能力也提高了我們獨立分析問題和解決問題的能力。設(shè)計過程的復(fù)雜加老師的嚴(yán)格要求有益于培養(yǎng)我們嚴(yán)謹(jǐn)?shù)墓ぷ髯黠L(fēng)。 在CRC編碼模塊設(shè)計的實驗中,最開始對其完全沒有任何概念,也不知道是拿來做什么的,覺得對其基礎(chǔ)知識掌握的很差,對VHDL 代碼的編寫也不了解,不知道怎樣做本實驗,突然感覺我們應(yīng)該仔細(xì)的看看書本知識才行,首先我們學(xué)習(xí)了怎樣操作quartus軟件,我們上網(wǎng)查詢了CRC的基本原理。了解其實驗需

溫馨提示

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

評論

0/150

提交評論