【正文】
if Count11=161FFF thencount11:=Tone。event and PreCLK=39。process(PreCLK, Tone) 十三位可預(yù)置數(shù)計(jì)數(shù)器variable Count11: integer range 0 to 161FFF。end if。139。 if判斷語(yǔ)句當(dāng)if成立時(shí)執(zhí)行then不成立跳過(guò)執(zhí)行下個(gè)語(yǔ)句elsif clk39。139。039。beginprocess(clk)variable count4:integer range 0 to 15。architecture one of Speakera issignal PreCLK:std_logic。SpkS: OUT STD_LOGIC)。entity Speakera isPORT(clk: IN STD_LOGIC。揚(yáng)聲器發(fā)生及分頻模塊library ieee。end process。when others=dig=0。 當(dāng)switch為011是將1賦給digwhen 110=dig=2。end。entity choose isport(switch:in std_logic_vector(2 downto 0)。開(kāi)關(guān)選擇模塊library ieee。end process。end if。 fm=not fm。 then if num500000 then num:=num+1。event and clk4mhz=39。beginprocess(clk4mhz)variable num:integer range 0 to 1000000。end ffpin。entity ffpin is port (clk4mhz:in std_logic。use 。4mhz分頻成4hzlibrary ieee。end process。139。039。end process。end if。039。) thenif(countQ 10) thencountQ = countQ +1。event and clk_in=39。architecture b of clk_div1 issignal countQ: std_logic_vector(3 downto 0)。 clk_out: out std_logic)。use 。use 。END。元件連接說(shuō)明u6: clk_div1 port map(clk_in=CLK40MHZ,clk_out=CLK4MHZ)。u4:light port map(clk=CLK16HZ, Tone=ToneIndex,lights=lights)。u2: ToneTaba PORT MAP(Index=ToneIndex, Tone=Tone)。Signal a: STD_LOGIC。SIGNAL dig1: integer range 0 to 3。SIGNAL Tone: INTEGER RANGE 0 TO 161FFF。 ft:out std_logic)。end ponent。ponent clk_div1PORT(clk_in: in std_logic。lights:out std_logic_vector(8 downto 0))。 ponent lightport(clk: in std_logic。 SpkS: OUT STD_LOGIC)。COMPONENT SpeakeraPORT(clk: IN STD_LOGIC。 std_logic_vector數(shù)組 dig:out integer range 0 to 3)。161FFF表示十六進(jìn)制1FFFEND COMPONENT。COMPONENT ToneTabaPORT(index: IN INTEGER RANGE 0 TO 15。ToneIndex: OUT INTEGER RANGE 0 TO 15)。 ARCHITECTURE one OF Songer IS 實(shí)體Songer的結(jié)構(gòu)體one的說(shuō)明COMPONENT NoteTabs 元件調(diào)用說(shuō)明PORT(clk: IN STD_LOGIC。 out定于端口輸出 lights:out std_logic_vector(8 downto 0))。 switch:in std_logic_vector(2 downto 0)。IEEE庫(kù)及其程序包的使用說(shuō)明ENTITY Songer ISPORT(CLK40MHZ: IN STD_LOGIC。參考文獻(xiàn)[1] 袁慧梅,[J]..[2] 閻石. 數(shù)字電子技術(shù)基礎(chǔ)[M].:高等教育出版社,1998.[3] [M].北京:國(guó)防工業(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].北京:中國(guó)水利水電出版社,2001.[6] 袁慧梅,[J].東北師大學(xué)報(bào)(自然科學(xué)版)..[7] 楊雪巖. 應(yīng)用CPLD開(kāi)發(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].北京:國(guó)防工業(yè)出版社,2001.[12] [J]. .[13] 楊寶強(qiáng),何偉,趙東曄. CPLD仿真存在的問(wèn)題及解決方法[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。這就涉及到創(chuàng)新,成功往往是你邁出了創(chuàng)新這一步!本次設(shè)計(jì)根據(jù)mini音樂(lè)播放器的原理加上必要的外圍電路,在前人的基礎(chǔ)上增加三首歌曲對(duì)不同音樂(lè)的調(diào)試 ,使的設(shè)計(jì)更人性化。各個(gè)部分調(diào)試完成還需總體調(diào)試,從這可以集體與局部的關(guān)系,局部要為集體服務(wù),集體又將反作用于局部。 在外圍電路的仿真、焊接、調(diào)試中發(fā)現(xiàn)很多問(wèn)題。在cpld芯片中你可以用VHDL語(yǔ)言編寫(xiě)出你所要的器件再編寫(xiě)相應(yīng)的程序?qū)⑺麄冞B接起來(lái),這樣就能實(shí)現(xiàn)你想要的功能,不過(guò)程序的編程和調(diào)試將要占用大量的時(shí)間,往往一個(gè)小小的編程錯(cuò)誤你將反復(fù)的編寫(xiě)、調(diào)試、仿真多次才能糾正過(guò)來(lái)。表53 音頻放大調(diào)試記錄Rw阻值(KΩ)9音頻放大效果聲音小,無(wú)噪音聲音較小,無(wú)噪聲聲音適中,無(wú)噪聲聲音稍大,無(wú)噪聲聲音較大,無(wú)噪聲聲音大,少有噪聲聲音大,噪聲大通過(guò)比較和研究,我們將將Rw阻值可以定在1 KΩ。表52 彩燈控制時(shí)鐘調(diào)試記錄R3阻值(KΩ)彩燈時(shí)鐘頻率(Hz)101214161820彩燈閃爍效果慢較慢稍慢適中稍快較快經(jīng)過(guò)比較和比較, K,用1kΩ的電阻代替,彩燈控制時(shí)鐘的頻率最后定為16Hz。 彩燈控制時(shí)鐘的調(diào)試彩燈控制時(shí)鐘頻率需要在十幾道幾十赫茲之間的頻率。 圖51 歌曲1仿真圖圖52 歌曲2仿真圖圖53 歌曲3仿真圖 系統(tǒng)調(diào)試把程序下載到芯片內(nèi)部后,將第四章所介紹的所有外圍電路與CPLD連接后,形成整個(gè)系統(tǒng),總電路圖見(jiàn)附錄1。在Quartus軟件中選著VHDL語(yǔ)言,在vhdl文本中輸入所有程序,并建立相應(yīng)的工程項(xiàng)目,然后進(jìn)行編譯及仿真,編譯時(shí)可以顯示出當(dāng)前芯片容量是否夠用,若不夠用,則需要對(duì)程序進(jìn)行進(jìn)一步優(yōu)化,直到容量達(dá)到芯片標(biāo)準(zhǔn)為止。業(yè)內(nèi)目前領(lǐng)先的FPGA/CPLD設(shè)計(jì)軟件現(xiàn)在有Altera的Quartus II,具最好的開(kāi)發(fā)環(huán)境,能夠?qū)崿F(xiàn)的性能非常強(qiáng)大。 圖45 開(kāi)關(guān)電路及彩燈電路5 芯片制作及系統(tǒng)調(diào)試 VHDL程序下載本次設(shè)計(jì)采用的是Aletra公司的MAX II系列,因此,必須用Quartus II軟件系列才能對(duì)該芯片進(jìn)行編譯、仿真、下載等功能。八個(gè)發(fā)光二極管的亮滅由高低電平控制。音樂(lè)選擇開(kāi)關(guān)我們采用4門(mén)開(kāi)關(guān),當(dāng)我們撥動(dòng)開(kāi)關(guān)來(lái)選擇歌曲,開(kāi)關(guān)接通時(shí)電源導(dǎo)通,信號(hào)這時(shí)有輸入到CPLD內(nèi)部來(lái)改變。C1是退耦電容,R1C3網(wǎng)絡(luò)作用是消除高頻自激振蕩。如下圖42所示。當(dāng)電源電壓為12V時(shí),負(fù)載為8歐姆時(shí),提供功率達(dá)到幾百mW的。 ,電源電壓一般在412V之間。 ,20200。 ,412V到518V。 LM386的封裝形式有塑封8引線雙列直插式和貼片式如圖43。如果在1腳和8腳之間接上一只外接電阻和電容,就可以電壓增益設(shè)為想要的任何值,甚至可達(dá)到200。LM386 音頻功率放大器一般屬于低電壓消費(fèi)類(lèi)產(chǎn)品。音頻信號(hào)通過(guò)一個(gè)音頻放大電路進(jìn)行放大,放大后的信號(hào)就可以驅(qū)動(dòng)揚(yáng)聲器了。這個(gè)可以隨意調(diào)節(jié)。由3腳輸出的脈沖頻率的計(jì)算公式如公式(41)所示。電壓范圍是++16V。 Pin 7 為放電端,這個(gè)接腳和輸出接腳電流輸出能力相同,當(dāng)輸出為打開(kāi)時(shí)為低電平,對(duì)地顯示為低阻抗,當(dāng)輸出為關(guān)閉時(shí)為高電平,對(duì)地顯示為高阻抗。 Pin 6 是重置鎖定端,重置鎖定是使輸出呈低態(tài)。 Pin 5 是控制端,可以由外部電壓用來(lái)改變閘限電壓和觸發(fā)電壓。 Pin 4 是重置端, 當(dāng)這個(gè)腳位接收到一個(gè)低邏輯電位時(shí)會(huì)重置定時(shí)器,且使輸出回到一個(gè)低點(diǎn)平。最后結(jié)束的周期輸出回到低電位。觸發(fā)信號(hào)上緣電壓一定要2/3 VCC,下緣須必須低于1/3 VCC 。 圖41 555芯片封裝Pin 1接地,一般和電路中的地線相連??芍苯油苿?dòng)很多種自動(dòng)控制的負(fù)載電路。延時(shí)范圍由幾微秒至幾小時(shí)之久,范圍寬。 彩燈閃爍節(jié)奏時(shí)鐘產(chǎn)生電路NE555是一個(gè)非常普遍和用途很廣的計(jì)時(shí)集成芯片,可以產(chǎn)生不同頻率的信號(hào)脈沖,其外部只需要少數(shù)的電阻和電容。在上一章節(jié)中提到,我們以1/16音符為最小計(jì)數(shù)單元,所以需要一個(gè)4HZ的時(shí)鐘,這個(gè)時(shí)鐘可以由外部輸入或者從芯片自帶晶振中分頻得到。還要通過(guò)必要的外圍電路接入彩燈閃爍節(jié)奏時(shí)鐘。由此最后確定了《我愿意》、《濤聲依舊》、《隱形的翅膀》三首。 歌曲選擇歌曲選擇也非常重要。110為第四首歌曲。表33 不同音符對(duì)應(yīng)彩燈閃爍表音名彩燈閃爍(1表示亮/ 0表示滅)低音5100100100低音6010010010低音7001001001中音1000000001中音2000000011中音3000000111中音4000001000中音5000011000中音6000111000中音7001000000高音1011000000高音2111000000高音3000111111高音4111111000高音5111000111休止符0111111111 開(kāi)關(guān)選擇模塊設(shè)計(jì)我們采用case語(yǔ)句來(lái)判斷外部電路輸入的一個(gè)字符串,這個(gè)字符串由芯片內(nèi)部處理,從而判斷選擇播放的歌曲是哪一首的原理來(lái)設(shè)計(jì)開(kāi)關(guān)模塊。如下表33所顯示,不同的彩燈閃亮情況對(duì)應(yīng)著的不同的音符。 彩燈閃爍控制模塊的設(shè)計(jì)彩燈閃爍控制的電路主要功能就是控制燈的亮和滅,此電路輸出高低電平信號(hào),就可以直接驅(qū)動(dòng)發(fā)光二極管。將“0”表示成為休止符,因?yàn)樵诤芏嗟囊魳?lè)系統(tǒng)中,這個(gè)休止符是一個(gè)關(guān)鍵的音符。加載不同的初始值即可得到不同的分頻系數(shù)。因?yàn)?102是最大的分頻系數(shù),故滿(mǎn)足分頻要求需要采用13位二進(jìn)制計(jì)數(shù)器。列如在48MHZ時(shí)鐘下,其分頻系數(shù)此時(shí)為:48 000 000/(2*)=oxb327,這樣中音1通過(guò)系統(tǒng)時(shí)鐘進(jìn)行45863次分頻即可得到。其各種頻率的信號(hào)都是來(lái)源于同一基準(zhǔn)頻率分頻。下表32為各音階頻率及相應(yīng)的分頻。可變模值計(jì)數(shù)器計(jì)數(shù)脈沖選用4MHz高頻脈沖,因?yàn)榘匆笙到y(tǒng)產(chǎn)生出的信號(hào)頻率一般比較高。表31為音符的分頻數(shù)預(yù)制初值音名分頻系數(shù)初