2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩13頁(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、<p>  MP3播放器說(shuō)明文檔</p><p><b>  一、實(shí)現(xiàn)過(guò)程</b></p><p>  1. 制作樂(lè)譜查找表:找出不同音符的發(fā)音頻率,尋找最佳待分頻頻率,計(jì)算分頻數(shù)和分頻預(yù)置數(shù),制作樂(lè)譜查找表。如何選擇基準(zhǔn)頻率很關(guān)鍵。若基準(zhǔn)頻率比較小,用他除以音符頻率得到的分頻系數(shù)也就比較小,這樣的話進(jìn)行四舍五入后誤差相對(duì)而言會(huì)比較大。若基準(zhǔn)頻率偏大,分頻系

2、數(shù)也就偏大,這會(huì)增加系統(tǒng)的負(fù)擔(dān)。綜合考慮分頻系數(shù)的準(zhǔn)確性和大小,基準(zhǔn)頻率為750 khz是比較合適的。由于我們從開(kāi)發(fā)板的內(nèi)部時(shí)鐘分頻得到的750 khz的頻率信號(hào)是脈寬極窄的尖脈沖信號(hào),為了提高揚(yáng)聲器有足夠的功率發(fā)音,我們對(duì)尖脈沖信號(hào)再進(jìn)行二分頻,得到對(duì)稱方波后再輸出。因此,在表1中,就是以375 khz為基準(zhǔn)頻率計(jì)算了各個(gè)音符的分頻系數(shù)和分頻預(yù)置數(shù)。選擇11位二進(jìn)制數(shù)表示分頻系數(shù)和分頻預(yù)置數(shù)(計(jì)數(shù)初值),因此最大值為2047。休止符不

3、用進(jìn)行分頻,分頻系數(shù)為0,頻率為375000hz。</p><p>  分頻系數(shù)和分頻預(yù)置數(shù)的計(jì)算方法:</p><p>  分頻系數(shù)=375000/音符頻率</p><p>  分頻預(yù)置數(shù)(計(jì)數(shù)初值)=2047-分頻系數(shù)</p><p>  表1 各個(gè)音符的頻率及其對(duì)應(yīng)的分頻系數(shù)(基準(zhǔn)頻率375KHz)</p><p&g

4、t;  2. 預(yù)置曲譜:定義一個(gè)轉(zhuǎn)換規(guī)則,將音樂(lè)音符轉(zhuǎn)換為代碼預(yù)置在程序里。我們稱預(yù)置在程序里的代碼為樂(lè)譜代碼。音符轉(zhuǎn)換為樂(lè)譜代碼的規(guī)則為:休止符轉(zhuǎn)換為代碼0,低音1-低音7轉(zhuǎn)換為代碼1-7,中音1-中音7轉(zhuǎn)換為代碼8-14,高音1-高音7轉(zhuǎn)換為15-21?,F(xiàn)在一般樂(lè)曲中,最小的節(jié)拍為1/4拍。若定義1拍的持續(xù)時(shí)間為1秒,那么1/4拍的持續(xù)時(shí)間就為1/4秒,即0.25秒。其他的節(jié)拍數(shù)為1/4拍的整數(shù)倍,因此他們的持續(xù)時(shí)間就為0.25秒的

5、整數(shù)倍。將樂(lè)曲中每個(gè)音符以及持續(xù)的節(jié)拍數(shù)寫(xiě)進(jìn)程序,定義一個(gè)4hz的時(shí)鐘頻率,每當(dāng)時(shí)鐘上升沿來(lái)臨時(shí)就輸出1/4拍音符,若是其他1/4拍整數(shù)倍的音符就連續(xù)輸出整數(shù)倍的次數(shù)。這樣,音符就源源不斷的輸出了。</p><p>  3. 對(duì)預(yù)置的曲譜碼在樂(lè)譜查表碼里進(jìn)行查找,找出相應(yīng)音符對(duì)應(yīng)頻率的分頻系數(shù)和分頻預(yù)置數(shù)。</p><p>  4. 根據(jù)查找到的分頻預(yù)置數(shù)對(duì)待分頻頻率(750khz)進(jìn)行分

6、頻并把輸出連接到集成運(yùn)放電路Vin實(shí)現(xiàn)音量調(diào)節(jié)。音量調(diào)節(jié)的原理圖如圖1所示。按圖1所示電路圖連接電路,Vout接揚(yáng)聲器。通過(guò)調(diào)節(jié)滑動(dòng)變阻器R2就調(diào)節(jié)音量。</p><p><b>  圖1 音量控制電路</b></p><p><b>  二、代碼說(shuō)明</b></p><p><b>  2.1設(shè)計(jì)代碼</

7、b></p><p>  2.1.1頂層模塊:【songer.vhd】</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;--加入函數(shù)庫(kù)</p><p>  ENTITY Songer IS</p><p>  PORT (clock :

8、 in STD_LOGIC;--時(shí)鐘信號(hào)輸入</p><p>  rst : in STD_LOGIC;--復(fù)位信號(hào)輸入</p><p>  CODE1: OUT INTEGER RANGE 0 TO 7 ; --簡(jiǎn)譜碼輸出顯示</p><p>  HIGH1: OUT std_logic; --高八度音顯示</p><p>  SPKO

9、UT: OUT STD_LOGIC ) ; --發(fā)音輸出</p><p>  END Songer;</p><p>  ARCHITECTURE Behavioral OF Songer IS</p><p>  COMPONENT NoteTabs—添加notetabs元件</p><p>  PORT ( clk : IN STD_L

10、OGIC ; </p><p>  ToneIndex : OUT INTEGER RANGE 0 TO 15 ) ;</p><p>  END COMPONENT ;</p><p>  COMPONENT ToneTaba—添加tonetaba元件</p><p>  PORT ( Index : IN INTEGER RANGE 0

11、 TO 21 ;</p><p>  CODE : OUT INTEGER RANGE 0 TO 7 ; </p><p>  HIGH : OUT std_logic ; </p><p>  Tone : OUT INTEGER RANGE 0 TO 16#7FF# ); </p><p>  END COMPONENT ;</p

12、><p>  COMPONENT Speakera—添加speakera元件</p><p>  PORT ( clk: IN STD_LOGIC ; </p><p>  Tone: IN INTEGER RANGE 0 TO 16#7FF# ; </p><p>  SpkS1: OUT STD_LOGIC ) ; </p>

13、<p>  END COMPONENT ;</p><p>  SIGNAL Tone1 : INTEGER RANGE 0 TO 16#7FF# ; --定義信號(hào)量,連接ToneTaba的輸出</p><p>  SIGNAL ToneIndex1 : INTEGER RANGE 0 TO 15 ; ----定義信號(hào)量,連接NoteTabs的輸出</p><

14、p>  component DCM_12MHZ—添加dcm-12mhz元件</p><p><b>  port(</b></p><p>  clkin: in std_logic; </p><p>  rst: in std_logic;</p><p>  clk_750khz: out std_l

15、ogic;</p><p>  clk_4hz: out std_logic);</p><p>  end component;</p><p>  signal clkout_4hz: STD_LOGIC;--定義信號(hào)量,連接DCM_12MHZ的4hz輸出</p><p>  signal clkout_750khz:std_logic

16、;--定義信號(hào)量,連接DCM_12MHZ的750khz輸出</p><p><b>  BEGIN </b></p><p><b>  --定義映射關(guān)系</b></p><p>  u1 : NoteTabs PORT MAP (clk=>clkout_4hz , ToneIndex =>ToneIndex1

17、 ) ;</p><p>  u2 : ToneTaba PORT MAP (Index=>ToneIndex1 , Tone=>Tone1 ,CODE=>CODE1, HIGH=>HIGH1 ) ;</p><p>  u3 : DCM_12MHZ port map (clkin=>clock,rst=>rst,clk_750khz=>clko

18、ut_750khz,clk_4hz=>clkout_4hz);</p><p>  u4 : Speakera PORT MAP (clk=>clkout_750khz,Tone=>Tone1, SpkS1=>SPKOUT );</p><p><b>  END;</b></p><p>  2.1.2樂(lè)譜發(fā)生模塊【N

19、oteTabs.vhd】</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;--加入函數(shù)庫(kù)</p><p>  entity NoteTabs is--定義實(shí)體</p><p>  Port ( clk : in STD_LOGIC;--音樂(lè)節(jié)拍時(shí)鐘</p>

20、;<p>  ToneIndex : out integer range 0 to 15);--樂(lè)譜碼輸出</p><p>  end NoteTabs;</p><p>  architecture Behavioral of NoteTabs is</p><p>  signal Counter:integer range 0 to 2000;

21、--樂(lè)譜碼計(jì)數(shù)器 </p><p><b>  begin</b></p><p>  CNT8:process(clk)</p><p><b>  begin</b></p><p>  if Counter = 130 then counter <=0;--循環(huán)計(jì)數(shù)</p>

22、<p>  elsif (clk'event and clk='1') --時(shí)鐘上升沿觸發(fā)</p><p>  then Counter <=Counter + 1;--計(jì)數(shù)器加1</p><p><b>  end if;</b></p><p>  end process;</p>&

23、lt;p>  Search:process(Counter)-- 譯碼器查歌曲的樂(lè)譜表查表結(jié)果為音調(diào)表的索引值</p><p><b>  begin</b></p><p>  case Counter is</p><p>  when 00 to 01 =>ToneIndex <=8;--節(jié)拍00和01是中音1</

24、p><p>  when 02 to 03 =>ToneIndex <=9;--節(jié)拍02和03是中音2</p><p>  when 04 to 05 =>ToneIndex <=10;--中音3</p><p>  when 06 to 07 =>ToneIndex <=12;--中音5</p><p>  

25、when 08 to 11 =>ToneIndex <=13;--中音5</p><p>  when 12 to 15 =>ToneIndex <=13;--中音5</p><p>  when 16 to 19 =>ToneIndex <=13;--中音5</p><p>  when 20 to 21 =>ToneIn

26、dex <=10;--中音3</p><p>  when 22 to 23 =>ToneIndex <=6;--低音6</p><p>  when 24 to 25 =>ToneIndex <=6;--低音6</p><p>  when 26 to 29 =>ToneIndex <=8;--中音1</p>

27、<p>  when 30 to 31 =>ToneIndex <=10;--中音3</p><p>  when 32 to 33 =>ToneIndex <=9;--中音2</p><p>  when 34 =>ToneIndex <=9;--中音2</p><p>  when 35 =>ToneInde

28、x <=10;--中音3</p><p>  when 36 =>ToneIndex <=9;--中音2</p><p>  when 37 to 38 =>ToneIndex <=8;--中音2</p><p>  when 39 to 40 =>ToneIndex <=9;--寫(xiě)入的歌為最炫民族風(fēng)的前奏</p>

29、;<p>  when 41 to 42 =>ToneIndex <=8;--中音2</p><p>  when 43 to 46 =>ToneIndex <=6;--低音6</p><p>  when 47 to 50 =>ToneIndex <=10;--中音3</p><p>  when 51 to 54

30、 =>ToneIndex <=6;--低音6</p><p>  when 55 to 56 =>ToneIndex <=8;--中音1</p><p>  when 57 to 60 =>ToneIndex <=10;</p><p>  when 61 to 62 =>ToneIndex <=12;</p&g

31、t;<p>  when 63 =>ToneIndex <=9;</p><p>  when 64 =>ToneIndex <=10;</p><p>  when 65 =>ToneIndex <=9;</p><p>  when 66 to 67 =>ToneIndex <=8;</p>

32、;<p>  when 68 to 69 =>ToneIndex <=9;</p><p>  when 70 to 71 =>ToneIndex <=8;</p><p>  when 72 to 73 =>ToneIndex <=7;</p><p>  when 74 to 75 =>ToneIndex

33、<=5;</p><p>  when 76 to 79 =>ToneIndex <=10;</p><p>  when 80 to 83 =>ToneIndex <=6;</p><p>  when 84 to 87 =>ToneIndex <=8;</p><p>  when 88 to 9

34、1 =>ToneIndex <=10;</p><p>  when 92 to 94 =>ToneIndex <=9;</p><p>  when 95 =>ToneIndex <=10;</p><p>  when 96 =>ToneIndex <=9;</p><p>  when 9

35、7 to 98 =>ToneIndex <=8;</p><p>  when 99 to 100 =>ToneIndex <=9;</p><p>  when 101 to 102 =>ToneIndex <=8;</p><p>  when 103 to 104=>ToneIndex <=6;</p>

36、;<p>  when 105 to 106 =>ToneIndex <=5;</p><p>  when 107 to 110 =>ToneIndex <=10;</p><p>  when 111 to 114=>ToneIndex <=6;</p><p>  when 115 to 118 =>To

37、neIndex <=8;</p><p>  when 119 to 122 =>ToneIndex <=10;</p><p>  when 123 to 124 =>ToneIndex <=12;</p><p>  when 125 to 126 =>ToneIndex <=10;</p><p&g

38、t;  when 127 to 130 =>ToneIndex <=12;--節(jié)拍127 128 130 是中音5</p><p>  when others =>null;</p><p><b>  end case;</b></p><p>  end process;</p><p>  end

39、 Behavioral;</p><p>  2.1.3樂(lè)譜碼查表模塊【ToneTaba.vhd】</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;--加入函數(shù)庫(kù)</p><p>  entity ToneTaba is</p><p>  P

40、ort ( Index : in INTEGER RANGE 0 TO 21;--簡(jiǎn)譜代碼輸入</p><p>  CODE : out INTEGER RANGE 0 TO 7;--簡(jiǎn)譜代碼輸出</p><p>  HIGH : out std_logic;--高八度音顯示</p><p>  Tone : out INTEGER RANGE 0 TO 1

41、6#7FF#);--輸入的簡(jiǎn)譜碼查表值</p><p>  end ToneTaba;</p><p>  architecture Behavioral of ToneTaba i</p><p><b>  begin</b></p><p>  search:PROCESS(Index)</p>&l

42、t;p><b>  begin</b></p><p>  case Index is --譯碼電路,tone輸出對(duì)應(yīng)分頻預(yù)置數(shù), CODE輸出對(duì)應(yīng)的簡(jiǎn)譜碼,HIGH輸出對(duì)應(yīng)的音調(diào)高低</p><p>  when 0=>Tone<=2047;CODE<=0;HIGH<='0';--休止符</p>&

43、lt;p>  when 1=>Tone<=513;CODE<=1;HIGH<='0';--低音1</p><p>  when 2=>Tone<=770;CODE<=2;HIGH<='0';--低音2</p><p>  when 3=>Tone<=909;CODE<=3

44、;HIGH<='0';--低音3</p><p>  when 4=>Tone<=1025;CODE<=4;HIGH<='0';--低音4</p><p>  when 5=>Tone<=1090;CODE<=5;HIGH<='0';--低音5</p><

45、p>  when 6=>Tone<=1195;CODE<=6;HIGH<='0';--低音6</p><p>  when 7=>Tone<=1288;CODE<=7;HIGH<='0';--低音7</p><p>  when 8=>Tone<=1330;CODE<=1

46、;HIGH<='1';--中音1</p><p>  when 9=>Tone<=1409;CODE<=2;HIGH<='1';--中音2</p><p>  when 10=>Tone<=1476;CODE<=3;HIGH<='1';--中音3</p><

47、p>  when 11=>Tone<=1510;CODE<=4;HIGH<='1';--中音4</p><p>  when 12=>Tone<=1569;CODE<=5;HIGH<='1';--中音5</p><p>  when 13=>Tone<=1621;CODE<=6

48、;HIGH<='1';--中音6</p><p>  when 14=>Tone<=1667;CODE<=7;HIGH<='1';--中音7</p><p>  when 15=>Tone<=1689;CODE<=1;HIGH<='1';--高音1</p><

49、p>  when 16=>Tone<=1720;CODE<=2;HIGH<='1';--高音2</p><p>  when 17=>Tone<=1763;CODE<=3;HIGH<='1';--高音3</p><p>  when 18=>Tone<=1799;CODE<=4

50、;HIGH<='1';--高音4</p><p>  when 19=>Tone<=1808;CODE<=5;HIGH<='1';--高音5</p><p>  when 20=>Tone<=1834;CODE<=6;HIGH<='1';--高音6</p><

51、p>  when 21=>Tone<=1857;CODE<=7;HIGH<='1';--高音7</p><p>  when OTHERS =>NULL;</p><p><b>  end case;</b></p><p>  end PROCESS;</p><p

52、>  end Behavioral;</p><p>  2.1.4時(shí)鐘分頻模塊【DCM_12MHZ.vhd】</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;--加入函數(shù)庫(kù)</p><p>  entity DCM_12MHZ is—定義實(shí)體</p>

53、;<p><b>  port(</b></p><p>  clkin: in std_logic;--時(shí)鐘信號(hào)輸入</p><p>  rst: in std_logic;--復(fù)位信號(hào)輸入</p><p>  clk_750khz: out std_logic;--750khz輸出</p><p&g

54、t;  clk_4hz: out std_logic);--4hz輸出</p><p>  end DCM_12MHZ;</p><p>  architecture Behavioral of DCM_12MHZ is</p><p>  COMPONENT clk12mhz_dcm--語(yǔ)句結(jié)構(gòu)對(duì)所要調(diào)用的元件作了聲明</p><p>&

55、lt;b>  PORT(</b></p><p>  CLKIN_IN : IN std_logic;</p><p>  RST_IN : IN std_logic; </p><p>  CLKFX_OUT : OUT std_logic;</p><p>  CLKIN_IBUFG_OUT : OUT s

56、td_logic;</p><p>  LOCKED_OUT : OUT std_logic</p><p><b>  );</b></p><p>  END COMPONENT;</p><p>  signal clk_temp:std_logic;--類型為變量</p><p>  si

57、gnal counter750:integer range 0 to 15;--類型為變量 范圍是0到15</p><p>  signal counter4:integer range 0 to 2999999;--范圍是0到29999999</p><p><b>  begin</b></p><p>  Inst_CLK12MHZ: c

58、lk12mhz_dcm PORT MAP(</p><p>  CLKIN_IN => clkin,</p><p>  RST_IN =>rst ,</p><p>  CLKFX_OUT => clk_temp,</p><p>  CLKIN_IBUFG_OUT =>open ,</p><p

59、>  LOCKED_OUT => open</p><p><b>  );</b></p><p>  process(clk_temp,rst)--進(jìn)程</p><p><b>  begin</b></p><p>  if(rst='1') then</p&

60、gt;<p>  counter750<=0;--賦初值</p><p>  clk_750khz<='0';--賦初值</p><p>  elsif rising_edge(clk_temp) then</p><p>  if (counter750<=7) then--當(dāng)變量等于7時(shí),信號(hào)量為上升沿</p

61、><p>  clk_750khz<='1';</p><p>  counter750<=counter750+1;--計(jì)數(shù)器加1</p><p>  elsif(7<counter750 and counter750<15) then--當(dāng)變量在7與15之間是,信號(hào)量處于下降沿</p><p>  cl

62、k_750khz<='0';</p><p>  counter750<=counter750+1;--計(jì)數(shù)器加一</p><p>  elsif (counter750=15) then </p><p>  counter750<=0;--計(jì)數(shù)器為15時(shí) 再返回 繼續(xù)為0</p><p><b>

63、;  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  process(clk_temp,rst)</p><p><b>  begin</b></p><p>  if

64、(rst='1') then</p><p>  counter4<=0;--賦初值</p><p>  clk_4hz<='0';--賦初值</p><p>  elsif rising_edge(clk_temp) then</p><p>  if (counter4<=1499999)

65、 then--變量小于1499999時(shí) 信號(hào)量為上升沿</p><p>  clk_4hz<='1';</p><p>  counter4<=counter4+1;--計(jì)數(shù)器加一</p><p>  elsif(1499999<counter4 and counter4<2999999) then--變量在1499999與2

66、99999之間時(shí)</p><p>  clk_4hz<='0';--信號(hào)量為下降沿</p><p>  counter4<=counter4+1;--計(jì)數(shù)器加一 </p><p>  elsif (counter4=2999999) then--計(jì)數(shù)器加到2999999時(shí)為0</p><p>  counter4

67、<=0;</p><p><b>  end if;</b></p><p><b>  end if;</b></p><p>  end process;</p><p>  end Behavioral;</p><p>  2.1.5數(shù)控分頻模塊【Speaker

68、a.vhd】</p><p>  library IEEE;</p><p>  use IEEE.STD_LOGIC_1164.ALL;--加入函數(shù)庫(kù)</p><p>  entity Speakera is--數(shù)控分頻與演奏發(fā)生器</p><p>  Port ( clk : in STD_LOGIC;--待分頻時(shí)鐘</p>

69、<p>  Tone : in integer range 0 to 16#7ff#;--分頻預(yù)置數(shù)輸入,11位二進(jìn)制數(shù)</p><p>  Spks1 : out STD_LOGIC);--發(fā)聲輸出</p><p>  end Speakera;</p><p>  architecture Behavioral of Speakera is--

70、結(jié)構(gòu)體</p><p><b>  begin</b></p><p>  GenSpks:process(clk,Tone)--進(jìn)程</p><p>  VARIABLE Count1:integer range 0 to 16#7FF#;--11位2進(jìn)制數(shù)</p><p><b>  begin</b

71、></p><p>  if clk'event and clk='1' then</p><p>  if Count1=2047 then -- 11 位可預(yù)置計(jì)數(shù)器</p><p>  Count1:=Tone;--若計(jì)數(shù)已滿在時(shí)鐘的上升沿將預(yù)數(shù)鎖入</p><p>  Spks1<='1&

72、#39;;--11 位計(jì)數(shù)器并使FullSpkS 輸出高電平</p><p>  else Count1:=Count1+1;--否則繼續(xù)計(jì)數(shù)輸出低電平</p><p>  Spks1<='0';</p><p><b>  end if;</b></p><p><b>  end if

73、 ;</b></p><p>  end process;</p><p>  end Behavioral;</p><p><b>  2.2.測(cè)試代碼</b></p><p>  2.2.1測(cè)試頂層模塊 【tb_songer.vhd】</p><p>  LIBRARY ieee

74、;</p><p>  USE ieee.std_logic_1164.ALL;--加入函數(shù)庫(kù)</p><p>  ENTITY tb_songer IS--實(shí)體</p><p>  END tb_songer;</p><p>  ARCHITECTURE behavior OF tb_songer IS </p><p

75、>  COMPONENT Songer--原件說(shuō)明</p><p><b>  PORT(</b></p><p>  clock : IN std_logic;</p><p>  rst : IN std_logic;</p><p>  CODE1 : OUT integer range 0 to 15

76、;</p><p>  HIGH1 : OUT std_logic;</p><p>  SPKOUT : OUT std_logic</p><p><b>  );</b></p><p>  END COMPONENT;</p><p>  signal clock : std_logi

77、c := '0';--輸入</p><p>  signal rst : std_logic := '0';</p><p>  signal CODE1 : integer range 0 to 15;--輸出</p><p>  signal HIGH1 : std_logic;</p><p>  sig

78、nal SPKOUT : std_logic;</p><p><b>  BEGIN</b></p><p>  uut: Songer PORT MAP (</p><p>  clock => clock,</p><p>  rst => rst,</p><p>  CODE

79、1 => CODE1,</p><p>  HIGH1 => HIGH1,</p><p>  SPKOUT => SPKOUT</p><p><b>  );</b></p><p>  Process—時(shí)鐘進(jìn)程</p><p><b>  begin</b&

80、gt;</p><p>  rst <= '1--復(fù)位為下降沿時(shí) 等待10us</p><p>  wait for 10 us;</p><p>  rst <= '0';--復(fù)位為下降沿時(shí) 等待10000ms</p><p>  wait for 10000 ms;</p><p&

81、gt;  end process;</p><p><b>  process</b></p><p><b>  begin</b></p><p>  clock<='0';--時(shí)鐘為下降沿時(shí) 等待10ns</p><p>  wait for 10 ns;</

82、p><p>  clock<='1';--時(shí)鐘為上升沿時(shí) 等待10ns</p><p>  wait for 10 ns;</p><p>  end process;</p><p><b>  END;</b></p><p>  2.2.2測(cè)試Speakera模塊 【tb_

83、spk.vhd】</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.ALL;--加入函數(shù)庫(kù)</p><p>  ENTITY tb_spk IS--定義實(shí)體</p><p>  END tb_spk; </p><p>  ARCHITECTURE Be

84、havioral OF tb_spk IS </p><p>  COMPONENT Speakera--定義加入元件</p><p><b>  PORT(</b></p><p>  spks1 : IN std_logic;</p><p>  Tone : IN integer range 0 to 16#7

85、ff#;</p><p>  Spks : OUT std_logic</p><p><b>  );</b></p><p>  END COMPONENT;</p><p>  signal spks1 : std_logic := '0';--輸入賦初值</p><p>

86、  signal Tone : integer := 1197;--輸入賦初值</p><p>  signal Spks : std_logic;--輸出信號(hào)</p><p><b>  BEGIN</b></p><p>  uut: Speakera PORT MAP (--包括測(cè)試元件</p><p>  spk

87、s1 => spks1,</p><p>  Tone => Tone,</p><p>  Spks => Spks</p><p><b>  );</b></p><p>  clk_process :process--時(shí)鐘進(jìn)程定義</p><p><b>  b

88、egin</b></p><p>  spks1 <= '0';--spks1為下降沿時(shí)等待2300ns</p><p>  wait for 2300 ns;</p><p>  spks1 <= '1';--spks1為上升沿時(shí)等待1ns</p><p>  wait for 1 n

89、s;</p><p>  end process;</p><p><b>  END;</b></p><p>  2.2.3測(cè)試DCM_12MHZ模塊 【tb_clk12mhz.vhd】</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_

90、1164.ALL;--加入函數(shù)庫(kù)</p><p>  ENTITY tb_clk12mhz IS--實(shí)體</p><p>  END tb_clk12mhz;</p><p>  ARCHITECTURE behavior OF tb_clk12mhz IS --結(jié)構(gòu)體</p><p>  COMPONENT DCM_12MHZ</p&

91、gt;<p><b>  port(</b></p><p>  clkin: in std_logic;--時(shí)鐘輸入</p><p>  rst: in std_logic;--復(fù)位輸入</p><p>  clk_750khz: out std_logic;--750khz輸出</p><p>

92、  clk_4hz: out std_logic);--4hz輸入</p><p>  END COMPONENT;</p><p><b>  --Inputs</b></p><p>  signal clkin : std_logic := '0';--賦初值</p><p>  signal r

93、st : std_logic := '0';--賦初值</p><p><b>  --Outputs</b></p><p>  signal clk_750khz: std_logic;--輸出信號(hào)量</p><p>  signal clk_4hz: std_logic;--輸出信號(hào)量</p><p

94、><b>  BEGIN</b></p><p>  uut: DCM_12MHZ PORT MAP (--定義測(cè)試使用到的接口元件</p><p>  clkin => clkin,</p><p>  rst => rst,</p><p>  clk_750khz => clk_750khz

95、,</p><p>  clk_4hz => clk_4hz</p><p><b>  );</b></p><p>  process--進(jìn)程</p><p><b>  begin</b></p><p>  rst <= '1';</

96、p><p>  wait for 10 us;--復(fù)位為下降沿時(shí) 等待10us</p><p>  rst <= '0';</p><p>  wait for 10000 ms;--復(fù)位為下降沿時(shí) 等待10000ms</p><p>  end process;</p><p>  process

97、--進(jìn)程</p><p><b>  begin</b></p><p>  clkin<='0';</p><p>  wait for 10 ns;--時(shí)鐘為下降沿時(shí) 等待10ns</p><p>  clkin<='1';</p><p> 

98、 wait for 10 ns;--時(shí)鐘為上升沿時(shí) 等待10ns</p><p>  end process;</p><p><b>  END;</b></p><p><b>  三、操作過(guò)程</b></p><p>  1. 項(xiàng)目實(shí)現(xiàn)功能:本項(xiàng)目主要實(shí)現(xiàn)功能為揚(yáng)聲器輸出音樂(lè),LED燈顯示音符

99、,撥碼開(kāi)關(guān)控制音樂(lè)的暫停和繼續(xù),以及可調(diào)電阻調(diào)節(jié)音量大小。</p><p>  2. 電路的連接:VHDL代碼部分編寫(xiě)仿真并綜合編譯通過(guò)后,需要實(shí)現(xiàn)硬件電路的連接。把BASYS2開(kāi)發(fā)板與電腦相連,開(kāi)發(fā)板的B2引腳連接到集成運(yùn)放電路的輸入,集成運(yùn)放的輸出連接到揚(yáng)聲器。</p><p>  3. 燒寫(xiě)程序:首先打開(kāi)開(kāi)發(fā)板的電源按鈕。打開(kāi)adept軟件,點(diǎn)擊FPGA欄右邊的‘browse’按鈕,

100、找到‘zxmzf_rst’文件夾所在的目錄,選擇‘songer.bit’文件,點(diǎn)擊‘確定’,這時(shí)會(huì)出現(xiàn)一個(gè)是否選擇框,點(diǎn)‘是’。再點(diǎn)擊FPGA欄右邊的‘program’按鈕,這時(shí)又會(huì)出現(xiàn)一個(gè)是否選擇框,還是點(diǎn)‘是’。等到顯示programing successful時(shí),表示程序已經(jīng)正確燒進(jìn)了開(kāi)發(fā)板。</p><p><b>  4. 功能操作</b></p><p>

101、  揚(yáng)聲器播放音樂(lè):把電路連好,程序一燒進(jìn)開(kāi)發(fā)板后就揚(yáng)聲器就開(kāi)始播放音樂(lè)了。</p><p>  LED燈顯示音符:LD0、LD1、LD2三個(gè)LED燈顯示的是當(dāng)前音符的簡(jiǎn)譜代碼二進(jìn)制數(shù)值,即休止符、1、2、3、4、5、6、7,LD3顯示的是當(dāng)前音符的高/低音,音符為高音時(shí)LD3亮,音符為低音時(shí)LD3滅。只要有音樂(lè)輸出,這三個(gè)LED燈隨著音樂(lè)的播放不停的閃爍。</p><p>  撥碼開(kāi)關(guān)控

溫馨提示

  • 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ù)僅提供信息存儲(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)論