【文章內容簡介】
聲音大,噪聲大通過比較和研究,我們將將Rw阻值可以定在1 KΩ。結論 通過本次畢業(yè)設計讓我真正認識到EDA技術的強大、cpld芯片的強大。在cpld芯片中你可以用VHDL語言編寫出你所要的器件再編寫相應的程序將他們連接起來,這樣就能實現你想要的功能,不過程序的編程和調試將要占用大量的時間,往往一個小小的編程錯誤你將反復的編寫、調試、仿真多次才能糾正過來。不過與單片機相比其好處可以大大的節(jié)省外圍電路的設計,更加簡潔方便。 在外圍電路的仿真、焊接、調試中發(fā)現很多問題。例如電路的虛接、所買器件有的是損壞的等等,這是你就需要有耐心和恒心將電路分成小塊進行詳細的檢查。各個部分調試完成還需總體調試,從這可以集體與局部的關系,局部要為集體服務,集體又將反作用于局部。深刻體會到“實踐是檢驗真理的唯一標準”,很多事理論成立但在實踐中因為環(huán)等等各種情況將產生各種不同結果,這時將要做出相應的調整,如果一味的埋頭苦干將浪費你大量的時間。這就涉及到創(chuàng)新,成功往往是你邁出了創(chuàng)新這一步!本次設計根據mini音樂播放器的原理加上必要的外圍電路,在前人的基礎上增加三首歌曲對不同音樂的調試 ,使的設計更人性化。本次設計功能都能實現但在音質上還有不足,需要多加調試,通過本次設計不僅技術上得到鍛煉,精神上也有很大的收獲,這將為將來工作起到巨大的作用。參考文獻[1] 袁慧梅,[J]..[2] 閻石. 數字電子技術基礎[M].:高等教育出版社,1998.[3] [M].北京:國防工業(yè)出版社,2004.[4] Zhou Zou, Wang Hongyuan, Yu Guowen. An Improved MUSIC Algorithm Implemented with Highspeed Parallel Optimization for FPGA [J].Huazhong University of Science and Technology. 2006.[5][M].北京:中國水利水電出版社,2001.[6] 袁慧梅,[J].東北師大學報(自然科學版)..[7] 楊雪巖. 應用CPLD開發(fā)的交通信號燈自動控制系統(tǒng)[D]. 山東:山東大學,2003.[8] 潘松,[M].:清華出版社,2007.[9][M].北京:北京航天航空大學出版社,.[10] stephen Brown, Zvonko of Digital Logic with VHDL Design[M].Canada:Mc Graw HillHigher education,2005.[11] [M].北京:國防工業(yè)出版社,2001.[12] [J]. .[13] 楊寶強,何偉,趙東曄. CPLD仿真存在的問題及解決方法[J]. 空進工程大學學報(自然科學版)..[14] 陳華容,姚勝興. 基于CPLD的大型彩燈控制器設計[J].. [15] [M].北京:北京工業(yè)出版社,2008.附錄1 總電路圖附錄2 系統(tǒng)實物圖附錄3 VHDL源代碼頂層設計模塊LIBRARY IEEE。USE 。IEEE庫及其程序包的使用說明ENTITY Songer ISPORT(CLK40MHZ: IN STD_LOGIC。 in定于端口輸入 CLK16HZ: in std_logic。 switch:in std_logic_vector(2 downto 0)。 SPKOUT: OUT STD_LOGIC。 out定于端口輸出 lights:out std_logic_vector(8 downto 0))。END。 ARCHITECTURE one OF Songer IS 實體Songer的結構體one的說明COMPONENT NoteTabs 元件調用說明PORT(clk: IN STD_LOGIC。 dig: in integer range 0 to 3。ToneIndex: OUT INTEGER RANGE 0 TO 15)。 INTEGER表整數END COMPONENT。COMPONENT ToneTabaPORT(index: IN INTEGER RANGE 0 TO 15。Tone: OUT INTEGER RANGE 0 TO 161FFF)。161FFF表示十六進制1FFFEND COMPONENT。ponent chooseport(switch:in std_logic_vector(2 downto 0)。 std_logic_vector數組 dig:out integer range 0 to 3)。end ponent。COMPONENT SpeakeraPORT(clk: IN STD_LOGIC。 Tone: IN INTEGER RANGE 0 TO 161FFF。 SpkS: OUT STD_LOGIC)。END COMPONENT。 ponent lightport(clk: in std_logic。Tone :in INTEGER RANGE 0 TO 15。lights:out std_logic_vector(8 downto 0))。end ponent。ponent clk_div1PORT(clk_in: in std_logic。 clk_out: out std_logic)。end ponent。ponent ffpinport (clk4mhz:in std_logic。 ft:out std_logic)。end ponent。SIGNAL Tone: INTEGER RANGE 0 TO 161FFF。 SIGNAL定義電路內部節(jié)點SIGNAL ToneIndex: INTEGER RANGE 0 TO 15。SIGNAL dig1: integer range 0 to 3。SIGNAL CLK4MHZ: STD_LOGIC。Signal a: STD_LOGIC。BEGINu1:NoteTabs PORT MAP(clk=a,dig=dig1,ToneIndex=ToneIndex)。u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone)。u3: Speakera PORT MAP(clk=CLK4MHZ,Tone=Tone,SpkS=SPKOUT)。u4:light port map(clk=CLK16HZ, Tone=ToneIndex,lights=lights)。u5: choose port map(switch=switch,dig=dig1)。元件連接說明u6: clk_div1 port map(clk_in=CLK40MHZ,clk_out=CLK4MHZ)。u7: ffpin port map(clk4mhz=CLK4MHZ, ft=a)。END。十分頻library ieee。use 。use 。use 。entity clk_div1 isport(clk_in: in std_logic。 clk_out: out std_logic)。end clk_div1。architecture b of clk_div1 issignal countQ: std_logic_vector(3 downto 0)。beginprocess(clk_in)beginif(clk_in39。event and clk_in=39。139。) thenif(countQ 10) thencountQ = countQ +1。elseCountQ = (others =39。039。)。end if。end if。end process。process(countQ)beginif(countQ 5) thenclk_out = 39。039。elseclk_out = 39。139。end if。end process。end b。4mhz分頻成4hzlibrary ieee。use 。use 。use 。entity ffpin is port (clk4mhz:in std_logic。 ft:out std_logic)。end ffpin。architecture a of ffpin issignal fm:std_logic。beginprocess(clk4mhz)variable num:integer range 0 to 1000000。beginif clk4mhz39。event and clk4mhz=39。139。 then if num500000 then num:=num+1。 else num:=1。 fm=not fm。 end if 。end if。ft=fm。end process。end a。開關選擇模塊library ieee。use 。entity choose isport(switch:in std_logic_vector(2 downto 0)。dig:out integer range 0 to 3)。end。architecture one of choose isbeginprocess(switch) 該進程語句對信號switch敏感begincase switch is case分類when 011=dig=1。 當switch為011是將1賦給digwhen 110=dig=2。when 101=dig=3。when others=dig=0。end case。end process。end。揚聲器發(fā)生及分頻模塊library ieee。use 。entity Speakera isPORT(clk: IN STD_LOGIC。Tone: IN INTEGER RANGE 0 TO 161FFF。SpkS: OUT STD_LOGIC)。END 。architecture one of Speakera issignal PreCLK:std_logic。signal FullSpkS:std_logic。beginprocess(clk)variable count4:integer range 0 to 15。 variable變量begin PreCLK=39。039。 將clk進行16分頻PreCLK為clk十六分頻if Count413 THEN PreCLK=39。139。 Count4:=0。 if判斷語句當if成立時執(zhí)行then不成立跳過執(zhí)行下個語句elsif clk39。EVENT and clk=39。139。 then 當clk上升沿來時Count4:=Count4+1。end if。end process。process(PreCLK, Tone) 十三位可預置數計數器variable Count11: integer range 0 to 161FFF。beginif PreCLK39。event and PreCLK=39。139。 thenif Count11=161FFF thencount11:=Tone。FullSpkS=39。139。else Count11:=Count11+1。FullSpkS=39。039。end if。end if。end process。process(FullSpkS) 將輸出再二分頻variable Count2:std_logic。beginifFullSpkS39。EVENT and FullSpkS=39。139。 thenCount2:=NOT Count2。 NOT表取反if Count2=39。139。 thenSpkS=39。139。else SpkS=39。039。end if