FPGA課程設(shè)計(jì)(最終版_第1頁(yè)
FPGA課程設(shè)計(jì)(最終版_第2頁(yè)
FPGA課程設(shè)計(jì)(最終版_第3頁(yè)
FPGA課程設(shè)計(jì)(最終版_第4頁(yè)
FPGA課程設(shè)計(jì)(最終版_第5頁(yè)
已閱讀5頁(yè),還剩36頁(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、課程設(shè)計(jì)任務(wù)書(shū)學(xué)生姓名: 專業(yè)班級(jí): 指導(dǎo)教師: 工作單位: 信息工程學(xué)院 題 目: 電子琴的設(shè)計(jì)課程設(shè)計(jì)目的: FPGA原理與應(yīng)用課程設(shè)計(jì)的目的是為了讓學(xué)生熟悉基于VHDL語(yǔ)言進(jìn)行FPGA開(kāi)發(fā)的全流程,并且利用FPGA設(shè)計(jì)進(jìn)行專業(yè)課程理論知識(shí)的再現(xiàn),讓學(xué)生體會(huì)EDA技術(shù)的強(qiáng)大功能,為今后使用FPGA進(jìn)行電子設(shè)計(jì)奠定基礎(chǔ)。課程設(shè)計(jì)內(nèi)容和要求設(shè)計(jì)內(nèi)容:(1)設(shè)計(jì)一個(gè)八音電子琴。(2)由鍵盤(pán)輸入控制音響,同時(shí)可自動(dòng)演奏樂(lè)曲。 (3)用戶可以將自己編制的樂(lè)曲存入電子琴,演奏時(shí)可選擇鍵盤(pán)輸入樂(lè)曲或者已存入的樂(lè)曲。要求每個(gè)學(xué)生單獨(dú)完成課程設(shè)計(jì)內(nèi)容,并寫(xiě)出課程設(shè)計(jì)說(shuō)明書(shū)、說(shuō)明書(shū)應(yīng)該包括所涉及到的理論部分和

2、充足的實(shí)驗(yàn)結(jié)果,給出程序清單,最后通過(guò)課程設(shè)計(jì)答辯。時(shí)間安排:序號(hào)階段內(nèi)容所需時(shí)間1方案設(shè)計(jì)1天2軟件設(shè)計(jì)2天3系統(tǒng)調(diào)試1天4答辯1天合 計(jì)5天指導(dǎo)教師簽名: 年 月 日系主任(或責(zé)任教師)簽名: 年 月 日目 錄摘 要1Abstract21設(shè)計(jì)意義和要求31.1設(shè)計(jì)意義31.2功能要求32方案論證及原理分析42.1實(shí)現(xiàn)方案比較42.2樂(lè)曲實(shí)現(xiàn)原理42.3系統(tǒng)組成及工作原理63系統(tǒng)模塊設(shè)計(jì)83.1頂層模塊的設(shè)計(jì)83.2樂(lè)曲自動(dòng)演奏模塊的設(shè)計(jì)83.3音階發(fā)生器模塊的設(shè)計(jì)93.4數(shù)控分頻器模塊的設(shè)計(jì)94程序設(shè)計(jì)114.1VHDL設(shè)計(jì)語(yǔ)言和ISE環(huán)境簡(jiǎn)介114.2頂層模塊的程序設(shè)計(jì)124.3樂(lè)曲自動(dòng)

3、演奏模塊的程序設(shè)計(jì)134.4音階發(fā)生器模塊的程序設(shè)計(jì)134.5數(shù)控分頻模塊的程序設(shè)計(jì)145設(shè)計(jì)的仿真與實(shí)現(xiàn)155.1樂(lè)曲自動(dòng)演奏模塊仿真155.2音調(diào)發(fā)生模塊仿真185.3數(shù)控分頻模塊仿真195.4電子琴系統(tǒng)的仿真205.5設(shè)計(jì)的實(shí)現(xiàn)225.6查看RTL視圖235.7查看綜合報(bào)告256心得體會(huì)317參考文獻(xiàn)328附錄33 摘 要隨著基于FPGA的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA技術(shù)在電子信息、通信、自動(dòng)控制用計(jì)算機(jī)等領(lǐng)域的重要性日益突出。EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言HDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化

4、、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。利用EDA工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開(kāi)始設(shè)計(jì)電子系統(tǒng),大量工作可以通過(guò)計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出IC版圖或PCB版圖的整個(gè)過(guò)程的計(jì)算機(jī)上自動(dòng)處理完成。此次設(shè)計(jì)主要是基于VHDL文本輸入法設(shè)計(jì)樂(lè)曲演奏電路,運(yùn)用VHDL語(yǔ)言對(duì)簡(jiǎn)易電子琴的各個(gè)模塊進(jìn)行設(shè)計(jì),并使用EDA工具對(duì)各模塊進(jìn)行仿真驗(yàn)證。該系統(tǒng)基于計(jì)算機(jī)中時(shí)鐘分頻器的原理,采用自頂向下的設(shè)計(jì)方法來(lái)實(shí)現(xiàn),通過(guò)按鍵輸入來(lái)控制音響或者自動(dòng)演奏已存入的歌曲。系統(tǒng)由樂(lè)曲自動(dòng)演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三個(gè)部分組成。選擇手動(dòng)彈

5、奏模式按鍵時(shí),按下音符鍵后就會(huì)選通相應(yīng)的頻率輸出;選擇自動(dòng)演奏模式按鍵時(shí),儲(chǔ)存器會(huì)將編寫(xiě)好的音符信息依次取出,去選通各個(gè)對(duì)應(yīng)的頻率輸出,實(shí)現(xiàn)自動(dòng)演奏。系統(tǒng)實(shí)現(xiàn)是用硬件描述語(yǔ)言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程、時(shí)序仿真、電路功能驗(yàn)證,奏出美妙的樂(lè)曲(當(dāng)然由于條件限制,暫不進(jìn)行功能驗(yàn)證,只進(jìn)行編程和時(shí)序仿真)。關(guān)鍵詞:EDA,VHDL,電子琴,自動(dòng)演奏AbstractWith the expansion and further FPGA-based EDA technology development and applications, the importance of EDA tec

6、hnology in the field of electronic information, communication, computer and other automatic control have become increasingly prominent. EDA technology is to the computer as a tool designer in the EDA software platform, hardware description language HDL complete the design file and then automatically

7、 done by computer logic compilation, simplification, segmentation, integration, optimization, placement, routing and simulation, until for specific target chip adapter compilation, mapping and logic programming download work. Use of EDA tools, electronic designers from concept, algorithms, protocols

8、, and so began the design of electronic systems, a lot of work can be done by computer and electronic products can be from the circuit design, performance analysis to the entire process of IC layout design or layout of the PCB automatic processing is completed on the computer.The design is mainly ba

9、sed on VHDL text input music performance circuit design, each module using VHDL language of simple flower design, and the use of EDA tools for simulation of each module. The system is based on the principle of the computer clock divider, using top-down design approach to achieve, through the key inp

10、ut to control the sound or song to automatically play has been deposited. System from automatically playing music module, tone generator module and NC divider module three parts. When you select the manual mode after the play button, it will note is pressed the corresponding frequency strobe output;

11、 Select Auto Play mode button, the reservoir will be removed in order to write good music information, each corresponding to the frequency of the strobe output, automatic playing. System implementation is hardware description language VHDL by a modular approach to design, and then programming, timin

12、g simulation, circuit functional verification, play wonderful music (of course, due to constraints, they will not perform functional verification, and timing simulation program only) .Key words: EDA, VHDL, electronic organ, automatic play1設(shè)計(jì)意義和要求1.1設(shè)計(jì)意義電子琴作為音樂(lè)與科技的產(chǎn)物,在電子化和信息化的時(shí)代,為音樂(lè)的大眾化做出了很大的貢獻(xiàn),歌曲的制作

13、大多數(shù)都要由電子琴來(lái)完成,然后通過(guò)媒介流傳開(kāi)來(lái),電視劇和電影的插曲、電視節(jié)目音效、甚至手機(jī)鈴聲,都很可能包含電子琴的身影。電子琴是數(shù)字電路中的一個(gè)典型應(yīng)用。然而在實(shí)際的硬件設(shè)計(jì)中用到的器件非常多,連線比較復(fù)雜,同時(shí)會(huì)產(chǎn)生比較大的延時(shí),從而造成測(cè)量誤差較大,可靠性不好。以EDA工具作為開(kāi)發(fā)手段,運(yùn)用VHDL硬件描述語(yǔ)言可以使使整個(gè)系統(tǒng)大大簡(jiǎn)化,提高了電子琴整體的性能和可靠性。1.2功能要求1)設(shè)計(jì)一個(gè)八音電子琴;2)由鍵盤(pán)輸入控制音響,同時(shí)可自動(dòng)演奏樂(lè)曲;3)用戶可以將自己編制的樂(lè)曲存入電子琴,演奏時(shí)可選擇鍵盤(pán)輸入樂(lè)曲或者已存入的樂(lè)曲。2方案論證及原理分析2.1實(shí)現(xiàn)方案比較方案一:采用數(shù)字邏輯電

14、路制作,用IC拼湊焊接實(shí)現(xiàn)。其特點(diǎn)是直接用現(xiàn)成的IC組合而成,簡(jiǎn)單方便,但本系統(tǒng)需用到許多分頻器,這就使得需要用到相當(dāng)多的IC,從而造成了體積過(guò)于龐大,而且連線也會(huì)比較復(fù)雜。方案二:由單片機(jī)來(lái)完成設(shè)計(jì)。可用單片機(jī)控制鍵盤(pán)的輸入,以及產(chǎn)生相應(yīng)的頻率信號(hào)作為輸出。目前,單片機(jī)的功能已比較強(qiáng)大,集成度日益增高且其設(shè)計(jì)和控制比較容易。但是由于在傳統(tǒng)的單片機(jī)設(shè)計(jì)系統(tǒng)中必須使用許多分立元件組成單片機(jī)的外圍電路,如鎖存器,譯碼器等都需要單獨(dú)的電路,因此整個(gè)系統(tǒng)顯得十分復(fù)雜,抗干擾性差,在運(yùn)行過(guò)程中容易死機(jī)或進(jìn)入死循環(huán),可靠性降低,而功耗費(fèi)用增高。方案三:采用可編程邏輯器件(FPGA)來(lái)完成該設(shè)計(jì),將所有器件

15、集成在一塊芯片上,大大減小了電子琴的體積,可靠性和精度都比較好。用VHDL編程實(shí)現(xiàn)時(shí)更加方便,而且易于進(jìn)行功能擴(kuò)展,并可調(diào)試仿真,制作時(shí)間大大縮短。綜合分析后我認(rèn)為,方案三采用FPGA的方法來(lái)實(shí)現(xiàn),不僅可以實(shí)現(xiàn)按鍵播放音樂(lè)和自動(dòng)播放音樂(lè)的要求,有較高的靈敏度和可靠性。并且原理方法和模塊結(jié)構(gòu)清晰,制作方案比較容易實(shí)現(xiàn),所以我采用方案三作為具體實(shí)現(xiàn)方案。2.2樂(lè)曲實(shí)現(xiàn)原理樂(lè)曲都是由一連串的音符組成,按照樂(lè)曲的樂(lè)譜依次輸出這些音符所對(duì)應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào)。為了準(zhǔn)確地演奏出一首樂(lè)曲,僅僅讓揚(yáng)聲器能夠發(fā)出聲音是遠(yuǎn)遠(yuǎn)不夠的,還必須準(zhǔn)確地控制樂(lè)曲的節(jié)奏,即每個(gè)音符的持續(xù)時(shí)間。由

16、此可見(jiàn),樂(lè)曲中每個(gè)音符的發(fā)音頻率以及音符持續(xù)的時(shí)間是樂(lè)曲能夠連續(xù)演奏的兩個(gè)關(guān)鍵因素。樂(lè)曲的12平均率規(guī)定:每2個(gè)八度音之間的頻率要相差1倍,比如簡(jiǎn)譜中的中音2與高音2。在2個(gè)八度音之間,又可分為12個(gè)半音。另外,音符A(簡(jiǎn)譜中的低音5)的頻率為392Hz,音符E到F之間、B到C之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音l至高音1之間每個(gè)音符的頻率。簡(jiǎn)譜音名與頻率對(duì)應(yīng)關(guān)系如表2-1所示:音名頻率/Hz音名頻率/Hz音名頻率/Hz低音1262中音1523高音11047低音2296中音2587高音21175低音3330中音3659高音31319低音4350中音4698高音41397低音539

17、2中音5784高音51568低音6440中音6880高音61760低音7494中音7988高音71976表2-1 簡(jiǎn)譜音名與頻率的對(duì)應(yīng)關(guān)系 使用一分頻器來(lái)產(chǎn)生各音符所需的頻率,但由于各音符對(duì)應(yīng)的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),所以必須將計(jì)算得到的分頻數(shù)四舍五入取整數(shù)。若分頻器時(shí)鐘頻率過(guò)低,則由于分頻系數(shù)過(guò)小,四舍五入取整數(shù)后的誤差較大;若時(shí)鐘頻率過(guò)高,雖然誤差變小,但分頻數(shù)將會(huì)變大。在實(shí)際的設(shè)計(jì)中應(yīng)綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的時(shí)鐘頻率。實(shí)際上,只要各個(gè)音符間的相對(duì)頻率關(guān)系不變,演奏出的樂(lè)曲聽(tīng)起來(lái)都不會(huì)走調(diào)。設(shè)計(jì)的音樂(lè)電子琴選取32MHZ的系統(tǒng)時(shí)鐘頻率。在數(shù)

18、控分頻器模塊,首先對(duì)時(shí)鐘頻率進(jìn)行4分頻,得到8MHZ的輸入頻率,然后再次分頻得到各音符的頻率。由于數(shù)控分頻器輸出的波形是脈寬極窄的脈沖波,為了更好的驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,在到達(dá)揚(yáng)聲器之前需要均衡占空比,從而生成各音符對(duì)應(yīng)頻率的對(duì)稱方波輸出。這個(gè)過(guò)程實(shí)際上進(jìn)行了一次二分頻,將脈沖展寬。因此,分頻系數(shù)的計(jì)算可以按照下面的方法進(jìn)行。以中音1為例,對(duì)應(yīng)的頻率值為523Hz,它的分頻系數(shù)應(yīng)該為: 至于其他音符,可由上式求出對(duì)應(yīng)的分頻系數(shù),這樣利用程序可以很輕松地得到相應(yīng)的樂(lè)聲。各音名對(duì)應(yīng)的分頻系數(shù)如表2-2所示:音名頻率/Hz分頻系數(shù)音名頻率/Hz分頻系數(shù)中音15237648高音110473820中音2578

19、6920高音211753404中音36596069高音313193032中音46985730高音413972863中音57845102高音515862522中音68804545高音617602272中音79884048高音719762024低音539210204低音64409090表2-2 各音名對(duì)應(yīng)的分頻系數(shù)音符的持續(xù)時(shí)間須根據(jù)樂(lè)曲的速度及每個(gè)音符的節(jié)拍數(shù)來(lái)確定。因此,要控制音符的音長(zhǎng),就必須知道樂(lè)曲的速度和每個(gè)音符所對(duì)應(yīng)的節(jié)拍數(shù)。如果將全音符的持續(xù)時(shí)間設(shè)為1s的話,那么一拍所應(yīng)該持續(xù)的時(shí)間為0.25秒,則只需要提供一個(gè)4HZ的時(shí)鐘頻率即可產(chǎn)生四分音符的時(shí)長(zhǎng)。至于音長(zhǎng)的控制,在自動(dòng)演奏模塊,

20、每個(gè)樂(lè)曲的音符是按地址存放的,播放樂(lè)曲時(shí)按4HZ的時(shí)鐘頻率依次讀取簡(jiǎn)譜,每個(gè)音符持續(xù)時(shí)間為0.25秒。如果樂(lè)譜中某個(gè)音符為三拍音長(zhǎng),那又該如何控制呢?其實(shí)只要在3個(gè)連續(xù)地址存放該音符,這時(shí)就會(huì)發(fā)三個(gè)0.25秒的音長(zhǎng),即持續(xù)了三拍的時(shí)間,通過(guò)這樣一個(gè)簡(jiǎn)單的操作就可以控制音長(zhǎng)了。2.3系統(tǒng)組成及工作原理2.3.1系統(tǒng)組成 整個(gè)系統(tǒng)由樂(lè)曲自動(dòng)演奏模塊、音調(diào)發(fā)生器模塊和數(shù)控分頻器模塊三個(gè)部分組成。樂(lè)曲自動(dòng)演奏模塊又包含了鍵盤(pán)的編碼,并且設(shè)置了一個(gè)自動(dòng)演奏/鍵盤(pán)輸入切換auto。樂(lè)曲自動(dòng)演奏模塊的作用是產(chǎn)生發(fā)聲控制輸入信號(hào)。音調(diào)發(fā)生器根據(jù)發(fā)聲控制輸入產(chǎn)生獲得音階的分頻預(yù)置值(即分頻系數(shù))。數(shù)控分頻器根據(jù)

21、分頻預(yù)置值對(duì)FPGA的基準(zhǔn)頻率進(jìn)行分頻,得到與各個(gè)音階對(duì)應(yīng)的頻率輸出。系統(tǒng)組成框圖如圖2-1所示。圖2-1系統(tǒng)組成框圖2.3.2系統(tǒng)工作原理系統(tǒng)的基準(zhǔn)時(shí)鐘脈沖為32MHz,所以在本設(shè)計(jì)中需要將其進(jìn)行分頻,以得到所需要的脈沖來(lái)發(fā)出相應(yīng)的音符。鍵盤(pán)輸入一共有9個(gè)按鍵,除了8個(gè)音符對(duì)應(yīng)的按鍵之外,還設(shè)置一個(gè)自動(dòng)演奏/鍵盤(pán)輸入切換auto,它不是一個(gè)單獨(dú)的模塊,它和其他按鍵一起包含在樂(lè)曲自動(dòng)演奏模塊中,作用相當(dāng)于一個(gè)開(kāi)關(guān)。當(dāng)auto=“0”時(shí),選擇自動(dòng)演奏音樂(lè)存儲(chǔ)器里面的樂(lè)曲,自動(dòng)演奏模塊以4Hz的頻率輸出8位發(fā)聲控制輸入信號(hào),再送入音調(diào)發(fā)生器。當(dāng)8位發(fā)聲控制輸入信號(hào)中的某一位為高電平時(shí),則對(duì)應(yīng)某一音

22、階的數(shù)值將在端口tone輸出,該數(shù)值即為該音階的分頻預(yù)置值,音調(diào)發(fā)生器還輸出音符顯示信號(hào)、高低音顯示信號(hào)。最后由數(shù)控分頻模塊按照音調(diào)發(fā)生器輸出的分頻預(yù)置值進(jìn)行分頻,得到存儲(chǔ)的樂(lè)曲的音符的頻率,之后由揚(yáng)聲器輸出對(duì)應(yīng)的聲調(diào)。auto=“1”時(shí),選擇鍵盤(pán)輸入的信號(hào),8個(gè)按鍵分別對(duì)應(yīng)8個(gè)音符,自動(dòng)演奏模塊將按鍵輸入轉(zhuǎn)化為8位發(fā)聲控制輸入信號(hào)送入音調(diào)發(fā)生器,最后通過(guò)數(shù)控分頻模塊得到按鍵對(duì)應(yīng)的音符的頻率,之后由揚(yáng)聲器輸出對(duì)應(yīng)的聲調(diào)。3系統(tǒng)模塊設(shè)計(jì)3.1頂層模塊的設(shè)計(jì)VHDL采用的是自頂向下的設(shè)計(jì)方式,頂層模塊由樂(lè)曲自動(dòng)演奏(automusic),音調(diào)發(fā)生器(tone)和數(shù)控分頻器(speaker)三個(gè)模塊

23、組成。其中樂(lè)曲自動(dòng)演奏部分(automusic)又包括了鍵盤(pán)編碼,還設(shè)置了一個(gè)自動(dòng)演奏/鍵盤(pán)輸入切換auto,即當(dāng)auto=“0”時(shí),選擇自動(dòng)演奏音樂(lè)存儲(chǔ)器里面的樂(lè)曲,auto=“1”時(shí),選擇由鍵盤(pán)輸入的信號(hào),再對(duì)其進(jìn)行編碼。兩種情況下輸出的都是八位二進(jìn)制數(shù),對(duì)應(yīng)音調(diào)發(fā)生器的輸入。圖3-1即是頂層模塊設(shè)計(jì)原理圖。圖3-1頂層模塊設(shè)計(jì)原理圖3.2樂(lè)曲自動(dòng)演奏模塊的設(shè)計(jì)為了實(shí)現(xiàn)電子琴的功能要求,需要設(shè)計(jì)一個(gè)自動(dòng)演奏模塊,該模塊的作用是產(chǎn)生8位發(fā)聲控制輸入index。當(dāng)auto為“0”或“1”時(shí)可以選擇自動(dòng)演奏或者鍵盤(pán)輸入,如果auto為“0”,則由存儲(chǔ)在此模塊中的8位二進(jìn)制數(shù)來(lái)作為發(fā)聲控制輸入in

24、dex,由此便可自動(dòng)演奏樂(lè)曲;當(dāng)auto為“1”時(shí),則由鍵盤(pán)的輸入轉(zhuǎn)化為8位2進(jìn)制數(shù)作為發(fā)聲控制輸入index。此模塊的VHDL語(yǔ)言中包括三個(gè)進(jìn)程,首先是對(duì)基準(zhǔn)脈沖進(jìn)行分頻得到4Hz的脈沖,作為第二個(gè)進(jìn)程的時(shí)鐘信號(hào),它的目的是控制每個(gè)音階之間的停頓時(shí)間,此處便是1/4=0.25s;第二個(gè)進(jìn)程完成自動(dòng)演奏部分樂(lè)曲的地址累加;第3個(gè)進(jìn)程是輸出存儲(chǔ)的自動(dòng)演奏的樂(lè)曲或鍵盤(pán)輸入的發(fā)聲控制輸入index。樂(lè)曲自動(dòng)演奏模塊如圖3-2所示。圖3-2樂(lè)曲自動(dòng)演奏模塊3.3音階發(fā)生器模塊的設(shè)計(jì)音階發(fā)生器的作用是產(chǎn)生獲得音階的分頻預(yù)置值。當(dāng)8位發(fā)聲控制輸入index中的某一位為高電平時(shí),則對(duì)應(yīng)某一音階的數(shù)值將以端口

25、tone輸出,作為獲得該音階的分頻預(yù)置值,該值作為數(shù)控分頻器的輸入,來(lái)對(duì)4MHz的脈沖進(jìn)行分頻,由此得到每個(gè)音階相應(yīng)的頻率,例如輸入index=,即對(duì)應(yīng)的按鍵是2,產(chǎn)生的分頻系數(shù)便是6920由code輸出對(duì)應(yīng)該音階簡(jiǎn)譜的顯示數(shù)碼;由high輸出指示音階高8度的顯示,高電平有效。音階發(fā)生器如圖3-3所示。圖3-3音階發(fā)生器模塊3.4數(shù)控分頻器模塊的設(shè)計(jì)數(shù)控分頻模塊的目的是對(duì)基準(zhǔn)脈沖分頻,得到0,1,2,3,4,5,6,7七個(gè)音符對(duì)應(yīng)頻率。該模塊的VHDL描述中包含了三個(gè)進(jìn)程。首先對(duì)32MHz的基準(zhǔn)脈沖進(jìn)行分頻得到8MHz的脈沖,然后按照tone1輸入的分頻系數(shù)對(duì)8MHz的脈沖再次分頻,得到的便是

26、所需要的頻率。而第三個(gè)進(jìn)程的作用是在音調(diào)輸出時(shí)再進(jìn)行二分頻,將脈沖展寬,以使揚(yáng)聲器有足夠功率發(fā)音。圖3-4數(shù)控分頻器模塊4程序設(shè)計(jì)4.1VHDL設(shè)計(jì)語(yǔ)言和ISE環(huán)境簡(jiǎn)介4.1.1VHDL語(yǔ)言簡(jiǎn)介VHDL是超高速集成電路硬件描述語(yǔ)言,是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。它出現(xiàn)于80年代后期,最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)的,是為了供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言 。VHDL主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中。目前,它在中國(guó)的應(yīng)用多數(shù)是用在FPGA/CPLD/EPLD的設(shè)計(jì)中,同時(shí)也被一些實(shí)力較為雄厚的單位用來(lái)設(shè)計(jì)ASIC。VHDL具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下

27、和基于庫(kù)的設(shè)計(jì)特點(diǎn)。其開(kāi)發(fā)流程:在頂層用方框圖或硬件語(yǔ)言對(duì)電路的行為進(jìn)行描述后,進(jìn)行系統(tǒng)仿真驗(yàn)證和糾錯(cuò)。再用邏輯綜合優(yōu)化工具生成具體的門(mén)級(jí)邏輯電路的網(wǎng)表。然后通過(guò)適配器將網(wǎng)表文件配置于指定的目標(biāo)器件,產(chǎn)生最終下載文件或配置文件。最后把適配后生成的下載或配置文件通過(guò)編程器或編程電纜下載到具體的FPGA/CPLD器件中去,以便進(jìn)行硬件調(diào)試和驗(yàn)證,而實(shí)現(xiàn)可編程的專用集成電路ASIC的設(shè)計(jì)。VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL系統(tǒng)設(shè)計(jì)與其他硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的

28、行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)言。強(qiáng)大的行為描述能力是避開(kāi)具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計(jì)大規(guī)模電子系統(tǒng)的重要保證。4.1.2 Xilinx ISE簡(jiǎn)介Xilinx 是最大的FPGA/CPLD 生產(chǎn)商之一,其設(shè)計(jì)開(kāi)發(fā)的軟件也不斷升級(jí)換代,已從Foundation系列發(fā)展到目前的ISE 13.x系列。ISE(Integrated System Configuration)是集成綜合環(huán)境的簡(jiǎn)稱,是Xilinx提供的一套工具集,其集成的設(shè)計(jì)工具可以完成整個(gè)FPGA/CPLD的開(kāi)發(fā)過(guò)程。ISE具有強(qiáng)大輔助功能,在編寫(xiě)代碼時(shí)可以使用編寫(xiě)向?qū)晌募埠湍K框架,也可使用

29、語(yǔ)言模板(Language Templates)幫助編寫(xiě)代碼。在圖形輸入時(shí)可以使用ECS的輔助項(xiàng)幫助設(shè)計(jì)原理圖。另外,ISE的 Core Generator和 LogiBLOX工具可以方便地生成 IP Core (IP核)與高效模塊為用戶所用,大大減少了設(shè)計(jì)者的工作量,提高了設(shè)計(jì)效率與質(zhì)量。 ISE 通過(guò)改進(jìn)綜合、實(shí)現(xiàn)等關(guān)鍵環(huán)節(jié)的優(yōu)化手段與方法,提高了設(shè)計(jì)的工作速度,減小了設(shè)計(jì)消耗的面積,使設(shè)計(jì)結(jié)果能更好地調(diào)動(dòng)芯片的內(nèi)部資源,工作更高效。 4.2頂層模塊的程序設(shè)計(jì)頂層模塊(top)是整個(gè)電子琴設(shè)計(jì)的核心,也是VHDL程序的主程序,其他三個(gè)子模塊的源程序都是作為子程序分別實(shí)現(xiàn)電子琴的某一功能,而

30、頂層模塊則通過(guò)調(diào)用子程序最終實(shí)現(xiàn)樂(lè)曲演奏的目的,奏出美妙的樂(lè)曲。利用VHDL語(yǔ)言COMPONENT將三個(gè)模塊組合起來(lái),其中3個(gè)模塊和頂層模塊的輸入輸出是一一對(duì)應(yīng)的,比如auto對(duì)應(yīng)handTOauto, tone0對(duì)應(yīng)tone2, spks對(duì)應(yīng)spkout等。設(shè)計(jì)時(shí)采用自頂而下的設(shè)計(jì)方法,其軟件流程圖如圖4-1所示。圖4-1頂層模塊軟件流程圖4.3樂(lè)曲自動(dòng)演奏模塊的程序設(shè)計(jì)該模塊的VHDL源程序主要由3個(gè)工作進(jìn)程組成,分別為PULSE0,MUSIC和COM1。PULSE0的作用是判斷自動(dòng)演奏(鍵盤(pán)輸入)的值0或(1),若為0則要將系統(tǒng)時(shí)鐘進(jìn)行8M的分頻,得到4Hz的信號(hào)clk2。如果產(chǎn)生了cl

31、k2,那么第二個(gè)進(jìn)程MUSIC就會(huì)根據(jù)clk2時(shí)鐘完成自動(dòng)演奏部分樂(lè)曲的地址累加。在第三個(gè)進(jìn)程中就根據(jù)地址輸出存儲(chǔ)的樂(lè)曲對(duì)應(yīng)的音符的8位發(fā)聲控制輸入index,如果在第一個(gè)進(jìn)程中判斷為鍵盤(pán)輸入,在此進(jìn)程中就將輸入按鍵對(duì)應(yīng)的音符轉(zhuǎn)化為8位發(fā)生控制輸入index。軟件流程圖如4-2所示。圖4-2樂(lè)曲自動(dòng)演奏模塊流程圖4.4音階發(fā)生器模塊的程序設(shè)計(jì)音階發(fā)生器模塊的作用是產(chǎn)生音階的分頻預(yù)置值。該模塊的唯一輸入信號(hào)INDEX對(duì)應(yīng)就是自動(dòng)模塊中最后的輸出INDEX0。音符顯示信號(hào)CODE,高低音顯示信號(hào)HIGH和音符分頻系數(shù)TONE都是根據(jù)音符輸入確定的。比如我們自定義INDEX第1位為高電平時(shí),它的分頻

32、系數(shù)則為6920,音符顯示信號(hào)為,此時(shí)高低音顯示0表示非高音。部分源程序如下: CASE INDEX IS WHEN=TONE0=6920;CODE=;HIGHTONE0=4048;CODE=;HIGHTONE0=8191;CODE=;HIGHNew Source.,選擇文件類型為T(mén)est Bench Waveform,鍵入文件名“Testautomusic”,單擊“Next”,在本步驟中可以將波形文件與automusic.vhd文件進(jìn)行關(guān)聯(lián),如圖5-1所示。繼續(xù)單擊“Next”直到完成。圖5-1波形與VHDL文件關(guān)聯(lián) 此時(shí),HDL Bencher程序啟動(dòng),如圖5-2所示,可以選擇哪一個(gè)信號(hào)是

33、時(shí)鐘信號(hào)并可以輸入所需的時(shí)序需求,系統(tǒng)時(shí)鐘信號(hào)為32MHz,但是由于限制只能選擇時(shí)鐘周期為32ns,因此仿真時(shí)時(shí)鐘信號(hào)為31.25MHz。圖5-2仿真時(shí)間參數(shù)設(shè)置 這時(shí)出現(xiàn)了如圖5-3所示的波形圖,可以單擊波形圖中的藍(lán)色方塊來(lái)設(shè)置波形電平的高低,并可以拉動(dòng)仿真時(shí)間線。此時(shí)設(shè)置Auto=“0”,選擇自動(dòng)演奏。圖5-3 HDL Bencher中輸入波形的設(shè)置(2)設(shè)計(jì)的仿真 單擊Sourcese 窗口中的 testbench,則在 Processes 窗口中顯示 Xilinx ISE Simulator 工具欄,擴(kuò)展開(kāi)后,右鍵單擊 Simulator Behavioral Model,選擇Prop

34、erties, 對(duì)Simulation Run Time 輸入 10000ns,單擊 OK 按鈕,如圖5-4所示。圖5-4設(shè)置Properties雙擊 Processes 窗口中的 Simulate Behavioral Model 對(duì)設(shè)計(jì)進(jìn)行仿真,在右方窗口彈出仿真結(jié)果的波形,如圖5-5所示。圖5-5仿真結(jié)果及示意(3)仿真結(jié)果分析按照設(shè)置輸入系統(tǒng)時(shí)鐘信號(hào)CLK為31.25MHz,自動(dòng)演奏AUTO設(shè)為0,鍵盤(pán)輸入信號(hào)INDEX2為0x00。從圖中可以看出,輸出INDEX0是程序中存儲(chǔ)的樂(lè)曲的音符。若將ATUO設(shè)為1,并設(shè)置相應(yīng)的鍵盤(pán)輸入INDEX2,進(jìn)行仿真如圖5-6所示,輸出INDEX0與

35、鍵盤(pán)輸入相同,符合設(shè)計(jì)要求。(由于輸入頻率太高,實(shí)驗(yàn)條件所限,如按源程序仿真將看不到輸出波形,因此將原脈沖的分頻點(diǎn)和改為4和8)圖5-6仿真結(jié)果示意5.2音調(diào)發(fā)生模塊仿真(1)創(chuàng)建Testbench波形源文件 新建一個(gè)Testbench波形源文件,并與tone.vhd文件關(guān)聯(lián),出現(xiàn)如圖5-7所示的波形圖。單擊波形圖中的藍(lán)色方塊來(lái)設(shè)置音符輸入信號(hào)INDEX電平的高低,設(shè)置音符輸入INDEX7:0從0x01到0x80。圖5-7 HDL Bencher中輸入波形的設(shè)置(2)設(shè)計(jì)的仿真 雙擊 Processes 窗口中的 Simulate Behavioral Model 對(duì)設(shè)計(jì)進(jìn)行仿真,在右方窗口彈

36、出仿真結(jié)果的波形,如圖5-8所示。圖5-8仿真結(jié)果及示意(3)仿真結(jié)果分析 由仿真結(jié)果圖可以看出,當(dāng)音符輸入信號(hào)INDEX7:0為時(shí),輸出分頻系數(shù)TONE0為7648,輸出音符顯示信號(hào)CODE6:0為,高低音顯示信號(hào)HIGN為0。并且隨著音符輸入信號(hào)INDEX7:0的改變,輸出信號(hào)按照程序設(shè)定改變,符合設(shè)計(jì)要求。5.3數(shù)控分頻模塊仿真(1)創(chuàng)建Testbench波形源文件新建一個(gè)Testbench波形源文件,并與speaker.vhd文件關(guān)聯(lián),出現(xiàn)如圖5-9所示的波形圖。系統(tǒng)時(shí)鐘信號(hào)為32MHz,但是由于仿真限制只能選擇時(shí)鐘周期為100ns,并且只能設(shè)置分頻系數(shù)為T(mén)ONE10:2047。圖5-

37、9 HDL Bencher中輸入波形的設(shè)置(2)設(shè)計(jì)的仿真 設(shè)置分頻系數(shù)為4,TONE1取值為3,雙擊 Processes 窗口中的 Simulate Behavioral Model 對(duì)設(shè)計(jì)進(jìn)行仿真,在右方窗口彈出仿真結(jié)果的波形,如圖5-10所示。圖5-10仿真結(jié)果及示意(3)仿真結(jié)果分析 由仿真結(jié)果圖可以看出,系統(tǒng)時(shí)鐘首先被4分頻,然后根據(jù)分頻系數(shù)再次分頻。此時(shí)分頻系數(shù)為4,進(jìn)行4分頻。最后進(jìn)行二分頻,將脈沖展寬,以使揚(yáng)聲器有足夠功率發(fā)音。圖中輸出SPKS的周期為CLK1的32倍,頻率是CLK1的1/32。5.4電子琴系統(tǒng)的仿真(1)創(chuàng)建Testbench波形源文件新建一個(gè)Testbenc

38、h波形源文件,并與top.vhd文件關(guān)聯(lián),系統(tǒng)時(shí)鐘信號(hào)為32MHz,但是由于限制只能選擇時(shí)鐘周期為32ns,因此仿真時(shí)時(shí)鐘信號(hào)為31.25MHz。這時(shí)出現(xiàn)了如圖5-11所示的波形圖,可以單擊波形圖中的藍(lán)色方塊來(lái)設(shè)置波形電平的高低,并可以拉動(dòng)仿真時(shí)間線。此時(shí)設(shè)置Auto=“1”,選擇鍵盤(pán)輸入。再設(shè)置鍵盤(pán)輸入INDEX17:0為。圖5-11 HDL Bencher中輸入波形的設(shè)置(2)設(shè)計(jì)的仿真 單擊Sourcese 窗口中的 testbench,則在 Processes 窗口中顯示 Xilinx ISE Simulator 工具欄,擴(kuò)展開(kāi)后,右鍵單擊 Simulator Behavioral M

39、odel,選擇Properties, 對(duì)Simulation Run Time 輸入 900us,單擊 OK 按鈕,如圖5-12所示。圖5-12設(shè)置Properties雙擊 Processes 窗口中的 Simulate Behavioral Model 對(duì)設(shè)計(jì)進(jìn)行仿真,在右方窗口彈出仿真結(jié)果的波形,如圖5-13所示。圖5-13仿真結(jié)果及示意(3)仿真結(jié)果分析按照設(shè)置輸入系統(tǒng)時(shí)鐘信號(hào)CLK為31.25MHz,AUTO設(shè)為1,鍵盤(pán)輸入信號(hào)INDEX1為。從圖中可以看出,輸出音符顯示信號(hào)CODE為,表示為中音5,高低音顯示信號(hào)為0,表示為非高音??梢钥闯鲚敵鲆纛l信號(hào)周期為s,因此可以計(jì)算出音頻信號(hào)

40、頻率約768Hz,與中音5的頻率784Hz相差不大,設(shè)計(jì)符合要求。當(dāng)AUTO設(shè)置為1時(shí),可以按照程序存儲(chǔ)的曲目以4Hz為節(jié)拍輸出音頻信號(hào),也符合要求。5.5設(shè)計(jì)的實(shí)現(xiàn)(1)在工程的 Sources 窗口,Sources for 選擇 Synthesis/Implementation,并單擊工程的頂層文件top.vhd。(2)在在工程的資源操作窗(Processes),雙擊 Implement Design。(3)當(dāng)實(shí)現(xiàn)設(shè)計(jì)(Implement Design)運(yùn)行的過(guò)程中,展開(kāi)實(shí)現(xiàn)(Implement Design)的步驟,會(huì)看到實(shí)現(xiàn)過(guò)程中,首先是進(jìn)行綜合(Synthesis),然后才依次完成實(shí)

41、現(xiàn)的步驟。當(dāng)完成相關(guān)操作后,在每個(gè)操作步驟前會(huì)顯示一個(gè)小圖標(biāo),表示該步驟的完成情況。(4)當(dāng)完成這些操作步驟后,生成相應(yīng)的操作報(bào)告供查看。實(shí)現(xiàn)操作完成后,再看 design utilization 的 Design Summary 窗口,如圖5-14所示。此窗口中的信息包括資源利用率,在調(diào)試的過(guò)中很重要。圖5-14 Design Summary 窗口5.6查看RTL視圖在綜合之后,使用RTL視圖工具,可以讓設(shè)計(jì)者非常清楚的看到設(shè)計(jì)的寄存器級(jí)的原理圖,從而使設(shè)計(jì)者能將HDL代碼和實(shí)際電路有效的聯(lián)系起來(lái),更容易發(fā)現(xiàn)問(wèn)題和解決問(wèn)題,提高設(shè)計(jì)效率。首先選中要查看RTL視圖的文件top.vhd,然后在P

42、rocess for: top - Behavioral中Synthesize-XST圖標(biāo)的子菜單中單擊View RTL Schematic圖標(biāo)可以查看RTL視圖。圖5-15頂層模塊RTL視圖圖5-16頂層模塊RTL視圖圖5-17樂(lè)曲自動(dòng)演奏模塊RTL視圖圖5-18數(shù)控分頻器模塊RTL視圖圖5-19 音階發(fā)生器模塊RTL視圖(上、下)5.7查看綜合報(bào)告截取部分綜合報(bào)告如下:=* HDL Synthesis *=Performing bidirectional port resolution.INFO:Xst:2679 - Register in unit has a constant valu

43、e of 00000 during circuit operation. The register is replaced by logic.Synthesizing Unit . Related source file is C:/Xilinx91i/Test/top/automusic.vhd.WARNING:Xst:647 - Input is never used.Unit synthesized.Synthesizing Unit . Related source file is C:/Xilinx91i/Test/top/tone.vhd.Unit synthesized.Synt

44、hesizing Unit . Related source file is C:/Xilinx91i/Test/top/speaker.vhd.WARNING:Xst - Property use_dsp48 is not applicable for this technology. Found 1-bit register for signal . Found 4-bit register for signal . Found 4-bit adder for signal created at line 16. Found 15-bit up counter for signal . Found 1-bit register for signal . Found 1-bit register for signal . Found 15-bit comparator less for signal created at line 27. Found 1-bit register for signal . Summary:inferred 1 Counter(s).inferred 8 D-type flip-flop(

溫馨提示

  • 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ù)網(wǎng)僅提供信息存儲(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)論