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

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)</b></p><p>  設(shè)計(jì)題目:基于FPGA的樂曲演奏電路設(shè)計(jì)</p><p><b>  指導(dǎo)教師: 蔣俊華</b></p><p>  學(xué)院:物理與電子學(xué)院 </p><p>  專業(yè):電子信息科學(xué)與技術(shù) </p&g

2、t;<p>  姓名: </p><p>  學(xué)號(hào): </p><p>  實(shí)驗(yàn)地點(diǎn):特種功能實(shí)驗(yàn)室(實(shí)驗(yàn)室502) </p><p>  摘要:本文根據(jù)層次化的設(shè)計(jì)思路并在EDA開發(fā)工具Quartus II 9.0 (32-Bit) 平臺(tái)上,采用Verilog語言、原理圖、定制LPM-RO

3、M塊以及實(shí)例化的設(shè)計(jì)方法,利用數(shù)控分頻的原理實(shí)現(xiàn)了基于FPGA片上系統(tǒng)(本實(shí)驗(yàn)用的是康芯GW48系列EDA設(shè)備)樂曲演奏的設(shè)計(jì)。</p><p>  關(guān)鍵詞 FPGA,EDA,Verilog,數(shù)控分頻器 </p><p><b>  一. 概述部分:</b></p><p><b>  設(shè)計(jì)所要實(shí)現(xiàn)的功能</b>&l

4、t;/p><p>  能夠很好的演奏出“梁?!钡淖V子,將音樂通過實(shí)驗(yàn)箱上的喇叭播放出;演奏發(fā)音相對應(yīng)的簡譜碼輸出顯示由在數(shù)碼管5顯示;高八度音指示由發(fā)光管D5指示</p><p>  設(shè)計(jì)所采用的基本思想</p><p>  根據(jù)層次化的設(shè)計(jì)思路,可把樂曲硬件演奏電路分為3個(gè)模塊,音樂節(jié)拍發(fā)生模塊,音符譯碼電路模塊,數(shù)控分頻模塊。</p><p&g

5、t;  音樂節(jié)拍發(fā)生模塊的設(shè)計(jì):將編輯好的音符填入MIF文件中再定制LPM-ROM塊將音符數(shù)據(jù)加載入ROM再通過計(jì)數(shù)器逐步計(jì)數(shù)rom塊的地址來提取音符;音符譯碼電路模塊、數(shù)控分頻模塊的設(shè)計(jì):都是由verilog代碼實(shí)例化生成</p><p>  通過輸入原理圖的方法將各個(gè)模塊連接起來生成一個(gè)block塊的.qpf文件作為最終的頂層文件。</p><p><b>  二.系統(tǒng)設(shè)計(jì)部

6、分</b></p><p> ?。?) 整個(gè)設(shè)計(jì)的組織結(jié)構(gòu) </p><p> ?。?)各個(gè)子單元的設(shè)計(jì)思路 </p><p>  音樂節(jié)拍發(fā)生模塊的設(shè)計(jì):</p><p>  LPM-ROM塊 該模塊為音樂曲譜的存放塊。其中設(shè)置了“梁祝”樂曲全部音符所對應(yīng)的分頻預(yù)置數(shù)。其利用LPM_ROM宏模塊將共設(shè)定256個(gè)音符,每個(gè)音符寬度

7、為4位。 Mif文件存放樂曲中的音符數(shù)據(jù),它是利用LPM-ROM來實(shí)現(xiàn)的,將樂譜中相應(yīng)的音符放在一個(gè)連續(xù)的地址上。它首先是編寫音符數(shù)據(jù)文件,將樂譜中相應(yīng)的音符存放在一個(gè)連續(xù)的地址上。因?yàn)?拍的時(shí)間定為1秒,提供的是4Hz的時(shí)鐘頻率(即1/4拍的整數(shù)倍),則需將這個(gè)音符存儲(chǔ)在相應(yīng)次數(shù)的連續(xù)幾個(gè)地址上。.mif文件如下:</p><p>  CNT138塊這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為4Hz,即每一計(jì)數(shù)值的停留時(shí)間為0.2

8、5秒,恰為當(dāng)全音符設(shè)為1秒,四四拍的4分音符持續(xù)時(shí)間。例如,地址發(fā)生器在以下的Verilog邏輯描述中,“梁?!睒非牡谝粋€(gè)音符為“3”,此音在邏輯中停留了4個(gè)時(shí)鐘節(jié)拍,即1秒時(shí)間。模塊程序如下:</p><p>  module cnt138t(clk,cnt);</p><p>  input clk;</p><p>  output [7:0]cnt;&l

9、t;/p><p>  reg [7:0]cnt;</p><p>  always @ (posedge clk) </p><p><b>  begin</b></p><p>  if(cnt==8'b10001010) cnt<=8'b00000000;</p><p>

10、  else cnt<=cnt+1;</p><p><b>  end </b></p><p>  endmodule </p><p>  音符譯碼電路模塊的設(shè)計(jì):</p><p>  音符譯碼電路模塊即分頻預(yù)置數(shù)模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路。它提供了每個(gè)音符所對應(yīng)的分頻預(yù)置數(shù),即給數(shù)控分頻模塊

11、提供計(jì)數(shù)初值,這里以“梁?!睒非鸀槔谐隽嗽谶@個(gè)樂曲中所用到的13個(gè)音符的分頻預(yù)置數(shù)。在這個(gè)模塊的Verilog邏輯描述中設(shè)置了“梁?!睒非腥恳舴鶎?yīng)的分頻預(yù)置數(shù),共13個(gè),每一音符的停留時(shí)間由音樂節(jié)拍和地址發(fā)生器模塊的時(shí)鐘(Clk)的輸入頻率決定,在此為4Hz。這13個(gè)值的輸出由計(jì)數(shù)模塊的index[3..0]確定,而index[3..0]的值又由地址發(fā)生器模塊的輸出q[3..0]的輸出值和持續(xù)時(shí)間決定。程序如下:</p

12、><p>  module tonetaba(index,code,high,tone);</p><p>  input [3:0]index;</p><p>  output [3:0]code;</p><p>  output [10:0]tone;</p><p>  output high;</p&g

13、t;<p>  reg [3:0]code;</p><p>  reg [10:0]tone;</p><p><b>  reg high;</b></p><p>  always @ (index) </p><p><b>  begin </b></p>&l

14、t;p>  case(index) </p><p>  4'b0000: begin tone<=11'b11111111111; code<=4'b0000; high<=1'b0; end</p><p>  4'b0001: begin tone<=11'b01100000101; code<=4&

15、#39;b0001; high<=1'b0; end</p><p>  4'b0010: begin tone<=11'b01110010000; code<=4'b0010; high<=1'b0; end</p><p>  4'b0011: begin tone<=11'b10000001100;

16、 code<=4'b0011; high<=1'b0; end</p><p>  4'b0101: begin tone<=11'b10010101101; code<=4'b0101; high<=1'b0; end</p><p>  4'b0110: begin tone<=11'b

17、10100001010; code<=4'b0110; high<=1'b0; end</p><p>  4'b0111: begin tone<=11'b10101011100; code<=4'b0111; high<=1'b0; end</p><p>  4'b1000: begin tone&

18、lt;=11'b10110000010; code<=4'b0001; high<=1'b1; end</p><p>  4'b1001: begin tone<=11'b10111001000; code<=4'b0010; high<=1'b1; end</p><p>  4'b1010:

19、 begin tone<=11'b11000000110; code<=4'b0011; high<=1'b1; end</p><p>  4'b1100: begin tone<=11'b11001010110; code<=4'b0101; high<=1'b1; end</p><p>  

20、4'b1101: begin tone<=11'b11010000100; code<=4'b0110; high<=1'b1; end</p><p>  4'b1111: begin tone<=11'b11011000000; code<=4'b0001; high<=1'b1; end</p>

21、<p>  default: begin tone<=11'bx; code<=4'bx; high<=1'bx; end</p><p><b>  endcase</b></p><p><b>  end</b></p><p>  endmodule &l

22、t;/p><p>  數(shù)控分頻模塊的設(shè)計(jì):</p><p>  音符的頻率由數(shù)控分頻模塊獲得,這是一個(gè)數(shù)控分頻電路。它是由一個(gè)初值可變的加法計(jì)數(shù)器構(gòu)成。該計(jì)數(shù)器的模為2047,當(dāng)計(jì)數(shù)器記滿時(shí),計(jì)數(shù)器產(chǎn)生一個(gè)溢出信號(hào)FULL,此溢出信號(hào)就是用作發(fā)音的頻率信號(hào)。在計(jì)數(shù)器的輸入端給定不同的初值,就可得到不同音符的發(fā)音頻率信號(hào)。 計(jì)數(shù)初值(Tone)=2047-分頻系數(shù)而分頻系數(shù)又可有下式來求: 分頻

23、系數(shù)=基準(zhǔn)頻率/音符的發(fā)生頻率 低音時(shí)Tone值小,分頻系數(shù)大,溢出信號(hào)周期長,揚(yáng)聲器發(fā)出的聲音低,Tone隨音樂的樂譜變化大,自動(dòng)控制分頻比,實(shí)現(xiàn)了數(shù)控分頻,發(fā)生信號(hào)的頻率與音調(diào)Tone成正比。這就是利用數(shù)控分頻器自動(dòng)演奏音樂的原理。 其時(shí)鐘(Clk)端輸入的是在十六進(jìn)制模塊里對12MHz的信號(hào)進(jìn)行16分頻得到的750KHz,750KHz的信號(hào)根據(jù)分頻預(yù)置數(shù)模塊中所提供的計(jì)數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時(shí)從數(shù)控分頻器中出來的

24、輸出信號(hào)是脈寬極窄的脈沖式信號(hào),為了有利于驅(qū)動(dòng)揚(yáng)聲器,需另加一個(gè)D觸發(fā)器以均衡其占空比,這時(shí)的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。數(shù)控分頻模塊中對Clk輸入信號(hào)的分頻比由11位預(yù)置數(shù)tone[10..0]決定。輸出頻</p><p>  module speakera(clk1,tone,spks);</p><p>  input clk1;</p><p

25、>  input [10:0]tone;</p><p>  output spks;</p><p><b>  reg spks;</b></p><p>  reg preclk;</p><p>  reg fullspks;</p><p>  reg [3:0]count4;&l

26、t;/p><p>  reg [10:0]count11;</p><p>  always @ (posedge clk1)</p><p><b>  begin </b></p><p>  if(count4==4'b1000) begin preclk=1'b1; count4=4'b00

27、00; end </p><p>  else begin count4=count4+1; preclk=1'b0; end</p><p><b>  end </b></p><p>  always @ (posedge preclk) </p><p><b>  begin</b

28、></p><p>  if (count11==11'b11111111111) begin count11=tone; fullspks=1'b1; end</p><p>  else begin count11=count11+1;fullspks=1'b0; end</p><p><b>  end </b

29、></p><p>  always @ (posedge fullspks) </p><p><b>  begin </b></p><p>  spks=~spks;</p><p><b>  end </b></p><p><b>  endm

30、odule</b></p><p>  各個(gè)子單元之間的接口關(guān)系</p><p><b>  如下圖所示:</b></p><p> ?。?)該設(shè)計(jì)與其它設(shè)計(jì)的接口方式等 </p><p><b>  實(shí)驗(yàn)選用模式1。</b></p><p>  使CLK1與cl

31、ock9相接,接受12MHz時(shí)鐘頻率(用短路帽在clock9接“12MHz”);CLK 與clock2相接,接受4Hz頻率;發(fā)音輸出SPKOUT接Speaker;與演奏發(fā)音相對應(yīng)的簡譜碼輸出顯示可由CODE1在數(shù)碼管5顯示;HIGH1為高八度音指示,可由發(fā)光管D5指示</p><p>  然后根據(jù)實(shí)驗(yàn)手冊上 的GW48CK 系統(tǒng)萬能接插口與結(jié)構(gòu)圖信號(hào)/與芯片引腳對照表來分配該設(shè)計(jì)與其它設(shè)計(jì)的接口名稱。</p

32、><p><b>  如下圖所示:</b></p><p><b>  仿真綜合部分</b></p><p>  關(guān)鍵節(jié)點(diǎn)的位置、 作用及其測試波形的描述</p><p>  Tone:分頻計(jì)數(shù)器的預(yù)置值,數(shù)控分頻模塊中對clk1高頻輸入信號(hào)的分頻比就是由11位預(yù)置數(shù)tone[10..0]決定的<

33、/p><p>  Q:地址發(fā)生器模塊(包括LPM-ROM塊)的輸出,將和持續(xù)時(shí)間共同決定index[3..0]輸入的值,共13個(gè),然后這13個(gè)值會(huì)確定下一個(gè)數(shù)控分頻模塊的分頻預(yù)置數(shù)</p><p>  Cnt:計(jì)數(shù)器的輸出,隨著計(jì)數(shù)器按4Hz的時(shí)鐘頻率作加法計(jì)數(shù),即隨地址遞增時(shí),將從LPM-ROM塊中的mif音符數(shù)據(jù)中連續(xù)取出音符輸向分頻預(yù)置數(shù)。</p><p>  (

34、2) I/O引腳的名稱、 作用及其測試波形的描述;</p><p>  此為input管腳:</p><p>  Clk1:接受12MHz時(shí)鐘頻率,控制著數(shù)控分頻器的節(jié)奏,測試波形頻率太高已經(jīng)密集成一條黑條</p><p>  Clk:接受4HZ時(shí)鐘頻率,控制著計(jì)數(shù)器的節(jié)奏,測試波形周期即0.25秒</p><p>  此為output管腳:

35、</p><p>  由于時(shí)序仿真時(shí)受12位預(yù)置數(shù)及普通計(jì)算機(jī)性能的限制仿真時(shí)間極長數(shù)值僅做參考實(shí)際結(jié)果請參考本程序的硬件仿真結(jié)果。</p><p>  Code:演奏發(fā)音相對應(yīng)的簡譜碼</p><p>  High:高八度音指示</p><p>  Spks:發(fā)音輸出即不同預(yù)置數(shù)情況下數(shù)控分頻的不同結(jié)果</p>&l

36、t;p>  采用的FPGA器件的型號(hào)</p><p>  片內(nèi)各種資源的使用情況</p><p>  時(shí)序仿真前的資源的使用情況:</p><p>  時(shí)序仿真后的資源的使用情況:</p><p><b>  4 結(jié)論 </b></p><p>  最后向目標(biāo)芯片下載適配后的SOF邏輯設(shè)計(jì)

37、文件,蜂鳴器即發(fā)出聲音,演奏出“梁?!睒非?。本文介紹了基于FPGA的音樂硬件演奏電路的設(shè)計(jì),實(shí)現(xiàn)了一個(gè)樂曲播放器,而且描述了其工作原理、設(shè)計(jì)思路及實(shí)現(xiàn)方法,并在用目標(biāo)芯片仿真實(shí)現(xiàn)了音樂硬件演奏電路的功能。這種基于FPGA的音樂硬件演奏電路的設(shè)計(jì)與實(shí)現(xiàn),不僅通過VHDL層次化和模塊化設(shè)計(jì)方法,同時(shí)采用數(shù)控分頻和定制LPM-ROM的設(shè)計(jì)思想通過本次實(shí)驗(yàn),讓我進(jìn)一步了解了數(shù)控分頻器的工作原理和功能作用,并學(xué)會(huì)了利用LPM模塊制作ROM文件的方

38、法,也更深一層地懂得了頂層文件通過例化語句與其他模塊結(jié)合的好處我想我對EDA的學(xué)習(xí)只能算是個(gè)入門,這個(gè)領(lǐng)域的發(fā)展空間非常大,應(yīng)用范圍也非常廣泛,而且我相信在將來還會(huì)有更加廣闊的應(yīng)用前景。因此在以后的學(xué)習(xí)過程中,我不能因?yàn)檎n程學(xué)習(xí)的結(jié)束而結(jié)束了我對這個(gè)方面的學(xué)習(xí)甚至這個(gè)領(lǐng)域的探索,相反我會(huì)更加努力的去學(xué)習(xí)它。感謝蔣俊華老師兢兢業(yè)業(yè)的教導(dǎo),讓我不僅學(xué)到了知識(shí),也學(xué)到了做人做事的一些道理,為我提供了很多幫助。在接下來的學(xué)習(xí)中,我會(huì)繼續(xù)努力,努

39、力扎實(shí)地學(xué)習(xí)專業(yè)知識(shí),為以后打好鋪墊,奠定基礎(chǔ)。</p><p>  5 附錄 (程序代碼)</p><p>  module cnt138t(clk,cnt);//計(jì)數(shù)器模塊代碼</p><p>  input clk;</p><p>  output [7:0]cnt;</p><p>  reg [7:0]cn

40、t;</p><p>  always @ (posedge clk) </p><p><b>  begin</b></p><p>  if(cnt==8'b10001010) cnt<=8'b00000000;</p><p>  else cnt<=cnt+1;</p>

41、<p><b>  end </b></p><p>  endmodule </p><p>  module tonetaba(index,code,high,tone);//譯碼模塊的代碼</p><p>  input [3:0]index;</p><p>  output [3:0]code;

42、</p><p>  output [10:0]tone;</p><p>  output high;</p><p>  reg [3:0]code;</p><p>  reg [10:0]tone;</p><p><b>  reg high;</b></p><p&

43、gt;  always @ (index) </p><p><b>  begin </b></p><p>  case(index) </p><p>  4'b0000: begin tone<=11'b11111111111; code<=4'b0000; high<=1'b0; en

44、d</p><p>  4'b0001: begin tone<=11'b01100000101; code<=4'b0001; high<=1'b0; end</p><p>  4'b0010: begin tone<=11'b01110010000; code<=4'b0010; high<=

45、1'b0; end</p><p>  4'b0011: begin tone<=11'b10000001100; code<=4'b0011; high<=1'b0; end</p><p>  4'b0101: begin tone<=11'b10010101101; code<=4'b010

46、1; high<=1'b0; end</p><p>  4'b0110: begin tone<=11'b10100001010; code<=4'b0110; high<=1'b0; end</p><p>  4'b0111: begin tone<=11'b10101011100; code<

47、;=4'b0111; high<=1'b0; end</p><p>  4'b1000: begin tone<=11'b10110000010; code<=4'b0001; high<=1'b1; end</p><p>  4'b1001: begin tone<=11'b10111001

48、000; code<=4'b0010; high<=1'b1; end</p><p>  4'b1010: begin tone<=11'b11000000110; code<=4'b0011; high<=1'b1; end</p><p>  4'b1100: begin tone<=11&#

49、39;b11001010110; code<=4'b0101; high<=1'b1; end</p><p>  4'b1101: begin tone<=11'b11010000100; code<=4'b0110; high<=1'b1; end</p><p>  4'b1111: begin t

50、one<=11'b11011000000; code<=4'b0001; high<=1'b1; end</p><p>  default: begin tone<=11'bx; code<=4'bx; high<=1'bx; end</p><p><b>  endcase</b>

51、;</p><p><b>  end</b></p><p>  endmodule </p><p>  module speakera(clk1,tone,spks);//數(shù)控分頻器的代碼</p><p>  input clk1;</p><p>  input [10:0]tone;&l

52、t;/p><p>  output spks;</p><p><b>  reg spks;</b></p><p>  reg preclk;</p><p>  reg fullspks;</p><p>  reg [3:0]count4;</p><p>  reg

53、[10:0]count11;</p><p>  always @ (posedge clk1)</p><p><b>  begin </b></p><p>  if(count4==4'b1000) begin preclk=1'b1; count4=4'b0000; end </p><p

54、>  else begin count4=count4+1;preclk=1'b0; end</p><p><b>  end </b></p><p>  always @ (posedge preclk) </p><p><b>  begin</b></p><p>  if

55、 (count11==11'b00000100000) begin count11=tone; fullspks=1'b1; end</p><p>  else begin count11=count11+1;fullspks=1'b0; end</p><p><b>  end </b></p><p>  al

溫馨提示

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

評論

0/150

提交評論