【文章內(nèi)容簡介】
聲音大,噪聲大通過比較和研究,我們將將Rw阻值可以定在1 KΩ。結(jié)論 通過本次畢業(yè)設(shè)計(jì)讓我真正認(rèn)識(shí)到EDA技術(shù)的強(qiáng)大、cpld芯片的強(qiáng)大。在cpld芯片中你可以用VHDL語言編寫出你所要的器件再編寫相應(yīng)的程序?qū)⑺麄冞B接起來,這樣就能實(shí)現(xiàn)你想要的功能,不過程序的編程和調(diào)試將要占用大量的時(shí)間,往往一個(gè)小小的編程錯(cuò)誤你將反復(fù)的編寫、調(diào)試、仿真多次才能糾正過來。不過與單片機(jī)相比其好處可以大大的節(jié)省外圍電路的設(shè)計(jì),更加簡潔方便。 在外圍電路的仿真、焊接、調(diào)試中發(fā)現(xiàn)很多問題。例如電路的虛接、所買器件有的是損壞的等等,這是你就需要有耐心和恒心將電路分成小塊進(jìn)行詳細(xì)的檢查。各個(gè)部分調(diào)試完成還需總體調(diào)試,從這可以集體與局部的關(guān)系,局部要為集體服務(wù),集體又將反作用于局部。深刻體會(huì)到“實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)”,很多事理論成立但在實(shí)踐中因?yàn)榄h(huán)等等各種情況將產(chǎn)生各種不同結(jié)果,這時(shí)將要做出相應(yīng)的調(diào)整,如果一味的埋頭苦干將浪費(fèi)你大量的時(shí)間。這就涉及到創(chuàng)新,成功往往是你邁出了創(chuàng)新這一步!本次設(shè)計(jì)根據(jù)mini音樂播放器的原理加上必要的外圍電路,在前人的基礎(chǔ)上增加三首歌曲對不同音樂的調(diào)試 ,使的設(shè)計(jì)更人性化。本次設(shè)計(jì)功能都能實(shí)現(xiàn)但在音質(zhì)上還有不足,需要多加調(diào)試,通過本次設(shè)計(jì)不僅技術(shù)上得到鍛煉,精神上也有很大的收獲,這將為將來工作起到巨大的作用。參考文獻(xiàn)[1] 袁慧梅,[J]..[2] 閻石. 數(shù)字電子技術(shù)基礎(chǔ)[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].東北師大學(xué)報(bào)(自然科學(xué)版)..[7] 楊雪巖. 應(yīng)用CPLD開發(fā)的交通信號(hào)燈自動(dòng)控制系統(tǒng)[D]. 山東:山東大學(xué),2003.[8] 潘松,[M].:清華出版社,2007.[9][M].北京:北京航天航空大學(xué)出版社,.[10] stephen Brown, Zvonko of Digital Logic with VHDL Design[M].Canada:Mc Graw HillHigher education,2005.[11] [M].北京:國防工業(yè)出版社,2001.[12] [J]. .[13] 楊寶強(qiáng),何偉,趙東曄. CPLD仿真存在的問題及解決方法[J]. 空進(jìn)工程大學(xué)學(xué)報(bào)(自然科學(xué)版)..[14] 陳華容,姚勝興. 基于CPLD的大型彩燈控制器設(shè)計(jì)[J].. [15] [M].北京:北京工業(yè)出版社,2008.附錄1 總電路圖附錄2 系統(tǒng)實(shí)物圖附錄3 VHDL源代碼頂層設(shè)計(jì)模塊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 實(shí)體Songer的結(jié)構(gòu)體one的說明COMPONENT NoteTabs 元件調(diào)用說明PORT(clk: IN STD_LOGIC。 dig: in integer range 0 to 3。ToneIndex: OUT INTEGER RANGE 0 TO 15)。 INTEGER表整數(shù)END COMPONENT。COMPONENT ToneTabaPORT(index: IN INTEGER RANGE 0 TO 15。Tone: OUT INTEGER RANGE 0 TO 161FFF)。161FFF表示十六進(jìn)制1FFFEND COMPONENT。ponent chooseport(switch:in std_logic_vector(2 downto 0)。 std_logic_vector數(shù)組 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定義電路內(nèi)部節(jié)點(diǎn)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。開關(guān)選擇模塊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) 該進(jìn)程語句對信號(hào)switch敏感begincase switch is case分類when 011=dig=1。 當(dāng)switch為011是將1賦給digwhen 110=dig=2。when 101=dig=3。when others=dig=0。end case。end process。end。揚(yáng)聲器發(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進(jìn)行16分頻PreCLK為clk十六分頻if Count413 THEN PreCLK=39。139。 Count4:=0。 if判斷語句當(dāng)if成立時(shí)執(zhí)行then不成立跳過執(zhí)行下個(gè)語句elsif clk39。EVENT and clk=39。139。 then 當(dāng)clk上升沿來時(shí)Count4:=Count4+1。end if。end process。process(PreCLK, Tone) 十三位可預(yù)置數(shù)計(jì)數(shù)器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