eda課程設(shè)計(jì)---函數(shù)信號(hào)發(fā)生器的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩19頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  摘要</b></p><p>  本說(shuō)明書(shū)首先介紹了VHDL語(yǔ)言的特點(diǎn)及發(fā)展史;接著簡(jiǎn)要說(shuō)明了D/A接口(函數(shù)發(fā)生器)的工作原理及設(shè)計(jì)思想和設(shè)計(jì)方案的確定;然后著重解釋了使用VHDL語(yǔ)言設(shè)計(jì)D/A接口(函數(shù)發(fā)生器)的具體操作步驟及主要流程。為了更加詳細(xì)的解釋清楚主要流程在本課程設(shè)計(jì)說(shuō)明書(shū)中還附加了相應(yīng)的圖片。最后還附加了實(shí)現(xiàn)設(shè)計(jì)的VHDL源程序。</p&g

2、t;<p>  關(guān)鍵詞:VHDL D/A接口 設(shè)計(jì)</p><p><b>  緒論</b></p><p>  EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě)。EDA技術(shù)就是依賴功能強(qiáng)大的計(jì)算機(jī),在EDA工具軟件平臺(tái)上,對(duì)以硬件描述語(yǔ)言HDL(Hardware Description Language)為系

3、統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、布局布線以及邏輯優(yōu)化和仿真測(cè)試,直至實(shí)現(xiàn)既定的電子線路系統(tǒng)功能。EDA技術(shù)使設(shè)計(jì)者的工作僅局限于利用軟件的方式來(lái)完成對(duì)系統(tǒng)硬件功能的實(shí)現(xiàn),可以說(shuō)EDA技術(shù)的產(chǎn)生與發(fā)展是電子設(shè)計(jì)技術(shù)的一個(gè)巨大進(jìn)步。EDA技術(shù)融合了眾多電子設(shè)計(jì)技術(shù)和計(jì)算機(jī)輔助技術(shù),使得它在現(xiàn)代電子學(xué)方面的應(yīng)用越來(lái)越廣泛,也成為電子、電氣類(lèi)大學(xué)生必須熟練掌握的一種設(shè)計(jì)工具。</p><p

4、>  硬件描述性語(yǔ)言HDL是EDA技術(shù)的重要組成部分,常見(jiàn)HDL的有VHDL、HDL、ABEL、Verilog、AHDL、SystemC等。其中VHDL、Verilog在現(xiàn)在的EDA設(shè)計(jì)中使用的最多,也擁有了幾乎所有主流EDA工具的支持,而相對(duì)于其他語(yǔ)言VHDL更加完善。VHDL是英文全名是VHSIC(Very High Speed Integrated Circuit) Hardware Description Language

5、,是硬件描述語(yǔ)言的業(yè)界標(biāo)準(zhǔn)之一。它作為一個(gè)規(guī)范語(yǔ)言和建模語(yǔ)言,具有與具體硬件電路無(wú)關(guān)及設(shè)計(jì)平臺(tái)無(wú)關(guān)的特性,而且還有很強(qiáng)的電路行為描述和建模能力,能從多個(gè)層次的數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡(jiǎn)化了硬件設(shè)計(jì)的任務(wù),提高了設(shè)計(jì)效率和可靠性。</p><p>  D/A轉(zhuǎn)換器的功能是把二進(jìn)制數(shù)字信號(hào)轉(zhuǎn)換為與其數(shù)值成正比的模擬信號(hào)。AD558是并行8位D/A轉(zhuǎn)換芯片,應(yīng)用CPLD可以完成對(duì)AD558的控制。CPLD與CP

6、LD結(jié)合之后可以完成函數(shù)發(fā)生器的基本功能:波形輸出。要實(shí)現(xiàn)這種結(jié)合就需要應(yīng)用VHDL語(yǔ)言完成D/A接口的設(shè)計(jì)。通過(guò)合適的VHDL語(yǔ)言可以完成遞增斜波、遞減斜波、三角波、遞增階梯波的輸出。</p><p><b>  1.VHDL簡(jiǎn)介</b></p><p>  1.1 VHDL的特點(diǎn)</p><p>  VHDL語(yǔ)言功能強(qiáng)大、設(shè)計(jì)靈活。VHDL

7、語(yǔ)言可以用簡(jiǎn)潔明確的源代碼來(lái)描述復(fù)雜的邏輯控制,它具有多層次的設(shè)計(jì)描述功能,層層細(xì)化,最后可直接生成電路級(jí)描述。VHDL支持同步電路、異步電路和隨機(jī)電路的設(shè)計(jì),這是其他硬件描述語(yǔ)言雖不能比擬的。VHDL還支持多種設(shè)計(jì)方法,既支持自底向上的設(shè)計(jì),又支持自頂向下的設(shè)計(jì);既支持模塊化設(shè)計(jì),又支持層次化設(shè)計(jì)。由于VHDL已經(jīng)成為IEEE標(biāo)準(zhǔn)所規(guī)定的硬件描述性語(yǔ)言,目前大多數(shù)EDA工具幾乎都支持VHDL。因?yàn)閂HDL易讀和結(jié)構(gòu)化且易于修改設(shè)計(jì)所以

8、在硬件電路設(shè)計(jì)過(guò)程中, VHDL語(yǔ)言得到廣泛應(yīng)用。</p><p>  VHDL語(yǔ)言獨(dú)立于器件的設(shè)計(jì)與工藝無(wú)關(guān)。因而設(shè)計(jì)人員用VHDL進(jìn)行設(shè)計(jì)時(shí),不需要考慮選擇器件得問(wèn)題,就可以集中精力進(jìn)行設(shè)計(jì)的優(yōu)化。當(dāng)設(shè)計(jì)描述完成后,可以用多種不同的器件結(jié)構(gòu)來(lái)實(shí)現(xiàn)其功能。</p><p>  VHDL語(yǔ)言易于共享和復(fù)用。VHDL采用基于庫(kù)(Library)的設(shè)計(jì)方法,可以建立各種可再次利用的模塊。這些模

9、塊可以預(yù)先設(shè)計(jì)或使用以前設(shè)計(jì)中的存檔模塊,將這些模塊存放到庫(kù)中,就可以在以后的設(shè)計(jì)中進(jìn)行復(fù)用,可以使設(shè)計(jì)成果在設(shè)計(jì)人員之間進(jìn)行交流和共享,減少硬件電路設(shè)計(jì)。VHDL豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。</p><p>  VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了它具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。這個(gè)特點(diǎn)很好的符合了市場(chǎng)需求。對(duì)

10、于用VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述的設(shè)計(jì)轉(zhuǎn)變成門(mén)級(jí)網(wǎng)表。</p><p>  總之,由于VHDL語(yǔ)言有的這些優(yōu)良的特點(diǎn),它被廣泛的應(yīng)用在電子線路和電子系統(tǒng)的設(shè)計(jì)中。</p><p><b>  2.設(shè)計(jì)方案的確定</b></p><p>  2.1.AD558工作原理</p>

11、;<p>  A/D轉(zhuǎn)換器和D/A轉(zhuǎn)換器是把微型計(jì)算機(jī)的應(yīng)用領(lǐng)域擴(kuò)展到檢測(cè)和過(guò)程控制的必要裝置,是把計(jì)算機(jī)和生產(chǎn)過(guò)程、科學(xué)實(shí)驗(yàn)過(guò)程聯(lián)系起來(lái)的重要橋梁。D/A轉(zhuǎn)換器的功能是把二進(jìn)制數(shù)字信號(hào)轉(zhuǎn)換為與其數(shù)值成正比的模擬信號(hào)。D/A轉(zhuǎn)換器相對(duì)于A/D轉(zhuǎn)換器在時(shí)序上要求較低。在D/A參數(shù)中一個(gè)最重要的參數(shù)就是分辨率,它是指輸入數(shù)字量發(fā)生單位數(shù)碼變化時(shí),所對(duì)應(yīng)輸出模擬量(電壓或電流)的變化量。分辨率是指輸入數(shù)字量最低有效位為1時(shí),對(duì)應(yīng)

12、輸出可分辨的電壓變化量ΔU與最大輸出電壓Um之比。</p><p>  D/A轉(zhuǎn)換器AD558是EDA實(shí)驗(yàn)箱上自帶的并行8位D/A轉(zhuǎn)換芯片,它可以把輸入的8位數(shù)字量轉(zhuǎn)化為0~2.56V的電壓量,它與CPLD器件聯(lián)合使用可以產(chǎn)生幾種波形。其芯片管腳外形和內(nèi)部結(jié)構(gòu)框圖分別如圖1、圖2所示:</p><p>  圖1 AD558芯片管腳外形圖</p><p>  圖2 A

13、D558內(nèi)部結(jié)構(gòu)框圖</p><p>  AD558的真值表如圖3所示。由真值表可知:當(dāng)CS為低電平、CE為電平時(shí),AD558保持上次的轉(zhuǎn)換結(jié)果;當(dāng)CS和CE同時(shí)為電平時(shí),通過(guò)數(shù)據(jù)總線D[7..0]讀入數(shù)據(jù),同時(shí)講轉(zhuǎn)換結(jié)果輸出。</p><p>  圖3. AD558真值表</p><p><b>  2.2 設(shè)計(jì)方案</b></p>

14、;<p>  本次D/A接口(函數(shù)發(fā)生器)的設(shè)計(jì)中,轉(zhuǎn)換結(jié)果是時(shí)時(shí)輸出的。根據(jù)對(duì)AD558真值表的分析可知:當(dāng)CE和CS同時(shí)置‘0’時(shí)AD558的工作模式為時(shí)時(shí)輸出。因此在本次設(shè)計(jì)中我只需要將CE和CS同時(shí)置‘0’即可。根據(jù)對(duì)AD558功能的分析可知:利用VHDL語(yǔ)言編寫(xiě)源程序通過(guò)CPLD完成對(duì)AD558的控制,并與AD558結(jié)合可以完成四種波形的產(chǎn)生。</p><p>  具體設(shè)計(jì)方案如下:利用V

15、HDL語(yǔ)言設(shè)計(jì)0~255循環(huán)加法計(jì)數(shù)器、255~0循環(huán)減法計(jì)數(shù)器、0~128~0循環(huán)加減計(jì)數(shù)器、0~224等梯度循環(huán)加法計(jì)數(shù)器便可分別完成遞增斜波、遞減斜波、三角波、遞增階梯波的輸出。每個(gè)計(jì)數(shù)器還設(shè)計(jì)了片選端和清零端。當(dāng)清零端為0時(shí)計(jì)數(shù)器恢復(fù)為初始狀態(tài)。為了實(shí)現(xiàn)輸出波形模式的選擇,在本次設(shè)計(jì)中我使用了一個(gè)四選一選擇器:輸入為2位邏輯數(shù)組輸出為4個(gè)一位邏輯量。每一種輸入狀態(tài)對(duì)于于一種輸出狀態(tài),每個(gè)狀態(tài)有且僅有一位為1,其余3位皆為0,每個(gè)

16、輸出量與一種計(jì)數(shù)器的片選端相連接,即每個(gè)輸入狀態(tài)都只選中一種輸出狀態(tài)。</p><p>  由于CPLD實(shí)驗(yàn)箱上沒(méi)有D/A轉(zhuǎn)換器,為了顯示設(shè)計(jì)結(jié)果檢驗(yàn)設(shè)計(jì)成果我決定使用7段數(shù)碼管顯示產(chǎn)生波形的數(shù)字量。由于輸出范圍為0~255,在十六進(jìn)制數(shù)0H~EEH的范圍內(nèi),而且實(shí)驗(yàn)箱上只有8個(gè)7段數(shù)碼管因此我各用2個(gè)7段數(shù)碼管顯示4種波形的輸出。</p><p>  在每個(gè)計(jì)數(shù)器輸出端口和7段譯碼器中間

17、添加一個(gè)輸入頻率為1000HZ的4選1數(shù)據(jù)選擇器,并利用兩個(gè)撥碼開(kāi)關(guān)實(shí)現(xiàn)輸入數(shù)據(jù)的選擇。由于實(shí)驗(yàn)箱上自帶的時(shí)鐘源頻率為20MHZ,為了得到1000HZ的頻率,我還設(shè)計(jì)了一個(gè)分頻器。以上即為本次D/A接口(函數(shù)發(fā)生器)的主要設(shè)計(jì)方案。</p><p><b>  3.設(shè)計(jì)流程</b></p><p>  首先啟動(dòng)Quartus II軟件如圖4所示:</p>

18、<p>  圖4 Quartus II啟動(dòng)界面</p><p>  接著利用向?qū)?,建立一個(gè)新的工程。在File菜單中選擇New Project Wizard選項(xiàng)啟動(dòng)項(xiàng)目向?qū)?。如圖5所示,分別指定創(chuàng)建工程的路徑,工程名和頂層文件名。工程名和頂層文件可以一致也可以不同。一個(gè)工程中可以有多個(gè)文件,但只能有一個(gè)頂層文件。這里我將工程名取為:keshe,頂層文件名取為zhuanhuan。如圖5所示。</p

19、><p>  圖5 創(chuàng)建工程界面圖</p><p>  在圖5所示界面點(diǎn)擊NEXT按鈕出現(xiàn)對(duì)話框如圖6所示直接點(diǎn)Finish按鈕然后在出現(xiàn)的界面中依次點(diǎn)擊File/new出現(xiàn)如圖7所示界面。點(diǎn)擊創(chuàng)建VHDL編輯界面中VHDLFile按鈕即進(jìn)入VHDL語(yǔ)言編輯區(qū)如圖8所示。</p><p>  圖6 創(chuàng)建工程的結(jié)束界面</p><p>  圖7創(chuàng)建

20、VHDLFile對(duì)話框</p><p>  圖8 VHDL語(yǔ)言編輯框</p><p>  在圖8所示的VHDL語(yǔ)言編輯框中依次輸入分頻器、四選一選擇器、循環(huán)加法計(jì)數(shù)器等4鐘計(jì)數(shù)器、七段譯碼器等功能模塊的VHDL語(yǔ)言源程序。輸入完成之后單擊保存圖標(biāo)并輸入相應(yīng)的文件名。保存之后即可對(duì)源程序進(jìn)行編譯。如果編譯成功則源程序完全正確,否則應(yīng)該返回到出錯(cuò)處改正錯(cuò)誤直至編譯成功為止。</p>

21、<p>  編譯成功之后選中源程序依次單擊File、NEW、create/update、create symbol file for current file便可對(duì)相應(yīng)的模塊生產(chǎn)元器件。本次設(shè)計(jì)中對(duì)頂層文件采取原理圖輸入法,利用前期設(shè)計(jì)的各模塊的元器件圖連接成整體電路圖。修改設(shè)計(jì)直至編譯成功為止,電路原理圖如圖9所示:</p><p><b>  圖9 整體電路圖</b><

22、;/p><p>  原理圖設(shè)計(jì)成功之后,根據(jù)實(shí)驗(yàn)箱上相應(yīng)的管教,鎖定管教之后再次編譯,編譯成功之后就可以把程序下載到實(shí)驗(yàn)箱上進(jìn)行功能驗(yàn)證了。若功能驗(yàn)證結(jié)果符合設(shè)計(jì)要求則設(shè)計(jì)至此結(jié)束。</p><p><b>  結(jié)束語(yǔ)</b></p><p>  通過(guò)這次EDA課程設(shè)計(jì),我對(duì)課堂上所學(xué)到的理論知識(shí)的理解加深了許多,自己動(dòng)腦、動(dòng)手設(shè)計(jì)的能力也得到了較

23、大提高。</p><p>  雖然我們這學(xué)期學(xué)習(xí)了EDA這門(mén)課,但是由于學(xué)時(shí)十分有限,當(dāng)時(shí)學(xué)的有些不系統(tǒng)。而且在第八周課程及結(jié)束了,十一周考完考試之后就幾乎沒(méi)有再接觸EDA的知識(shí)了。在此次課程設(shè)計(jì)之前,有許多細(xì)節(jié)我已經(jīng)不是很清楚了,為此我特意花了兩天的時(shí)間提前再次學(xué)習(xí)了《EDA技術(shù)與VHDL》這本教材。我想這和課堂上的學(xué)習(xí)一樣是我能順利完成本次課程設(shè)計(jì)的一個(gè)重要原因。</p><p>  

24、在這次課程設(shè)計(jì)的過(guò)程中,我對(duì)VHDL語(yǔ)言有了更深的認(rèn)識(shí)。通過(guò)查閱相關(guān)資料和動(dòng)手設(shè)計(jì)我發(fā)現(xiàn)我以前對(duì)VHDL語(yǔ)言的認(rèn)識(shí)太過(guò)膚淺,認(rèn)為VHDL語(yǔ)言只能用于設(shè)計(jì)小型的電路系統(tǒng)。但有了更深刻的認(rèn)識(shí)之后我發(fā)現(xiàn)學(xué)好VHDL語(yǔ)言可以設(shè)計(jì)出大規(guī)模的、功能復(fù)雜的電路系統(tǒng)。以前之所以會(huì)有錯(cuò)誤的認(rèn)識(shí)是因?yàn)樽约簩?duì)VHDL語(yǔ)言的了解和掌握還不夠?,F(xiàn)在仔細(xì)想想,這次課程設(shè)計(jì)使得我對(duì)VHDL語(yǔ)言的理解與應(yīng)用能力得到了較大的提升,也讓我認(rèn)識(shí)到只要升入學(xué)習(xí),提升的空間永遠(yuǎn)

25、的存在的。</p><p>  在設(shè)計(jì)的過(guò)程中我遇到了一些問(wèn)題,如:編寫(xiě)源程序中出現(xiàn)了語(yǔ)法錯(cuò)誤,使用原理圖設(shè)計(jì)頂層文件是對(duì)輸入輸入輸出端口的位數(shù)選擇錯(cuò)誤和端口命名錯(cuò)誤等。通過(guò)查閱書(shū)本和以前設(shè)計(jì)的程序我發(fā)現(xiàn)了產(chǎn)生錯(cuò)誤的原因并解決了問(wèn)題完成了設(shè)計(jì)。經(jīng)過(guò)反思我發(fā)現(xiàn)較大一部分錯(cuò)誤時(shí)因?yàn)椴僮鞯牟皇炀氄粘傻?,這也讓我明白了要保持設(shè)計(jì)的高效率及必須經(jīng)常練習(xí)。</p><p>  另一方面我也發(fā)現(xiàn)了動(dòng)手實(shí)

26、踐的重要性。動(dòng)手實(shí)踐是理論知識(shí)得以靈活運(yùn)用的必要前提,也是今后今后走上工作崗位之后能夠很好的完成設(shè)計(jì)工作的技術(shù)保證。只有遇到實(shí)際問(wèn)題并根據(jù)自己對(duì)課堂上獲得的專(zhuān)業(yè)知識(shí)的理解來(lái)解決它才能真正的提高自己的能力。這也提醒我在平時(shí)的學(xué)習(xí)生活中不能一味埋頭于課本知識(shí),當(dāng)今社會(huì)競(jìng)爭(zhēng)越來(lái)越激烈,社會(huì)對(duì)人才的要求越來(lái)越全面,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,必須靠動(dòng)手能力做支撐。因此在學(xué)習(xí)之余我們應(yīng)該積極參加各種與專(zhuān)業(yè)知識(shí)有關(guān)的實(shí)踐活動(dòng)和知識(shí)競(jìng)賽,鞏固所學(xué)的理論

27、知識(shí),多注重培養(yǎng)實(shí)際動(dòng)手能力和專(zhuān)業(yè)技術(shù)能力,這樣才能在以后的工作崗位上有所作為。</p><p><b>  附錄</b></p><p><b>  分頻器源程序:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;

28、</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity fpq is</p><p>  port(clk: in std_logic;</p><p>  f_out:out std_logic);</p><p>  end entity;</

29、p><p>  architecture bhv of fpq is</p><p>  signal b:integer range 0 to 200000;</p><p><b>  begin</b></p><p>  process(clk)</p><p><b>  beg

30、in </b></p><p>  if clk'event and clk='1' then</p><p>  if b=20000 then b<=0;f_out<='1';</p><p>  elsif b<20000 then b<=b+1;f_out<='0

31、9;;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>  4選1選擇器源程序:&

32、lt;/p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity xuanze4_1 is</p><p>  port(a1:in std

33、_logic;</p><p>  a2:in std_logic;</p><p>  q1:out std_logic;</p><p>  q2:out std_logic;</p><p>  q3:out std_logic;</p><p>  q4:out std_logic);</p>&

34、lt;p>  end entity xuanze4_1;</p><p>  architecture bhv of xuanze4_1 is</p><p>  signal q:std_logic_vector(3 downto 0);</p><p>  signal a:std_logic_vector(1 downto 0);</p>

35、<p><b>  begin</b></p><p>  process(a)</p><p><b>  begin</b></p><p><b>  a<=a1&a2;</b></p><p><b>  case a is</b

36、></p><p>  when "00" => q<="0001";</p><p>  when "01" => q<="0010";</p><p>  when "10" => q<="0100";

37、</p><p>  when "11" => q<="1000";</p><p><b>  end case;</b></p><p><b>  q1<=q(0);</b></p><p><b>  q2<=q(1)

38、;</b></p><p><b>  q3<=q(2);</b></p><p><b>  q4<=q(3);</b></p><p>  end process;</p><p><b>  end bhv;</b></p><

39、p><b>  遞增計(jì)數(shù)器源程序:</b></p><p>  llibrary ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity dizeng is<

40、;/p><p>  port(clk,cs,ret:in std_logic;</p><p>  q1:buffer integer range 0 to 256);</p><p>  end entity dizeng;</p><p>  architecture bhv of dizeng is</p><p>

41、<b>  begin</b></p><p>  process(clk,cs,ret)</p><p><b>  begin</b></p><p>  if cs='1' then </p><p>  if ret='0' then q1<=0;<

42、;/p><p>  elsif ret='1' then </p><p>  if clk'event and clk='1' then</p><p>  if q1=255 then q1<=0;</p><p>  elsif q1<255 then q1<=q1+1;</p

43、><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end pro

44、cess;</p><p><b>  end bhv;</b></p><p><b>  遞減計(jì)數(shù)器源程序:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use

45、ieee.std_logic_unsigned.all;</p><p>  entity dijian is</p><p>  port(clk,cs,ret:in std_logic;</p><p>  q1:buffer integer range 0 to 256);</p><p>  end entity dijian;<

46、;/p><p>  architecture bhv of dijian is</p><p><b>  begin</b></p><p>  process(clk,cs,ret)</p><p><b>  begin</b></p><p>  if cs='1

47、' then </p><p>  if ret='0' then q1<=0;</p><p>  elsif ret='1' then </p><p>  if clk'event and clk='1' then</p><p>  if q1=0 then q1&

48、lt;=255;</p><p>  elsif q1>0 then q1<=q1-1;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p>

49、<p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>  三角波發(fā)生器源程序:</p><p>  library ieee;</p><p>  use i

50、eee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity sanjiao is</p><p>  port(clk,cs,ret:in std_logic;</p><p>  q:buffer integer range 0 to

51、 256);</p><p>  end entity sanjiao;</p><p>  architecture bhv of sanjiao is</p><p>  signal q1:integer range 0 to 256;</p><p><b>  begin</b></p><

52、p>  process(clk,cs,ret,q1)</p><p><b>  begin</b></p><p>  if cs='1' then </p><p>  if ret='0' then q1<=0;</p><p>  elsif ret='1

53、9; then </p><p>  if clk'event and clk='1' then</p><p>  if q1=255 then q1<=0;</p><p>  elsif q1<255 then q1<=q1+1;</p><p><b>  end if;</b

54、></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  if q1<=128 then q<=q1;</p><p&

55、gt;  elsif q1>128 then q<=255-q1;</p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</b></p><p>  遞增階梯波發(fā)生器源程序:</p>

56、<p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity jieti is</p><p>  port(clk,cs,ret:in std_logic;

57、</p><p>  q1:buffer integer range 0 to 256);</p><p>  end entity jieti;</p><p>  architecture bhv of jieti is</p><p><b>  begin</b></p><p>  pr

58、ocess(clk,cs,ret)</p><p><b>  begin</b></p><p>  if cs='1' then </p><p>  if ret='0' then q1<=0;</p><p>  elsif ret='1' then <

59、/p><p>  if clk'event and clk='1' then</p><p>  if q1=224 then q1<=0;</p><p>  elsif q1<224 then q1<=q1+32;</p><p><b>  end if;</b></p&

60、gt;<p><b>  end if;</b></p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p><b>  end bhv;</

61、b></p><p>  4選1選擇器源程序:</p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  use ieee.std_logic_unsigned.all;</p><p>  entity choose is&

62、lt;/p><p>  port(m1,m2:in std_logic;</p><p>  a,b,c,d:in integer range 0 to 256;</p><p>  q:out integer range 0 to 256);</p><p>  end entity choose;</p><p>  

63、architecture bhv of choose is</p><p>  signal x:std_logic_vector(0 to 1);</p><p><b>  begin</b></p><p><b>  x<=m1&m2;</b></p><p>  with x

64、 select</p><p>  q<=a when "00",</p><p>  b when "01",</p><p>  c when "10",</p><p>  d when others;</p><p><b>  end

65、 bhv;</b></p><p><b>  7段譯碼器源程序:</b></p><p>  library ieee;</p><p>  use ieee.std_logic_1164.all;</p><p>  entity scan is</p><p>  port(cl

66、k:in std_logic;</p><p>  aa:in integer range 0 to 256;</p><p>  out3:buffer integer range 0 to 7;</p><p>  segout:out std_logic_vector(7 downto 0));</p><p><b>  e

67、nd scan;</b></p><p>  architecture behave of scan is</p><p>  signal a,b,c,segin:integer range 0 to 9;</p><p><b>  begin</b></p><p>  a<=aa/100; b&

68、lt;=(aa-100*a)/10;c<=aa-100*a-10*b;</p><p><b>  process</b></p><p><b>  begin</b></p><p>  wait until clk'event and clk='1';</p><

69、p>  if out3=2 then out3<=0;</p><p>  else out3<=out3+1;</p><p><b>  end if;</b></p><p>  case out3 is</p><p>  when 0=>segin<=b;</p>&

70、lt;p>  when 1=>segin<=a;</p><p>  when 2=>segin<=c;</p><p>  when others=>null;</p><p><b>  end case;</b></p><p>  end process; </p>

71、<p>  with segin select</p><p>  segout<="00111111"when 0,</p><p>  "00000110"when 1,</p><p>  "01011011"when 2,</p><p>  "

72、01001111"when 3,</p><p>  "01100110"when 4,</p><p>  "01101101"when 5,</p><p>  "01111101"when 6,</p><p>  "00000111"when 7

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論