版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計課程設(shè)計任務(wù)書學(xué)生姓名:專業(yè)班級:指導(dǎo)教師:工作單位:信息工程學(xué)院題目:電子琴的設(shè)計課程設(shè)計目的: FPGA 原理與應(yīng)用課程設(shè)計的目的是為了讓學(xué)生熟悉基于VHDL語言進行FPGA 開發(fā)的全流程,并且利用FPGA 設(shè)計進行專業(yè)課程理論知識的再現(xiàn),讓學(xué)生體會EDA 技術(shù)的強大功能,為今后使用FPGA 進行電子設(shè)計奠定基礎(chǔ)。課程設(shè)計內(nèi)容和要求設(shè)計內(nèi)容:( 1)設(shè)計一個八音電子琴。( 2)由鍵盤輸入控制音響,同時可自動演奏樂曲。( 3)用戶可以將自己編制的樂曲存入電子琴,演奏時可選擇鍵盤輸入樂曲或者已存入的樂曲。要求每個學(xué)生單獨完成課程設(shè)計內(nèi)容,并寫出課程設(shè)計說明書、
2、說明書應(yīng)該包括所涉及到的理論部分和充足的實驗結(jié)果,給出程序清單,最后通過課程設(shè)計答辯。時間安排:1234序號階段內(nèi)容所需時間方案設(shè)計1 天軟件設(shè)計2 天系統(tǒng)調(diào)試1 天答辯1 天合計5 天指導(dǎo)教師簽名:年月日I武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計系主任(或責(zé)任教師)簽名:年月日II武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計目錄摘 要.1Abstract.21設(shè)計意義和要求 .31.1設(shè)計意義 .31.2功能要求 .32方案論證及原理分析 .42.1實現(xiàn)方案比較 .42.2樂曲實現(xiàn)原理 .42.3系統(tǒng)組成及工作原理 .63系統(tǒng)模塊設(shè)計 .83.1頂層模塊的設(shè)計 .83.2樂曲自動演奏模塊的設(shè)計 .83.3音
3、階發(fā)生器模塊的設(shè)計 .93.4數(shù)控分頻器模塊的設(shè)計 .94程序設(shè)計 .114.1VHDL設(shè)計語言和 ISE 環(huán)境簡介 .114.2頂層模塊的程序設(shè)計 .124.3樂曲自動演奏模塊的程序設(shè)計 .134.4音階發(fā)生器模塊的程序設(shè)計 .134.5數(shù)控分頻模塊的程序設(shè)計 .145設(shè)計的仿真與實現(xiàn) .155.1樂曲自動演奏模塊仿真 .155.2音調(diào)發(fā)生模塊仿真 .185.3數(shù)控分頻模塊仿真 .195.4電子琴系統(tǒng)的仿真 .205.5設(shè)計的實現(xiàn) .225.6查看 RTL視圖 .235.7查看綜合報告 .256心得體會 .317參考文獻 .328附錄 .33III武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計摘 要隨著
4、基于 FPGA的 EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大與深入, EDA技術(shù)在電子信息、通信、自動控制用計算機等領(lǐng)域的重要性日益突出。 EDA技術(shù)就是以計算機為工具,設(shè)計者在 EDA軟件平臺上,用硬件描述語言 HDL完成設(shè)計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。利用 EDA工具,電子設(shè)計師可以從概念、算法、協(xié)議等開始設(shè)計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產(chǎn)品從電路設(shè)計、性能分析到設(shè)計出 IC 版圖或PCB版圖的整個過程的計算機上自動處理完成。此次設(shè)計主要是基于 VHDL文本輸入法設(shè)計樂
5、曲演奏電路, 運用 VHDL語言對簡易電子琴的各個模塊進行設(shè)計,并使用 EDA工具對各模塊進行仿真驗證。該系統(tǒng)基于計算機中時鐘分頻器的原理,采用自頂向下的設(shè)計方法來實現(xiàn),通過按鍵輸入來控制音響或者自動演奏已存入的歌曲。系統(tǒng)由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三個部分組成。選擇手動彈奏模式按鍵時,按下音符鍵后就會選通相應(yīng)的頻率輸出;選擇自動演奏模式按鍵時,儲存器會將編寫好的音符信息依次取出,去選通各個對應(yīng)的頻率輸出,實現(xiàn)自動演奏。系統(tǒng)實現(xiàn)是用硬件描述語言VHDL按模塊化方式進行設(shè)計,然后進行編程、時序仿真、電路功能驗證,奏出美妙的樂曲(當然由于條件限制,暫不進行功能驗證,只進行編程和時
6、序仿真) 。關(guān)鍵詞: EDA,VHDL,電子琴,自動演奏1武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計AbstractWith the expansion and further FPGA-based EDA technology development and applications, the importance of EDA technology in the field of electronic information, communication, computer and other automatic control have become increasingly prominent
7、. 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 done by computer logic compilation, simplification, segmentation, integration, optimization, placement, routing and simulation, until
8、 for specific target chip adapter compilation, mapping and logic programming download work.Use of EDA tools, electronic designers from concept, algorithms, protocols, 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
9、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 based on VHDL text input music performance circuit design, each module using VHDL language of simple flower design, and the use of EDA to
10、ols 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 input to control the sound or song to automatically play has been deposited. System from automatically playing music module, tone generato
11、r 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; Select Auto Play mode button, the reservoir will be removed in order to write good music information, each corresponding to the freque
12、ncy of the strobe output, automatic playing. System implementation is hardware description language VHDL by a modular approach to design, and then programming, timing simulation, circuit functional verification, play wonderful music (of course, due to constraints, they will not perform functional ve
13、rification, and timing simulation program only) .Key words: EDA, VHDL, electronic organ, automatic play2武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計1 設(shè)計意義和要求1.1 設(shè)計意義電子琴作為音樂與科技的產(chǎn)物,在電子化和信息化的時代,為音樂的大眾化做出了很大的貢獻,歌曲的制作大多數(shù)都要由電子琴來完成,然后通過媒介流傳開來,電視劇和電影的插曲、電視節(jié)目音效、甚至手機鈴聲,都很可能包含電子琴的身影。電子琴是數(shù)字電路中的一個典型應(yīng)用。然而在實際的硬件設(shè)計中用到的器件非常多,連線比較復(fù)雜,同時會產(chǎn)生比較大的延
14、時,從而造成測量誤差較大,可靠性不好。以 EDA 工具作為開發(fā)手段,運用 VHDL 硬件描述語言可以使使整個系統(tǒng)大大簡化,提高了電子琴整體的性能和可靠性。1.2 功能要求1)設(shè)計一個八音電子琴;2)由鍵盤輸入控制音響,同時可自動演奏樂曲;3)用戶可以將自己編制的樂曲存入電子琴,演奏時可選擇鍵盤輸入樂曲或者已存入的樂曲。3武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計2 方案論證及原理分析2.1 實現(xiàn)方案比較方案一:采用數(shù)字邏輯電路制作,用IC 拼湊焊接實現(xiàn)。其特點是直接用現(xiàn)成的IC組合而成,簡單方便, 但本系統(tǒng)需用到許多分頻器,這就使得需要用到相當多的 IC,從而造成了體積過于龐大,而且連線也會比較復(fù)雜。
15、方案二: 由單片機來完成設(shè)計??捎脝纹瑱C控制鍵盤的輸入,以及產(chǎn)生相應(yīng)的頻率信號作為輸出。目前,單片機的功能已比較強大,集成度日益增高且其設(shè)計和控制比較容易。但是由于在傳統(tǒng)的單片機設(shè)計系統(tǒng)中必須使用許多分立元件組成單片機的外圍電路,如鎖存器,譯碼器等都需要單獨的電路, 因此整個系統(tǒng)顯得十分復(fù)雜, 抗干擾性差,在運行過程中容易死機或進入死循環(huán),可靠性降低,而功耗費用增高。方案三:采用可編程邏輯器件( FPGA)來完成該設(shè)計,將所有器件集成在一塊芯片上,大大減小了電子琴的體積,可靠性和精度都比較好。用 VHDL編程實現(xiàn)時更加方便,而且易于進行功能擴展,并可調(diào)試仿真,制作時間大大縮短。綜合分析后我認為
16、,方案三采用 FPGA的方法來實現(xiàn),不僅可以實現(xiàn)按鍵播放音樂和自動播放音樂的要求,有較高的靈敏度和可靠性。并且原理方法和模塊結(jié)構(gòu)清晰,制作方案比較容易實現(xiàn),所以我采用方案三作為具體實現(xiàn)方案。2.2 樂曲實現(xiàn)原理樂曲都是由一連串的音符組成,按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚聲器上連續(xù)地發(fā)出各個音符的音調(diào)。為了準確地演奏出一首樂曲,僅僅讓揚聲器能夠發(fā)出聲音是遠遠不夠的,還必須準確地控制樂曲的節(jié)奏,即每個音符的持續(xù)時間。由此可見,樂曲中每個音符的發(fā)音頻率以及音符持續(xù)的時間是樂曲能夠連續(xù)演奏的兩個關(guān)鍵因素。樂曲的 12 平均率規(guī)定:每 2 個八度音之間的頻率要相差 1 倍,比如簡譜
17、中的中音 2 與高音 2。在 2 個八度音之間,又可分為 12 個半音。另外,音符 A( 簡譜中的低音 5)的頻率為 392Hz,音符 E 到 F 之間、 B 到 C 之間為半音,其余為全音。由此可以計算出簡譜中從低音 l 至高音 1 之間每個音符的頻率。簡譜音名與頻率對應(yīng)關(guān)系如表2-1 所示:4武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計音名頻率 /Hz音名頻率 /Hz音名頻率 /Hz低音 1262中音 1523高音 11047低音 2296中音 2587高音 21175低音 3330中音 3659高音 31319低音 4350中音 4698高音 41397低音 5392中音 5784高音 51568
18、低音 6440中音 6880高音 61760低音 7494中音 7988高音 71976表 2-1簡譜音名與頻率的對應(yīng)關(guān)系使用一分頻器來產(chǎn)生各音符所需的頻率,但由于各音符對應(yīng)的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),所以必須將計算得到的分頻數(shù)四舍五入取整數(shù)。若分頻器時鐘頻率過低,則由于分頻系數(shù)過小,四舍五入取整數(shù)后的誤差較大;若時鐘頻率過高,雖然誤差變小,但分頻數(shù)將會變大。在實際的設(shè)計中應(yīng)綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的時鐘頻率。實際上,只要各個音符間的相對頻率關(guān)系不變,演奏出的樂曲聽起來都不會走調(diào)。設(shè)計的音樂電子琴選取 32MHZ 的系統(tǒng)時鐘頻率。在數(shù)控分頻器模塊,
19、首先對時鐘頻率進行 4 分頻,得到 8MHZ 的輸入頻率, 然后再次分頻得到各音符的頻率。 由于數(shù)控分頻器輸出的波形是脈寬極窄的脈沖波,為了更好的驅(qū)動揚聲器發(fā)聲,在到達揚聲器之前需要均衡占空比,從而生成各音符對應(yīng)頻率的對稱方波輸出。這個過程實際上進行了一次二分頻,將脈沖展寬。因此,分頻系數(shù)的計算可以按照下面的方法進行。以中音1 為例,對應(yīng)的頻率值為523Hz,它的分頻系數(shù)應(yīng)該為:4MHZ4 1065235237648至于其他音符,可由上式求出對應(yīng)的分頻系數(shù),這樣利用程序可以很輕松地得到相應(yīng)的樂聲。各音名對應(yīng)的分頻系數(shù)如表2-2 所示:5武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計音名頻率 /Hz分頻系數(shù)
20、音名頻率 /Hz分頻系數(shù)中音 15237648高音 110473820中音 25786920高音 211753404中音 36596069高音 313193032中音 46985730高音 413972863中音 57845102高音 515862522中音 68804545高音 617602272中音 79884048高音 719762024低音 539210204低音 64409090表 2-2 各音名對應(yīng)的分頻系數(shù)音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。因此,要控制音符的音長,就必須知道樂曲的速度和每個音符所對應(yīng)的節(jié)拍數(shù)。如果將全音符的持續(xù)時間設(shè)為 1s 的話,那么一拍所
21、應(yīng)該持續(xù)的時間為0.25 秒,則只需要提供一個4HZ 的時鐘頻率即可產(chǎn)生四分音符的時長。至于音長的控制,在自動演奏模塊,每個樂曲的音符是按地址存放的,播放樂曲時按 4HZ 的時鐘頻率依次讀取簡譜,每個音符持續(xù)時間為0.25 秒。如果樂譜中某個音符為三拍音長,那又該如何控制呢?其實只要在3 個連續(xù)地址存放該音符,這時就會發(fā)三個 0.25 秒的音長,即持續(xù)了三拍的時間,通過這樣一個簡單的操作就可以控制音長了。2.3 系統(tǒng)組成及工作原理2.3.1 系統(tǒng)組成整個系統(tǒng)由樂曲自動演奏模塊、音調(diào)發(fā)生器模塊和數(shù)控分頻器模塊三個部分組成。樂曲自動演奏模塊又包含了鍵盤的編碼,并且設(shè)置了一個自動演奏/鍵盤輸入切換
22、auto。樂曲自動演奏模塊的作用是產(chǎn)生發(fā)聲控制輸入信號。音調(diào)發(fā)生器根據(jù)發(fā)聲控制輸入產(chǎn)生獲得音階的分頻預(yù)置值(即分頻系數(shù)) 。數(shù)控分頻器根據(jù)分頻預(yù)置值對FPGA 的基準頻率進行分頻,得到與各個音階對應(yīng)的頻率輸出。系統(tǒng)組成框圖如圖2-1 所示。6武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計32MHz系數(shù)控分頻統(tǒng)時鐘器自動演奏 / 按鍵輸入選擇樂曲自動音調(diào)發(fā)生演奏器鍵盤 7:0揚聲器音符顯示高低音顯示圖 2-1 系統(tǒng)組成框圖2.3.2 系統(tǒng)工作原理系統(tǒng)的基準時鐘脈沖為32MHz ,所以在本設(shè)計中需要將其進行分頻,以得到所需要的脈沖來發(fā)出相應(yīng)的音符。 鍵盤輸入一共有 9 個按鍵,除了 8 個音符對應(yīng)的按鍵之外,
23、還設(shè)置一個自動演奏 /鍵盤輸入切換 auto,它不是一個單獨的模塊, 它和其他按鍵一起包含在樂曲自動演奏模塊中,作用相當于一個開關(guān)。當 auto=“0”時,選擇自動演奏音樂存儲器里面的樂曲,自動演奏模塊以4Hz 的頻率輸出 8 位發(fā)聲控制輸入信號,再送入音調(diào)發(fā)生器。當8 位發(fā)聲控制輸入信號中的某一位為高電平時, 則對應(yīng)某一音階的數(shù)值將在端口 tone 輸出,該數(shù)值即為該音階的分頻預(yù)置值,音調(diào)發(fā)生器還輸出音符顯示信號、高低音顯示信號。最后由數(shù)控分頻模塊按照音調(diào)發(fā)生器輸出的分頻預(yù)置值進行分頻,得到存儲的樂曲的音符的頻率,之后由揚聲器輸出對應(yīng)的聲調(diào)。auto=“ 1”時,選擇鍵盤輸入的信號,8 個按
24、鍵分別對應(yīng)8 個音符,自動演奏模塊將按鍵輸入轉(zhuǎn)化為8 位發(fā)聲控制輸入信號送入音調(diào)發(fā)生器,最后通過數(shù)控分頻模塊得到按鍵對應(yīng)的音符的頻率,之后由揚聲器輸出對應(yīng)的聲調(diào)。7武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計3 系統(tǒng)模塊設(shè)計3.1 頂層模塊的設(shè)計VHDL采用的是自頂向下的設(shè)計方式,頂層模塊由樂曲自動演奏(automusic),音調(diào)發(fā)生器( tone)和數(shù)控分頻器(speaker)三個模塊組成。其中樂曲自動演奏部分(automusic)又包括了鍵盤編碼, 還設(shè)置了一個自動演奏 /鍵盤輸入切換 auto,即當 auto=“0”時,選擇自動演奏音樂存儲器里面的樂曲,auto=“1”時,選擇由鍵盤輸入的信號,再
25、對其進行編碼。 兩種情況下輸出的都是八位二進制數(shù),對應(yīng)音調(diào)發(fā)生器的輸入。 圖 3-1即是頂層模塊設(shè)計原理圖。圖 3-1 頂層模塊設(shè)計原理圖3.2 樂曲自動演奏模塊的設(shè)計為了實現(xiàn)電子琴的功能要求,需要設(shè)計一個自動演奏模塊,該模塊的作用是產(chǎn)生8位發(fā)聲控制輸入 index。當 auto 為“ 0”或“ 1”時可以選擇自動演奏或者鍵盤輸入,如果 auto 為“ 0”,則由存儲在此模塊中的 8 位二進制數(shù)來作為發(fā)聲控制輸入 index,由此便可自動演奏樂曲;當 auto 為“ 1”時,則由鍵盤的輸入轉(zhuǎn)化為 8 位 2 進制數(shù)作為發(fā)聲控制輸入 index。此模塊的 VHDL 語言中包括三個進程,首先是對基
26、準脈沖進行分頻得到 4Hz 的脈沖,作為第二個進程的時鐘信號, 它的目的是控制每個音階之間的停頓時間,此處便是 1/4=0.25s;第二個進程完成自動演奏部分樂曲的地址累加;第 3 個進程是輸出8武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計存儲的自動演奏的樂曲或鍵盤輸入的發(fā)聲控制輸入index。樂曲自動演奏模塊如圖3-2所示。圖 3-2 樂曲自動演奏模塊3.3 音階發(fā)生器模塊的設(shè)計音階發(fā)生器的作用是產(chǎn)生獲得音階的分頻預(yù)置值。當8 位發(fā)聲控制輸入index 中的某一位為高電平時, 則對應(yīng)某一音階的數(shù)值將以端口tone 輸出,作為獲得該音階的分頻預(yù)置值,該值作為數(shù)控分頻器的輸入,來對4MHz 的脈沖進行分頻
27、,由此得到每個音階相應(yīng)的頻率,例如輸入 index=00000010,即對應(yīng)的按鍵是 2,產(chǎn)生的分頻系數(shù)便是6920由 code 輸出對應(yīng)該音階簡譜的顯示數(shù)碼;由high 輸出指示音階高8 度的顯示,高電平有效。音階發(fā)生器如圖3-3 所示。圖 3-3 音階發(fā)生器模塊3.4 數(shù)控分頻器模塊的設(shè)計數(shù)控分頻模塊的目的是對基準脈沖分頻,得到 0,1,2,3,4,5,6,7七個音符對應(yīng)頻率。 該模塊的 VHDL 描述中包含了三個進程。首先對32MHz 的基準脈沖進行分頻得到8MHz9武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計的脈沖,然后按照tone1 輸入的分頻系數(shù)對8MHz 的脈沖再次分頻,得到的便是所需要的
28、頻率。而第三個進程的作用是在音調(diào)輸出時再進行二分頻,將脈沖展寬,以使揚聲器有足夠功率發(fā)音。圖 3-4 數(shù)控分頻器模塊10武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計4 程序設(shè)計4.1VHDL 設(shè)計語言和 ISE 環(huán)境簡介4.1.1VHDL 語言簡介VHDL 是超高速集成電路硬件描述語言,是一種用于電路設(shè)計的高級語言。它出現(xiàn)于 80 年代后期,最初是由美國國防部開發(fā)出來的,是為了供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。 VHDL 主要是應(yīng)用在數(shù)字電路的設(shè)計中。目前,它在中國的應(yīng)用多數(shù)是用在 FPGA/CPLD/EPLD 的設(shè)計中,同時也被一些實力較為雄厚的單位用來設(shè)計 AS
29、IC 。VHDL 具有多層次描述系統(tǒng)硬件功能的能力,支持自頂向下和基于庫的設(shè)計特點。其開發(fā)流程:在頂層用方框圖或硬件語言對電路的行為進行描述后,進行系統(tǒng)仿真驗證和糾錯。再用邏輯綜合優(yōu)化工具生成具體的門級邏輯電路的網(wǎng)表。然后通過適配器將網(wǎng)表文件配置于指定的目標器件,產(chǎn)生最終下載文件或配置文件。最后把適配后生成的下載或配置文件通過編程器或編程電纜下載到具體的FPGA/CPLD 器件中去,以便進行硬件調(diào)試和驗證,而實現(xiàn)可編程的專用集成電路ASIC 的設(shè)計。VHDL 主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外, VHDL 的語言形式和描述風(fēng)格與句法是十分類似于一般的
30、計算機高級語言。VHDL 系統(tǒng)設(shè)計與其他硬件描述語言相比,VHDL 具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。4.1.2 Xilinx ISE 簡介Xilinx是最大的 FPGA/CPLD 生產(chǎn)商之一,其設(shè)計開發(fā)的軟件也不斷升級換代,已從 Foundation 系列發(fā)展到目前的 ISE 13.x 系列。 ISE( Integrated System Configuration)是集成綜合環(huán)境的簡稱, 是 Xilinx 提供的一套工具集, 其集成的設(shè)計工具可以完成整個FPGA/C
31、PLD 的開發(fā)過程。ISE 具有強大輔助功能,在編寫代碼時可以使用編寫向?qū)晌募埠湍K框架,11武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計也可使用語言模板( Language Templates)幫助編寫代碼。在圖形輸入時可以使用ECS的輔助項幫助設(shè)計原理圖。 另外, ISE 的 Core Generator和 LogiBLOX 工具可以方便地生成 IP Core (IP 核)與高效模塊為用戶所用,大大減少了設(shè)計者的工作量,提高了設(shè)計效率與質(zhì)量。ISE 通過改進綜合、實現(xiàn)等關(guān)鍵環(huán)節(jié)的優(yōu)化手段與方法,提高了設(shè)計的工作速度,減小了設(shè)計消耗的面積,使設(shè)計結(jié)果能更好地調(diào)動芯片的內(nèi)部資源,工作更高效。4.2
32、 頂層模塊的程序設(shè)計頂層模塊( top)是整個電子琴設(shè)計的核心,也是VHDL 程序的主程序,其他三個子模塊的源程序都是作為子程序分別實現(xiàn)電子琴的某一功能,而頂層模塊則通過調(diào)用子程序最終實現(xiàn)樂曲演奏的目的,奏出美妙的樂曲。利用VHDL 語言 COMPONENT 將三個模塊組合起來,其中3 個模塊和頂層模塊的輸入輸出是一一對應(yīng)的,比如auto 對應(yīng)handTOauto, tone0對應(yīng) tone2, spks對應(yīng) spkout 等。設(shè)計時采用自頂而下的設(shè)計方法,其軟件流程圖如圖4-1 所示。進入32M 時鐘是自動演奏樂曲存儲否鍵盤輸入音符顯示和高數(shù)控分頻低音顯示音調(diào)發(fā)聲圖 4-1 頂層模塊軟件流程
33、圖12武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計4.3 樂曲自動演奏模塊的程序設(shè)計該模塊的VHDL源程序主要由3 個工作進程組成,分別為PULSE0,MUSIC 和COM1。 PULSE0 的作用是判斷自動演奏(鍵盤輸入)的值0 或( 1),若為 0 則要將系統(tǒng)時鐘進行 8M 的分頻,得到 4Hz 的信號 clk2。如果產(chǎn)生了 clk2,那么第二個進程 MUSIC就會根據(jù) clk2 時鐘完成自動演奏部分樂曲的地址累加。在第三個進程中就根據(jù)地址輸出存儲的樂曲對應(yīng)的音符的8 位發(fā)聲控制輸入index,如果在第一個進程中判斷為鍵盤輸入,在此進程中就將輸入按鍵對應(yīng)的音符轉(zhuǎn)化為8 位發(fā)生控制輸入index。軟件
34、流程圖如 4-2 所示。進入32M 時鐘是分頻產(chǎn)生自動演奏clk2否鍵盤輸入地址自動累加讀出樂曲對應(yīng)的音符輸出 8位發(fā)聲控制圖 4-2 樂曲自動演奏模塊流程圖4.4 音階發(fā)生器模塊的程序設(shè)計音階發(fā)生器模塊的作用是產(chǎn)生音階的分頻預(yù)置值。該模塊的唯一輸入信號INDEX對應(yīng)就是自動模塊中最后的輸出INDEX0 。音符顯示信號 CODE,高低音顯示信號HIGH和音符分頻系數(shù)TONE 都是根據(jù)音符輸入確定的。比如我們自定義INDEX 第 1 位為高電平時,它的分頻系數(shù)則為6920,音符顯示信號為0010010,此時高低音顯示0 表示非高音。部分源程序如下:13武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計CASE
35、INDEX ISWHEN00000010=TONE0=6920;CODE=0010010;HIGHTONE0=4048;CODE=0001111;HIGHTONE0=8191;CODE=0000001;HIGHNew Source., 選擇文件類型為 Test Bench Waveform,鍵入文件名“ Testautomusic”,單擊“ Next”, 在本步驟中可以將波形文件與 automusic.vhd 文件進行關(guān)聯(lián),如圖 5-1 所示。繼續(xù)單擊“ Next”直到完成。圖 5-1 波形與 VHDL 文件關(guān)聯(lián)此時, HDL Bencher 程序啟動,如圖 5-2 所示,可以選擇哪一個信號是
36、時鐘信號并可以輸入所需的時序需求,系統(tǒng)時鐘信號為 32MHz,但是由于限制只能選擇時鐘周期為32ns,因此仿真時時鐘信號為 31.25MHz。圖 5-2 仿真時間參數(shù)設(shè)置15武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計這時出現(xiàn)了如圖5-3 所示的波形圖,可以單擊波形圖中的藍色方塊來設(shè)置波形電平的高低,并可以拉動仿真時間線。此時設(shè)置Auto=“ 0”,選擇自動演奏。圖 5-3 HDL Bencher 中輸入波形的設(shè)置(2)設(shè)計的仿真單 擊 Sourcese 窗口 中的testbench,則 在Processes 窗口 中顯 示XilinxISESimulator 工具欄,擴展開后,右鍵單擊 Simulat
37、or Behavioral Model, 選擇 Properties, 對 Simulation Run Time 輸入 10000ns,單擊 OK 按鈕 , 如圖 5-4 所示。圖 5-4 設(shè)置 Properties16武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計雙擊 Processes窗口中的 Simulate Behavioral Model 對設(shè)計進行仿真, 在右方窗口彈出仿真結(jié)果的波形,如圖 5-5 所示。圖 5-5 仿真結(jié)果及示意(3)仿真結(jié)果分析按照設(shè)置輸入系統(tǒng)時鐘信號CLK 為 31.25MHz,自動演奏 AUTO 設(shè)為 0,鍵盤輸入信號 INDEX2 為 0x00。從圖中可以看出,輸出
38、INDEX0 是程序中存儲的樂曲的音符。若將 ATUO 設(shè)為 1,并設(shè)置相應(yīng)的鍵盤輸入INDEX2 ,進行仿真如圖5-6 所示,輸出INDEX0與鍵盤輸入相同,符合設(shè)計要求。 (由于輸入頻率太高,實驗條件所限,如按源程序仿真將看不到輸出波形, 因此將原脈沖的分頻點4000000 和 8000000 改為 4 和 8)圖 5-6 仿真結(jié)果示意17武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計5.2 音調(diào)發(fā)生模塊仿真(1)創(chuàng)建 Testbench波形源文件新建一個 Testbench波形源文件,并與 tone.vhd 文件關(guān)聯(lián),出現(xiàn)如圖 5-7 所示的波形圖。單擊波形圖中的藍色方塊來設(shè)置音符輸入信號 INDE
39、X電平的高低,設(shè)置音符輸入INDEX7:0 從 0x01 到 0x80。圖 5-7 HDL Bencher 中輸入波形的設(shè)置(2)設(shè)計的仿真雙擊 Processes 窗口中的 Simulate Behavioral Model 對設(shè)計進行仿真, 在右方窗口彈出仿真結(jié)果的波形,如圖 5-8 所示。圖 5-8 仿真結(jié)果及示意18武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計(3)仿真結(jié)果分析由仿真結(jié)果圖可以看出,當音符輸入信號INDEX7:0 為 00000001時,輸出分頻系數(shù) TONE0 為 7648,輸出音符顯示信號 CODE6:0 為 1001111,高低音顯示信號 HIGN 為0。并且隨著音符輸入信
40、號INDEX7:0 的改變,輸出信號按照程序設(shè)定改變,符合設(shè)計要求。5.3 數(shù)控分頻模塊仿真(1)創(chuàng)建 Testbench波形源文件新建一個 Testbench波形源文件,并與 speaker.vhd文件關(guān)聯(lián),出現(xiàn)如圖 5-9 所示的波形圖。系統(tǒng)時鐘信號為 32MHz,但是由于仿真限制只能選擇時鐘周期為 100ns,并且只能設(shè)置分頻系數(shù)為 TONE10:2047。圖 5-9 HDL Bencher 中輸入波形的設(shè)置(2)設(shè)計的仿真設(shè)置分頻系數(shù)為4,TONE1 取值為 3,雙擊 Processes 窗口中的Simulate BehavioralModel 對設(shè)計進行仿真,在右方窗口彈出仿真結(jié)果的波形,如圖5-10 所示。圖 5-10 仿真結(jié)果及示意19武漢理工大學(xué)FPGA 應(yīng)用課程設(shè)計(3)仿真結(jié)果分析由仿真結(jié)果圖可以看出,系統(tǒng)時鐘首先被4
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年綠色建筑材料交易合同規(guī)范匯編3篇
- 2025版微粒貸逾期8萬元債權(quán)轉(zhuǎn)讓服務(wù)合同3篇
- 2025版外債借款合同匯率風(fēng)險與應(yīng)對措施3篇
- 二零二五年度菜鳥驛站快遞業(yè)務(wù)數(shù)據(jù)分析合同3篇
- 二零二五年度多功能木方模板設(shè)計與制造服務(wù)合同4篇
- 2025年學(xué)生就業(yè)實習(xí)合同
- 2025年名譽權(quán)質(zhì)押合同
- 2025年合作加盟代理合資經(jīng)營合同
- 二零二五版國際貨物檢驗鑒定服務(wù)合同(木材)3篇
- 2025年家居中介代理協(xié)議
- 化學(xué)-河南省TOP二十名校2025屆高三調(diào)研考試(三)試題和答案
- 智慧農(nóng)貿(mào)批發(fā)市場平臺規(guī)劃建設(shè)方案
- 林下野雞養(yǎng)殖建設(shè)項目可行性研究報告
- 2023年水利部黃河水利委員會招聘考試真題
- Python編程基礎(chǔ)(項目式微課版)教案22
- 01J925-1壓型鋼板、夾芯板屋面及墻體建筑構(gòu)造
- 近五年重慶中考物理試題及答案2023
- 乳腺導(dǎo)管原位癌
- 冷庫管道應(yīng)急預(yù)案
- 《學(xué)習(xí)教育重要論述》考試復(fù)習(xí)題庫(共250余題)
- 網(wǎng)易云音樂用戶情感畫像研究
評論
0/150
提交評論