2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  《在系統(tǒng)編程技術(shù)》項目設(shè)計報告</p><p>  課程名稱 在系統(tǒng)編程技術(shù) </p><p>  任課教師 </p><p>  設(shè)計題目 樂曲硬件演奏電路 </p><p>  班 級

2、 </p><p>  姓 名 </p><p>  學(xué) 號 </p><p>  成 績 </p><p>  日 期

3、 </p><p><b>  樂曲硬件演奏電路</b></p><p><b>  題目分析</b></p><p>  經(jīng)過查閱相關(guān)的資料,我們可以知道,組成樂曲的每個音符的發(fā)音頻率值及其持續(xù)的時間是樂曲能連續(xù)演奏所需的兩個基本要素,所以我們要設(shè)計出類似于彈琴人手指的模塊,類似于琴鍵的模塊,類似于琴

4、弦或音調(diào)發(fā)生器的模塊,最后通過這三個模塊可以完成《梁?!窐非难葑?,與演奏發(fā)音相對應(yīng)的簡譜碼也可以輸出顯示出來。</p><p><b>  設(shè)計方案</b></p><p><b>  模塊劃分如下圖:</b></p><p><b>  頂層實體描述如下:</b></p><p

5、><b>  圖1 電路原理框圖</b></p><p>  該主系統(tǒng)由三個模塊:Songer頂層文件、div分頻器、譯碼器組成。且Songer頂層文件還包括3個子文件分別是NoteTabs,ToneTaba和Speakera,此外,我們還需建立一個名為“music”的LPM_ROM模塊與NoteTabs模塊連接。</p><p>  1.對于模塊NoteTab

6、s的功能描述:</p><p>  該模塊的功能就是定義音符數(shù)據(jù)ROM“music”隨著該模塊中的計數(shù)器控制時鐘頻率速率作加法計數(shù)時,即地址值遞增時,音符數(shù)據(jù)ROM中的音符數(shù)據(jù)。將從ROM中通過ToneIndex[3..0]端口輸向ToneTaba模塊,演奏《梁?!?。在該模塊中設(shè)置了一個8位二進(jìn)制計數(shù)器(計數(shù)最大值為138),作為音符數(shù)據(jù)ROM的地址發(fā)生器。這個計數(shù)器的計數(shù)頻率為4Hz,即每一計數(shù)值的停留時間為0

7、.25秒,恰為當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間。</p><p>  2.對于模塊ToneTaba的功能描述:</p><p>  該模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查找表電路,其中設(shè)置了樂曲的全部音符所對應(yīng)的分頻置數(shù),每一音符的停留時間由音樂節(jié)拍和音調(diào)發(fā)生器模塊NoteTabs的CLK的輸入頻率決定,這些值由對應(yīng)于ToneTaba的4位輸入值Index[3..0]確定,最多有

8、16種可選值。輸向ToneTaba中Index[3..0]的值ToneIndex[3..0]的輸出值與持續(xù)的時間由模塊NoteTabs決定。</p><p>  3.對于模塊Speakera的功能描述:</p><p>  該模塊是一個數(shù)控分頻器,音符的頻率可由此模塊獲得。由CLK端輸入一具有較高頻率的信號,通過Speakera分頻后由SPKOUT輸出。由于直接從數(shù)控分頻器中出來的輸出信號

9、是脈寬極窄的脈沖式信號。為了利用驅(qū)動揚聲器,需加一個D觸發(fā)器以均衡其占空比,頻率將是原來的1/2。Speakera對CLK輸入信號的分頻比由預(yù)置數(shù)Tone決定。SPKOUT的輸出頻率將決定每一音符的音調(diào)。</p><p>  4.對于譯碼器模塊的功能描述:</p><p>  譯碼器模塊是一個七段譯碼器,作用是在硬件上顯示音頻的高低,用0到7分別對應(yīng)空節(jié)拍、do、ri、mi、fa、suo、

10、la、xi,高音時,LED亮,數(shù)碼管顯示對應(yīng)數(shù)字。</p><p><b>  圖2 頂層電路圖</b></p><p><b>  方案實現(xiàn)</b></p><p>  對于模塊NoteTabs的仿真及描述</p><p>  這個計數(shù)器的計數(shù)頻率為4Hz,即每一計數(shù)值的停留時間為0.25秒,恰為

11、當(dāng)全音符設(shè)為1秒時,四四拍的4分音符持續(xù)時間,由此即可保證每個音符持續(xù)的時間如仿真波形圖所示。</p><p>  對于模塊ToneTaba的仿真及描述</p><p>  該模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查找表電路,其中設(shè)置了樂曲的全部音符所對應(yīng)的分頻置數(shù),對于不同的輸入,通過查表方式可以獲得不同的控制音調(diào)的預(yù)置數(shù)。</p><p>  對于模塊Speakera

12、的仿真及描述</p><p>  由CLK端輸入一具有較高頻率的信號,通過Speakera分頻后由SPKOUT輸出。由于直接從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號。</p><p>  對于模塊Songer的仿真及描述</p><p>  《梁?!窐非喿V如下:</p><p><b>  波形仿真圖如下:</b&

13、gt;</p><p>  Songer模塊就是頂層設(shè)計文件,所有的模塊都由它調(diào)用。輸入了8Hz與12Hz的時鐘信號,然后由CODE1輸出了與演奏發(fā)音相對應(yīng)的簡譜碼,HIGH1為高八度音標(biāo),SPKOUT輸出樂曲。</p><p><b>  硬件測試及說明</b></p><p>  電路的頂層文件管腳分配圖如下:</p><

14、;p><b>  圖3管腳分配圖</b></p><p>  選擇實驗電路模式1,先將引腳鎖定,使CLK12MHz與clock9相連接,接受12MHz時鐘頻率即用短路冒在clock9接“12MHz”;CLK8Hz與clock2相連接,接受4Hz頻率;發(fā)音輸出SPKOUT接Speaker;與演奏發(fā)音相對應(yīng)的簡譜碼輸出顯示可由CODE1在數(shù)碼管5顯示;HIGH1為高八度音指示,可由發(fā)光管D

15、5指示,最后向目標(biāo)芯片下載適配后的SOF邏輯設(shè)計文件。</p><p><b>  結(jié)論</b></p><p>  我的本次設(shè)計是基于FPGA的音樂硬件演奏電路的設(shè)計,實現(xiàn)了一個樂曲播放器,而且描述了其工作原理、設(shè)計思路及實現(xiàn)方法,并在QUARTUSП上選用目標(biāo)芯片仿真實現(xiàn)了音樂硬件演奏電路的功能。通過本次設(shè)計實踐,證明了采用FPGA設(shè)計實現(xiàn)音樂硬件演奏電路的可行性

16、和可靠性,而且更改樂曲容易,可根據(jù)需要修改ROM中的音符數(shù)據(jù)文件,從而使電路實現(xiàn)任一曲子的播放。</p><p>  這種基于FPGA的音樂硬件演奏電路的設(shè)計與實現(xiàn),不僅通過VHDL層次化和模塊化設(shè)計方法,同時采用數(shù)控分頻和定制LPM-ROM的設(shè)計思想,更好的優(yōu)化了樂曲演奏數(shù)字電路的設(shè)計,在此基礎(chǔ)上不必變化頂層文件架構(gòu)可隨意變更樂曲,提高了設(shè)計的靈活性、可靠性和可擴(kuò)展性。</p><p>

17、<b>  課程總結(jié)</b></p><p>  通過本次課程設(shè)計,培養(yǎng)了我們綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題的能力,是對我們在實際工作能力的具體訓(xùn)練和考察過程。</p><p>  回顧此次課程設(shè)計,從書籍,網(wǎng)絡(luò)不斷的尋找到設(shè)計思路,到完成整個設(shè)計,從理論到實踐,可以學(xué)到很多很多的的東西。對課本知識的進(jìn)一步加深的同時學(xué)到了很多在書本上沒有學(xué)到過的知識

18、。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能真正提高自己的實際動手能力和獨立思考的能力。在設(shè)計的過程難免會遇到過各種各樣的問題,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,通過這次課程設(shè)計之后,一定把以前所學(xué)過的知識重新溫故。</p><p>  這次課程設(shè)計終于順利完成了,

19、在設(shè)計中遇到的一些問題,最后在老師和同學(xué)的幫助下,終于解決了,從中學(xué)習(xí)到了很多。</p><p><b>  附錄</b></p><p>  1.對于模塊NoteTabs的VHDL語言描述</p><p>  LIBRARY IEEE; ----NoteTabs模塊</p><p>  USE IEEE.STD_LO

20、GIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY NoteTabs IS</p><p>  PORT ( clk : IN STD_LOGIC;</p><p>  ToneIndex: OUT STD_LOGIC_VECTOR (3 DOWN

21、TO 0));</p><p><b>  END;</b></p><p>  ARCHITECTURE one OF NoteTabs IS</p><p>  COMPONENT MUSIC</p><p>  PORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);<

22、/p><p>  inclock : IN STD_LOGIC;</p><p>  q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));</p><p>  END COMPONENT;</p><p>  SIGNAL Counter : STD_LOGIC_VECTOR (7 DOWNTO 0);</p>

23、;<p><b>  BEGIN</b></p><p>  CNT8 : PROCESS(clk,Counter)</p><p><b>  BEGIN</b></p><p>  IF Counter=138 THEN Counter<="00000000";</p>

24、;<p>  ELSIF (clk'EVENT AND clk='1')THEN Counter<=Counter+1;END IF;</p><p>  END PROCESS;</p><p>  u1 : MUSIC PORT MAP(address=>Counter,q=>ToneIndex,inclock=>clk);

25、</p><p><b>  END;</b></p><p>  2.對于模塊ToneTaba的VHDL語言描述</p><p>  LIBRARY IEEE; ---ToneTaba模塊</p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  EN

26、TITY ToneTaba IS </p><p>  PORT ( Index : IN STD_LOGIC_VECTOR (3 DOWNTO 0) ; </p><p>  CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) ; </p><p>  HIGH : OUT STD_LOGIC; </p>&

27、lt;p>  Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0) ); </p><p><b>  END; </b></p><p>  ARCHITECTURE one OF ToneTaba IS </p><p><b>  BEGIN </b></p>&

28、lt;p>  Search : PROCESS(Index) </p><p><b>  BEGIN </b></p><p>  CASE Index IS -- 譯碼電路,查表方式,控制音調(diào)的預(yù)置數(shù) </p><p>  WHEN "0000" => Tone<="111111111

29、11" ; CODE<="0000"; HIGH <='0';-- 2047</p><p>  WHEN "0001" => Tone<="01100000101" ; CODE<="0001"; HIGH <='0';-- 773; </p>

30、<p>  WHEN "0010" => Tone<="01110010000" ; CODE<="0010"; HIGH <='0';-- 912; </p><p>  WHEN "0011" => Tone<="10000001100" ; C

31、ODE<="0011"; HIGH <='0';--1036; </p><p>  WHEN "0101" => Tone<="10010101101" ; CODE<="0101"; HIGH <='0';--1197; </p><p>

32、  WHEN "0110" => Tone<="10100001010" ; CODE<="0110"; HIGH <='0';--1290; </p><p>  WHEN "0111" => Tone<="10101011100" ; CODE<=&qu

33、ot;0111"; HIGH <='0';--1372; </p><p>  WHEN "1000" => Tone<="10110000010" ; CODE<="0001"; HIGH <='1';--1410; </p><p>  WHEN &quo

34、t;1001" => Tone<="10111001000" ; CODE<="0010"; HIGH <='1';--1480; </p><p>  WHEN "1010" => Tone<="11000000110" ; CODE<="0011&quo

35、t;; HIGH <='1';--1542; </p><p>  WHEN "1100" => Tone<="11001010110" ; CODE<="0101"; HIGH <='1';--1622; </p><p>  WHEN "1101"

36、; => Tone<="11010000100" ; CODE<="0110"; HIGH <='1';--1668; </p><p>  WHEN "1111" => Tone<="11011000000" ; CODE<="0001"; HIGH &l

37、t;='1';--1728; </p><p>  WHEN OTHERS => NULL; </p><p>  END CASE; </p><p>  END PROCESS; </p><p><b>  END; </b></p><p>  3.對于模塊Spe

38、akera的VHDL語言描述</p><p>  LIBRARY IEEE;---Speakera模塊</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><

39、;p>  ENTITY Speakera IS</p><p>  PORT ( clk : IN STD_LOGIC;</p><p>  Tone: IN STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p>  Spks: OUT STD_LOGIC );</p><p><b>  END;&

40、lt;/b></p><p>  ARCHITECTURE one OF Speakera IS</p><p>  SIGNAL PreCLK,FullSpkS : STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  DivideCLK : PROCESS(clk)</

41、p><p>  VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PreCLK<='0';</p><p>  IF Count4>11 THEN PreCLK <='

42、1';Count4 :="0000";</p><p>  ELSIF clk'EVENT AND clk ='1' THEN Count4:=Count4+1;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p

43、>  GenSpkS : PROCESS(PreCLK,Tone)</p><p>  VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  IF PreCLK'EVENT AND PreCLK = '1&#

44、39; THEN</p><p>  IF Count11 = 16#7FF# THEN Count11 :=Tone;FullSpkS<='1';</p><p>  ELSE Count11 :=Count11+1;FullSpks<='0';END IF;</p><p><b>  END IF;<

45、/b></p><p>  END PROCESS;</p><p>  DelaySpks : PROCESS(FullSpkS)</p><p>  VARIABLE Count2 : STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  IF Ful

46、lSpkS'EVENT AND FullSpkS='1' THEN Count2 :=NOT Count2;</p><p>  IF Count2='1' THEN SpkS<='1';</p><p>  ELSE SpkS<='0';END IF;</p><p><b&

47、gt;  END IF;</b></p><p>  END PROCESS;</p><p><b>  END;</b></p><p>  4.對于模塊MUSIC生成的VHDL語言</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_l

48、ogic_1164.all;</p><p>  LIBRARY altera_mf;</p><p>  USE altera_mf.all;</p><p>  ENTITY MUSIC IS</p><p><b>  PORT</b></p><p><b>  (</b&

49、gt;</p><p>  address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  inclock: IN STD_LOGIC ;</p><p>  q: OUT STD_LOGIC_VECTOR (3 DOWNTO 0)</p><p><b>  );</b&

50、gt;</p><p>  END MUSIC;</p><p>  ARCHITECTURE SYN OF music IS</p><p>  SIGNAL sub_wire0: STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p>  COMPONENT altsyncram</p><p&

51、gt;<b>  GENERIC (</b></p><p>  address_aclr_a: STRING;</p><p>  init_file: STRING;</p><p>  intended_device_family: STRING;</p><p>  lpm_hint: STRIN

52、G;</p><p>  lpm_type: STRING;</p><p>  numwords_a: NATURAL;</p><p>  operation_mode: STRING;</p><p>  outdata_aclr_a: STRING;</p><p>  outdata_reg_

53、a: STRING;</p><p>  widthad_a: NATURAL;</p><p>  width_a: NATURAL;</p><p>  width_byteena_a: NATURAL</p><p><b>  );</b></p><p><b>

54、;  PORT (</b></p><p>  clock0: IN STD_LOGIC ;</p><p>  address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  q_a: OUT STD_LOGIC_VECTOR (3 DOWNTO 0)</p><p><

55、b>  );</b></p><p>  END COMPONENT;</p><p><b>  BEGIN</b></p><p>  q <= sub_wire0(3 DOWNTO 0);</p><p>  altsyncram_component : altsyncram</

56、p><p>  GENERIC MAP (</p><p>  address_aclr_a => "NONE",</p><p>  init_file => "F:/lijinshan0905075006/yuequyanzou/yuequyanzou.mif",</p><p>  int

57、ended_device_family => "Cyclone",</p><p>  lpm_hint => "ENABLE_RUNTIME_MOD=NO",</p><p>  lpm_type => "altsyncram",</p><p>  numwords_a => 2

58、56,</p><p>  operation_mode => "ROM",</p><p>  outdata_aclr_a => "NONE",</p><p>  outdata_reg_a => "UNREGISTERED",</p><p>  width

59、ad_a => 8,</p><p>  width_a => 4,</p><p>  width_byteena_a => 1</p><p><b>  )</b></p><p>  PORT MAP (</p><p>  clock0 => inclock,&l

60、t;/p><p>  address_a => address,</p><p>  q_a => sub_wire0</p><p><b>  );</b></p><p><b>  END SYN;</b></p><p>  5.對于模塊Songer的VH

61、DL語言描述</p><p>  LIBRARY IEEE;---硬件演奏電路頂層設(shè)計</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY songer IS</p><p>  PORT ( CLK12MHZ : IN STD_LOGIC; ---音調(diào)頻率信號</p

62、><p>  CLK8HZ : IN STD_LOGIC; ---節(jié)拍頻率信號</p><p>  CODE1 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p>  ---簡譜碼輸出顯示</p><p>  HIGH1 : OUT STD_LOGIC; ---高八度指示<

63、;/p><p>  SPKOUT : OUT STD_LOGIC ); ---聲音輸出</p><p><b>  END;</b></p><p>  ARCHITECTURE one OF Songer IS</p><p>  COMPONENT NoteTabs</p><p>  PO

64、RT ( clk : IN STD_LOGIC;</p><p>  ToneIndex : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));</p><p>  END COMPONENT ;</p><p>  COMPONENT ToneTaba</p><p>  PORT (Index : IN STD

65、_LOGIC_VECTOR (3 DOWNTO 0);</p><p>  CODE : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p>  HIGH : OUT STD_LOGIC;</p><p>  Tone : OUT STD_LOGIC_VECTOR (10 DOWNTO 0));</p><

66、p>  END COMPONENT;</p><p>  COMPONENT Speakera</p><p>  PORT (clk : IN STD_LOGIC;</p><p>  Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p>  Spks : OUT STD_LOGIC

67、);</p><p>  END COMPONENT ;</p><p>  SIGNAL Tone : STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p>  SIGNAL ToneIndex : STD_LOGIC_VECTOR (3 DOWNTO 0);</p><p><b>  BEGIN<

68、;/b></p><p>  u1: NoteTabs PORT MAP (clk=>CLK8HZ,ToneIndex=>ToneIndex);</p><p>  u2: ToneTaba PORT MAP (Index=>ToneIndex,Tone=>Tone,CODE=>CODE1,HIGH=>HIGH1);</p>&l

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論