EDA簡(jiǎn)易電子琴的設(shè)計(jì)(共20頁(yè))_第1頁(yè)
EDA簡(jiǎn)易電子琴的設(shè)計(jì)(共20頁(yè))_第2頁(yè)
EDA簡(jiǎn)易電子琴的設(shè)計(jì)(共20頁(yè))_第3頁(yè)
EDA簡(jiǎn)易電子琴的設(shè)計(jì)(共20頁(yè))_第4頁(yè)
EDA簡(jiǎn)易電子琴的設(shè)計(jì)(共20頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、精選優(yōu)質(zhì)文檔-傾情為你奉上課 程 設(shè) 計(jì) 說(shuō) 明 書題 目 EDA簡(jiǎn)易電子琴的設(shè)計(jì) 姓 名 專 業(yè) 班 級(jí) 系(部) 指導(dǎo)教師 2011年 1 月 3 日 EDA 課程設(shè)計(jì)、課程(學(xué)年)論文任務(wù)書課程編號(hào) 課內(nèi)/外周數(shù)(學(xué)時(shí)數(shù)) 1周 指導(dǎo)地點(diǎn) 1-501 集中分散.學(xué)生姓名: 系(部)、專業(yè):電子信息工程 班級(jí): 題目EDA簡(jiǎn)易電子琴完成的任務(wù)(包括內(nèi)容及要求、設(shè)計(jì)流程、論文提綱、閱讀資料文獻(xiàn)等具體要求等):1、基本要求(1)利用數(shù)控分頻器設(shè)計(jì)一個(gè)電子琴硬件電路和音樂(lè)發(fā)生器。(2)演奏時(shí)可以選擇手動(dòng)按鍵演奏。(3)演奏也可以選擇自動(dòng)播放已存入的樂(lè)曲,并自動(dòng)重復(fù)播放。2、選做部分(至少選做一項(xiàng)

2、)(1)自動(dòng)重復(fù)播放。(2)其他。 論文字?jǐn)?shù)須達(dá)到3000至5000字,正文包含標(biāo)題、摘要、關(guān)鍵詞、正文和參考文獻(xiàn)5個(gè)部分。參考文獻(xiàn)5篇,其中外文文獻(xiàn)1篇,論文中引文按規(guī)范標(biāo)出。具體教學(xué)進(jìn)程、時(shí)間安排與具體內(nèi)容:第10周:布置選題 第11周-15周:完成設(shè)計(jì) 第16周:完成課程設(shè)計(jì)說(shuō)明書 第17周:作品演示及考核參考文獻(xiàn):1 盧毅,賴杰。VHDL與數(shù)字電路設(shè)計(jì)【M】。北京:科學(xué)出版社,2001.32陳雪松,滕立忠。VHDL入門與應(yīng)用。北京:人民郵電出版社。3焦素敏,eda技術(shù)基礎(chǔ)。北京:清華大學(xué)出版社。2009.84VHDL Language Reference Guide ,Alde Inc

3、 . Henderson NV USA ,1999其他要求:完成選做部分要求至少一項(xiàng)。指導(dǎo)教師 (簽名) 2010年 11 月 5 日 教研室審定意見(jiàn)(選題、資料、工作量等是否合適):選題合適,工作量適宜,資料收集齊全,同意使用。 教研室主任(簽名) 2010年 11 月 5 日注:本表打印,一式三份,學(xué)生個(gè)人、系(部)(歸檔)、教務(wù)處(備案)各一份摘 要 本課程設(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。然后編寫程序?qū)崿F(xiàn)電子琴的各

4、項(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 design EDA technology to design a simple eight-note organ, it can be key to control the audio input so as to have been deposited in a concert of music. In the course d

5、esign, system development platform for Windows 2000, the procedures VHDL design language, platform for running MAX + plus . And then program to achieve the various functions of the organ, so that different scale corresponds to a different frequency sine wave, press different keys when the voice of t

6、he corresponding frequency. Running through the debugging process, timing simulation, functional verification circuit, successfully achieved the goal of the design.Key Words Electric piano; EDA; VHDL; scale; frequency1 引 言 隨著信息科學(xué)的進(jìn)步,現(xiàn)代電子產(chǎn)品的性能越來(lái)越高,復(fù)雜度越來(lái)越大,更新步伐也越來(lái)越快,電子技術(shù)的發(fā)展進(jìn)入了劃時(shí)代的階段。其中電子技術(shù)的核心便是電子設(shè)計(jì)自動(dòng)化

7、EDA(Electronic Design Automatic)技術(shù)。EDA是指以計(jì)算機(jī)為工作平臺(tái),融合了應(yīng)用電子技術(shù)、計(jì)算機(jī)技術(shù)、智能化技術(shù)的最新成果而開(kāi)發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語(yǔ)言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ì)目的 運(yùn)用VHDL語(yǔ)言對(duì)簡(jiǎn)易電子琴的各個(gè)模塊進(jìn)行設(shè)計(jì),并使用EDA 工具對(duì)各模塊進(jìn)行仿真驗(yàn)證。本設(shè)計(jì)包含如下三個(gè)模塊:樂(lè)曲自動(dòng)

8、演奏模塊,音調(diào)發(fā)生模塊,數(shù)控分頻模塊,最后把各個(gè)模塊整合后,通過(guò)電路的輸入輸出對(duì)應(yīng)關(guān)系連接起來(lái)1.2 課程設(shè)計(jì)內(nèi)容(1)設(shè)計(jì)一個(gè)簡(jiǎn)易的八音符電子琴,它可通過(guò)按鍵輸入來(lái)控制音響。(2)系統(tǒng)演奏時(shí)可以選擇是手動(dòng)演奏(由鍵盤輸入)還是自動(dòng)演奏已存入的樂(lè)曲。(3)能夠自動(dòng)演奏多首樂(lè)曲,且樂(lè)曲可重復(fù)演奏。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)、音調(diào)發(fā)生模塊(TONE)和數(shù)控分頻模塊(FENPI

9、N)三部分。系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖1-1所示。1.4簡(jiǎn)易電子琴工作流程圖開(kāi)始按鍵按下是否成功TO初始化并開(kāi)中斷允放TO中斷識(shí)別按鍵功能根據(jù)按鍵功能,裝入音符T到TO中啟動(dòng)TO工作按鍵釋放是否成功?停止TO工作TO中斷入口重裝THO,TLO初值P1.0取反中斷返回 圖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)處上升沿有效,判

10、斷和控制各個(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)行電子產(chǎn)品的自動(dòng)設(shè)計(jì)。EDA可提供文本輸入以及圖形編輯的方法將設(shè)計(jì)者的意圖用程序或者圖形方式表達(dá)出來(lái),而我們經(jīng)常用到的VHDL語(yǔ)言便是用于編寫源程序所需的最常見(jiàn)的硬件描述語(yǔ)言(HDL)之一。2.1 EDA技術(shù) EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)縮寫,是90年代初從CAD、CAM、CAT和CAE的概念發(fā)展而來(lái)的。EDA技術(shù)是電子設(shè)計(jì)的發(fā)展趨勢(shì),利用EDA工具可以代替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)中的大部分工

11、作。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ì)方針和布局布線等。 現(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ǔ)言,VH

12、DL有許多優(yōu)點(diǎn)。比如VHDL的行為描述能力更強(qiáng),而且具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),隨時(shí)可對(duì)系統(tǒng)進(jìn)行仿真模擬,使設(shè)計(jì)者對(duì)整個(gè)工程的結(jié)構(gòu)和功能可行性做出判斷;另外,由于具有類屬描述語(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)演奏

13、時(shí),由存儲(chǔ)在此模塊的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動(dòng)演奏樂(lè)曲。該模塊的VHDL源程序主要由3個(gè)工作進(jìn)程組成,分別為PULSE0,MUSIC和COM1。PULSE0的作用是根據(jù)鍵盤輸入(自動(dòng)演奏)的值(0或1)來(lái)判斷計(jì)數(shù)器COUNT以及脈沖CLK2的輸出值。部分源程序如下: PULSE0:PROCESS(CLK,AUTO) -工作進(jìn)程開(kāi)始 VARIABLE COUNT:INTEGER RANGE 0 TO 8; -定義計(jì)數(shù)器變量,值從0到8 IF AUTO='1'THEN -鍵盤輸入為1 COUNT:=0;CLK2<='0' -計(jì)數(shù)器值指0,時(shí)鐘信號(hào)為

14、0 ELSIF(CLK'EVENT AND CLK='1')THEN -時(shí)鐘輸入信號(hào)為1 COUNT:=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和鍵盤輸入信號(hào)值INDEX2將8位的二進(jìn)制數(shù)轉(zhuǎn)化為音符信號(hào)的輸出,達(dá)到自動(dòng)演奏的目的。部分源程序如下:IF AUTO='0'THENCASE COUNT0 IS WHEN 0=>INDEX0<="&quo

15、t; -3 WHEN 4=>INDEX0<="" -5該模塊最主要的用途就是將輸入二進(jìn)制數(shù)轉(zhuǎn)化為發(fā)聲控制輸入,是產(chǎn)生音符的重要步驟, AUTO模塊的源程序符號(hào)編輯圖如圖3-1。圖3-1 AUTO模塊的符號(hào)編輯圖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ù)

16、都是根據(jù)音符輸入確定的。比如我們自定義INDEX第8位為高電平時(shí),它的分頻系數(shù)則為773Hz,音符顯示信號(hào)為,即是773的二進(jìn)制表示,此時(shí)高低音顯示1表示高音。部分源程序如下:CASE INDEX ISWHEN""=>TONE0<=912;CODE<=""HIGH<='1' -音符第7位為1,分頻數(shù)912Hz,音符顯示為,屬高音WHEN""=>TONE0<=1372;CODE<=""HIGH<='0'WHEN OTHERS =>T

17、ONE0<=2047;CODE<=""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è)置。

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

19、一個(gè)PROCESS則是用來(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(FULLSPKS'EVENT AND FULLSPKS='1')THEN -揚(yáng)聲器音頻信號(hào)為1COUNT2:=NOT COUNT2;IF COUNT2='1'THENSPKS<='1' -揚(yáng)聲器輸出為1ELSE SPK<=0; 3.4 頂層設(shè)計(jì)該DIANZIQIN模塊是整個(gè)電子琴設(shè)計(jì)的核心,也是VHDL程序的主程序,前面3

20、個(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。圖3-4 DIANZIQIN模塊的符號(hào)編輯圖該圖描述的是DIANZIQIN模塊輸入輸出的變量表示,整個(gè)系統(tǒng)的整體組裝設(shè)計(jì)原理圖就是這4幅編輯圖按輸入輸出關(guān)系順序連接而成的。4 系統(tǒng)仿真系統(tǒng)仿真是在實(shí)際系統(tǒng)上進(jìn)行實(shí)驗(yàn)研究比較困難時(shí)適用的必

21、不可少的工具,它是指通過(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),然后畫出輸入信號(hào)的波形,最后將該文件以.scf的擴(kuò)展名存盤。 (2) 在MAS+plus菜單中打開(kāi)仿真器窗口,單擊Start按鈕,當(dāng)仿真器結(jié)束工作時(shí),單擊Open SCF按鈕,就可以看到仿真的結(jié)果。本課程設(shè)計(jì)的仿真平臺(tái)是MAX+pl

22、us,通過(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所示。圖4-1 樂(lè)曲自動(dòng)演奏模塊的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK初值設(shè)為0,自動(dòng)演奏AUTO設(shè)為1,鍵盤輸入信號(hào)INDEX2為00,INDEX0為音符信號(hào)輸出,是8位的二進(jìn)制代碼它根據(jù)COUNT0的值改變而改變。(2) 音調(diào)

23、發(fā)生模塊的仿真如圖4-2所示。圖4-2 音調(diào)發(fā)生模塊的仿真圖 該圖輸入音符信號(hào)INDEX初值為00,輸出是音符顯示信號(hào)CODE為01,高低音顯示信號(hào)為0,音符的分頻系數(shù)為即2047Hz。(3) 數(shù)控分頻模塊的仿真如圖4-3所示。圖4-3 數(shù)控分頻模塊的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK1初值為0(各輸出值都是在時(shí)鐘信號(hào)的下降沿有效),音符分頻系數(shù)TONE1為即1290Hz,驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)SPKS輸出為1。(4) 簡(jiǎn)易電子琴整個(gè)系統(tǒng)的仿真如圖4-4所示。 圖4-3 簡(jiǎn)易電子琴整個(gè)系統(tǒng)的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK32MHZ初值為0,自動(dòng)演奏信號(hào)HANDTOAUTO初值為0,鍵盤輸入信號(hào)I

24、NDEX1為;輸出音符信號(hào)CODE1則為,高低音節(jié)信號(hào)HIGH1變?yōu)?,即高音,音頻信號(hào)SPKOUT即輸出0,輸出為1時(shí)CODE1變?yōu)?,這時(shí)出現(xiàn)10ns的延時(shí)。在仿真時(shí)由于系統(tǒng)各方面原因影響,出現(xiàn)延時(shí)屬于正?,F(xiàn)象。4.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)聲器、鍵盤或脈沖開(kāi)關(guān)、發(fā)光二極管等,硬件和軟件系統(tǒng)相連接的樞紐就是芯片引腳和VHDL主程序中所有輸入輸出之間對(duì)應(yīng)的關(guān)系,它們滿足:C

25、LK7引腳、HANDTOAUTO45、INDEX1046、INDEX1147、INDEX1253、INDEX1354、INDEX1455、INDEX1556、INDEX1657、HIGH119、SPKOUT68引腳。在選擇好芯片以及設(shè)置引腳值后,下載源程序(后綴名.sof)到此芯片上,確認(rèn)編程器硬件是否已安裝好。按如下步驟打開(kāi)編程器窗口:在Max+Plus菜單中選擇Programmer項(xiàng),點(diǎn)擊Configure項(xiàng)將配置數(shù)據(jù)下載到一個(gè)FLEX器件中。再次對(duì)源程序進(jìn)行編譯導(dǎo)入程序然后運(yùn)行,揚(yáng)聲器發(fā)出初設(shè)的音符3,5音即報(bào)警。手按鍵盤或撥脈沖開(kāi)關(guān)改變輸入信號(hào)則揚(yáng)聲器發(fā)出對(duì)應(yīng)的頻率的聲音,鍵盤(開(kāi)關(guān))

26、是與芯片引腳對(duì)應(yīng)相連的。4.3 問(wèn)題分析在完成電路驗(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ì)電子琴時(shí),由于要求輸出不同頻率的聲音,頻率變化范圍大,故需要一個(gè)12MHz的元件,對(duì)于小于這一值的頻率不足以滿足電路需求,仿真時(shí)只有一堆雜音輸出。在對(duì)于設(shè)計(jì)時(shí)遇到的不同問(wèn)題時(shí),首先應(yīng)該理解問(wèn)題關(guān)鍵所在,因?yàn)橛谜Z(yǔ)言編寫程序需要仔細(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)手能力,也讓我們

27、對(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)各種常用器件的功能,這是在哪堂講課上都得不到的一筆財(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í)生活中不能一味埋頭于面前的課本知

28、識(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í)際工作能力和專業(yè)技術(shù)能力,這樣在以后的工作崗位上不會(huì)顯得那么倉(cāng)促與生疏。參考文獻(xiàn) 1 盧毅,賴杰。VHDL與數(shù)字電路設(shè)計(jì)【M】。北京:科學(xué)出版社,2001.32陳雪松,滕立忠。VHDL入門與應(yīng)用。北京:人民郵電出版社。 3VHDL Language Reference Guide ,Alde Inc . Henderson NV USA ,19994焦素敏,eda技術(shù)基礎(chǔ)。北京:清華大學(xué)出版社。200

29、9.8附錄1:樂(lè)曲自動(dòng)演奏源程序清單-程序名稱:AUTO.VHD-程序功能:采用VHDL語(yǔ)言編程產(chǎn)生8位發(fā)聲控制輸入信號(hào)。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY AUTO IS PORT(CLK: IN STD_LOGIC; -系統(tǒng)時(shí)鐘信號(hào) AUTO: IN STD_LOGIC; -鍵盤輸入/自動(dòng)演奏 CLK2: BUFFER STD_LOGIC; -時(shí)鐘輸出 INDEX2: IN STD_LOGIC_VECTOR(7

30、 DOWNTO 0); -鍵盤輸入信號(hào) INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -音符信號(hào)輸出END AUTO;ARCHITECTURE BEHAVIORAL OF AUTO IS SIGNAL COUNT0:INTEGER RANGE 0 TO 31; -定義信號(hào)計(jì)數(shù)器,有32個(gè)信號(hào)元素BEGINPULSE0:PROCESS(CLK,AUTO) -PULSE0工作進(jìn)程開(kāi)始 VARIABLE COUNT:INTEGER RANGE 0 TO 8; -定義變量計(jì)數(shù)器,從0到8BEGIN IF AUTO='1'THEN -鍵盤輸入為1 C

31、OUNT:=0;CLK2<='0' -計(jì)數(shù)器值為0,時(shí)鐘信號(hào)2幅值為0 ELSIF(CLK'EVENT AND CLK='1')THEN -輸入的時(shí)鐘信號(hào)為其他值 COUNT:=COUNT+1; -計(jì)數(shù)器加1即為1 IF COUNT=4 THEN CLK2<='1' ELSIF COUNT=8 THEN CLK2<='0'COUNT:=0;END IF;END IF;END PROCESS;MUSIC:PROCESS(CLK2) -MUSIC工作進(jìn)程開(kāi)始BEGIN IF(CLK2'EVENT AN

32、D CLK2='1')THEN -時(shí)鐘信號(hào)2為1 IF(COUNT0=31)THEN -計(jì)數(shù)器值為31 COUNT0<=0; -計(jì)數(shù)器清0ELSE COUNT0<=COUNT0+1;END IF;END IF;END PROCESS;COM1:PROCESS(COUNT0,AUTO,INDEX2)BEGINIF AUTO='0'THEN -鍵盤輸入為0CASE COUNT0 IS -由計(jì)數(shù)器從0到31的取值判斷音符信號(hào)的8位二進(jìn)制數(shù) WHEN 0=>INDEX0<="" -3 WHEN 1=>INDEX0<

33、="" -3 WHEN 2=>INDEX0<="" -3 WHEN 3=>INDEX0<="" -3 WHEN 4=>INDEX0<="" -5 WHEN 5=>INDEX0<="" -5 WHEN 6=>INDEX0<="" -5 WHEN 7=>INDEX0<="" -6 WHEN 8=>INDEX0<="" -8 WHEN 9=>INDEX0

34、<="" -8 WHEN 10=>INDEX0<="" -8 WHEN 11=>INDEX0<="" -3 WHEN 12=>INDEX0<="" -2 WHEN 13=>INDEX0<="" -2 WHEN 14=>INDEX0<="" -1 WHEN 15=>INDEX0<="" -1 WHEN 16=>INDEX0<="" -5 WHEN 1

35、7=>INDEX0<="" -5 WHEN 18=>INDEX0<="" -4 WHEN 19=>INDEX0<="" -4 WHEN 20=>INDEX0<="" -4 WHEN 21=>INDEX0<="" -3 WHEN 22=>INDEX0<="" -2 WHEN 23=>INDEX0<="" -2 WHEN 24=>INDEX0<="&quo

36、t; -5 WHEN 25=>INDEX0<="" -5 WHEN 26=>INDEX0<="" -4 WHEN 27=>INDEX0<="" -4 WHEN 28=>INDEX0<="" -3 WHEN 29=>INDEX0<="" -3 WHEN 30=>INDEX0<="" -2 WHEN 31=>INDEX0<="" -2WHEN OTHERS=>NULL;E

37、ND CASE;ELSE INDEX0<=INDEX2; -將音符信號(hào)0的值賦給音符信號(hào)2END IF;END PROCESS;END BEHAVIORAL;附錄2:音調(diào)發(fā)生源程序清單-程序名稱:TONE.VHD-程序功能:采用VHDL語(yǔ)言編程產(chǎn)生音階的分頻預(yù)置值。LIBRARY 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); -音符

38、輸入信號(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;ARCHITECTURE ART OF TONE ISBEGINSEARCH:PROCESS(INDEX) BEGINCASE INDEX ISWHEN""=>TONE0<=773;CODE<=""HIGH<='1' -分頻系數(shù)773Hz,音符顯示

39、,顯示低音WHEN""=>TONE0<=912;CODE<=""HIGH<='1'WHEN""=>TONE0<=1036;CODE<=""HIGH<='1'WHEN""=>TONE0<=1116;CODE<=""HIGH<='1'WHEN""=>TONE0<=1197;CODE<=""HIGH<

40、='1'WHEN""=>TONE0<=1290;CODE<=""HIGH<='0'WHEN""=>TONE0<=1372;CODE<=""HIGH<='0'WHEN""=>TONE0<=1410;CODE<=""HIGH<='0'WHEN OTHERS =>TONE0<=2047;CODE<=""HIGH

41、<='0'END CASE;END PROCESS;END ART;附錄3:數(shù)控分頻源程序清單-程序名稱:FENPIN.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 ISPORT(CLK1: IN STD_LOGIC; TONE1: IN INTEGER RANGE 0 TO 2047; -系統(tǒng)時(shí)鐘信號(hào) S

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

43、為1IF COUNT=2 THENPRECLK<='1'ELSIF COUNT=4 THEN -若計(jì)數(shù)器計(jì)4PRECLK<='0'COUNT:=0; -時(shí)基脈沖為0,計(jì)數(shù)器清零END IF;END IF;END PROCESS;PROCESS(PRECLK,TONE1)VARIABLE COUNT11:INTEGER RANGE 0 TO 2047; -定義變量頻率計(jì)數(shù)器11,從0到2047HzBEGIN IF(PRECLK'EVENT AND PRECLK='1')THEN -PRECLK脈沖上升沿觸發(fā) IF COUNT11

44、<TONE1 THEN -若計(jì)數(shù)器11值小于音符信號(hào)1 COUNT11:=COUNT11+1;FULLSPKS<='1' -計(jì)數(shù)器加1,音頻信號(hào)為1 ELSE COUNT11:=0;FULLSPKS<='0'END IF;END IF;END PROCESS;PROCESS(FULLSPKS) -音頻信號(hào)輸出進(jìn)程開(kāi)始VARIABLE COUNT2:STD_LOGIC:='0' -定義變量計(jì)數(shù)器2,初值為0BEGINIF(FULLSPKS'EVENT AND FULLSPKS='1')THEN -音頻信號(hào)輸出上升沿有效時(shí)C

溫馨提示

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