EDA電子琴課程設(shè)計(jì)._第1頁(yè)
EDA電子琴課程設(shè)計(jì)._第2頁(yè)
EDA電子琴課程設(shè)計(jì)._第3頁(yè)
EDA電子琴課程設(shè)計(jì)._第4頁(yè)
EDA電子琴課程設(shè)計(jì)._第5頁(yè)
已閱讀5頁(yè),還剩10頁(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、EDA課程設(shè)計(jì)基于VHDL文本輸入法的樂(lè)曲演奏電路的設(shè)計(jì) 摘要本課程設(shè)計(jì)主要采用EDA技術(shù)設(shè)計(jì)一個(gè)簡(jiǎn)易的八音符電子琴,它可通過(guò)按 鍵輸入來(lái)控制音響從而演奏出已存入的樂(lè)曲。在課程設(shè)計(jì)中,系統(tǒng)開(kāi)發(fā)平臺(tái)為Windows XP ,程序設(shè)計(jì)采用VHDL語(yǔ)言,程序運(yùn)行平臺(tái)為 MAX+plus n。然后 編寫(xiě)程序?qū)崿F(xiàn)電子琴的各項(xiàng)功能,使不同的音階對(duì)應(yīng)不同頻率的正弦波,按下不 同的鍵時(shí)發(fā)出對(duì)應(yīng)頻率的聲音。程序通過(guò)調(diào)試運(yùn)行,時(shí)序仿真,電路功能驗(yàn)證, 順利地實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。關(guān)鍵詞 電子琴;EDA; VHDL ;音階;頻率Abstract The main use of this curriculum desig

2、n EDA tech no logy to desig n a sim pie eight -note orga n, it can be key to con trol the audio input so as to have bee n depo sited in a concert of music. In the course desig n, system devel opment p latform for Win dows 2000, the procedures VHDL design Ianguage, platform for running MAX + plus n .

3、 And the n p rogram to achieve the various functions of the orga n, so that differe nt scale corres ponds to a differe nt freque ncy sine wave, p ress differe nt keys whe n the voice of the corres ponding freque ncy. Running through the debuggi ng p rocess, tim ing simulati on, functional verificati

4、 on circuit, successfully achieved the goal of the desig n. Key Words Electric piano; EDA; VHDL; scale; freque ncy1引言隨著信息科學(xué)的進(jìn)步,現(xiàn)代電子產(chǎn)品的性能越來(lái)越高,復(fù)雜度越來(lái)越大,更新步 伐也越來(lái)越快,電子技術(shù)的發(fā)展進(jìn)入了劃時(shí)代的階段。其中電子技術(shù)的核心便是 電子設(shè)計(jì)自動(dòng)化 EDA (Electronic Design Automatic)技術(shù)。EDA是指以計(jì)算機(jī)為 工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開(kāi)發(fā)出 的電子CAD通用軟件包,它根據(jù)硬件描述語(yǔ)

5、言 HDL完成的設(shè)計(jì)文件,自動(dòng)完成 邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對(duì)于特定目標(biāo) 芯片的適配編譯、邏輯映射和編程下載等工作。本課程設(shè)計(jì)就是采用EDA技術(shù)描述語(yǔ)言VHDL編程實(shí)現(xiàn)簡(jiǎn)易電子琴的各項(xiàng)功能,是EDA技術(shù)應(yīng)用于實(shí)際的一個(gè)很好的例子。1.1課程設(shè)計(jì)目的本課程設(shè)計(jì)主要是基于 VHDL文本輸入法設(shè)計(jì)樂(lè)曲演奏電路,該系統(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è)部分組成。系統(tǒng)實(shí)現(xiàn)是用硬件描述語(yǔ)言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程、時(shí)序仿真

6、、電路功能驗(yàn)證,奏出美妙的樂(lè)曲。該設(shè)計(jì)最重要的一點(diǎn)就是通過(guò)按鍵控制不同的音調(diào)發(fā)生,每一個(gè)音調(diào)對(duì)應(yīng)不同的頻率,從而輸 出對(duì)應(yīng)頻率的聲音。設(shè)計(jì)一個(gè)簡(jiǎn)易的八音符電子琴,它可通過(guò)按鍵輸入來(lái)控制音響。 系統(tǒng)演奏時(shí)可以選擇是手動(dòng)演奏(由鍵盤(pán)輸入)還是自動(dòng)演奏已存入的樂(lè)1.2課程設(shè)計(jì)內(nèi)容(1)(2)曲。能夠自動(dòng)演奏多首樂(lè)曲,且樂(lè)曲可重復(fù)演奏。(3)1.3課程設(shè)計(jì)原理本課程設(shè)計(jì)目的在于靈活運(yùn)用 EDA技術(shù)編程實(shí)現(xiàn)一個(gè)簡(jiǎn)易電子琴的樂(lè)曲演奏, 它要求在實(shí)驗(yàn)箱上構(gòu)造一個(gè)電子琴電路,不同的音階對(duì)應(yīng)不同頻率的正弦波。按 下每個(gè)代表不同音階的按鍵時(shí),能夠發(fā)出對(duì)應(yīng)頻率的聲音。故系統(tǒng)可分為樂(lè)曲自 動(dòng)演奏模塊(AUTO )、音

7、調(diào)發(fā)生模塊(TONE)和數(shù)控分頻模塊(FENPIN)三部 分。系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖 1-1所示。圖1-1系統(tǒng)的整體組裝設(shè)計(jì)原理圖由于設(shè)計(jì)分模塊組成,每個(gè)單獨(dú)的模塊都是一個(gè)完整的源程序,分別實(shí)現(xiàn)不同性 質(zhì)的功能,但是每個(gè)模塊又是緊密關(guān)聯(lián)的,前一個(gè)模塊的輸出很可能是后一模塊 的輸入。女口 AUTO模塊的音符信號(hào)輸出就是TONE模塊的音符信號(hào)輸入。另外, 時(shí)鐘脈沖信號(hào)在本課程設(shè)計(jì)中用的最多,用處也最大,一般情況下時(shí)鐘信號(hào)處上 升沿有效,判斷和控制各個(gè)計(jì)數(shù)器計(jì)數(shù)多少。2 EDA、VHDL 簡(jiǎn)介EDA技術(shù)是以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、信息處理 及智能化技術(shù)的最新成果,進(jìn)行

8、電子產(chǎn)品的自動(dòng)設(shè)計(jì)。EDA可提供文本輸入以及HDL )之一。圖形編輯的方法將設(shè)計(jì)者的意圖用程序或者圖形方式表達(dá)出來(lái),而我們經(jīng)常用到 的VHDL語(yǔ)言便是用于編寫(xiě)源程序所需的最常見(jiàn)的硬件描述語(yǔ)言(2.1 EDA技術(shù)EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫(xiě),是90年代初從 CAD、CAM、CAT和CAE的概念發(fā)展而來(lái)的。EDA技術(shù)是電子設(shè)計(jì)的發(fā)展趨 勢(shì),利用EDA工具可以代替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)中的大部分工作。EDA工具從數(shù)字系統(tǒng)設(shè)計(jì)的單一領(lǐng)域,發(fā)展到今天,應(yīng)用范圍已涉及模擬、微波等多個(gè) 領(lǐng)域,可以實(shí)現(xiàn)各個(gè)領(lǐng)域電子系統(tǒng)設(shè)計(jì)的測(cè)試、設(shè)計(jì)方針和布局布線等。

9、現(xiàn)在對(duì)EDA的概念或范疇用得很寬,包括在機(jī)械、電子、通信、航空航天、化 工、礦產(chǎn)、生物、醫(yī)學(xué)、軍事等各個(gè)領(lǐng)域,都有EDA的應(yīng)用。目前EDA主要輔助進(jìn)行三個(gè)方面的設(shè)計(jì)工作:IC設(shè)計(jì)、電子電路設(shè)計(jì)和PCB設(shè)計(jì)。2.2 VHDL 語(yǔ)言常用硬件描述語(yǔ)言有 VHDL、Verilog和ABEL語(yǔ)言,而VHDL主要用于描述數(shù) 字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的結(jié)構(gòu)特點(diǎn)是將設(shè)計(jì)實(shí)體的內(nèi)部功能和算法完成部分。相對(duì)于其他硬件語(yǔ)言,VHDL有許多優(yōu)點(diǎn)。比如VHDL的行為描述能力更強(qiáng),而 且具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),隨時(shí)可對(duì)系統(tǒng)進(jìn)行仿真模擬,使設(shè)計(jì)者對(duì)整個(gè) 工程的結(jié)構(gòu)和功能

10、可行性做出判斷;另外,由于具有類屬描述語(yǔ)句和子程序調(diào)用 等功能,對(duì)于完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變類屬參量和函 數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)。3簡(jiǎn)易電子琴的設(shè)計(jì)過(guò)程根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)該系統(tǒng)基于計(jì)算機(jī)中時(shí)鐘分頻器的原理,設(shè)計(jì)采用自頂 向下的設(shè)計(jì)方法,通過(guò)按鍵輸入來(lái)控制音響或者自動(dòng)演奏已存入的歌曲。它由樂(lè) 曲自動(dòng)演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三部分組成。3.1樂(lè)曲自動(dòng)演奏模塊樂(lè)曲自動(dòng)演奏模塊的作用是產(chǎn)生8位發(fā)生控制輸入信號(hào)。當(dāng)進(jìn)行自動(dòng)演奏時(shí),由存儲(chǔ)在此模塊的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動(dòng)演奏樂(lè)曲。該模塊的VHDL源程序主要由3個(gè)工作進(jìn)程組成,分別為 PULSE

11、0,MUSIC和 C0M1。PULSE0的作用是根據(jù)鍵盤(pán)輸入(自動(dòng)演奏)的值(0或1)來(lái)判斷計(jì)數(shù) 器COUNT以及脈沖CLK2的輸出值。部分源程序如下:P ULSE0:P ROCESS(CLK,AUTO)-工作進(jìn)程開(kāi)始VARIABLE COUNT:INTEGER RANGE 0 TO 8;- 定義計(jì)數(shù)器變量,值從 0 至U 8 IF AUTO='1'THEN -鍵盤(pán)輸入為1COUNT:=0;CLK2<='0'-計(jì)數(shù)器值指 0,時(shí)鐘信號(hào)為 0 ELSIF(CLK'EVENT AND CLK='1')THEN -時(shí)鐘輸入信號(hào)為1 COU

12、NT:=COUNT+1;-計(jì)數(shù)器力卩1當(dāng)確定了時(shí)鐘信號(hào)輸出的值后,在第二個(gè) PROCESS中就可以由它控制8位發(fā)聲 控制輸入信號(hào)了。即CLK2的值為0時(shí),COUNT0為1。最后的COM1便是由前 兩個(gè)PROCESS所確定的COUNT0、AUTO和鍵盤(pán)輸入信號(hào)值INDEX2將8位的 二進(jìn)制數(shù)轉(zhuǎn)化為音符信號(hào)的輸出,達(dá)到自動(dòng)演奏的目的。部分源程序如下:IF AUTO='0'THENCASE COUNT0 ISWHEN 0=>INDEX0<="00000100" -3WHEN 4=>INDEX0<="00010000" -

13、5該模塊最主要的用途就是將輸入二進(jìn)制數(shù)轉(zhuǎn)化為發(fā)聲控制輸入,是產(chǎn)生音符的重 要步驟,AUTO模塊的源程序符號(hào)編輯圖如圖 3-1。3.2音調(diào)發(fā)生模塊音調(diào)發(fā)生模塊的作用是產(chǎn)生音階的分頻預(yù)置值。當(dāng)8位發(fā)聲控制輸入信號(hào)中的某一位為高電平時(shí),則對(duì)應(yīng)某一音階的數(shù)值將輸出,該數(shù)值即為該音階的分頻預(yù)置 值,分頻預(yù)置值控制數(shù)控分頻模塊進(jìn)行分頻,由此得到每個(gè)音階對(duì)應(yīng)的頻率。該模塊的唯一輸入信號(hào)INDEX對(duì)應(yīng)就是自動(dòng)模塊中最后的輸出INDEX0 ,音符 顯示信號(hào)CODE,高低音顯示信號(hào)HIGH和音符分頻系數(shù)都是根據(jù)音符輸入確定 的。比如我們自定義INDEX第8位為高電平時(shí),它的分頻系數(shù)則為 773Hz,音 符顯示信號(hào)

14、為1001111即是773的二進(jìn)制表示,此時(shí)高低音顯示1表示高音。部 分源程序如下:CASE INDEX ISWHEN"00000010"=>TONE0v=912;CODEv="0010010"HIGHv='1'-音符第7位為1,分頻數(shù)912Hz,音符顯示為0010010,屬高音WHEN"01000000"=>TONE0<=1372;CODE<="0001111"HIGH<='0'WHEN OTHERS =>TONE0<=2047;CODE&

15、lt;="0000001"HIGH<='0'顯然,該模塊最主要的作用就是給音符輸入預(yù)設(shè)頻率值,因?yàn)?,電子琴最終實(shí)現(xiàn) 樂(lè)曲演奏就是輸出不同頻率的正弦波,此模塊就是將二進(jìn)制發(fā)聲信號(hào)轉(zhuǎn)化為對(duì)應(yīng) 的頻率。3.3數(shù)控分頻模塊數(shù)控分頻模塊是對(duì)時(shí)基脈沖進(jìn)行分頻,得到與0、1、2、3、4、5、6 7八個(gè)音符相對(duì)應(yīng)的頻率。FENPIN模塊的源程序符號(hào)編輯圖如圖3-3。該模塊主要由4個(gè)工作進(jìn)程組成。首先,根據(jù)系統(tǒng)時(shí)鐘信號(hào)的輸入得到時(shí)基脈沖 以及計(jì)數(shù)器的值,而時(shí)鐘信號(hào)在 AUTO模塊中便已給出,兩者之間的設(shè)置關(guān)系類似于AUTO模塊中第一個(gè)工作進(jìn)程的設(shè)置。第二個(gè) PROCES

16、S是此模塊的核心, 即由時(shí)基脈沖值轉(zhuǎn)化為音符的頻率。部分源程序如下:VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;-定義頻率計(jì)數(shù)器,從0到2047HzIF(P RECLK'EVENT AND P RECLK='1')THEN -時(shí)基脈沖為 1 時(shí)IF COUNT11<TONE1 THEN -頻率計(jì)數(shù)器小于音符分頻系數(shù) COUNT11:=COUNT11+1;FULLSPKSv='1'-計(jì)數(shù)力卩 1,揚(yáng)聲器音頻為 1 ELSE COUNT11:=0;FULLS PKSv='0'最后一個(gè)PROCESS則

17、是用來(lái)設(shè)置揚(yáng)聲器輸出信號(hào)的,揚(yáng)聲器信號(hào)由 0和1控 制,當(dāng)且僅當(dāng)前一個(gè) PROCESS中的FULLSPKS輸出為1時(shí),揚(yáng)聲器才有輸出, 再根據(jù)計(jì)數(shù)器取值來(lái)確定輸出是1還是0。部分源程序如下:IF(FULLS PKS'EVENT AND FULLS PKS='1')THEN -揚(yáng)聲器音頻信號(hào)為 1 COUNT2:=NOT COUNT2;IF COUNT2='1'THENSP KS<='1'-揚(yáng)聲器輸出為1ELSE SP K<= 0'3.4頂層設(shè)計(jì)該DIANZIQIN模塊是整個(gè)電子琴設(shè)計(jì)的核心,也是 VHDL程序的主程序,

18、前面 3個(gè)源程序都是作為子程序分別實(shí)現(xiàn)電子琴的某一功能,而DIANZIQIN模塊則通過(guò)調(diào)用子程序最終實(shí)現(xiàn)樂(lè)曲演奏的目的,奏出美妙的樂(lè)曲。利用VHDL語(yǔ)言COMPONENT將三個(gè)模塊組合起來(lái),其中 3個(gè)模塊和DIANZIQIN模塊的輸入輸 出是對(duì)應(yīng)的,比女口 AUTO對(duì)應(yīng)HANDTOAUTO,TONE0 對(duì)應(yīng)TONE2,SPKS 對(duì)應(yīng)SPKOUT等,該模塊的符號(hào)編輯圖如圖3-4。US-I-MJ .B.圖3-4 DIANZIQIN模塊的符號(hào)編輯圖該圖描述的是DIANZIQIN模塊輸入輸出的變量表示,整個(gè)系統(tǒng)的整體組裝設(shè)計(jì) 原理圖就是這4幅編輯圖按輸入輸出關(guān)系順序連接而成的。4系統(tǒng)仿真系統(tǒng)仿真是在實(shí)

19、際系統(tǒng)上進(jìn)行實(shí)驗(yàn)研究比較困難時(shí)適用的必不可少的工具,它是 指通過(guò)系統(tǒng)模型實(shí)驗(yàn)去研究一個(gè)已經(jīng)存在或正在設(shè)計(jì)的系統(tǒng)的過(guò)程,通俗地講, 就是進(jìn)行模型實(shí)驗(yàn)。因而,系統(tǒng)仿真的結(jié)果決定整個(gè)課程設(shè)計(jì)任務(wù)完成的到位程 度。4.1時(shí)序仿真編譯完成后,可以對(duì)所進(jìn)行的設(shè)計(jì)進(jìn)行仿真,下面簡(jiǎn)單介紹一下仿真的步驟。(1) 打開(kāi)波形編輯器,在Node菜單中選擇Enter Nodes from SNF項(xiàng),列出所有 的信號(hào),選擇所需要的信號(hào),然后畫(huà)出輸入信號(hào)的波形,最后將該文件以.scf的 擴(kuò)展名存盤(pán)。(2) 在MAS+plus n菜單中打開(kāi)仿真器窗口,單擊 Start按鈕,當(dāng)仿真器結(jié)束工 作時(shí),單擊Open SCF按鈕,就可

20、以看到仿真的結(jié)果。本課程設(shè)計(jì)的仿真平臺(tái)是 MAX+plus n ,通過(guò)對(duì)VHDL源程序進(jìn)行編譯檢錯(cuò),然后 創(chuàng)建波形文件(后綴名為.scf),加入輸入輸出變量,選擇適用的芯片(EP1K30QC208-2)以及設(shè)定仿真結(jié)束時(shí)間(100us),設(shè)置好輸入初值進(jìn)行仿 真,得到仿真波形圖。由于電子琴 4個(gè)模塊都是獨(dú)立的程序,可分別對(duì)各個(gè)程序 仿真,驗(yàn)證輸入輸出的正確性,但在最終能演奏出樂(lè)曲的則是頂層設(shè)計(jì)模塊。(1) 樂(lè)曲自動(dòng)演奏模塊的仿真如圖4-1所示。-1ttl 希曲 4b鮭 gMUn14hIJm*h心Pkliti g丄 SlZliFLJ LJ i 1 1 1 1 1 LJ LJ 1 1 I 1&qu

21、ot;"L治忙ua1rjWHh rHEi I«V匚1C曲IMffl1 :t-M-j詡NT吋»J*Ir-J-1-JL . *”1rr聲 Wnv-IH Q11;r1r TrIlli1圖4-1樂(lè)曲自動(dòng)演奏模塊的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK初值設(shè)為0,自動(dòng)演奏AUTO設(shè)為1,鍵盤(pán)輸入信號(hào) INDEX2為00, INDEX0為音符信號(hào)輸出,是8位的二進(jìn)制代碼它根據(jù) COUNT0 的值改變而改變。(2)音調(diào)發(fā)生模塊的仿真如圖4-2所示。圖4-2音調(diào)發(fā)生模塊的仿真圖該圖輸入音符信號(hào)INDEX初值為00,輸出是音符顯示信號(hào)CODE為01,高低音 顯示信號(hào)為0,音符的分頻系數(shù)為

22、11111111即2047Hz。7RrOMG" TOjr *、如Ehl"IN匪(3)數(shù)控分頻模塊的仿真如圖4-3所示。Oi 二 i-社L1 Ii r 匸TI亍FrSrnf 附 3即I- 亦圖4-3數(shù)控分頻模塊的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK1初值為0 (各輸出值都是在時(shí)鐘信號(hào)的下降沿有效),音符分頻系數(shù)TONE1為00100000即1290Hz,驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)SPKS 輸出為1。(4)簡(jiǎn)易電子琴整個(gè)系統(tǒng)的仿真如圖4-4所示。B-MWVOKmT丁1V HKW*1dH|Kr>l-1 Et «g Lnwr 遼-1 M - mwcoiFfm-1 Kr和irt

23、皿AlHigiMl IJI Lviceuii-1 T fl- (5n lii I iT"*m T H _L * JC *_L * _L n « * 皿二_ H 丄*丫W(wǎng)申1屮圖4-3簡(jiǎn)易電子琴整個(gè)系統(tǒng)的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào) CLK32MHZ初值為0,自動(dòng)演奏信號(hào)HANDTOAUTO初 值為0,鍵盤(pán)輸入信號(hào)INDEX1為00000000;輸出音符信號(hào)CODE1則為 0110000,高低音節(jié)信號(hào)HIGH1變?yōu)?,即高音,音頻信號(hào)SPKOUT即輸出0, 輸出為1時(shí)CODE1變?yōu)?110100,這時(shí)出現(xiàn)10ns的延時(shí)。在仿真時(shí)由于系統(tǒng)各 方面原因影響,出現(xiàn)延時(shí)屬于正?,F(xiàn)象。4

24、.2電路功能驗(yàn)證如果說(shuō)前面的過(guò)程都是理論上進(jìn)行軟件設(shè)計(jì)制作,那么電路驗(yàn)證則是硬件產(chǎn)生實(shí) 際結(jié)果的必要步驟,它是軟件編程導(dǎo)入硬件系統(tǒng)得到最終設(shè)計(jì)目標(biāo)的一個(gè)過(guò)程。此課程設(shè)計(jì)中主要用到的硬件設(shè)施有 EP1K30QC208-2芯片、一個(gè)12MHz的頻率 元件、揚(yáng)聲器、鍵盤(pán)或脈沖開(kāi)關(guān)、發(fā)光二極管等,硬件和軟件系統(tǒng)相連接的樞紐 就是芯片引腳和VHDL主程序中所有輸入輸出之間對(duì)應(yīng)的關(guān)系,它們滿足:CLKH7 弓I腳、HANDTOAUTO45、INDEX1046、INDEX仆47、INDEX1M53、INDEXH54、INDEX14 55、INDEX® 56、 INDEXH57、HIGH1- 19、

25、SPKOU68 引腳。在選擇好芯片以及設(shè)置引腳值后,下載源程序(后綴名.sof)到此芯片上,確認(rèn)Max+Plus n菜單中選FLEX器件中。再次3, 5音即報(bào)警。編程器硬件是否已安裝好。按如下步驟打開(kāi)編程器窗口:在 擇P rogrammer項(xiàng),點(diǎn)擊Con figure項(xiàng)將配置數(shù)據(jù)下載到一個(gè) 對(duì)源程序進(jìn)行編譯導(dǎo)入程序然后運(yùn)行,揚(yáng)聲器發(fā)出初設(shè)的音符 手按鍵盤(pán)或撥脈沖開(kāi)關(guān)改變輸入信號(hào)則揚(yáng)聲器發(fā)出對(duì)應(yīng)的頻率的聲音,鍵盤(pán)(開(kāi) 關(guān))是與芯片引腳對(duì)應(yīng)相連的。4.3問(wèn)題分析在整個(gè)課程設(shè)計(jì)中,不可避免遇到很多難于解決的問(wèn)題,一來(lái)是對(duì)EDA技術(shù)的不太了解,初涉VHDL語(yǔ)言以致很多語(yǔ)法和語(yǔ)言基本結(jié)構(gòu)、算法生疏,運(yùn)用

26、不靈 活,在編寫(xiě)源程序上遇到很大難題,而且在編譯運(yùn)行程序時(shí)對(duì)出錯(cuò)的語(yǔ)句理解不到位,難 于下手修改錯(cuò)誤語(yǔ)句,這使得在設(shè)計(jì)程序時(shí)遇到很大的阻礙,此外, VHDL語(yǔ)言 的數(shù)據(jù)類型很容易造成混淆,比如 IN STD_LOGIC_VECTOR(7 DOWNTO 0)語(yǔ) 句,它有時(shí)既可以認(rèn)為是從 7下降到0,也可認(rèn)為是從0上升到7,當(dāng)輸入有多 位時(shí),這就容易造成在讀懂仿真波形圖時(shí)讀位數(shù)倒置,使仿真現(xiàn)象與理論結(jié)果相 出入。在完成電路驗(yàn)證這一步時(shí),對(duì)頻率的選擇也是一大難點(diǎn),有的設(shè)計(jì)項(xiàng)目對(duì)頻率的 要求很高,需要大頻率元件才能滿足設(shè)計(jì)需求,若頻率元件選擇不恰當(dāng),將嚴(yán)重 影響設(shè)計(jì)結(jié)果甚至沒(méi)有結(jié)果輸出。對(duì)于設(shè)計(jì)電子琴

27、時(shí),由于要求輸出不同頻率的 聲音,頻率變化范圍大,故需要一個(gè) 12MHz的元件,對(duì)于小于這一值的頻率不 足以滿足電路需求,仿真時(shí)只有一堆雜音輸出。在對(duì)于設(shè)計(jì)時(shí)遇到的不同問(wèn)題時(shí),首先應(yīng)該理解問(wèn)題關(guān)鍵所在,因?yàn)橛谜Z(yǔ)言編寫(xiě) 程序需要仔細(xì)認(rèn)真的態(tài)度,一點(diǎn)點(diǎn)錯(cuò)誤漏洞將導(dǎo)致整個(gè)源程序無(wú)法編譯運(yùn)行,阻 礙下一步工作完成進(jìn)度。5結(jié)束語(yǔ)通過(guò)這次VHDL課程設(shè)計(jì),不僅增強(qiáng)了我們的實(shí)踐動(dòng)手能力,也讓我們對(duì)課堂上 所學(xué)到的理論知識(shí)的理解加深了許多,這給我們提供了一個(gè)在學(xué)習(xí)生活中很難得 的理論聯(lián)系實(shí)際的機(jī)會(huì)。能夠借此機(jī)會(huì)了解到部分EDA技術(shù)的知識(shí)和學(xué)習(xí)運(yùn)用其中一種硬件描述語(yǔ)言VHDL編程實(shí)現(xiàn)各種常用器件的功能,這是在哪

28、堂講課上 都得不到的一筆財(cái)富。另一方面我們也發(fā)現(xiàn)了在平時(shí)學(xué)習(xí)過(guò)程中難于發(fā)現(xiàn)的許多缺點(diǎn)跟不足。比如實(shí)踐 機(jī)會(huì)過(guò)少,所學(xué)的理論知識(shí)不能靈活運(yùn)用,在遇到實(shí)際的問(wèn)題時(shí)無(wú)法正確處理; 再者在課堂上獲得的專業(yè)知識(shí)過(guò)于淺顯,很多的有關(guān)基本操作原理、操作方法都 理解不了;課外知識(shí)了解的也過(guò)少,導(dǎo)致在課程設(shè)計(jì)初期,面對(duì)完全陌生的設(shè)計(jì) 課題無(wú)從下手,不知所措。這就提醒我們?cè)谄綍r(shí)的學(xué)習(xí)生活中不能一味埋頭于面 前的課本知識(shí),畢竟當(dāng)今社會(huì)競(jìng)爭(zhēng)越發(fā)激烈,而學(xué)校能教授的東西有限,要想在 人才市場(chǎng)中脫穎而出就只能靠我們自己。當(dāng)然,在學(xué)習(xí)之余我們更應(yīng)該積極參加 各種有關(guān)專業(yè)知識(shí)的實(shí)踐活動(dòng)和比賽,鞏固所學(xué)理論,多注意培養(yǎng)初步的實(shí)

29、際工 作能力和專業(yè)技術(shù)能力,這樣在以后的工作崗位上不會(huì)顯得那么倉(cāng)促與生疏。 參考文獻(xiàn)1 辛春艷.VHDL硬件描述語(yǔ)言.北京:國(guó)防工業(yè)出版社,20022 甘歷.VHDL應(yīng)用與開(kāi)發(fā)實(shí)踐.北京:科學(xué)出版社,20033 VHDL Language Referenee Guide,Aide Inc . Henderson NV USA, 19994 齊洪喜,陸穎.VHDL電路設(shè)計(jì)實(shí)用教程.北京:清華大學(xué)出版社,2004 潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程.北京:科學(xué)出版社,2002附錄1:樂(lè)曲自動(dòng)演奏源程序清單-程序名稱:AUTO.VHD-程序功能:采用VHDL語(yǔ)言編程產(chǎn)生8位發(fā)聲控制輸入信號(hào)。LIBRA

30、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY AUTO ISPORT(CLK: IN STD_LOGIC;-系統(tǒng)時(shí)鐘信號(hào) AUTO: IN STD_LOGIC;-鍵盤(pán)輸入 / 自動(dòng)演奏CLK2: BUFFER STD_LOGIC;-時(shí)鐘輸出INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0);-鍵盤(pán)輸入信號(hào) INDEXO:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-音符信號(hào)輸出 END

31、 AUTO; ARCHITECTURE BEHAVIORAL OF AUTO ISSIGNAL COUNT0:INTEGER RANGE 0 TO 31;-定義信號(hào)計(jì)數(shù)器,有 32個(gè)信號(hào)元 素 BEGINPULSE0:PROCESS(CLK,AUTO) -PULSE0 工作進(jìn)程開(kāi)始 VARIABLECOUNT:INTEGER RANGE 0 TO 8;-定義變量計(jì)數(shù)器,從 0 至U 8 BEGINIF AUTO='1'THEN -鍵盤(pán)輸入為 1COUNT:=0;CLK2<='0'-計(jì)數(shù)器值為 0,時(shí)鐘信號(hào) 2 幅值為 0 ELSIF(CLK'EVE

32、NT AND CLK='1')THEN -輸入的時(shí)鐘信號(hào)為其他值 COUNT:=COUNT+1;-計(jì)數(shù)器力卩 1即為1IF COUNT=4 THENCLK2<='1'ELSIF COUNT=8 THENCLK2<='0'COUNT:=0;END IF;END IF;END P ROCESS;MUSIC:PROCESS(CLK2) -MUSIC 工作進(jìn)程開(kāi)始BEGINIF(CLK2'EVENT AND CLK2='1')THEN - 時(shí)鐘信號(hào) 2 為 1IF(COUNT0=31)THEN -計(jì)數(shù)器值為 31COU

33、NT0<=0;-計(jì)數(shù)器清 0ELSECOUNT0<=COUNT0+1;END IF;END IF;END P ROCESS;COM1: PROCESS(COUNT0,AUTO,INDEX2)BEGINIF AUTO='0'THEN -鍵盤(pán)輸入為 0CASE COUNT0 IS -由計(jì)數(shù)器從0到31的取值判斷音符信號(hào)的8位二進(jìn)制數(shù)WHEN 0=>INDEX0v="00000100" -3WHEN 1=>INDEX0<="00000100" -3WHEN 2=>INDEX0<="000001

34、00" -3WHEN 3=>INDEX0<="00000100" -3WHEN 4=>INDEX0<="00010000" -5WHEN 5=>INDEX0<="00010000" -5WHEN 6=>INDEX0<="00010000" -5WHEN 7=>INDEX0<="00100000" -6WHEN 8=>INDEX0<="10000000" -8WHEN 9=>INDEX0&l

35、t;="10000000" -8WHEN 10=>INDEX0<="10000000" -8WHEN 11=>INDEX0<="00000100" -3WHEN 12=>INDEX0<="00000010" -2WHEN 13=>INDEX0<="00000010" -2WHEN 14=>INDEX0<="00000001" -1WHEN 15=>INDEX0<="00000001"

36、-1WHEN 16=>INDEX0<="00010000" -5WHEN 17=>INDEX0<="00010000" -5WHEN 18=>INDEX0<="00001000" -4WHEN 19=>INDEX0<="00001000" -4WHEN 20=>INDEX0<="00001000" -4WHEN 21=>INDEX0<="00000100" -3WHEN 22=>INDEX0<

37、="00000010" -2WHEN 23=>INDEX0<="00000010" -2WHEN 24=>INDEX0<="00010000" -5WHEN 25=>INDEX0<="00010000" -5WHEN 26=>INDEX0<="00001000" -4WHEN 27=>INDEX0<="00001000" -4WHEN 28=>INDEX0<="00000100" -3

38、WHEN 29=>INDEX0<="00000100" -3WHEN 30=>INDEX0<="00000010" -2WHEN 31=>INDEX0<="00000010" -2WHEN OTHERS=>NULL;END CASE;ELSE INDEX0v=INDEX2;-將音符信號(hào)0的值賦給音符信號(hào) 2 END IF;END P ROCESS;END BEHAVIORAL;附錄2:音調(diào)發(fā)生源程序清單-程序名稱:TONE.VHD-程序功能:采用VHDL語(yǔ)言編程產(chǎn)生音階的分頻預(yù)置值。LIBRA

39、RY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD LOGIC ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TONE ISPORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);-音符輸入信號(hào) CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);-音符顯示信號(hào) HIGH: OUT STD_LOGIC;-高低音顯示信號(hào) TONE0:OUT INTEGER RANGE 0 TO 2047);-音 符的分頻系數(shù)END TONE;ARCHITEC

40、TURE ART OF TONE ISBEGINSEARCH:P ROCESS(INDEX)BEGINCASE INDEX ISWHEN"00000001"=>TONE0<=773;CODE<="1001111"HIGH<='1'-分頻系數(shù)773Hz,音符顯示1001111,顯示低音WHEN"00000010"=>TONE0<=912;CODE<="0010010"HIGH<='1' WHEN"00000100"=&

41、gt;TONE0<=1036;CODE<="0000110"HIGH<='1' WHEN"00001000"=>TONE0<=1116;CODE<="1001100"HIGH<='1'WHEN"00010000"=>TONE0<=1197;CODE<="0100100"HIGH<='1'WHEN"00100000"=>TONE0<=1290;CODE&

42、lt;="0100000"HIGH<='0'WHEN"01000000"=>TONE0<=1372;CODE<="0001111"HIGH<='0'WHEN"10000000"=>TONE0<=1410;CODE<="0000000"HIGH<='0'WHEN OTHERS =>TONE0<=2047;CODE<="0000001"HIGH<='

43、;0'END CASE;END P ROCESS;END ART;附錄3:數(shù)控分頻源程序清單-程序名稱:FENPI N.VHD-程序功能:采用VHDL語(yǔ)言編程對(duì)時(shí)基脈沖進(jìn)行分頻,得到 8個(gè)音符相對(duì)應(yīng)的 頻率。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD LOGIC ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FENPIN ISP ORT(CLK1: IN STD_LOGIC;TONE1: IN INTEGER RANGE 0 TO 2047;-系統(tǒng)時(shí)鐘信號(hào)SPKS: OU

44、T STD_LOGIC);-音符分頻系數(shù)END ENTITY FENPIN;-驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)ARCHITECTURE ART OF FENPIN ISSIGNAL PRECLK:STD_LOGIC;-定義時(shí)基脈沖信號(hào)SIGNAL FULLS PKS:STD_LOGIC;BEGINP ROCESS(CLK1)VARIABLE COUNT:INTEGER RANGE 0 TO 8;-定義變量計(jì)數(shù)器,從 0至U 8 BEGINIF(CLK1'EVENT AND CLK1='1')THEN - 據(jù)時(shí)鐘信號(hào)為COUNT:=COUNT+1;-判斷計(jì)數(shù)器取值為1IF COUNT

45、=2 THENP RECLK<='1'ELSIF COUNT=4 THEN -若計(jì)數(shù)器計(jì) 4END IF;PRECLK<='0'COUNT:=0;-時(shí)基脈沖為0,計(jì)數(shù)器清零END IF;END P ROCESS;P ROCESS( PRECLK,TONE1)定義變量頻率計(jì)數(shù)器11,VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;-從 0 到 2047HzBEGIN脈沖上升沿觸發(fā)IFIF(P RECLK'EVENT AND P RECLK='1')THEN -P RECLKCOUNT11<TONE1 THEN -若計(jì)數(shù)器11值小于音符信號(hào)1COUNT11:=COUNT11+1;FULLSPKSv='1'-計(jì)數(shù)器力卩 1,音頻信號(hào)為 1 ELSE COUNT11:=0;FULLS PKSv='O'END IF;END IF;END P ROCESS;PROCESS(FULLS PKS)-音頻信號(hào)輸出進(jìn)程開(kāi)始VARIABLE COUNT2:STD_LOGIC:='0'-定義變量計(jì)數(shù)器 2,初值為 0 BEGIN IF(FULLSPKS

溫馨提示

  • 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)論