在系統編程技術項目設計報告_第1頁
在系統編程技術項目設計報告_第2頁
在系統編程技術項目設計報告_第3頁
在系統編程技術項目設計報告_第4頁
在系統編程技術項目設計報告_第5頁
已閱讀5頁,還剩9頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、在系統編程技術項目設計報告課程名稱 在系統編程技術 任課教師 譚敏 設計題目 樂曲硬件演奏電路設計 班級 09級電子信息工程(1)班姓名學號 王闖 0905071023 成績 日期 2012-5-28 目錄1題目分析31.1 功能要求31.2 性能指標32設計方案42.1頂層實體描述42.2模塊劃分52.3模塊描述52.3.1 speakera模塊52.3.2 tonetaba模塊62.3.3 notetabs模塊62.4頂層電路圖73方案實現73.1 notetabs模塊仿真及描述73.2 tonetaba模塊仿真及描述83.3 speakera模塊仿真及描述83.4頂層電路仿真及描述84硬

2、件測試及說明95結論96課程總結97附錄10前言:這次設計實驗我做的是樂曲硬件演奏電路設計,通過在系統編程技術課程的學習,我已經學會了用vhdl語言來實現系統要求的電路設計。vhdl語言具有良好的電路行為描述和系統描述的能力,用vhdl語言進行電子系統的設計非常方便和實用,而基于vhdl的自頂向下的設計方法是其很大的一個優點。1題目分析1.1 功能要求(1)按順序播放歌曲(3)通過按鍵選擇性播放歌曲(3)通過led燈顯示音階1.2 性能指標(1)樂曲硬件演奏電路的基本原理樂曲都是由一連串的音符組成,每一音符對應著一個確定的頻率,按照樂曲的樂譜依次輸出這些音符所對應的頻率,就可以在揚聲器上連續地

3、發出各個音符的音調。我們知道,組成樂曲的每個音符的發音頻率值及其持續的時間是樂曲能連續演奏所需的兩個基本要素,所以,掌握好一首歌曲的節奏,就能完整地演奏出來。(2)音符頻率和樂曲節奏多個不同頻率的信號可通過對某個基準頻率進行分頻器獲得,本設計中選取750khz的基準頻率,由于clk端輸入的是較高頻率12mhz信號,可以對其進行16分頻。計數時鐘信號作為輸出音符快慢的控制信號,時鐘快時輸出節拍速度就快,演奏的速度也就快,時鐘慢時輸出節拍的速度就慢,演奏的速度自然降低。簡譜音符和頻率關系:2設計方案自頂向下的設計框圖樂曲硬件電路設計數控分頻器音樂節拍和音調發生器預置數查表電路2.1頂層實體描述頂層

4、實體圖當一個4hz的時鐘脈沖來到時,樂譜發生器模塊輸出一個音符數據給分頻系數模塊,分頻系數模塊輸出此音符相應的分頻系數,將分頻系數送給數控分頻器模塊,當12mhz的時鐘脈沖來到時,數控分頻器就根據分頻系數輸出相應的頻率(即此音符所對應的發生頻率)給揚聲器,揚聲器就可發出對應音符的聲音來.連續的4hz的時鐘脈沖就將樂譜發生器里所存儲的音符數據一個接一個的送給了分頻系數模塊,再經過數控分頻模塊,最后揚聲器一個接一個的發出音符數據所對應的聲音來。曲子也就流暢的播放出來了,當樂曲一遍演奏完成后,樂曲發生器能自動從頭開始循環演奏,按下sel鍵時播放第二首歌,按下rst鍵時從頭開始播放歌曲。2.2模塊劃分

5、主系統由三個模塊組成,分別為speakera模塊、tonetaba模塊、notetabs模塊。(1)speakera是數控分頻模塊;(2)tonetaba是分頻預置數查找表電路模塊;(3)notetabs音調發生器模塊。2.3模塊描述2.3.1 speakera模塊speakera模塊實體圖音符的頻率可以由此模塊獲得,這是一個數控分頻器,由其clk端輸入一具有較高頻率的信號,通過speakera分頻后由spkout輸出,由于直接從數控分頻器中出來的輸出信號是脈沖極窄的脈沖式信號,為了有利于驅動揚聲器,需另加一個d觸發器以均衡其占空比,但這時的頻率將是原來的1/2。speakera對clk輸入信

6、號的分頻比由11位預置數tone10.0決定。spkout的輸出頻率將決定每一音符的音調,這樣,分頻計數器的預置值tone10.0與spkout的輸出頻率就有了對應關系。例如在tonetaba模塊中若取tone10.0=1036,將發出音符為“3”音的信號頻率。2.3.2 tonetaba模塊tonetaba模塊實體圖音符的持續時間需根據樂曲的速度及每個音符的節拍數來確定,tonetaba的功能首先是為speakera提供決定所發音符的分頻預置數,而此數在speakera輸入口停留的時間即為此音符的節拍值。tonetaba模塊是樂曲簡譜碼對應的分頻預置數查找表電路,其中設置了樂曲全部音符對應的

7、分頻預置數,每一個音符的停留時間由音樂節拍和音調發生器模塊notetabs的clk輸入頻率決定。分頻預置數的輸出對應4位輸入值index3.0確定,而當樂曲全部分頻預置數不止16個時,可以用5位輸入值index4.0。輸向tonetaba中的index3.0的值toneindex3.0的輸出值與持續的時間由notetabs模塊覺定。2.3.3 notetabs模塊notetabs模塊實體圖在notetabs中設置了一個8位二進制計數器,作為音符數據rom的地址發生器,計數最大值為138,如果樂曲比較長的話可以用9位,此時計數最大值為512。這個計數器的計數頻率選為4hz,即每一計數值的停留時間

8、為0.25秒,恰為當全音符設為1秒時,四四拍的4分音符持續時間。隨著notetabs中的計數器按4hz的時鐘速率作加法計數時,即隨地址值遞增時,音符數據rom中的音符數據將從rom中通過toneindex3.0端口輸向tonetaba模塊,樂曲就開始自然地演奏起來。在notetabs模塊中定制rom元件,首先建立.mif文件輸入音樂譜,再利用megawizard plug-in manager定制rom宏功能塊,最后加載于rom中,步驟為:(1)進入quartusii,選菜單 tool-megawizard plug-in manager,選擇“creat a new”,然后按“next”鍵,

9、選擇lpm-rom;最后在browse下的欄中鍵入路徑與輸出文件名。(2)單擊“next”鍵,選擇rom數據位寬度為4,地址線寬為256,即設置此rom能存儲4位二進制數據共256個。(3)通過“browse” 鈕,找到rom中的加載文件路徑和文件名:注意rom元件的inclock是地址鎖存時鐘。(4)打開已定制的rom文件,將它設置為工程,并確定目標器件,進行測試仿真波形,按照定制步驟對音符數據文件進行rom定制。2.4頂層電路圖頂層電路圖3方案實現3.1 notetabs模塊仿真及描述notetabs模塊仿真圖由仿真波形可以看出當ret為低電平時, tone輸出的始終都是“0000”,當r

10、et為高電平時,根據 sel來選擇播放音樂,實現了選擇復位功能。3.2 tonetaba模塊仿真及描述tonetaba模塊仿真圖tonetaba 分頻預置數模塊的功能是輸出各個音符所對應的分頻預置數,由上面的仿真波形圖可看到若當index是“1000”,tone輸出為1410,即高音1的分頻預置數;當index是“1010”時, tone輸出為1542即高音3的分頻預置數;當index是“1001”時, tone輸出為1480即高音2的分頻預置數等等其它狀態時,tone分別輸出相應音符的分頻預置數,仿真波形圖是正確的。3.3 speakera模塊仿真及描述speakera模塊仿真圖spks為輸

11、出頻率,由圖可以看出與11位分頻相對應,仿真的結果是正確的。3.4頂層電路仿真及描述頂層電路仿真圖由仿真結果可以看出,但ret為低電平時,code1為“0000”,這說明此時不播放音樂;當ret為高電平時,code1開始變化,spkout的輸出頻率也開始變動,高八度音指示high1也開始變化。4硬件測試及說明選擇實驗電路模式1。引腳鎖定,將clk12mhz與clock9相接,clk8hz與clock2相連,接受4hz頻率,發音輸出spkout接speaker,與演奏發音相對應的簡譜碼輸出顯示可由code1在數碼管5顯示;high1為高八度指示,可由發光管d5指示;復位鍵ret、選擇鍵sel分別

12、接鍵7、鍵8。查表得對應引腳號如下:引腳鎖定圖程序經下載后,在硬件上,按下鍵7,d15燈亮,開始從頭播放音樂,再按下鍵8,d16燈亮,播放第二首,再按下ret,d15燈滅,停止播放。此測試的結果證明了設計是正確的。5結論實驗是對我們所學的知識和個人應用能力檢驗,更重要的是通過實驗能增強學生的邏輯思維能力和鍛煉獨立動手能力。這次做的樂曲硬件演奏電路讓我感觸頗深,我從中學到了很多,不僅加深了對課本理論知識的理解,而且還學到了與課本無關的知識,了解了音樂的組成和使其演奏的幾個基本要素。這次設計實驗我投入了很多的精力,在實驗的過程中也遇到了不懂的問題,不過在自己解決不了的時候,我請教了老師和同學,得到

13、過老師和同學的幫助,在此表示感謝。實驗很快就完成了,在設計的過程中,我體會到了學習的樂趣,我喜歡接受新知識,接受新挑戰,學習能讓我的生活更充實。有時間我還會做其他的設計,拓展自己的知識。6課程總結eda,electronic design automation,即電子設計自動化,對以硬件描述語言為系統邏輯描述手段完成的設計文件,自動地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合、結構綜合,以及邏輯優化和仿真測試,直到實現電路的系統功能。eda是現代電子技術的核心,在電子技術飛速發展的今天,掌握eda技術是電子設計者和愛好者不可缺少的一部分。通過一個學期的學習,對eda技術已有了深刻的了解。用ed

14、a技術進行電子系統設計的最終目標是完成專用集成電路asic的設計和實現。現在市場上實現這一目標的主流器件是fpga和cpld,fpga是現場可編程門陣列,cpld是復雜可編程邏輯器件,它們都是使用超大規模集成電路工藝,開發效率高,成本低,工作可靠性好,所以取代了之前的簡單pld而得到廣泛的使用。eda技術中主要講的是vhdl,用vhdl對電子線路進行表達和設計是eda建模和實現技術中最基本和最重要的方法。用vhdl設計電路的一個很大優點是設計者可以專心致力于其功能的實現,而不需要對不影響功能的與工藝有關的因素花費過多的時間和精力。在vhdl的各個設計方法中,自頂向下的設計方法充分體現了它的實用

15、性,自頂向下的設計方法就是在整個設計流程中個設計環節逐步求精的過程,它使系統被分為多個子模塊,每個子模塊可以獨立設計,可以分工合作,提高了設計效率。學好eda的前提是學好vhdl語言, vhdl不僅可以作為系統模擬的建模工具,而且可以作為電路系統的設計工具,可以利用軟件工具將vhdl源碼自動地轉化為文本方式表達的基本邏輯元件連接圖,即網表文件,這種方法顯然對于電路自動設計是一個極大的推進。eda技術不是短時間就能全部掌握的,在以后的學習當中,還需要對其進行溫故和拓展,我相信學好這項技術在以后的工作中會有非常大的幫助。7附錄(2)notetabs模塊程序設計library ieee; -音樂節拍

16、和音調發生器模塊use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity notetabs isport(sel:instd_logic; -選擇鍵rst:instd_logic; -復位鍵clk:in std_logic; -音樂節拍時鐘4hztoneindex:out std_logic_vector(3 downto 0) );end;architecture one of notetabs iscomponent music -音符數據rom1port( address:in std_logic_vector(

17、7 downto 0);inclock:in std_logic;q:out std_logic_vector(3 downto 0) );end component;signal counter :std_logic_vector(7 downto 0); -八位二進制計數器begin cnt8:process(clk,counter)beginif rst=1 then if(clkevent and clk = 1) then counter=counter+1; if sel=1 thenif (counter254) then counter 138) then counter =

18、00000001;end if; else null; end if; end if; else counter counter,q=toneindex,inclock=clk);end;(2)speakera模塊源程序library ieee; -音樂符數控分頻電路模塊use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity speakera isport ( clk:in std_logic; -音調頻率信號12mhz tone: in std_logic_vector(10 downto 0); -音樂符對應分頻

19、11位 spks: out std_logic); -聲音輸出end;architecture one of speakera issignal preclk,fullspks :std_logic;begindivideclk:process(clk)variable count4:std_logic_vector(3 downto 0);beginpreclk 11 then preclk=1;count4:=0000;elsif clkevent and clk=1 then count4:=count4+1;end if;end process;genspks:process(prec

20、lk,tone) -11位可預置計數器variable count11:std_logic_vector (10 downto 0);beginif preclkevent and preclk=1 thenif count11=16#7ff# then count11:=tone;fullspks=1;else count11:=count11+1;fullspks=0;end if;end if;end process;delayspks:process(fullspks) -將輸出再2分頻,展寬脈沖,使揚聲器有足夠功率發音variable count2:std_logic;beginif fullspksevent and fullspks=1 then count2:=not count2; if count2=1 then spks=1;else spkstone=11111111111;code=0000;hightone=01100000101; code =0001; high tone=01110010000; code =0000; high tone=10000001100; code =0011; high tone=10010101101; code

溫馨提示

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

評論

0/150

提交評論