【正文】
TONE0=2047。CODE=0000000。HIGH=39。039。咼鉉們歟謙鴣餃競(jìng)蕩賺趲為練濺騙閻。WHEN00010000=TONE0=1197。CODE=1001100。HIGH=39。139。 溈氣嘮戇萇鑿鑿櫧諤應(yīng)釵藹紼較騮額。ARCHITECTURE ART OF TONE ISBEGINSEARCH:PROCESS(INDEX) BEGINCASE INDEX ISWHEN00000001=TONE0=773。 高低音顯示信號(hào)稟虛嬪賑維嚌妝擴(kuò)踴糶欏灣鯧飫驃餒。ENTITY TONE ISPORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0)。LIBRARY IEEE。END IF。 2WHEN OTHERS=NULL。 4 WHEN 28=INDEX0=00000100。 2 WHEN 24=INDEX0=00010000。 4 WHEN 20=INDEX0=00001000。 1 WHEN 16=INDEX0=00010000。 3 WHEN 12=INDEX0=00000010。 6 WHEN 8=INDEX0=10000000。 3 WHEN 4=INDEX0=00010000。 WHEN 0=INDEX0=00000100。END PROCESS。)THEN 時(shí)鐘信號(hào)2為1 IF(COUNT0=31)THEN 計(jì)數(shù)器值為31 COUNT0=0。MUSIC:PROCESS(CLK2) MUSIC工作進(jìn)程開(kāi)始詩(shī)叁撻訥燼憂(yōu)毀厲鋨驁靈韜鰍櫝驥鱭。COUNT:=0。 計(jì)數(shù)器加1即為1 IF COUNT=4 THEN CLK2=39。 ELSIF(CLK39。THEN 鍵盤(pán)輸入為1 COUNT:=0。 VARIABLE COUNT:INTEGER RANGE 0 TO 8。END AUTO。 時(shí)鐘輸出 INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 系統(tǒng)時(shí)鐘信號(hào)倉(cāng)嫗盤(pán)紲囑瓏詁鍬齊驁絛鯛鱧俁魷親。USE 。塤礙籟饈決穩(wěn)賽釙冊(cè)庫(kù)麩適緄撾鲅傯。另一方面我們也發(fā)現(xiàn)了在平時(shí)學(xué)習(xí)過(guò)程中難于發(fā)現(xiàn)的許多缺點(diǎn)跟不足。擠貼綬電麥結(jié)鈺贖嘵類(lèi)羋罷鴇竇鮒鑿。在完成電路驗(yàn)證這一步時(shí),對(duì)頻率的選擇也是一大難點(diǎn),有的設(shè)計(jì)項(xiàng)目對(duì)頻率的要求很高,需要大頻率元件才能滿(mǎn)足設(shè)計(jì)需求,若頻率元件選擇不恰當(dāng),將嚴(yán)重影響設(shè)計(jì)結(jié)果甚至沒(méi)有結(jié)果輸出。手按鍵盤(pán)或撥脈沖開(kāi)關(guān)改變輸入信號(hào)則揚(yáng)聲器發(fā)出對(duì)應(yīng)的頻率的聲音,鍵盤(pán)(開(kāi)關(guān))是與芯片引腳對(duì)應(yīng)相連的。紂憂(yōu)蔣氳頑薟驅(qū)藥憫騖覲僨鴛鋅鮚嗚。在仿真時(shí)由于系統(tǒng)各方面原因影響,出現(xiàn)延時(shí)屬于正?,F(xiàn)象。圖43數(shù)控分頻模塊的仿真圖該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK1初值為0(各輸出值都是在時(shí)鐘信號(hào)的下降沿有效),音符分頻系數(shù)TONE1為00100000即1290Hz,驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)SPKS輸出為1。音調(diào)發(fā)生模塊的仿真如圖42所示。慫闡譜鯪逕導(dǎo)嘯畫(huà)長(zhǎng)涼馴鴇撟鉍鲞謠。(2)在MAS+plusⅡ菜單中打開(kāi)仿真器窗口,單擊Start按鈕,當(dāng)仿真器結(jié)束工作時(shí),單擊Open SCF按鈕,就可以看到仿真的結(jié)果。閿擻輳嬪諫遷擇楨秘騖輛塤鵜蘞鰱幟。圖34 DIANZIQIN模塊的符號(hào)編輯圖該圖描述的是DIANZIQIN模塊輸入輸出的變量表示,整個(gè)系統(tǒng)的整體組裝設(shè)計(jì)原理圖就是這4幅編輯圖按輸入輸出關(guān)系順序連接而成的。 揚(yáng)聲器輸出為1ELSE SPK=’0’。IF COUNT2=39。EVENT AND FULLSPKS=39。039。FULLSPKS=39。 定義頻率計(jì)數(shù)器,從0到2047Hz IF(PRECLK39。首先,根據(jù)系統(tǒng)時(shí)鐘信號(hào)的輸入得到時(shí)基脈沖以及計(jì)數(shù)器的值,而時(shí)鐘信號(hào)在AUTO模塊中便已給出,兩者之間的設(shè)置關(guān)系類(lèi)似于AUTO模塊中第一個(gè)工作進(jìn)程的設(shè)置。 數(shù)控分頻模塊數(shù)控分頻模塊是對(duì)時(shí)基脈沖進(jìn)行分頻,得到與0、7八個(gè)音符相對(duì)應(yīng)的頻率。039。鍬籟饗逕瑣筆襖鷗婭薔嗚訝擯饃鯫缽。音符第7位為1,分頻數(shù)912Hz,音符顯示為0010010,屬高音WHEN01000000=TONE0=1372。CODE=0010010。該模塊的唯一輸入信號(hào)INDEX對(duì)應(yīng)就是自動(dòng)模塊中最后的輸出INDEX0,音符顯示信號(hào)CODE,高低音顯示信號(hào)HIGH和音符分頻系數(shù)都是根據(jù)音符輸入確定的。買(mǎi)鯛鴯譖曇膚遙閆擷凄屆嬌擻歿鯰錆。039。即CLK2的值為0時(shí),COUNT0為1。EVENT AND CLK=39。CLK2=39。 定義計(jì)數(shù)器變量,值從0到8贓熱俁閫歲匱閶鄴鎵騷鯛漢鼉匱鯔潰。該模塊的VHDL源程序主要由3個(gè)工作進(jìn)程組成,分別為PULSE0,MUSIC和COM1。滲釤嗆儼勻諤鱉調(diào)硯錦鋇絨鈔陘鰍陸。比如VHDL的行為描述能力更強(qiáng),而且具有豐富的仿真語(yǔ)句和庫(kù)函數(shù),隨時(shí)可對(duì)系統(tǒng)進(jìn)行仿真模擬,使設(shè)計(jì)者對(duì)整個(gè)工程的結(jié)構(gòu)和功能可行性做出判斷;另外,由于具有類(lèi)屬描述語(yǔ)句和子程序調(diào)用等功能,對(duì)于完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變類(lèi)屬參量和函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)。 VHDL語(yǔ)言常用硬件描述語(yǔ)言有VHDL、Verilog和ABEL語(yǔ)言,而VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。煢楨廣鰳鯡選塊網(wǎng)羈淚鍍齊鈞摟鰨饗。廈礴懇蹣駢時(shí)盡繼價(jià)騷巹癩龔長(zhǎng)鰥檷。另外,時(shí)鐘脈沖信號(hào)在本課程設(shè)計(jì)中用的最多,用處也最大,一般情況下時(shí)鐘信號(hào)處上升沿有效,判斷和控制各個(gè)計(jì)數(shù)器計(jì)數(shù)多少。系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖11所示。(3)能夠自動(dòng)演奏多首樂(lè)曲,且樂(lè)曲可重復(fù)演奏。該設(shè)計(jì)最重要的一點(diǎn)就是通過(guò)按鍵控制不同的音調(diào)發(fā)生,每一個(gè)音調(diào)對(duì)應(yīng)不同的頻率,從而輸出對(duì)應(yīng)頻率的聲音。殘騖樓諍錈瀨濟(jì)溆塹籟婭騍東戇鱉納。1 引 言隨著信息科學(xué)的進(jìn)步,現(xiàn)代電子產(chǎn)品的性能越來(lái)越高,復(fù)雜度越來(lái)越大,更新步伐也越來(lái)越快,電子技術(shù)的發(fā)展進(jìn)入了劃時(shí)代的階段。 EDA。然后編寫(xiě)程序?qū)崿F(xiàn)電子琴的各項(xiàng)功能,使不同的音階對(duì)應(yīng)不同頻率的正弦波,按下不同的鍵時(shí)發(fā)出對(duì)應(yīng)頻率的聲音。在課程設(shè)計(jì)中,系統(tǒng)開(kāi)發(fā)平臺(tái)為Windows XP,程序設(shè)計(jì)采用VHDL語(yǔ)言,程序運(yùn)行平臺(tái)為MAX+plusⅡ。Key WordsElectric piano。 frequency聞創(chuàng)溝燴鐺險(xiǎn)愛(ài)氌譴凈禍測(cè)樅鋸鰻鯪。本課程設(shè)計(jì)就是采用EDA技術(shù)描述語(yǔ)言VHDL編程實(shí)現(xiàn)簡(jiǎn)易電子琴的各項(xiàng)功能,是EDA技術(shù)應(yīng)用于實(shí)際的一個(gè)很好的例子。系統(tǒng)實(shí)現(xiàn)是用硬件描述語(yǔ)言VHDL按模塊化方式進(jìn)行設(shè)計(jì),然后進(jìn)行編程、時(shí)序仿真、電路功能驗(yàn)證,奏出美妙的樂(lè)曲。(2)系統(tǒng)演奏時(shí)可以選擇是手動(dòng)演奏(由鍵盤(pán)輸入)還是自動(dòng)演奏已存入的樂(lè)曲。故系統(tǒng)可分為樂(lè)曲自動(dòng)演奏模塊(AUTO)、音調(diào)發(fā)生模塊(TONE)和數(shù)控分頻模塊(FENPIN)三部分。如AUTO模塊的音符信號(hào)輸出就是TONE模塊的音符信號(hào)輸入。EDA可提供文本輸入以及圖形編輯的方法將設(shè)計(jì)者的意圖用程序或者圖形方式表達(dá)出來(lái),而我們經(jīng)常用到的VHDL語(yǔ)言便是用于編寫(xiě)源程序所需的最常見(jiàn)的硬件描述語(yǔ)言(HDL)之一。EDA工具從數(shù)字系統(tǒng)設(shè)計(jì)的單一領(lǐng)域,發(fā)展到今天,應(yīng)