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

下載本文檔

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

文檔簡介

1、<p><b>  EDA課程設(shè)計</b></p><p>  具有自動樂曲演奏功能的電子琴</p><p><b>  一、 課程設(shè)計內(nèi)容</b></p><p>  (1)設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。</p><p> ?。?)系統(tǒng)演奏時可以選擇是手動演奏(

2、由鍵盤輸入)還是自動演奏已存入的樂曲。</p><p> ?。?)能夠自動演奏多首樂曲,且樂曲可重復(fù)演奏。</p><p><b>  二、課程設(shè)計原理</b></p><p>  本課程設(shè)計目的在于靈活運用EDA技術(shù)編程實現(xiàn)一個簡易電子琴的樂曲演奏,它要求在實驗箱上構(gòu)造一個電子琴電路,不同的音階對應(yīng)不同頻率的正弦波。按下每個代表不同音階的按鍵

3、時,能夠發(fā)出對應(yīng)頻率的聲音。故系統(tǒng)可分為樂曲自動演奏模塊(AUTO)、音調(diào)發(fā)生模塊(TONE)和數(shù)控分頻模塊(FENPIN)三部分。</p><p>  三、簡易電子琴的設(shè)計過程</p><p>  1.樂曲自動演奏模塊</p><p>  樂曲自動演奏模塊的作用是產(chǎn)生8位發(fā)生控制輸入信號。當(dāng)進(jìn)行自動演奏時,由存儲在此模塊的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動演奏

4、樂曲。</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  

5、ENTITY AUTO IS</p><p>  PORT(CLK: IN STD_LOGIC; </p><p>  AUTO: IN STD_LOGIC; </p><p>  CLK2: BUFFER STD_LOGIC; <

6、;/p><p>  INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p>  INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); </p><p><b>  END AUTO;</b></p><p>  ARCHITECTURE BEHA

7、VIORAL OF AUTO IS</p><p>  SIGNAL COUNT0:INTEGER RANGE 0 TO 31; </p><p><b>  BEGIN</b></p><p>  PULSE0:PROCESS(CLK,AUTO) </p><p>  VARIABLE

8、 COUNT:INTEGER RANGE 0 TO 8; </p><p><b>  BEGIN</b></p><p>  IF AUTO='1'THEN </p><p>  COUNT:=0;CLK2<='0'; &l

9、t;/p><p>  ELSIF(CLK'EVENT AND CLK='1')THEN </p><p>  COUNT:=COUNT+1; </p><p>  IF COUNT=4 THEN </p><p>  CLK2<='1'

10、;;</p><p>  ELSIF COUNT=8 THEN</p><p>  CLK2<='0';COUNT:=0;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END

11、 PROCESS;</p><p>  MUSIC:PROCESS(CLK2) </p><p><b>  BEGIN</b></p><p>  IF(CLK2'EVENT AND CLK2='1')THEN </p><p>  IF(CO

12、UNT0=31)THEN </p><p>  COUNT0<=0; </p><p><b>  ELSE</b></p><p>  COUNT0<=COUNT0+1;</p><p><b>  END IF;&

13、lt;/b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  COM1:PROCESS(COUNT0,AUTO,INDEX2)</p><p><b>  BEGIN</b></p><p>  IF

14、 AUTO='0'THEN </p><p>  CASE COUNT0 IS </p><p>  WHEN 0=>INDEX0<="00000100"; --3</p><p>  WHEN 1=>INDEX0<="0000

15、0100"; --3</p><p>  WHEN 2=>INDEX0<="00000100"; --3</p><p>  WHEN 3=>INDEX0<="00000100"; --3</p><p>  WHEN 4=>INDEX0<="00010

16、000"; --5</p><p>  WHEN 5=>INDEX0<="00010000"; --5</p><p>  WHEN 6=>INDEX0<="00010000"; --5</p><p>  WHEN 7=>INDEX0<="001000

17、00"; --6</p><p>  WHEN 8=>INDEX0<="10000000"; --8</p><p>  WHEN 9=>INDEX0<="10000000"; --8</p><p>  WHEN 10=>INDEX0<="100000

18、00"; --8</p><p>  WHEN 11=>INDEX0<="00000100"; --3</p><p>  WHEN 12=>INDEX0<="00000010"; --2</p><p>  WHEN 13=>INDEX0<="0000001

19、0"; --2</p><p>  WHEN 14=>INDEX0<="00000001"; --1</p><p>  WHEN 15=>INDEX0<="00000001"; --1</p><p>  WHEN 16=>INDEX0<="00010000

20、"; --5</p><p>  WHEN 17=>INDEX0<="00010000"; --5</p><p>  WHEN 18=>INDEX0<="00001000"; --4</p><p>  WHEN 19=>INDEX0<="00001000&

21、quot;; --4</p><p>  WHEN 20=>INDEX0<="00001000"; --4</p><p>  WHEN 21=>INDEX0<="00000100"; --3</p><p>  WHEN 22=>INDEX0<="00000010&q

22、uot;; --2</p><p>  WHEN 23=>INDEX0<="00000010"; --2</p><p>  WHEN 24=>INDEX0<="00010000"; --5</p><p>  WHEN 25=>INDEX0<="00010000&qu

23、ot;; --5</p><p>  WHEN 26=>INDEX0<="00001000"; --4</p><p>  WHEN 27=>INDEX0<="00001000"; --4</p><p>  WHEN 28=>INDEX0<="00000100&quo

24、t;; --3</p><p>  WHEN 29=>INDEX0<="00000100"; --3</p><p>  WHEN 30=>INDEX0<="00000010"; --2</p><p>  WHEN 31=>INDEX0<="00000010"

25、;; --2</p><p>  WHEN OTHERS=>NULL;</p><p><b>  END CASE;</b></p><p>  ELSE INDEX0<=INDEX2; </p><p><b>  END IF;</b>&

26、lt;/p><p>  END PROCESS;</p><p>  END BEHAVIORAL;</p><p><b>  2.音調(diào)發(fā)生模塊</b></p><p>  音調(diào)發(fā)生模塊的作用是產(chǎn)生音階的分頻預(yù)置值。當(dāng)8位發(fā)聲控制輸入信號中的某一位為高電平時,則對應(yīng)某一音階的數(shù)值將輸出,該數(shù)值即為該音階的分頻預(yù)置值,分頻預(yù)

27、置值控制數(shù)控分頻模塊進(jìn)行分頻,由此得到每個音階對應(yīng)的頻率。</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.A

28、LL;</p><p>  ENTITY TONE IS</p><p>  PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p>  CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); </p><p>  HIGH: OUT STD_LOGIC;

29、 </p><p>  TONE0:OUT INTEGER RANGE 0 TO 2047); </p><p><b>  END TONE;</b></p><p>  ARCHITECTURE ART OF TONE IS</p><p><b>  BE

30、GIN</b></p><p>  SEARCH:PROCESS(INDEX) </p><p><b>  BEGIN</b></p><p>  CASE INDEX IS</p><p>  WHEN"00000001"=>TONE0<=773;CODE<=&q

31、uot;1001111";HIGH<='1'; </p><p>  WHEN"00000010"=>TONE0<=912;CODE<="0010010";HIGH<='1';</p><p>  WHEN"00000100"=>TONE0<=1

32、036;CODE<="0000110";HIGH<='1';</p><p>  WHEN"00001000"=>TONE0<=1116;CODE<="1001100";HIGH<='1';</p><p>  WHEN"00010000"=&

33、gt;TONE0<=1197;CODE<="0100100";HIGH<='1';</p><p>  WHEN"00100000"=>TONE0<=1290;CODE<="0100000";HIGH<='0';</p><p>  WHEN"01

34、000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';</p><p>  WHEN"10000000"=>TONE0<=1410;CODE<="0000000";HIGH<='0';</p><p>

35、  WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';</p><p><b>  END CASE;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b&g

36、t;</p><p><b>  3. 數(shù)控分頻模塊</b></p><p>  數(shù)控分頻模塊是對時基脈沖進(jìn)行分頻,得到與0、1、2、3、4、5、6、7八個音符相對應(yīng)的頻率。該模塊主要由4個工作進(jìn)程組成。首先,根據(jù)系統(tǒng)時鐘信號的輸入得到時基脈沖以及計數(shù)器的值,而時鐘信號在AUTO模塊中便已給出,兩者之間的設(shè)置關(guān)系類似于AUTO模塊中第一個工作進(jìn)程的設(shè)置。第二個PROC

37、ESS是此模塊的核心,即由時基脈沖值轉(zhuǎn)化為音符的頻率。</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL

38、;</p><p>  ENTITY FENPIN IS</p><p>  PORT(CLK1: IN STD_LOGIC; </p><p>  TONE1: IN INTEGER RANGE 0 TO 2047; </p><p>  SPKS: OUT STD_LOGIC);

39、 </p><p>  END ENTITY FENPIN; </p><p>  ARCHITECTURE ART OF FENPIN IS</p><p>  SIGNAL PRECLK:STD_LOGIC; </p><p>  SIGNAL FULLSPKS:S

40、TD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK1)</p><p>  VARIABLE COUNT:INTEGER RANGE 0 TO 8:=0; </p><p><b>  BEGIN</b></p>&

41、lt;p>  IF(CLK1'EVENT AND CLK1='1')THEN </p><p>  COUNT:=COUNT+1; </p><p>  IF COUNT=2 THEN</p><p>  PRECLK<='1';</p>

42、;<p>  ELSIF COUNT=4 THEN </p><p>  PRECLK<='0';</p><p>  COUNT:=0; </p><p>  ELSE </p><p><b>  END IF;&l

43、t;/b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(PRECLK,TONE1)</p><p>  VARIABLE COUNT11:INTEGER RANGE 0 TO 2047; </p><p&g

44、t;<b>  BEGIN</b></p><p>  IF(PRECLK'EVENT AND PRECLK='1')THEN </p><p>  IF COUNT11<TONE1 THEN </p><p>  COUNT11:=COUNT11+1;</

45、p><p>  FULLSPKS<='1'; </p><p><b>  ELSE</b></p><p>  COUNT11:=0;</p><p>  FULLSPKS<='0';</p><p><b>  END IF;</b

46、></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(FULLSPKS) </p><p>  VARIABLE count2:integer range 0 to 1 :=0;

47、 </p><p><b>  BEGIN</b></p><p>  IF (FULLSPKS'EVENT AND FULLSPKS='1') THEN </p><p>  if count2=1 then count2:= 0;</p><p><b>  else</b&

48、gt;</p><p>  count2:=1;</p><p><b>  end if;</b></p><p>  IF COUNT2=1 THEN</p><p>  SPKS<='1';</p><p><b>  ELSE</b></p

49、><p>  SPKS<='0';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p><b>  END ART;</b>

50、;</p><p><b>  4.頂層設(shè)計</b></p><p>  該模塊是整個電子琴設(shè)計的核心,也是VHDL程序的主程序,前面3個源程序都是作為子程序分別實現(xiàn)電子琴的某一功能,而該模塊則通過調(diào)用子程序最終實現(xiàn)樂曲演奏的目的,奏出美妙的樂曲。</p><p>  LIBRARY IEEE; </p&

51、gt;<p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY DIANZIQIN IS</p><p>  PORT

52、(CLK32MHZ: IN STD_LOGIC; </p><p>  HANDTOAUTO: IN STD_LOGIC; </p><p>  CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); </p><p>  INDEX1: IN STD_LOGI

53、C_VECTOR(7 DOWNTO 0); </p><p>  HIGH1: OUT STD_LOGIC; </p><p>  SPKOUT: OUT STD_LOGIC); </p><p><b>  END;</b></p>

54、<p>  ARCHITECTURE ART OF DIANZIQIN IS</p><p>  COMPONENT AUTO - </p><p>  PORT(CLK: IN STD_LOGIC; </p><p>  AUTO:

55、 IN STD_LOGIC; </p><p>  INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p>  INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); </p><p>  END COMPONENT;<

56、/p><p>  COMPONENT TONE </p><p>  PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p&g

57、t;  HIGH: OUT STD_LOGIC;</p><p>  TONE0: OUT INTEGER RANGE 0 TO 2047);</p><p>  END COMPONENT;</p><p>  COMPONENT FENPIN </p><p>  POR

58、T(CLK1: IN STD_LOGIC;</p><p>  TONE1: IN INTEGER RANGE 0 TO 2047;</p><p>  SPKS: OUT STD_LOGIC);</p><p>  END COMPONENT;</p><p>  SIGNAL TONE2:INTEGER RANGE 0 TO 2047

59、; </p><p>  SIGNAL INDX:STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p><b>  BEGIN</b></p><p>  U0:AUTO PORT MAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO

60、=>HANDTOAUTO); </p><p>  U1:TONE PORT</p><p>  MAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1); </p><p>  U2:FENPI

溫馨提示

  • 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

提交評論