EDA技術(shù)課程設計報告簡易電子琴的設計_第1頁
EDA技術(shù)課程設計報告簡易電子琴的設計_第2頁
EDA技術(shù)課程設計報告簡易電子琴的設計_第3頁
EDA技術(shù)課程設計報告簡易電子琴的設計_第4頁
EDA技術(shù)課程設計報告簡易電子琴的設計_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、成 績指導教師:日 期:eda技術(shù)課程設計題 目: eda技術(shù)及其應用 簡易電子琴設計 姓 名: 院 系: 電子信息工程學系 專 業(yè): 通信工程 班 級: 091班級 學 號: 指導教師: 2012年 1 月eda技術(shù)課程設計報告簡易電子琴的設計(電子信息工程學系 指導教師:)摘 要 在現(xiàn)代的電子設計中,eda技術(shù)已經(jīng)成為一種普遍的工具,它在電子信息、通信、自動控制用計算機等領(lǐng)域的重要性日益突出。本課程設計主要采用eda技術(shù)設計一個簡易的八音符電子琴,它采用eda作為開發(fā)工具,verilog hdl語言為硬件描述語言,max + plus ii作為程序運行平臺,所開發(fā)的程序通過調(diào)試運行、波形仿

2、真驗證,初步實現(xiàn)了設計目標。本程序使用的硬件描述語言verilog hdl,既能進行面向綜合的電路設計,又可用于電路的模擬仿真,能夠在多層次上對所設計的系統(tǒng)加以描述,易學易用,語言功能強。關(guān)鍵詞 課程設計;eda;verilog hdl;電子琴1課程設計的目的系統(tǒng)實現(xiàn)是用硬件描述語言verilog按模塊化方式進行設計,然后進行編程、時序仿真、電路功能驗證,奏出美妙的樂曲。鞏固和運用所學課程,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設計,進一步加深對計算機原理以及數(shù)字電路應用技術(shù)方面的了解與認識,進一步熟悉數(shù)字電路系統(tǒng)設計、制作與調(diào)試的方法和步

3、驟。鞏固所學課堂知識,理論聯(lián)系實際,提高分析、解決計算機技術(shù)實際問題的獨立工作能力。2課程設計的要求(1)設計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲。(3)能夠自動演奏多首樂曲,且每首樂曲可重復演奏。. eda技術(shù)eda是電子設計自動化(electronic design automation)縮寫,是90年代初從cad(計算機輔助設計)、cam(計算機輔助制造)、cat(計算機輔助測試)和cae(計算機輔助工程)的概念發(fā)展而來的。eda技術(shù)是以計算機為工具,根據(jù)硬件描述語言hdl( hardware descr

4、iption language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優(yōu)化、布局布線、仿真以及對于特定目標芯片的適配編譯和編程下載等工作。典型的eda工具中必須包含兩個特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設計者在eda平臺上完成的針對某個系統(tǒng)項目的hdl、原理圖或狀態(tài)圖形描述,針對給定的硬件系統(tǒng)組件,進行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來。也就是說,綜合器是軟件描述與硬件實現(xiàn)的一座橋梁。綜合過程就是將電路的高級語言描述轉(zhuǎn)換低級的、可與目

5、標器件fpga/cpld相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標器件中,產(chǎn)生最終的下載文件,如jed文件。適配所選定的目標器件(fpga/cpld芯片)必須屬于在綜合器中已指定的目標器件系列。.硬件描述語言verilog hdl硬件描述語言hdl是eda技術(shù)中的重要組成部分,常用的硬件描述語言有veriloghdl 、vhdl、system verilog、system c、abel hdl和ahdl等,而verilog hdl和vhdl是當前最流行的并成為ieee標準的硬件描述語言。verilog hdl是目前應用最為廣泛的硬件描述語言, 并被ieee 采納為

6、ieee1064-1995 、ieee1064-2001、ieee1064-2003標準。verilog hdl可以用來進行各種層次的邏輯設計,也可以進行數(shù)字系統(tǒng)的邏輯綜合、仿真驗證和時序分析。verilog hdl適合算法級( algorithm) 、寄存器傳輸級(rtl) 、邏輯級(logic)、門級(gate)和開關(guān)級(transistor)等各個層次的電路設計和描述。verilog hdl和vhdl都是用于電路設計的硬件描述語言,并且都已成為ieee標準。verilog hdl早在1983年就已經(jīng)推出,至今已有20多年的應用歷史,因而verilog hdl擁有廣泛的設計群體,其設計資源

7、比vhdl豐富。4.1、hdl的特點1、hdl具有強大的功能,覆蓋面廣,描述能力強。hdl支持門級電路的描述,也支持寄存器傳輸級電路的描述,還支持以行為算法描述為對象的電路的描述。2、hdl有良好的可讀性。它可以被計算機接受,也容易被讀者理解。用hdl書寫的源文件,既是程序又是文檔,既是工程技術(shù)人員之間交換信息的文件,又可作為合同簽約者之間的文件。3、hdl具有良好的可移植性。作為一種已被ieee承認的工業(yè)標準,hdl事實上已成為通用的硬件描述語言,可以在各種不同的設計環(huán)境和系統(tǒng)平臺中使用。4、使用hdl可以延長設計的生命周期。用hdl描述的硬件電路與工藝無關(guān),不會因工藝而過時。與工藝有關(guān)的參

8、數(shù)可以通過hdl提供的屬性加以描述,工藝改變時,只需要修改相應程序中屬性參數(shù)即可。hdl支持對大規(guī)模設計的分解和已有設計的再利用。hdl可以描述復雜的電路系統(tǒng),支持對大規(guī)模設計的分解,由多人、多項目組來共同承擔和完成。標準化的規(guī)則和風格,為設計的再利用提供了有力的支持。5、hdl有利于保護知識產(chǎn)權(quán)。用hdl設計的專用集成電路(asic),在設計文件下載到集成電路時可以采用一定保密措施,使其不易被破譯和竊取。5 verilog hdl 設計流程圖圖1 verilog hdl 設計流程圖6. verilog hdl語言應用6.1設計要求定義在從事設計進行編寫verilog hdl代碼之前,必須先對

9、你的設計目的和要求有一個明確的認識。確定要實現(xiàn)的功能、對所需的信號建立時間、時鐘/輸出時間、最大系統(tǒng)工作頻率、關(guān)鍵的路徑等這些要求,要有一個明確的定義,然后對比設計,再選擇適當?shù)脑O計方式和相應的器件結(jié)構(gòu),進行設計的綜合。6.2用verilog hdl語言進行設計描述1、應決定設計方式,設計方式一般說來有三種:自頂向下設計,自底向上設 階層的生成,而后一種方式將描述的電路當作單模塊電路來進行的。自頂向下的處理方式要求將你的設計劃分成不同的功能元件,每個元件具有專門定義的輸入和輸出,并執(zhí)行專門的邏輯功能。首先生成一個由各功能元件相互連接形成的頂層模塊來做成一個網(wǎng)表,然后再設計其中的各個元件。而自底

10、向上的處理方法正好相反。平坦式設計則是指所有功能元件均在同一層和同一圖中詳細進行的。 2、編寫設計代碼。編寫verilog hdl語言的代碼與編寫其它計算機程序語言的代碼有很大的不同,你必須清醒地認識到你正在設計硬件,編寫的verilog hdl代碼必須能夠綜合到采用可編程邏輯器件來實現(xiàn)的數(shù)字邏輯之中。懂得eda工具中仿真軟件和綜合軟件的大致工作過程,將有助于編寫出優(yōu)秀的代碼。6.3用verilog hdl仿真器對verilog hdl原代碼進行功能仿真對于大型設計,采用verilog hdl仿真軟件對其進行仿真可以節(jié)省時間,可以在設計的早期階段檢測到設計中的錯誤,從而進行修正,以便盡可能地減

11、少對設計日程計劃的影響。因為對于大型設計,其綜合優(yōu)化、配置往往要花費好幾個小時,在綜合之前對原代碼仿真,就可以大大減少設計重復和修正錯誤的次數(shù)和時間。但對于小型設計,則往往不需要先對vhdl原代碼進行仿真。6.4對verilog vhdl原代碼進行綜合優(yōu)化處理選擇目標器件、輸入約束條件后,verilog hdl綜合優(yōu)化軟件工具將對verilog hdl原代碼進行處理,產(chǎn)生一個優(yōu)化了的網(wǎng)絡表,并可以進行粗略的時序仿真。綜合優(yōu)化軟件工具大致的處理過程如下:首先檢測語法和語意錯誤;然后進行綜合處理,對cpld器件而言,將得到一組工藝專用邏輯方程,對fpga器件而言,將得到一個工藝專用網(wǎng)表;最后進行優(yōu)

12、化處理,對cpld的優(yōu)化通常包括將邏輯化簡為乘積項的最小和式,降低任何給定的達式所需的邏輯塊輸入數(shù),這些方程進一步通過器件專用優(yōu)化來實現(xiàn)資源配置。對fpga的優(yōu)化通常也需要用乘積項的和式來表達邏輯,方程系統(tǒng)可基于器件專用資源和驅(qū)動優(yōu)化目標指引來實現(xiàn)因式分解,分解的因子可用來對實現(xiàn)的有效性進行評估,其準則可用來決定是對方程序系統(tǒng)進行不同的因式分解還是保持現(xiàn)有的因子。準則通常是指分享共同因子的能力,即可以被暫存,以便于和任何新生成的因子相比較。7.設計方案 根據(jù)系統(tǒng)設計要求,系統(tǒng)設計采用自頂向下的設計方法,系統(tǒng)的整體組裝設計原理圖如圖1所示,它由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三部分組

13、成。圖2 系統(tǒng)的整體組裝設計原理圖8.分組模塊的原理(1)樂曲自動演奏模塊樂曲自動演奏模塊(auto.v)的作用是產(chǎn)生8位發(fā)聲控制輸入信號/當進行自動演奏時,由存儲在此模塊中的8位二進制數(shù)作為發(fā)聲控制輸入,從而自動演奏樂曲。樂曲演奏的原理是這樣的:組成樂曲的每個音符的頻率值(音調(diào))及其持續(xù)的時間(音長)是樂曲能連續(xù)演奏所需的兩個基本數(shù)據(jù),因此只要控制輸出到揚聲器的激勵信號頻率的高低和持續(xù)的時間,就可以使揚聲器發(fā)出連續(xù)的樂曲聲。圖3 樂曲自動演奏模塊仿真圖 當 auto為“0”時,由存儲在此模塊中的8位二進制數(shù)作為發(fā)聲控制輸入,可自動演奏樂曲。(3) 數(shù)控分頻模塊數(shù)控分頻模塊是對時基脈沖進行分頻

14、,得到與1、2、3、4、5、6、7七個音符相對應的頻率。圖4 數(shù)控分頻模塊的仿真圖數(shù)控分頻模塊對時基脈沖進行分頻,得到與1、2、3、4、5、6、7七個音符對應頻率。該圖輸入系統(tǒng)時鐘信號clk1初值為0(各輸出值都是在時鐘信號的下降沿有效),音符分頻系數(shù)tone1為00100000即1290hz,驅(qū)動揚聲器的音頻信號spks輸出為1。(4) 頂層設計頂層模塊由樂曲自動演奏(auto),音調(diào)發(fā)生器(tone)和數(shù)控分頻器(fenpin)三個模塊組成。設置一個自動演奏/鍵盤輸入切換auto,即當auto=“0”時,選擇自動演奏音樂存儲器里面的樂曲,auto=“1”時,選擇鍵盤輸入的信號。輸入系統(tǒng)時鐘

15、信號clk32mhz初值為0,自動演奏信號handtoauto初值為0,鍵盤輸入信號index1為00000000;輸出音符信號code1則為0110000,高低音節(jié)信號high1變?yōu)?,即高音,音頻信號spkout即輸出0,輸出為1時code1變?yōu)?110100,這時出現(xiàn)10ns的延時。在仿真時由于系統(tǒng)各方面原因影響,出現(xiàn)延時屬于正?,F(xiàn)象。也許是能力不夠,再加上臨近期末時間較為緊迫,頂層設計沒能做出來,程序在編譯過程中出錯,可是知識范圍太窄,沒能找出錯誤所在,導致頂層的模塊沒能完成,因此也沒有仿真的圖形出來。9.結(jié)束語到現(xiàn)在為止,簡易電子琴的設計基本上告一段落,雖然由于自身問題沒能很好地完成

16、設計的要求,但是在設計的過程中,我受益匪淺,自身的知識能力得到了鍛煉的同時還對專業(yè)的認識有了進一步的加強。通過幾天的課程設計,我對數(shù)據(jù)庫軟件eda技術(shù)、verilog hdl、等系列知識都有了一定的了解。使用eda技術(shù)開發(fā)頁面的能力也有了很大提高。這個程序設計讓我學會一種新的語言,對數(shù)字系統(tǒng)結(jié)構(gòu)也有了更進一步的了解和認識,對我以后的學習有很大的幫助。通過這次的設計,我也認識到自己的缺點和不足,如對專業(yè)理論知識了解不夠透徹,不能很好地將之運用于實踐中,雖然在暑期的電子設計大賽中有過動手能力的增強訓練,但是對于我們電子專業(yè)的學生,實踐能力是占非常大的比重的,因此在接下來的日子里,提高自己的實踐能力

17、是重點,而且必須加深對專業(yè)知識的理解。參考文獻:1曹昕燕、周鳳臣、聶春燕:eda技術(shù)實驗與課程設計 清華大學出版社2王金明 數(shù)字系統(tǒng)設計與verilog hdl 電子工業(yè)出版社附錄:附錄1:樂曲自動演奏源程序清單module auto (clk, auto, clk2, index2, index0); input clk; input auto; output clk2; reg clk2; input7:0 index2; output7:0 index0; reg7:0 index0; reg4:0 count0; always (clk or auto) begin : pulse0

18、reg3:0 count; if (auto = 1b1) begin count = 0; clk2 = 1b0 ; end else if (clk = 1b1) begin count = count + 1; if (count = 4) begin clk2 = 1b1 ; end else if (count = 8) begin clk2 = 1b0 ; count = 0; end end end always (clk2) begin : music if (clk2 = 1b1) begin if (count0 = 31) begin count0 = 0 ; end e

19、lse begin count0 = count0 + 1 ; end end end always (count0 or auto or index2) begin : com1 if (auto = 1b0) begin case (count0) 0 : begin index0 = 8b00000100 ; end 1 : begin index0 = 8b00000100 ; end 2 : begin index0 = 8b00000100 ; end 3 : begin index0 = 8b00000100 ; end 4 : begin index0 = 8b00010000

20、 ; end 5 : begin index0 = 8b00010000 ; end 6 : begin index0 = 8b00010000 ; end 7 : begin index0 = 8b00100000 ; end 8 : begin index0 = 8b10000000 ; end 9 : begin index0 = 8b10000000 ; end 10 : begin index0 = 8b10000000 ; end 11 : begin index0 = 8b00000100 ; end 12 : begin index0 = 8b00000010 ; end 13

21、 : begin index0 = 8b00000010 ; end 14 : begin index0 = 8b00000001 ; end 15 : begin index0 = 8b00000001 ; end 16 : begin index0 = 8b00010000 ; end 17 : begin index0 = 8b00010000 ; end 18 : begin index0 = 8b00001000 ; end 19 : begin index0 = 8b00001000 ; end 20 : begin index0 = 8b00001000 ; end 21 : b

22、egin index0 = 8b00000100 ; end 22 : begin index0 = 8b00000010 ; end 23 : begin index0 = 8b00000010 ; end 24 : begin index0 = 8b00010000 ; end 25 : begin index0 = 8b00010000 ; end 26 : begin index0 = 8b00001000 ; end 27 : begin index0 = 8b00001000 ; end 28 : begin index0 = 8b00000100 ; end 29 : begin

23、 index0 = 8b00000100 ; end 30 : begin index0 = 8b00000010 ; end 31 : begin index0 = 8b00000010 ; end default : begin end endcase end else begin index0 = index2 ; end end endmodule附錄2:音調(diào)發(fā)生源程序清單module tone_a (index, code, high, tone0); input7:0 index; output6:0 code; reg6:0 code; output high; reg high

24、; output10:0 tone0; reg10:0 tone0; always (index) begin : search case (index) 8b00000001 : begin tone0 = 773 ; code = 7b1001111 ; high = 1b1 ; end 8b00000010 : begin tone0 = 912 ; code = 7b0010010 ; high = 1b1 ; end 8b00000100 : begin tone0 = 1036 ; code = 7b0000110 ; high = 1b1 ; end 8b00001000 : begin tone0 = 1116 ; code = 7b1001100 ; high = 1b1 ; end 8b00010000 : begin tone0 = 1197 ; code = 7b0100100 ; high = 1b1 ; end 8b00100000 : begin tone0 = 1290 ; code = 7b0100000 ; high = 1b0 ; end 8b01000000 : begin tone0 = 1372 ; code = 7b0001111 ; high = 1b0 ; end 8b10000000 : begin tone0 = 1410

溫馨提示

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

評論

0/150

提交評論