【文章內(nèi)容簡介】
0。HIGH=39。039。 912 when 00011 = Tone=10000001100。CODE=0011。HIGH=39。039。 1036 when 00101 = Tone=10010101101。CODE=0101。HIGH=39。039。 1197 when 00110 = Tone=10100001010。CODE=0110。HIGH=39。039。 1290 when 00111 = Tone=10101011100。CODE=0111。HIGH=39。039。 1372 when 01000 = Tone=10110000010。CODE=0001。HIGH=39。139。 1410 when 01001 = Tone=10111001000。CODE=0010。HIGH=39。139。 1480 when 01010 = Tone=11000000110。CODE=0011。HIGH=39。139。 1542 when 01011 = Tone=11000101011。CODE=0100。HIGH=39。139。 1579 when 01100 = Tone=11001010110。CODE=0101。HIGH=39。139。 1622 when 01101 = Tone=11010000100。CODE=0110。HIGH=39。139。 1668 when 01110 = Tone=11010110101。CODE=0111。HIGH=39。139。 1717 when 01111 = Tone=11011000000。CODE=0001。HIGH=39。139。 1728 when 10000 = Tone=11011101010。CODE=0010。HIGH=39。139。 1770 when 10001 = Tone=11100000111。CODE=0011。HIGH=39。139。 1799 when others=NULL。 end case。 end process。 end。該模塊的波形圖為:4) 對于Speakera模塊音符的頻率是由該模塊獲得音符頻率的獲得:多個(gè)不同頻率的信號可通過對某個(gè)基準(zhǔn)頻率進(jìn)行分頻器獲得。該程序選取750KHz的基準(zhǔn)頻率。由于現(xiàn)有的高頻時(shí)鐘脈沖信號的頻率為12MHz,需對其進(jìn)行16分頻,才能獲得750KHz的基準(zhǔn)頻率。對基準(zhǔn)頻率分頻后的輸出信號是一些脈寬極窄的尖脈沖信號。為提高輸出信號的驅(qū)動(dòng)能力,以使揚(yáng)聲器有足夠的功率發(fā)音,需要再通過一個(gè)分頻器(D觸發(fā)器)將原來的分頻器的輸出脈沖均衡為對稱方波,這時(shí)的頻率將是原來的1/2,即為375KHz。各個(gè)音符的頻率及其對應(yīng)的分頻系數(shù)(基準(zhǔn)頻率375KHz)音符名頻 率(Hz)分頻系數(shù)計(jì)數(shù)初值休止符37500002047低音11274773低音21135912低音310111036低音49701077低音59501197低音67571290低音76751372中音16371410中音25871480中音35051542中音44681579中音54251622中音63791668中音73301717高音13191728高音22771770高音32481799高音42331814高音52081839高音61851862高音71651882Speakera的模塊程序:library ieee。use 。use 。entity speakera isport(clk:in std_logic。 tone:in std_logic_vector(10 downto 0)。 spks:out std_logic)。end。architecture one of speakera is signal preclk,fullspks:std_logic。begindivideclk:process(clk) variable count4:std_logic_vector(3 downto 0)。beginpreclk=39。039。if count411 then preclk=39。139。count4:=0000。elsif clk39。event and clk=39。139。 then count4:=count4+1。end if。end process。genspks:process(preclk,tone) variable coun