版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 軟件設(shè)計(jì) 實(shí)驗(yàn)報告</p><p> 模 塊 名 稱 8位格雷碼編碼器、高速分頻器 </p><p> 專 業(yè) 通信工程 </p><p> 8位格雷碼編碼器及高速分頻器設(shè)計(jì)</p><p><b> 實(shí)驗(yàn)?zāi)康模?
2、lt;/b></p><p> 1.全面了解如何應(yīng)用該硬件描述語言進(jìn)行高速集成電路設(shè)計(jì)</p><p> 2.通過軟件使用、設(shè)計(jì)與仿真環(huán)節(jié)使學(xué)生熟悉EDA-VHDL開發(fā)環(huán)境 </p><p> 3.通過對基本題、綜合題的設(shè)計(jì)實(shí)踐,使學(xué)生掌握硬件系統(tǒng)設(shè)計(jì)方法</p><p> (自底向上或自頂向下),熟悉VHDL語言三種設(shè)計(jì)風(fēng)格,
3、并且培養(yǎng)</p><p> 應(yīng)用VHDL語言解決實(shí)際問題的能力。</p><p><b> 實(shí)驗(yàn)設(shè)備:PC機(jī)</b></p><p><b> 實(shí)驗(yàn)課題:</b></p><p> 一、8位格雷碼編碼器</p><p><b> 1、主要功能</b&
4、gt;</p><p> 設(shè)計(jì)一個8位(bit)二進(jìn)制碼輸入,輸出8位格雷碼的編碼器(輸入:B7 ---B0并行8位,輸出G7---G0并行8位,提示:當(dāng)i<7時:G(i)=B(i+1)xorB(i),G(7)=B(7)。</p><p><b> 2、設(shè)計(jì)原理</b></p><p> 根據(jù)組合邏輯電路的分析方法,先列出其真值表再
5、通過卡諾圖化簡,可以很快 的找出格雷碼與二進(jìn)制碼之間的邏輯關(guān)系。其轉(zhuǎn)換規(guī)律為:高位同,從高到低看異 同,異出‘1’,同出‘0’。也就是將二進(jìn)制碼轉(zhuǎn)換成格雷碼時,高位是完全相同的,下一位格雷碼是‘1’還是‘0’,完全是相鄰兩位二進(jìn)制碼的“異”還是“同” 來決定。下面舉一個簡單的例子加以說明。</p><p> 假如要把二進(jìn)制碼10110110轉(zhuǎn)換成格雷碼,則可以通過下面的方法來完成,方法如圖1-1。</p&
6、gt;<p><b> 圖1-1</b></p><p><b> 功能仿真</b></p><p> 說明:B7~B0為輸入信號,二進(jìn)制碼為:10110110</p><p> G7~G0為輸出信號,格雷碼為:11101101</p><p><b> 實(shí)驗(yàn)代碼:
7、</b></p><p><b> 見附錄一</b></p><p><b> 二、高速分頻器設(shè)計(jì)</b></p><p><b> 1、主要功能</b></p><p> 設(shè)計(jì)一個分頻器,對10Mhz的時鐘源進(jìn)行分頻,以得到4Hz,3Hz,2Hz,1Hz的
8、時鐘。</p><p><b> 2、設(shè)計(jì)原理</b></p><p><b> 整體思路</b></p><p> 因?yàn)?0Mhz時鐘源速度很快,直接分頻成1Hz級別的時鐘的話分頻系數(shù)太大,雖然思路簡單,但是在實(shí)現(xiàn)時會造成quartus的寄存器資源消耗殆盡,導(dǎo)致編譯失敗。</p><p>
9、 所以我先通過10分頻和100000分頻將10Mhz時鐘源分頻為10Hz的時鐘源,然后對10Hz的時鐘源分別進(jìn)行2.5分頻,3.3分頻,5分頻,10分頻。從而得到4Hz,3Hz,2Hz,1Hz的時鐘源。</p><p> 原理框圖如圖2-1所示。</p><p><b> 圖 2-1</b></p><p><b> 2.5分頻
10、模塊原理</b></p><p> 設(shè)計(jì)一個模3的計(jì)數(shù)器,再設(shè)計(jì)一個扣除脈沖電路,加在模3計(jì)數(shù)器輸出之后,每來兩個脈沖就扣除一個脈沖(實(shí)際上是使被扣除的脈沖變成很窄的脈沖,可由異或門實(shí)現(xiàn)),就可以得到分頻系數(shù)為2.5的小數(shù)分頻器。</p><p> 設(shè)需要設(shè)計(jì)一個分頻系數(shù)為N-0.5的分頻器,其電路可由一個模N計(jì)數(shù)器、一個二分頻器和一個異或門組成,如圖2-2所示。在實(shí)現(xiàn)時,
11、模N計(jì)數(shù)器可設(shè)計(jì)成帶預(yù)置的計(jì)數(shù)器,這樣就可以實(shí)現(xiàn)任意分頻系數(shù)為N-0.5的分頻器。</p><p> 電路原理圖如圖2-2所示。</p><p><b> 圖 2-2</b></p><p> 3.3分頻模塊設(shè)計(jì)[3]</p><p> 設(shè)置一個計(jì)數(shù)器,令其初始值為0;在時鐘源clk的每一個上升沿,計(jì)數(shù)器加上Q,
12、若計(jì)數(shù)器里面的值小于P,則發(fā)出刪除一個脈沖的信號,將delete置為低電平;若其值大于P,則將計(jì)數(shù)器的值減去P,并且將delete置為高電平,不發(fā)出刪除脈沖的信號。本實(shí)驗(yàn)中要將一個10Hz的時鐘源分頻為3Hz的時鐘信號,則Q=3,P=10。</p><p> 電路原理圖如圖2-3所示。</p><p><b> 圖 2-3</b></p><p
13、><b> 5分頻模塊設(shè)計(jì)</b></p><p> 定義兩個計(jì)數(shù)器,分別對輸入時鐘的上升沿和下降沿進(jìn)行計(jì)數(shù),然后把這兩個計(jì)數(shù)值輸入一個組合邏輯,用其控制輸出時鐘的電平。</p><p> 這是因?yàn)橛?jì)數(shù)值為奇數(shù),占空比為50%,前半個和后半個周期所包含的不是整數(shù)個clkin的周期。5分頻,前半個周期包含2.5個clkin周期,后半個周期包含2.5個clki
14、n周期。</p><p><b> 10分頻模塊設(shè)計(jì)</b></p><p> 定義一個計(jì)數(shù)器對輸入時鐘進(jìn)行計(jì)數(shù),在計(jì)數(shù)的前一半時間里,輸出高電平,在計(jì)數(shù)的后一半時間里,輸出低電平,這樣輸出的信號就是占空比為50%的偶數(shù)分頻信號。10分頻,計(jì)數(shù)值為0~4輸出高電平,計(jì)數(shù)值為5~9輸出低電平。3、功能仿真</p><p> 由于題目所給的
15、10Mhz時鐘信號頻率過大,如果直接對它進(jìn)行分頻的話將難以看到完整的結(jié)果,但如果將仿真時間調(diào)長,則仿真速度過慢,所以在仿真中,我將第一次分頻的分頻系數(shù)調(diào)低,然后選擇適當(dāng)?shù)妮斎霑r鐘頻率,以驗(yàn)證2.5分頻,3.3分頻,5分頻,10分頻的正確性。 </p><p> 仿真結(jié)果如圖2-4所示。</p><p><b> 圖 2-4</b></p>&l
16、t;p> 實(shí)驗(yàn)代碼 見附錄二</p><p><b> 設(shè)計(jì)總結(jié)</b></p><p> 本實(shí)驗(yàn)主要是運(yùn)用VHDL語言實(shí)現(xiàn)格雷碼編碼器和高速分頻器的設(shè)計(jì),相對于其他的來說,本實(shí)驗(yàn)比較簡單,但在實(shí)際做的時候還是遇到不少的問題。</p><p> 在編譯時出現(xiàn)了許多錯誤,經(jīng)過反復(fù)修改編譯,再修改再編譯最終排除了所有的錯誤。<
17、/p><p> 在仿真時一開始看不到完整的結(jié)果,通過調(diào)節(jié)分頻系數(shù)以及輸入時鐘頻率的等手段仿真成功,驗(yàn)證了2.5分頻,3.3分頻,5分頻,10分頻的正確性。</p><p><b> 收獲和體會</b></p><p> 在老師布置好題目后,我仔細(xì)進(jìn)行設(shè)計(jì),通過查閱各參考書,最終把實(shí)驗(yàn)做出來了,達(dá)到了老師對本實(shí)驗(yàn)的要求。在這次設(shè)計(jì)中我收獲頗豐,
18、首先最直接的收獲就是我鞏固了這節(jié)課所學(xué)的知識,把它運(yùn)用到實(shí)踐中去,并且學(xué)到了許多在課本中所沒有的知識,通過查閱相關(guān)知識,進(jìn)一步加深對EDA的了解。其次,我們不管做什么都不能粗心,如我們在輸入程序是,把字母打錯了時,保存文件時命名與程序中的名稱不一樣時,都會導(dǎo)致編譯錯誤,在此過程中雖然浪費(fèi)了不少時間,但這也讓我注意到在實(shí)際做設(shè)計(jì)時應(yīng)該注意的問題,意識到自己的不足,對學(xué)過的知識了解不夠深刻,掌握的不足夠。</p><p&
19、gt; 總的來說,這次設(shè)計(jì)還算成功,也讓我明白了要把理論知識與實(shí)踐結(jié)合起來,從實(shí)踐中強(qiáng)化自己的理論,才能更好提高自己的實(shí)際動手能力和獨(dú)立思考能力。如果在設(shè)計(jì)過程中遇到問題時,我們要有耐心并細(xì)心的查找錯誤,這也是學(xué)習(xí)的過程。</p><p><b> 附錄一</b></p><p><b> 格雷碼編碼器源代碼</b></p>
20、<p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity green is</p><p> port(B:in std_logic_vector(7 downto 0);</p><p> G:out std_logic_vector
21、(7 downto 0));</p><p> end green;</p><p> architecture code of green is</p><p><b> begin</b></p><p> G(7) <= B(7);</p><p> G(6) <=
22、B(7) XOR B(6);</p><p> G(5) <= B(6) XOR B(5);</p><p> G(4) <= B(5) XOR B(4);</p><p> G(3) <= B(4) XOR B(3);</p><p> G(2) <= B(3) XOR B(2);</p>&l
23、t;p> G(1) <= B(2) XOR B(1);</p><p> G(0) <= B(1) XOR B(0);</p><p><b> end code;</b></p><p><b> 附錄二</b></p><p><b> 高速分頻器源代碼&l
24、t;/b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_signed.all;</p><p> use ieee.std_logic_unsigned.all;</p><p
25、> entity div2 is</p><p> generic(N10: integer:=10;</p><p> N105: integer:=100000;</p><p> N3: integer:=3;</p><p> N5: integer:=5;</p><p> N2: inte
26、ger:=3;</p><p> N10: integer:=10);</p><p> port(cp_10mhz:in std_logic;</p><p> delete: buffer std_logic;</p><p> cp_10hz:out std_logic;</p><p> cp_4hz
27、:buffer std_logic;</p><p> cp_3hz:out std_logic;</p><p> cp_2hz:out std_logic;</p><p> cp_1hz:out std_logic</p><p> --tempout:inout std_logic</p><p>&l
28、t;b> );</b></p><p><b> end div2;</b></p><p> architecture clk of div2 is</p><p> signal cp1mhz:std_logic;</p><p> signal cnt_1mhz: integer ran
29、ge 0 to N10-1;</p><p> signal cp10hz:std_logic;</p><p> signal cnt_10hz: integer range 0 to N105-1;</p><p> signal cnt_1hz: integer range 0 to N10-1;</p><p> signal
30、 cnt_2hz1, cnt_2hz2: integer range 0 to N5-1;</p><p> signal cnt_3hz: integer :=0;</p><p> SIGNAL clk_4hz, dix: STD_LOGIC;</p><p> SIGNAL cnt_4hz: integer range 0 to N5-1;</p&
31、gt;<p> constant P :integer:=10;</p><p> constant Q :integer:=3;</p><p> --SIGNAL delete: std_logic;</p><p><b> begin </b></p><p> clk_4hz <=
32、 cp10hz XOR dix;</p><p> --clk<=cp10hz xor div2;</p><p> ------------------------------------------</p><p> ------------------------------------------</p><p> pr
33、ocess(cp_10mhz) --計(jì)數(shù)----1Mhz</p><p><b> begin</b></p><p> if(cp_10mhz'event and cp_10mhz='1') then</p><p> if(cnt_1mhz<N10-1) then</p><p>
34、; cnt_1mhz <= cnt_1mhz+1;</p><p><b> else</b></p><p> cnt_1mhz <= 0;</p><p><b> end if;</b></p><p><b> end if;</b></p&
35、gt;<p> end process;</p><p> process(cnt_1mhz) --根據(jù)計(jì)數(shù)值,控制輸出時鐘脈沖的高、低電平</p><p><b> begin</b></p><p> if(cnt_1mhz<N10/2) then</p><p> cp1mhz &l
36、t;= '1';</p><p><b> else</b></p><p> cp1mhz <= '0';</p><p><b> end if;</b></p><p> end process;</p><p> ---
37、------------------------------------------------------</p><p> ---------------------------------------------------------</p><p> process(cp1mhz) --計(jì)數(shù)--------------10Hz--------------</p>
38、<p><b> begin</b></p><p> if(cp1mhz'event and cp1mhz='1') then</p><p> if(cnt_10hz<N105-1) then</p><p> cnt_10hz <= cnt_10hz+1;</p>&
39、lt;p><b> else</b></p><p> cnt_10hz <= 0;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> end process;</p>&l
40、t;p> process(cnt_10hz) --根據(jù)計(jì)數(shù)值,控制輸出時鐘脈沖的高、低電平</p><p><b> begin</b></p><p> if(cnt_10hz<N105/2) then</p><p> cp10hz <= '1';</p><p> cp
41、_10hz <= '1';</p><p><b> else</b></p><p> cp10hz <= '0';</p><p> cp_10hz <= '0';</p><p><b> end if;</b><
42、/p><p> end process;</p><p> --------------------------------------------------------</p><p> --------------------------------------------------------</p><p> process(
43、cp10hz) --計(jì)數(shù)--------------1Hz--------------</p><p><b> begin</b></p><p> if(cp10hz'event and cp10hz='1') then</p><p> if(cnt_1hz<N10-1) then</p>
44、<p> cnt_1hz <= cnt_1hz+1;</p><p><b> else</b></p><p> cnt_1hz <= 0;</p><p><b> end if;</b></p><p><b> end if;</b>
45、</p><p> end process;</p><p> process(cnt_1hz) --根據(jù)計(jì)數(shù)值,控制輸出時鐘脈沖的高、低電平</p><p><b> begin</b></p><p> if(cnt_1hz<N10/2) then</p><p> cp_1
46、hz <= '1';</p><p><b> else</b></p><p> cp_1hz <= '0';</p><p><b> end if;</b></p><p> end process;</p><p>
47、 -------------------------------------------------------</p><p> -------------------------------------------------------</p><p> process(cp10hz)-----------------2Hz---------------------</p
48、><p><b> begin</b></p><p> if(cp10hz'event and cp10hz='1') then --shangshengyanjishu</p><p> if(cnt_2hz1<N5-1) then</p><p> cnt_2hz1 <=
49、cnt_2hz1+1;</p><p><b> else</b></p><p> cnt_2hz1 <= 0;</p><p><b> end if;</b></p><p><b> end if;</b></p><p> en
50、d process;</p><p> process(cp10hz)</p><p><b> begin</b></p><p> if(cp10hz'event and cp10hz='0') then --xiajiangyanjishu</p><p> if(cnt_2hz2
51、<N5-1) then</p><p> cnt_2hz2 <= cnt_2hz2+1;</p><p><b> else</b></p><p> cnt_2hz2 <= 0;</p><p><b> end if;</b></p><p>&
52、lt;b> end if;</b></p><p> end process;</p><p> cp_2hz <= '1' when cnt_2hz1<(N5-1)/2 or cnt_2hz2<(N5-1)/2 else '0';</p><p> --------------------
53、----------------------------------</p><p> ------------------------------------------------------</p><p> process(clk_4hz)---------------------------4Hz-------</p><p><b> b
54、egin</b></p><p> if(clk_4hz'event and clk_4hz='1') then</p><p> if(cnt_4hz=0) then</p><p> cnt_4hz <= N2-1;--置整數(shù)分頻值N</p><p> cp_4hz <=
55、9;1';</p><p><b> else</b></p><p> cnt_4hz <= cnt_4hz-1;--模N計(jì)數(shù)器減法計(jì)數(shù)</p><p> cp_4hz <= '0';</p><p><b> end if;</b></p>
56、;<p><b> end if;</b></p><p> end process; </p><p> process(cp_4hz)</p><p><b> begin</b></p><p> if(cp_4hz'event and cp_4hz='
57、1') then</p><p> dix <= not dix;--輸出時鐘二分頻</p><p><b> end if;</b></p><p> end process;</p><p> --------------------------------------------------
58、-----</p><p> -------------------------------------------------------</p><p> process(cp10hz)------------------3hz------------------</p><p><b> begin</b></p>&
59、lt;p> if(cp10hz'event and cp10hz='1') then</p><p> cnt_3hz<=cnt_3hz+Q;</p><p> if(cnt_3hz<P) then</p><p> delete<='0';</p><p><b&
60、gt; else</b></p><p> cnt_3hz<=cnt_3hz-P;</p><p> delete<='1';</p><p><b> end if;</b></p><p><b> end if;</b></p>
61、<p> end process;</p><p> process(cp10hz,delete)</p><p><b> begin</b></p><p> cp_3hz<=cp10hz and delete;</p><p> end process; </p>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 時鐘電路及分頻器設(shè)計(jì)課程設(shè)計(jì)
- 高速分頻器研究.pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告(huffman編碼器)
- 寬帶高速可編程分頻器設(shè)計(jì).pdf
- eda課程設(shè)計(jì)---基于fpga的半整數(shù)分頻器設(shè)計(jì)
- PLL頻率綜合器中高速二分頻器和雙模前置分頻器的設(shè)計(jì)與實(shí)現(xiàn).pdf
- 高速低功耗CMOS分頻器實(shí)現(xiàn).pdf
- 基于vhdl的分頻器設(shè)計(jì)[開題報告]
- 使用vhdl進(jìn)行分頻器設(shè)計(jì)
- 課程設(shè)計(jì)--8位計(jì)數(shù)器eda課程設(shè)計(jì)報告
- 赫夫曼編碼器數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)
- 課程設(shè)計(jì)--- 光電編碼器判別電路和12位計(jì)數(shù)電路設(shè)計(jì)
- 高速RS--BCH級聯(lián)碼編碼器的VLSI設(shè)計(jì).pdf
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報告---哈夫曼編碼器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---哈夫曼編碼器
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)---哈夫曼編碼器
- 高速FFT及可編程分頻器芯片設(shè)計(jì)研究.pdf
- 基于SiGe BiCMOS工藝的高速、低功耗分頻器設(shè)計(jì).pdf
- 課程設(shè)計(jì)報告---8位數(shù)字搶答器設(shè)計(jì)
- DRM頻率綜合器中分頻器的設(shè)計(jì).pdf
評論
0/150
提交評論