8位格雷碼編碼器、高速分頻器 課程設(shè)計報告_第1頁
8位格雷碼編碼器、高速分頻器 課程設(shè)計報告_第2頁
8位格雷碼編碼器、高速分頻器 課程設(shè)計報告_第3頁
8位格雷碼編碼器、高速分頻器 課程設(shè)計報告_第4頁
8位格雷碼編碼器、高速分頻器 課程設(shè)計報告_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、通達(dá)學(xué)院2012/2013學(xué)年 第二學(xué)期軟件設(shè)計 實驗報告模 塊 名 稱 8位格雷碼編碼器、高速分頻器 專 業(yè) 通信工程 學(xué) 生 班 級 100019 學(xué) 生 學(xué) 號 10001927 學(xué) 生 姓 名 楊潤達(dá) 指 導(dǎo) 教 師 王奇、孔凡坤、周小燕、梅中輝 設(shè)計題目基礎(chǔ)題:8位格雷碼編碼器綜合題:高速分頻器設(shè)計任務(wù)要求基礎(chǔ)題:設(shè)計一個8位(bit)二進(jìn)制碼輸入,輸出8位格雷碼的編碼器(輸入:b7 -b0并行8位 , 輸出g7-g0并行8位 ,提示:當(dāng)i7時:g(i)=b(i+1)xorb(i),g(7)=b(7))。綜合題:有一個10mhz的時鐘源,為得到4hz,3hz,2hz和1hz的信號,請

2、設(shè)計一種分頻器。實驗設(shè)備及軟件quartus ii 9.0同組人員學(xué)號及姓名無參考文獻(xiàn)1王振紅,vhdl電路設(shè)計與應(yīng)用實踐教程:機(jī)械工業(yè)出版社。2徐向民,數(shù)字系統(tǒng)設(shè)計及vhdl實踐:機(jī)械工業(yè)出版社。3毛為勇,祁中洋,王蘭,基于fpga的任意小數(shù)分頻器的設(shè)計:桂林航天工業(yè)高等??茖W(xué)校學(xué)報8位格雷碼編碼器及高速分頻器設(shè)計實驗?zāi)康模?1.全面了解如何應(yīng)用該硬件描述語言進(jìn)行高速集成電路設(shè)計 2.通過軟件使用、設(shè)計與仿真環(huán)節(jié)使學(xué)生熟悉eda-vhdl開發(fā)環(huán)境 3.通過對基本題、綜合題的設(shè)計實踐,使學(xué)生掌握硬件系統(tǒng)設(shè)計方法 (自底向上或自頂向下),熟悉vhdl語言三種設(shè)計風(fēng)格,并且培養(yǎng) 應(yīng)用vhdl語言解

3、決實際問題的能力。實驗設(shè)備:pc機(jī)實驗課題:一、8位格雷碼編碼器 1、主要功能設(shè)計一個8位(bit)二進(jìn)制碼輸入,輸出8位格雷碼的編碼器(輸入:b7 -b0并行8位,輸出g7-g0并行8位,提示:當(dāng)i7時:g(i)=b(i+1)xorb(i),g(7)=b(7)。 2、設(shè)計原理 根據(jù)組合邏輯電路的分析方法,先列出其真值表再通過卡諾圖化簡,可以很快 的找出格雷碼與二進(jìn)制碼之間的邏輯關(guān)系。其轉(zhuǎn)換規(guī)律為:高位同,從高到低看異 同,異出1,同出0。也就是將二進(jìn)制碼轉(zhuǎn)換成格雷碼時,高位是完全相同的,下一位格雷碼是1還是0,完全是相鄰兩位二進(jìn)制碼的“異”還是“同” 來決定。下面舉一個簡單的例子加以說明。假

4、如要把二進(jìn)制碼10110110轉(zhuǎn)換成格雷碼,則可以通過下面的方法來完成,方法如圖1-1。 圖1-13、 功能仿真 說明:b7b0為輸入信號,二進(jìn)制碼為:10110110 g7g0為輸出信號,格雷碼為:111011014、 實驗代碼: 見附錄一 二、高速分頻器設(shè)計 1、主要功能 設(shè)計一個分頻器,對10mhz的時鐘源進(jìn)行分頻,以得到4hz,3hz,2hz,1hz的時鐘。 2、設(shè)計原理 整體思路 因為10mhz時鐘源速度很快,直接分頻成1hz級別的時鐘的話分頻系數(shù)太大,雖然思路簡單,但是在實現(xiàn)時會造成quartus的寄存器資源消耗殆盡,導(dǎo)致編譯失敗。 所以我先通過10分頻和100000分頻將10mh

5、z時鐘源分頻為10hz的時鐘源,然后對10hz的時鐘源分別進(jìn)行2.5分頻,3.3分頻,5分頻,10分頻。從而得到4hz,3hz,2hz,1hz的時鐘源。 原理框圖如圖2-1所示。 圖 2-1 2.5分頻模塊原理 設(shè)計一個模3的計數(shù)器,再設(shè)計一個扣除脈沖電路,加在模3計數(shù)器輸出之后,每來兩個脈沖就扣除一個脈沖(實際上是使被扣除的脈沖變成很窄的脈沖,可由異或門實現(xiàn)),就可以得到分頻系數(shù)為2.5的小數(shù)分頻器。 設(shè)需要設(shè)計一個分頻系數(shù)為n-0.5的分頻器,其電路可由一個模n計數(shù)器、一個二分頻器和一個異或門組成,如圖2-2所示。在實現(xiàn)時,模n計數(shù)器可設(shè)計成帶預(yù)置的計數(shù)器,這樣就可以實現(xiàn)任意分頻系數(shù)為n-

6、0.5的分頻器。電路原理圖如圖2-2所示。 圖 2-2 3.3分頻模塊設(shè)計3 設(shè)置一個計數(shù)器,令其初始值為0;在時鐘源clk的每一個上升沿,計數(shù)器加上q,若計數(shù)器里面的值小于p,則發(fā)出刪除一個脈沖的信號,將delete置為低電平;若其值大于p,則將計數(shù)器的值減去p,并且將delete置為高電平,不發(fā)出刪除脈沖的信號。本實驗中要將一個10hz的時鐘源分頻為3hz的時鐘信號,則q=3,p=10。 電路原理圖如圖2-3所示。 圖 2-3 5分頻模塊設(shè)計 定義兩個計數(shù)器,分別對輸入時鐘的上升沿和下降沿進(jìn)行計數(shù),然后把這兩個計數(shù)值輸入一個組合邏輯,用其控制輸出時鐘的電平。這是因為計數(shù)值為奇數(shù),占空比為5

7、0%,前半個和后半個周期所包含的不是整數(shù)個clkin的周期。5分頻,前半個周期包含2.5個clkin周期,后半個周期包含2.5個clkin周期。 10分頻模塊設(shè)計 定義一個計數(shù)器對輸入時鐘進(jìn)行計數(shù),在計數(shù)的前一半時間里,輸出高電平,在計數(shù)的后一半時間里,輸出低電平,這樣輸出的信號就是占空比為50%的偶數(shù)分頻信號。10分頻,計數(shù)值為04輸出高電平,計數(shù)值為59輸出低電平。3、功能仿真 由于題目所給的10mhz時鐘信號頻率過大,如果直接對它進(jìn)行分頻的話將難以看到完整的結(jié)果,但如果將仿真時間調(diào)長,則仿真速度過慢,所以在仿真中,我將第一次分頻的分頻系數(shù)調(diào)低,然后選擇適當(dāng)?shù)妮斎霑r鐘頻率,以驗證2.5分頻

8、,3.3分頻,5分頻,10分頻的正確性。 仿真結(jié)果如圖2-4所示。 圖 2-44、 實驗代碼 見附錄二設(shè)計總結(jié) 本實驗主要是運用vhdl語言實現(xiàn)格雷碼編碼器和高速分頻器的設(shè)計,相對于其他的來說,本實驗比較簡單,但在實際做的時候還是遇到不少的問題。 在編譯時出現(xiàn)了許多錯誤,經(jīng)過反復(fù)修改編譯,再修改再編譯最終排除了所有的錯誤。 在仿真時一開始看不到完整的結(jié)果,通過調(diào)節(jié)分頻系數(shù)以及輸入時鐘頻率的等手段仿真成功,驗證了2.5分頻,3.3分頻,5分頻,10分頻的正確性。收獲和體會 在老師布置好題目后,我仔細(xì)進(jìn)行設(shè)計,通過查閱各參考書,最終把實驗做出來了,達(dá)到了老師對本實驗的要求。在這次設(shè)計中我收獲頗豐,

9、首先最直接的收獲就是我鞏固了這節(jié)課所學(xué)的知識,把它運用到實踐中去,并且學(xué)到了許多在課本中所沒有的知識,通過查閱相關(guān)知識,進(jìn)一步加深對eda的了解。其次,我們不管做什么都不能粗心,如我們在輸入程序是,把字母打錯了時,保存文件時命名與程序中的名稱不一樣時,都會導(dǎo)致編譯錯誤,在此過程中雖然浪費了不少時間,但這也讓我注意到在實際做設(shè)計時應(yīng)該注意的問題,意識到自己的不足,對學(xué)過的知識了解不夠深刻,掌握的不足夠??偟膩碚f,這次設(shè)計還算成功,也讓我明白了要把理論知識與實踐結(jié)合起來,從實踐中強(qiáng)化自己的理論,才能更好提高自己的實際動手能力和獨立思考能力。如果在設(shè)計過程中遇到問題時,我們要有耐心并細(xì)心的查找錯誤,

10、這也是學(xué)習(xí)的過程。附錄一格雷碼編碼器源代碼library ieee;use ieee.std_logic_1164.all;entity green is port(b:in std_logic_vector(7 downto 0); g:out std_logic_vector(7 downto 0);end green;architecture code of green isbegin g(7) = b(7); g(6) = b(7) xor b(6); g(5) = b(6) xor b(5); g(4) = b(5) xor b(4); g(3) = b(4) xor b(3); g

11、(2) = b(3) xor b(2); g(1) = b(2) xor b(1); g(0) = b(1) xor b(0);end code;附錄二高速分頻器源代碼library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_signed.all;use ieee.std_logic_unsigned.all;entity div2 isgeneric(n10: integer:=10; n105: integer:=100000; n3: integer:=3; n5: integer:=5; n2: integer:=3; n1

12、0: integer:=10); port(cp_10mhz:in std_logic; delete: buffer std_logic; cp_10hz:out std_logic; cp_4hz:buffer std_logic; cp_3hz:out std_logic; cp_2hz:out std_logic; cp_1hz:out std_logic -tempout:inout std_logic );end div2; architecture clk of div2 issignal cp1mhz:std_logic;signal cnt_1mhz: integer ran

13、ge 0 to n10-1;signal cp10hz:std_logic;signal cnt_10hz: integer range 0 to n105-1;signal cnt_1hz: integer range 0 to n10-1;signal cnt_2hz1, cnt_2hz2: integer range 0 to n5-1;signal cnt_3hz: integer :=0;signal clk_4hz, dix: std_logic;signal cnt_4hz: integer range 0 to n5-1;constant p :integer:=10;cons

14、tant q :integer:=3;-signal delete: std_logic;begin clk_4hz = cp10hz xor dix;-clk=cp10hz xor div2;- process(cp_10mhz) -計數(shù)-1mhz begin if(cp_10mhzevent and cp_10mhz=1) then if(cnt_1mhzn10-1) then cnt_1mhz = cnt_1mhz+1; else cnt_1mhz = 0; end if; end if; end process; process(cnt_1mhz) -根據(jù)計數(shù)值,控制輸出時鐘脈沖的高、

15、低電平 begin if(cnt_1mhzn10/2) then cp1mhz = 1; else cp1mhz = 0; end if; end process;-process(cp1mhz) -計數(shù)-10hz- begin if(cp1mhzevent and cp1mhz=1) then if(cnt_10hzn105-1) then cnt_10hz = cnt_10hz+1; else cnt_10hz = 0; end if; end if; end process; process(cnt_10hz) -根據(jù)計數(shù)值,控制輸出時鐘脈沖的高、低電平 begin if(cnt_10h

16、zn105/2) then cp10hz = 1; cp_10hz = 1; else cp10hz = 0; cp_10hz = 0; end if; end process;-process(cp10hz) -計數(shù)-1hz- begin if(cp10hzevent and cp10hz=1) then if(cnt_1hzn10-1) then cnt_1hz = cnt_1hz+1; else cnt_1hz = 0; end if; end if; end process; process(cnt_1hz) -根據(jù)計數(shù)值,控制輸出時鐘脈沖的高、低電平 begin if(cnt_1hz

17、n10/2) then cp_1hz = 1; else cp_1hz = 0; end if; end process;-process(cp10hz)-2hz- begin if(cp10hzevent and cp10hz=1) then -shangshengyanjishu if(cnt_2hz1n5-1) then cnt_2hz1 = cnt_2hz1+1; else cnt_2hz1 = 0; end if; end if; end process;process(cp10hz) begin if(cp10hzevent and cp10hz=0) then -xiajiang

18、yanjishu if(cnt_2hz2n5-1) then cnt_2hz2 = cnt_2hz2+1; else cnt_2hz2 = 0; end if; end if; end process;cp_2hz = 1 when cnt_2hz1(n5-1)/2 or cnt_2hz2(n5-1)/2 else 0;- process(clk_4hz)-4hz- begin if(clk_4hzevent and clk_4hz=1) then if(cnt_4hz=0) then cnt_4hz = n2-1;-置整數(shù)分頻值n cp_4hz = 1; else cnt_4hz = cnt_4hz-1;-模n計數(shù)器減法計數(shù) cp_4hz = 0; end

溫馨提示

  • 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

提交評論