2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  目 錄</b></p><p><b>  1 緒論2</b></p><p>  1.1 研究背景2</p><p>  1.2 可編程邏輯控件FPGA2</p><p>  1.3 開發(fā)語言VHDL4</p><p>  1.4 開

2、發(fā)環(huán)境MAX+PLUSⅡ5</p><p>  1.5 研究思路及主要工作6</p><p><b>  2 系統(tǒng)設(shè)計6</b></p><p>  2.1 系統(tǒng)原理6</p><p>  2.1.1 音調(diào)的控制7</p><p>  2.1.2 音長的控制8</p>&

3、lt;p>  2.2 系統(tǒng)結(jié)構(gòu)8</p><p>  3 各模塊設(shè)計與仿真9</p><p>  3.1 定制音符數(shù)據(jù)9</p><p>  3.1.1定制音符數(shù)據(jù)ROM的mif文件9</p><p>  3.1.2在MAX+PLUSⅡ下定制的LPM_ROM10</p><p>  3.2 音符數(shù)據(jù)地址

4、發(fā)生器模塊NOTETABS11</p><p>  3.3 預(yù)置數(shù)查表電路模塊TONETABA12</p><p>  3.4 發(fā)聲頻率產(chǎn)生模塊SPEAKERA14</p><p>  3.5樂曲播放電路頂層電路16</p><p><b>  4 硬件測試16</b></p><p>

5、<b>  5 心得體會17</b></p><p><b>  參考文獻(xiàn)18</b></p><p><b>  附錄19</b></p><p><b>  緒論</b></p><p><b>  1.1 研究背景</b>

6、</p><p>  隨著電子技術(shù)的飛速發(fā)展,微電子技術(shù)的進(jìn)步主要表現(xiàn)在大規(guī)模集成電路加工技術(shù)即半導(dǎo)體工藝技術(shù)的發(fā)展上,使得本征半導(dǎo)體的工藝水平的線寬已經(jīng)達(dá)到了60nm,并在不斷地縮小,面在硅片單位面積上,集成了更多的晶體管。集成電路設(shè)計正在不斷地向超大規(guī)模,極低功耗和超高速的方向發(fā)展,電子產(chǎn)品的功能越來越強(qiáng)大,體積越來越小,功耗越來越低。</p><p>  順應(yīng)電子技術(shù)的發(fā)展趨勢,可編

7、程邏輯器件和EDA 技術(shù)使設(shè)計方法發(fā)生了質(zhì)的變化。把以前“電路設(shè)計+硬件搭試+調(diào)試焊接”轉(zhuǎn)化為“功能設(shè)計+軟件模擬+仿真下載”。利用EDA 開發(fā)平臺,采用可編程邏輯器件CPLD/FPGA 使硬件的功能可通過編程來實(shí)現(xiàn),這種新的基于芯片的設(shè)計方法能夠使設(shè)計者有更多機(jī)會充分發(fā)揮創(chuàng)造性思維,實(shí)現(xiàn)多種復(fù)雜數(shù)字邏輯系統(tǒng)的功能,將原來由電路板設(shè)計完成的工作放到芯片的設(shè)計中進(jìn)行,減少了連線和體積,提高了集成度,降低了干擾,大大減輕了電路設(shè)計和PCB設(shè)

8、計的工作量和難度,增強(qiáng)了設(shè)計的靈活性,有效地提高了工作效率,增加了系統(tǒng)的可靠性和穩(wěn)定性,提高了技術(shù)指標(biāo)。</p><p>  這些技術(shù)使得各種電子產(chǎn)品迅速的進(jìn)入了我們的生活,我們處在一個被電子產(chǎn)品深度包圍的時代,在一個普通老百姓的家里,衣食住行,每一個產(chǎn)品的誕生都離不開EDA技術(shù),從彩色電視機(jī),到智能冰箱,到全自動洗衣機(jī),電飯煲,到微波爐,電磁爐,電子琴,再到個人隨身用的手機(jī),MP3音樂播放器都需要EDA技術(shù)提供

9、支持。</p><p>  本文應(yīng)用VHDL硬件描述語言,設(shè)計一個樂曲硬件播放電路,它能將預(yù)先設(shè)置存儲好的樂曲自動播放出來,下面對樂曲播放電路的設(shè)計與實(shí)現(xiàn)中涉及的EDA技術(shù),以及EDA技術(shù)中常用的開發(fā)器件CPLD/FPGA可編程邏輯器件,開發(fā)語言VHDL以及開發(fā)軟件MAX+PLUSII作簡單介紹。</p><p>  1.2 可編程邏輯控件FPGA</p><p>

10、  本設(shè)計中選用FPGA,主要是因?yàn)樗c傳統(tǒng)的MCU相比有以下幾個方面的優(yōu)點(diǎn):</p><p> ?、倬幊谭绞胶啽阆冗M(jìn)。FPGA產(chǎn)品中部分是采用菊花鏈在系統(tǒng)編程方式的。這種先進(jìn)的編程方式已成為當(dāng)今世界上各類可編程器件發(fā)展的趨勢。因?yàn)樗s了價格昂貴,操作不便的專用編程器,只需要一個十分簡單的下載編程電路和一條PC機(jī)的打印機(jī)通訊線就行了。它無須編程高壓,在TTL電平下隨時可進(jìn)行在線編程,并可進(jìn)行所謂菊花鏈?zhǔn)蕉嗥?/p>

11、編程。</p><p> ?、诟呖煽啃浴T诟呖煽繎?yīng)用領(lǐng)域,MCU的缺憾為FPGA的應(yīng)用留下了很大的用武之地。這族器件盡管在功能開發(fā)上是通過EDA軟件實(shí)現(xiàn)的。但物理機(jī)制卻像一片74LS164那樣純屬硬件電路,十分可靠。通過合理設(shè)計,大多數(shù)應(yīng)用中,無須考慮復(fù)雜的復(fù)位和初始化。設(shè)計中只需利用簡單的語句將閑置狀態(tài)導(dǎo)入同一初始入口,就能有效防止任何可能的“死機(jī)”現(xiàn)象。由于是并行工作,它的任一輸入腳都可用作類似于MCU的中斷

12、監(jiān)測引腳,且反應(yīng)速度僅為納妙級。FPGA的高可靠性還表現(xiàn)在幾乎可將整個系統(tǒng)下載于同一芯片中,從而大大縮小了體積,易于管理和屏蔽。</p><p> ?、鄹咚?。FPGA的時鐘延遲可達(dá)納秒級,結(jié)合其并行工作方式,在超高速應(yīng)用領(lǐng)域和實(shí)時測控方面有非常廣闊的應(yīng)用前景。</p><p> ?、芄δ軓?qiáng)大,應(yīng)用廣闊。目前,FPGA的可選擇范圍很大,可根據(jù)不同的應(yīng)用選用不同容量的芯片,如Lattice的i

13、spLSI和AMD公司的MACH,最小芯片的等效邏輯門為1000門,最大達(dá)數(shù)十萬門。ALTERA和XILINX公司推出的百萬門的FPGA可實(shí)現(xiàn)幾乎任何形式的數(shù)字電路或數(shù)字系統(tǒng)的設(shè)計。隨著這類器件的廣泛應(yīng)用和成本的大幅下降,以及產(chǎn)品上市速率的提高,FPGA在系統(tǒng)中的直接應(yīng)用率正直逼ASIC的開發(fā)。</p><p>  ⑤易學(xué)易用,開發(fā)便捷。單片機(jī)應(yīng)用系統(tǒng)的設(shè)計對于行家里手來說是十分簡單的事。然而,對于初學(xué)者,諸如C

14、PU的工作方式、眾多特殊寄存器的用法、中斷概念等等,著實(shí)不是一件容易的事。相比之下,FPGA應(yīng)用的學(xué)習(xí)卻不需要太多的預(yù)備知識,只要稍具一點(diǎn)數(shù)字電路和計算機(jī)軟件設(shè)計的基礎(chǔ)知識,就能在短期內(nèi)掌握基本的設(shè)計方法和開發(fā)技巧。而且反過來去學(xué)用單片機(jī),就顯得輕車熟路多了。這無疑是高技術(shù)為我們的學(xué)習(xí)提供了捷徑,站在巨人的肩膀當(dāng)然能更快地獲得成功??梢灶A(yù)言,我國EDA技術(shù)的學(xué)習(xí)熱潮和FPGA的應(yīng)用熱潮決不會遜色于過去10年的單片機(jī)熱潮。</p&g

15、t;<p>  ⑥開發(fā)周期短。由于相應(yīng)的EDA軟件功能完善而強(qiáng)大,仿真能力便捷而實(shí)時,開發(fā)過程形象而直觀,兼之硬件因素涉及甚少,因此可以在很短時間內(nèi)完成十分復(fù)雜的系統(tǒng)設(shè)計,這是產(chǎn)品快速進(jìn)入市場的最寶貴的特征。一些EDA專家預(yù)言,未來的大系統(tǒng)的FPGA設(shè)計僅僅是各類再應(yīng)用邏輯與IP核(CORE)的拼裝,其設(shè)計周期僅以小時計。TI公司認(rèn)為,一個ASIC百分之八十的功能可用IP核等現(xiàn)成邏輯合成。</p><p

16、>  1.3 開發(fā)語言VHDL</p><p>  VHDL是非常高速集成電路硬件描述語言,是可以描述硬件電路的功能、信號連接關(guān)系及定時關(guān)系的語言.它能比電路原理圖更有效地表示硬件電路的特性。使用VHDL語言,可以就系統(tǒng)的總體要求出發(fā),自上至下地將設(shè)計內(nèi)容細(xì)化,最后完成系統(tǒng)硬件的整體設(shè)計。VHDL語言的主要特點(diǎn)是:</p><p> ?、俟δ軓?qiáng)大,靈活性高:VHDL語言是一種功能強(qiáng)大

17、的語言結(jié)構(gòu),可用簡潔明確的代碼來進(jìn)行復(fù)雜控制邏輯的設(shè)計。同時VHDL語言還支持層次化的設(shè)計,支持設(shè)計庫和可重復(fù)使用的元件生成。目前,VHDL語言已成為一種設(shè)計、仿真、綜合的標(biāo)準(zhǔn)硬件描述語言。</p><p>  ②器件無關(guān)性:VHDL語言允許設(shè)計者在生成一個設(shè)計時不需要首先選擇一個具體的器件。對于同一個設(shè)計描述,可以采用多種不同器件結(jié)構(gòu)來實(shí)現(xiàn)其功能。因此設(shè)計描述階段,可以集中精力從事設(shè)計構(gòu)思。當(dāng)設(shè)計、仿真通過后,

18、指定具體的器件綜合、適配即可。</p><p> ?、劭梢浦残裕篤HDL語言是一種標(biāo)準(zhǔn)的語言,故采用VHDL進(jìn)行的設(shè)計可以被不同的EDA工具所支持。從一個仿真工具移植到另一個仿真工具,從一個綜合工具移植到另一個綜合工具,從一個工作平臺移植到另一個工作平臺。在一個EDA工具中采用的技術(shù)技巧,在其它工具中同樣可以采用。</p><p> ?、茏皂斚蛳碌脑O(shè)計方法:傳統(tǒng)的設(shè)計方法是,自底向上的設(shè)計

19、或平坦式設(shè)計。自底向上的設(shè)計方法是先從底層模塊設(shè)計開始,逐漸由各個模塊形成功能復(fù)雜的電路。這種設(shè)計方法優(yōu)點(diǎn)是很明顯的,因?yàn)樗且环N層次設(shè)計電路,一般電路的子模塊都是按照結(jié)構(gòu)或功能劃分,因此這種電路層次清楚,結(jié)構(gòu)明確,便于多人合作開發(fā),同時設(shè)計文件易于存檔,易于交流。自底向上設(shè)計方法的缺點(diǎn)也很明顯,往往由于整體設(shè)計思路不對而使的花費(fèi)幾個月的低層設(shè)計付之東流。平坦式設(shè)計是整個電路只含有一個模塊,電路的設(shè)計是平鋪直敘的,沒有結(jié)構(gòu)和功能上的劃分

20、,因此不是層次電路的設(shè)計方式。優(yōu)點(diǎn)是小型電路設(shè)計時可以節(jié)省時間和精力,但隨著電路復(fù)雜程度的增加,這種設(shè)計方式的缺點(diǎn)變的異常突出。自頂向下的設(shè)計方法是將要設(shè)計的電路進(jìn)行最頂層的描述(頂層建模),然后利用EDA軟件進(jìn)行頂層仿真,如果頂層設(shè)計的仿真結(jié)果滿足要求,則可以繼續(xù)將頂層劃分的模塊進(jìn)行低一級的劃分并仿真,這樣一級一級設(shè)計最終將完成整個電路的設(shè)計。自頂向下的設(shè)計方法與前面兩種方法相比優(yōu)點(diǎn)是很明顯的。</p><p>

21、;  ⑤數(shù)據(jù)類型豐富:作為硬件描述語言的一種VHDL語言的數(shù)據(jù)類型非常豐富,除了VHDL語言自身預(yù)定義的十種數(shù)據(jù)類型外,在VHDL語言程序設(shè)計中還可以由用戶自定義數(shù)據(jù)類型。特別是std_logic數(shù)據(jù)類型的使用,使得VHDL語言能最真實(shí)模擬電路中的復(fù)雜信號。</p><p> ?、捱\(yùn)行庫和程序包豐富:目前支持VHDL語言的程序包很豐富,大多以庫的形式存放在特定的目錄下,用戶可隨時調(diào)用。如IEEE庫收集了std_l

22、ogic_1164、std_logic_arith、std_logic_unsigned等程序包。在FPGA綜合時,還可以使用EDA軟件商提供的各種庫和程序包。而且用戶利用VHDL語言編寫的各種成果都可以以庫的形式存放,在后續(xù)的設(shè)計中可以繼續(xù)使用。</p><p>  ⑦建模方便:由于VHDL語言中可綜合的語句和用于仿真的語句齊備,行為描述能力強(qiáng),因此VHDL語言特別適合信號建模。VHDL語言無論仿真還是綜合都是

23、非常合適的描述語言。</p><p>  ⑧ VHDL語言是一種硬件電路的建模描述語言,因此與普通的計算機(jī)語言有較大差別,普通計算機(jī)語言是CPU按照時鐘的節(jié)拍,一條指令執(zhí)行完后才能執(zhí)行下一條指令,因此指令執(zhí)行是有先后順序的,也即是順序執(zhí)行,而每條指令的執(zhí)行占用特定的時間。而與VHDL語言描述結(jié)果相對應(yīng)的是硬件電路,它遵循硬件電路的特點(diǎn),語句的執(zhí)行沒有先后順序,是并發(fā)的執(zhí)行的;而且語句的執(zhí)行不象普通軟件那樣每條指令

24、占用一定的時間,只是遵循硬件電路自身的延遲時間。</p><p>  1.4 開發(fā)環(huán)境MAX+PLUSⅡ</p><p>  MAX+PLUSⅡ提供了全面的邏輯設(shè)計能力,包括電路圖、文本和波形的設(shè)計輸入以及編譯、邏輯綜合、仿真和定時分析以及器件編程等諸多功能。特別是在原理圖輸入等方面,MAX+PLUSⅡ被公認(rèn)為是最易使用、人機(jī)界面最友好的PLD 開發(fā)軟件。這樣靈活多變的輸入方式,給設(shè)計使用

25、者帶來了極大的方便。</p><p>  1.5 研究思路及主要工作</p><p>  本文按照EDA開發(fā)流程,采用VHDL硬件描述語言開發(fā),將樂曲硬件播放電路設(shè)計進(jìn)行模塊化分解,層次化設(shè)計,分成幾個單獨(dú)的結(jié)構(gòu)體,每個結(jié)構(gòu)體實(shí)現(xiàn)部分功能,最后,經(jīng)頂層文件將各單獨(dú)結(jié)構(gòu)體進(jìn)行綜合,實(shí)現(xiàn)樂曲硬件播放。</p><p>  主要工作:根據(jù)硬件播放電路的功能進(jìn)行全局分析,采

26、用自上至下的設(shè)計方法,從系統(tǒng)總體要求出發(fā),逐步將設(shè)計內(nèi)容細(xì)化,最后完成系統(tǒng)結(jié)構(gòu)的整體設(shè)計,實(shí)現(xiàn)預(yù)先設(shè)置樂曲的播放功能。</p><p>  實(shí)現(xiàn)功能樂曲播放,需要完成以下設(shè)計:</p><p> ?、伲A(yù)置樂曲,本文選取了《梁?!放c《歡樂頌》作預(yù)置,作預(yù)置時,需要將樂曲音符轉(zhuǎn)換成相應(yīng)的代碼,通過計算逐一將音符轉(zhuǎn)換成代碼,通過EDA開發(fā)平臺MAX+PLUSII進(jìn)行樂曲定制;</p>

27、;<p> ?、冢疄榱颂峁非l(fā)音所需要的發(fā)音頻率,編寫數(shù)控分頻器程序,對單一輸入高頻,進(jìn)行預(yù)置數(shù)分頻,生成每個音符發(fā)音的相應(yīng)頻率;</p><p>  ③.為了給分頻提供預(yù)置數(shù),需要計算分頻預(yù)置數(shù);</p><p> ?、埽畬γ坎糠纸Y(jié)構(gòu)單元逐一進(jìn)行編譯,生成相應(yīng)的元器件符號,并對獨(dú)立結(jié)構(gòu)單元功能進(jìn)行仿真;</p><p>  啟動MAX+PLUSII

28、全程編譯,生成具體輸入,輸出端口的圖形文件。啟動全程功能仿真,生成仿真波形文件。生成下載文件,在ZYE1502D實(shí)驗(yàn)開發(fā)板上利用Altera公司的FLXE10K—EPF10K10LC84—4芯片進(jìn)行功能驗(yàn)。</p><p><b>  系統(tǒng)設(shè)計</b></p><p><b>  2.1 系統(tǒng)原理</b></p><p>

29、  傳統(tǒng)數(shù)字邏輯設(shè)計方法相比,本設(shè)計借助于功能強(qiáng)大的EDA工具和硬件描述語言來完成,如果只以純硬件的方法完成樂曲播放電路的設(shè)計,將是難以實(shí)現(xiàn)的。本設(shè)計采用了《梁?!放c《歡樂頌》的曲子來完成。</p><p>  表2.1 簡譜中的音名與頻率的關(guān)系表</p><p>  為了便于理解,首先介紹一下硬件電路的發(fā)聲原理。我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來控制FPGA某個引

30、腳輸出一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出相應(yīng)頻率的聲音。而樂曲中的每一音符對應(yīng)著一個確定的頻率,因此,要想FPGA發(fā)出不用音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可(音符和頻率的關(guān)系見表2.1)。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個音符的音調(diào)。而要準(zhǔn)確地播放出一首樂曲,僅僅讓揚(yáng)聲器能夠發(fā)聲是不夠的,還必須準(zhǔn)確地控制樂曲的節(jié)奏,即每個音符的持續(xù)時間。由此可見,

31、樂曲中每個音符的發(fā)音頻率及其持續(xù)的時間是樂曲能夠連續(xù)播放的兩個關(guān)鍵因素。</p><p>  2.1.1 音調(diào)的控制</p><p>  頻率的高低決定了音調(diào)的高低。計算出簡譜中從低音1到高音1之間每個音名對應(yīng)的頻率,所有不同頻率的信號都是從同一個基準(zhǔn)頻率分頻得到的。由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),因此必須將計算得到的分頻數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則由于分頻比太小,四

32、舍五入取整后的誤差較大;若基準(zhǔn)頻率過高,雖然誤差較小,但分頻數(shù)將變大。實(shí)際的設(shè)計應(yīng)綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的基準(zhǔn)頻率。因此,要想FPGA發(fā)出不同音符的音調(diào),實(shí)際上只要控制它輸出相應(yīng)音符的頻率即可。綜合考慮各因素,本文中選取12MHZ作為CLK的分頻計數(shù)器的輸入分頻信號。樂曲都是由一連串的音符組成,因此按照樂曲的樂譜依次輸出這些音符所對應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個音符的音調(diào)。</p>

33、<p>  2.1.2 音長的控制</p><p>  音符的持續(xù)時間須根據(jù)樂曲的速度及每個音符的節(jié)拍數(shù)來確定。因此,在想控制音符的音長,就必須知道樂曲的速度和每個音符所對應(yīng)的節(jié)拍數(shù),在這個設(shè)計中所播放的樂曲的最短的音符為四分音符,如果將全音符的持續(xù)時間設(shè)為1s的話,那么一拍所應(yīng)該持續(xù)的時間為0.25秒,則只需要再提供一個4HZ的時鐘頻率即可產(chǎn)生四分音符的時長。要想讓系統(tǒng)知道現(xiàn)在應(yīng)該播放哪個音符,而

34、這個音符持續(xù)的時間應(yīng)該是多少,就必須編寫樂曲文件,在樂曲文件中音符是按地址存放的,當(dāng)系統(tǒng)工作時就按4Hz的頻率依次讀取簡譜,當(dāng)系統(tǒng)讀到某個音符的簡譜時就對應(yīng)發(fā)這個音符的音調(diào),持續(xù)時間為0.25秒,而如果在曲譜文件中這個音符為三拍音長,那又該如何控制呢?其實(shí)只要將該音符連續(xù)書寫三遍,這時系統(tǒng)讀樂曲文件的時候就會連續(xù)讀到三次,也就會發(fā)三個0.25秒的音長,這時我們聽上去就會持續(xù)了三拍的時間,通過這樣一個簡單的操作就可以控制音樂的音長了。&l

35、t;/p><p><b>  2.2 系統(tǒng)結(jié)構(gòu)</b></p><p>  本系統(tǒng)主要由三個功能模塊組成:NOTETABS.VHD,TONETABA.VHD和 SPEAKER.VHD。第一部分NOTETABS,地址發(fā)生器,實(shí)現(xiàn)按節(jié)拍讀樂譜的功能;第二部分TONETABA,查表電路,為SPEAKER提供分頻預(yù)置數(shù),實(shí)現(xiàn)樂曲譯碼輸出CODE[4:0];第三部分SPEAKERA

36、,產(chǎn)生發(fā)音頻率,實(shí)現(xiàn)樂曲播放;其結(jié)構(gòu)如圖2.1所示。</p><p>  圖2.1 樂曲播放電路結(jié)構(gòu)方框圖</p><p><b>  各模塊設(shè)計與仿真</b></p><p>  3.1 定制音符數(shù)據(jù)</p><p>  3.1.1定制音符數(shù)據(jù)ROM的mif文件</p><p>  為了實(shí)現(xiàn)樂曲

37、的播放,首先需要將曲譜定制到音符數(shù)據(jù)ROM里面,然后才能按照一定的節(jié)拍從ROM中讀出曲譜。以下定制的是《梁?!放c《歡樂頌》的mif 文件(《梁?!放c《歡樂頌》的簡譜見附錄E、F)。</p><p><b>  WIDTH=5;</b></p><p>  DEPTH=256;</p><p>  ADDRESS_RADIX=DEC;</p

38、><p>  DATA_RADIX=DEC;</p><p>  CONTENT BEGIN――注意:實(shí)用文件中是展開以下數(shù)據(jù)的,每一組占一行;</p><p>  00:3;01:3;02:3;03:3;04:5;05:5;06:5;07:6;08:8;09:8;10:8;11:9;12:6;</p><p>  13:8;14:5;15:5;

39、16:12;17:12;18:12;19:15;20:13;21:12;22:10;23:12;</p><p>  24:9;25:9;26:9;27:9;28:9;29:9;30:9;31:0;32:9;33:9;34:9;35:10;36:7;</p><p>  37:7;38:6;39:6;40:5;41:5;42:5;43:6;44:8;45:8;46:9;47:9;48:3;

40、49:3;</p><p>  50:8;51:8;52:6;53:5;54:6;55:8;56:5;57:5;58:5;59:5;60:5;61:5;62:5;</p><p>  63:5;64:10;65:10;66:10;67:12;68:7;69:7;70:9;71:9;72:6;73:8;74:5;</p><p>  75:5;76:5;77:5;78

41、:5;79:5;80:3;81:5;82:3;83:3;84:5;85:6;86:7;87:9;</p><p>  88:6;89:6;90:6;91:6;92:6;93:6;94:5;95:6;96:8;97:8;98:8;99:9;100:12</p><p>  101:12;102:12;103:10;104:9;105:9;106:10;107:9;108:8;109:8;11

42、0:6;</p><p>  111:5;112:3;113:3;114:3;115:3;116:8;117:8;118:8;119:8;120:6;121:8;</p><p>  122:6;123:5;124:3;125:5;126:6;127:8;128:5;129:5; 130:10;131:10;</p><p>  132:10;133:10;134:

43、11;135:11;136:12;137:12;138:12;139:12;140:11;</p><p>  141:11;142:10;143:10;144:9;145:9;146:8;147:8;148:8;149:8;150:9;</p><p>  151:9;152:10;153:10;154:10;155:10;156:10;157:9;158:9;159:9;160:9;&

44、lt;/p><p>  161:9;162:10;163:10;164:10;165:10;166:11;167:11;168:12;169:12;</p><p>  170:12;171:12;172:11;173:11;174:10;175:10;176:9;177:9;178:8;179:8;</p><p>  180:8;181:8;182:9;183:9;

45、184:10;185:10;186:9;187:9;188:9;189:8;190:8;</p><p>  191:8;192:8;193:8;194:9;195:9;196:9;197:9;198:10;199:10;200:8;201:8;</p><p>  202:9;203:9;204:10;205:11;206:10;207:10;208:8;209:8;210:9;211:

46、9;</p><p>  212:10;213:11;214:10;215:10;216:8;217:8;218:8;219:8;220:9;221:9;</p><p>  222:5;223:5;224:10;225:10;226:10;227:10;228:10;229:10;230:11;231:11;</p><p>  232:12;233:12;234

47、:12;235:12;236:11;237:11;238:10;239:10;240:9;241:9;</p><p>  242:8;243:8;244:8;245:8;246:9;247:9;248:10;249:10;250:9;251:9;252:9;</p><p>  253:8;254:8;255:8;</p><p><b>  END;&

48、lt;/b></p><p>  其中WIDTH=5,表示數(shù)據(jù)輸出位寬為5;DEPTH=256,表示共有256個5位數(shù)據(jù)點(diǎn);ADDRESS-RADIX=DEC,表示地址信號用十進(jìn)制;DATA-RADIX=DEC,表示輸出數(shù)據(jù)是十進(jìn)制數(shù)。</p><p>  形成ROM中的配置數(shù)據(jù)(初始化數(shù)據(jù))文件的方法如下:在MAX+PLUSⅡ中編輯.mif文件。首先在File菜單下的New菜單上選

49、擇Text Editor File命令,進(jìn)入文本編輯器,然后輸入以上格式的數(shù)據(jù)文件。文件中的關(guān)鍵詞WIDTH設(shè)置ROM的數(shù)據(jù)寬度;DEPTH設(shè)置ROM數(shù)據(jù)的深度,文件中設(shè)置的5即為5位數(shù)據(jù)的數(shù)量,256等效于8位地址線寬度;ADDRESS-RADIX=DEC和DATA-RADIX=DEC表示設(shè)置地址和數(shù)據(jù)的表達(dá)式格式都是十進(jìn)制;地址/數(shù)據(jù)表以CONTENT BEGIN開始,以END結(jié)束;其中的地址/數(shù)據(jù)表達(dá)方式是冒號左邊寫ROM地址值,

50、冒號右邊寫對應(yīng)此地址放置的十進(jìn)制數(shù)據(jù),如45:8,表示45為地址,8為該地址中的數(shù)據(jù)。這樣每讀到一個地址,即可輸出其相應(yīng)的數(shù)據(jù)。文件編輯好后,保存時取文件名為“songer.mif”,存盤的路徑為“c:\music \ songer.mif”。</p><p>  3.1.2在MAX+PLUSⅡ下定制的LPM_ROM</p><p><b>  1)具體步驟如下:</b&g

51、t;</p><p>  (1) 進(jìn)入MAX+PLUSⅡ,選菜單 TOOL->megawizard plug-in manager,選擇“creat a new…”,然后按“next”鍵,選擇LPM-ROM;最后在browse下的欄中鍵入路徑與輸出文件名:c:\music \ songer.vhd,注意后綴vhd小寫。</p><p>  (2) 單擊“next”

52、鍵,,選擇ROM數(shù)據(jù)位寬度為5,地址線寬為8,即設(shè)置此ROM能存儲5位二進(jìn)制數(shù)據(jù)共256個。</p><p>  (3) 通過“ browse” 鈕,找到ROM中的加載文件路徑和文件名:c:\music \ songer.mif注意ROM元件的inclock是地址鎖存時鐘。</p><p>  (4) 打開已定制的ROM文件songer.vhd,將它設(shè)置為工程,并確定目

53、標(biāo)器件,進(jìn)行測試仿真波形。</p><p>  2)定制好的ROM文件VHDL程序見附錄A。</p><p>  已定制的ROM文件songer.vhd的仿真波形如圖3.1所示:</p><p>  圖3.1 songer模塊仿真波形圖</p><p><b>  波形分析:</b></p><p&g

54、t;  此樂譜發(fā)生器模塊的功能是輸出存儲在LPM-ROM中的各個音符數(shù)據(jù),由上面的仿真波形圖可看到“梁祝”樂曲中的第一個音符為“3”即為“00011”此音在邏輯中停留了4個時鐘,那么相應(yīng)隨著程序中的地址計數(shù)器按4Hz的時鐘頻率作加法計數(shù)時,即隨地址遞增時,將從音符數(shù)據(jù)ROM中將連續(xù)取出4個音符“00011”,樂曲中的第二個音符為“5”即為“00101”此音在邏輯中停留了3個時鐘,相應(yīng)地,將從音符數(shù)據(jù)ROM中將連續(xù)取出3個音符“00101

55、”等其它狀態(tài)時,仿真波形圖證明了模塊的功能。</p><p>  3.2 音符數(shù)據(jù)地址發(fā)生器模塊NOTETABS</p><p>  1)功能:NOTETABS模塊設(shè)置了一個8位二進(jìn)制計數(shù)器(計數(shù)最大值為256),作為音符數(shù)據(jù)ROM的地址發(fā)生器。每來一個時鐘脈沖信號(Clk),8位二進(jìn)制計數(shù)器就計數(shù)一次,ROM文件中的地址也就隨著遞增,音符數(shù)據(jù)ROM中的音符也就一個接一個連續(xù)的取出來了。&

56、lt;/p><p>  在地址發(fā)生器的VHDL設(shè)計中,這個計數(shù)器的計數(shù)頻率選為4Hz,即每一計數(shù)值的停留時間為0.25秒,恰為當(dāng)全音符設(shè)為1秒,四四拍的4分音符持續(xù)時間。例如,地址發(fā)生器在以下的VHDL邏輯描述中,“梁?!睒非牡谝粋€音符為“3”,此音在邏輯中停留了4個時鐘節(jié)拍,即1秒時間。那么相應(yīng)隨著程序[1]中的計數(shù)器按4Hz的時鐘頻率作加法計數(shù)時,即隨地址遞增時,將從音符數(shù)據(jù)ROM中將連續(xù)取出4個音符“3”通過

57、toneindex[4..0]端口輸向分頻預(yù)置數(shù)模塊。這樣梁祝樂曲中的音符就一個接一個的通過toneindex[4..0]端口輸向分頻預(yù)置數(shù)模塊。</p><p>  音符數(shù)據(jù)地址發(fā)生器模塊NOTETABS生成元件符號(見圖3.2):</p><p>  圖3.2 NOTETABS生成元件符號</p><p><b>  端口說明:</b>&l

58、t;/p><p>  CLK 4HZ端口:作為節(jié)拍脈沖信號輸入端口;</p><p>  RST端口:作為從頭開始播放歌曲脈沖信號輸入端口;</p><p>  SEL端口:作為播放第二首歌脈沖信號輸入端口; </p><p>  TONEINDE[4..0]端口:作為音符數(shù)據(jù)地址的輸出端口;</p><p> 

59、 對應(yīng)的程序見附錄B。</p><p>  音符數(shù)據(jù)地址發(fā)生器模塊NOTETABS的仿真波形如(圖3.3)所示:</p><p>  圖3.3 NOTETABS的仿真波形圖</p><p>  3.3 預(yù)置數(shù)查表電路模塊TONETABA</p><p>  1)功能:音樂預(yù)置數(shù)查表電路電路模塊是樂曲簡譜碼對應(yīng)的分頻預(yù)置數(shù)查表電路。它提供了每個

60、音符所對應(yīng)的分頻預(yù)置數(shù),即給數(shù)控分頻模塊提供計數(shù)初值,這里列出了在樂曲中所用到的22個音符的分頻預(yù)置數(shù)見(表3.1)。</p><p>  在這個模塊的VHDL邏輯描述中設(shè)置了四四拍樂曲中全部音符所對應(yīng)的分頻預(yù)置數(shù),共22個,每一音符的停留時間由音樂節(jié)拍和地址發(fā)生器模塊的時鐘(Clk)的輸入頻率決定,在此為4Hz。這22個值的輸出由附錄三的程序的4位輸入值index[4..0]確定。輸向附錄四的程序中index[

61、4..0]的值又由地址發(fā)生器模塊的輸出toneindex[4..0]的輸出值和持續(xù)時間決定。</p><p>  表3.1 各音階對應(yīng)的分頻預(yù)置數(shù)關(guān)系表</p><p>  預(yù)置數(shù)查表電路電路模塊TONETABA生成元件符號(見圖3.4):</p><p>  圖3.4 TONETABA生成元件符號</p><p><b>  端口

62、說明:</b></p><p>  INDEX[4..0]端口:作為上一級音符數(shù)據(jù)地址的輸入端;</p><p>  CODE[4..0]端口:作為音符數(shù)據(jù)簡譜碼的輸出顯示端;</p><p>  HIGH端口:作為音符數(shù)據(jù)簡譜碼高8度的輸出顯示端; </p><p>  TONE[10..0]端口:作為音符數(shù)據(jù)分頻預(yù)置數(shù)的輸出端

63、;</p><p>  對應(yīng)的程序見附錄C。</p><p>  音符數(shù)據(jù)地址發(fā)生器模塊NOTETABA的仿真波形如(圖3.5)所示:</p><p>  圖3.5 NOTETABA的仿真波形圖</p><p><b>  波形分析:</b></p><p>  模塊的功能是輸出各個音符所對應(yīng)的分

64、頻預(yù)置數(shù),即當(dāng)index是“00000”,tone輸出為2047,即休止符的分頻預(yù)置數(shù);當(dāng)index是“00101”時, tone輸出為1197即低音5的分頻預(yù)置數(shù);當(dāng)index是“01010”時, tone輸出為1542即高音1的分頻預(yù)置數(shù)等等其它狀態(tài)時,tone分別輸出相應(yīng)音符的13分頻預(yù)置數(shù),仿真波形圖證明了程序?qū)崿F(xiàn)了模塊的功能。</p><p>  3.4 發(fā)聲頻率產(chǎn)生模塊SPEAKERA</p&g

65、t;<p>  1)音符的頻率由數(shù)控分頻模塊獲得,這是一個數(shù)控分頻電路。它是由一個初值可變的加法計數(shù)器構(gòu)成。該計數(shù)器的模為2047,當(dāng)計數(shù)器記滿時,計數(shù)器產(chǎn)生一個溢出信號FULL,此溢出信號就是用作發(fā)音的頻率信號。在計數(shù)器的輸入端給定不同的初值,而此預(yù)置數(shù)就是表3.1中的計數(shù)初值,就可得到不同音符的發(fā)音頻率信號。它計滿時所需要的計數(shù)初值、分頻系數(shù)可由下列式子來表示。</p><p>  計數(shù)初值(T

66、one)=2047-分頻系數(shù)</p><p>  分頻系數(shù)=基準(zhǔn)頻率/音符的發(fā)生頻率</p><p>  低音時Tone值小,分頻系數(shù)大,溢出信號周期長,揚(yáng)聲器發(fā)出的聲音低,Tone隨音樂的樂譜變化大,自動控制分頻比,實(shí)現(xiàn)了數(shù)控分頻,發(fā)生信號的頻率與音調(diào)Tone成正比。這就是利用數(shù)控分頻器自動播放音樂的原理。</p><p>  時鐘(Clk)端輸入的是在十六進(jìn)制模

67、塊里對12MHz的信號進(jìn)行16分頻得到的750KHz,750KHz的信號根據(jù)分頻預(yù)置數(shù)模塊中所提供的計數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。此時從數(shù)控分頻器中出來的輸出信號是脈寬極窄的脈沖式信號,為了有利于驅(qū)動揚(yáng)聲器,需另加一個D觸發(fā)器以均衡其占空比,這時的頻率就變?yōu)樵瓉淼?/2,剛好就是相應(yīng)音符的頻率。數(shù)控分頻模塊中對Clk輸入信號的分頻比由11位預(yù)置數(shù)tone[10..0]決定。SPKOUT的輸出頻率將決定每一個音符的音調(diào),這樣,分

68、頻計數(shù)器的預(yù)置值tone[10..0]與SPKOUT的輸出頻率就有了對應(yīng)關(guān)系。</p><p>  發(fā)聲頻率產(chǎn)生模塊SPEAKERA生成元件符號(見圖3.6):</p><p>  圖3.6 SPEAKERA生成元件符號</p><p><b>  端口說明:</b></p><p>  CLK12MHZ端口:作為發(fā)音頻

69、率初始信號輸入端口;</p><p>  TONE[10..0]端口:作為音符數(shù)據(jù)分頻預(yù)置數(shù)的輸入端;</p><p>  SPKS端口:作為樂曲的聲音輸出端口; 圖3.6 SPEAKERA生成元件符號</p><p>  對應(yīng)的程序見附錄D。</p><p>  發(fā)聲頻率產(chǎn)生模塊SPEAKERA的仿真波形如(圖3.

70、7)所示:</p><p>  圖3.7 SPEAKERA的仿真波形圖</p><p><b>  波形分析:</b></p><p>  Speakera 音樂符數(shù)控分頻此模塊的功能是根據(jù)初始值Tone的值,對輸入時鐘信號Clk的頻率進(jìn)行分頻,得到想要的音符的發(fā)聲頻率其時鐘(Clk)端輸入的是在十六進(jìn)制模塊里對12MHz的信號進(jìn)行16分頻得到

71、的750KHz,750KHz的信號根據(jù)分頻預(yù)置數(shù)模塊中所提供的計數(shù)初值,分別得出相應(yīng)音符頻率的兩倍值。在分頻預(yù)置數(shù)模塊中若取 tone[10..0]=912,將發(fā)出音符為低音2的信號頻率的發(fā)聲頻率等等其它狀態(tài),因此這個程序?qū)崿F(xiàn)了模塊的功能。</p><p>  3.5樂曲播放電路頂層電路</p><p>  根據(jù)各個模塊產(chǎn)生的元件符號,連接組成樂曲播放電路頂層文件,其頂層電路分為三個模塊,

72、音符數(shù)據(jù)地址發(fā)生器模塊NOTETABS,預(yù)置數(shù)查表電路電路模塊TONETABA,發(fā)聲頻率產(chǎn)生模塊SPEAKERA,圖3.8所示的是頂層電路組成圖。</p><p>  圖3.8 頂層電路組成圖</p><p><b>  硬件測試</b></p><p>  本設(shè)計目標(biāo)器件選用ZYE1502D實(shí)驗(yàn)開發(fā)板上利用Altera公司的FLXE10K—E

73、PF10K10LC84—4芯片進(jìn)行功能驗(yàn)證(引腳鎖定的對應(yīng)關(guān)系如表4.1所示),通過EDA開發(fā)工具M(jìn)AX+PLUSII對各個模塊的VHDL源程序及頂層電路進(jìn)行編譯、邏輯綜合,完成電路的糾錯、驗(yàn)證、仿真等各種測試工作,將設(shè)計的頂層電路組成圖music.gdf文件內(nèi)容下載到對應(yīng)的配置芯片中,外接揚(yáng)聲器,系統(tǒng)成功實(shí)現(xiàn)了樂曲《梁?!放c《歡樂頌》的播放,能自動從頭開始循環(huán)播放,也可隨時起停、整體復(fù)位、按鍵選擇播放方式、循環(huán)演奏以及發(fā)光管二極管動態(tài)

74、顯示播放的音符和高8度音調(diào)。經(jīng)實(shí)際電路測試驗(yàn)證,達(dá)到了設(shè)計的要求。</p><p>  表4.1 實(shí)驗(yàn)箱主板與下載板元件的連接封裝關(guān)系表</p><p><b>  心得體會</b></p><p>  (1) 本次基于VHDL音樂播放器的設(shè)計經(jīng)過了整體分析、模塊化分析、整體與模塊的仿真分析這樣三個步驟,硬件實(shí)現(xiàn)了整體復(fù)位、按鍵選擇播放方式、循

75、環(huán)演奏以及發(fā)光管顯示樂譜的功能。</p><p>  (2) 在做數(shù)控分頻器模塊的仿真時一定要處理好時序問題。</p><p>  (3) 本次設(shè)計可以說達(dá)到了設(shè)計要求,但尚有需要改進(jìn)的地方。隨著樂譜的復(fù)雜程度加大,如果依然在音調(diào)發(fā)生器的程序中通過時鐘計數(shù)來決定音符的輸出,會加大編程的繁雜度,這時一個很好的解決辦法就是把將要演奏的樂譜存放在人為開辟的存儲空間里,這樣只需要在相應(yīng)地址中讀出音

76、符即可。</p><p>  (4)通過本次論文設(shè)計,讓我進(jìn)一步了解了數(shù)控分頻器的工作原理和功能作用,并學(xué)會了利用LPM模塊制作ROM文件的方法,也更深一層地懂得了頂層文件通過例化語句與其他模塊結(jié)合的好處,同時對EDA實(shí)驗(yàn)箱的操作有了進(jìn)一步的了解,熟悉掌握了EDA的文本編程設(shè)計方法和仿真波形的編輯。</p><p><b>  參考文獻(xiàn)</b></p>

77、<p>  [1]李國洪,沈明山,胡輝編.可編程器件EDA技術(shù)與實(shí)踐.機(jī)械工業(yè)出版社,2005.8.1.</p><p>  [2]潘松,黃繼業(yè)編著,EDA技術(shù)實(shí)用教程.科學(xué)出版社,2007.12.</p><p>  [3]徐志軍,徐光輝,CPLD/FPGA的開發(fā)與應(yīng)用,電子工業(yè)出版社,2001</p><p>  [4]譚會生,EDA技術(shù)基礎(chǔ),湖南大學(xué)

78、出版社,2004</p><p>  [5]李巖,黃夫海,基于FPGA的MIDI音樂發(fā)生器設(shè)計,2010</p><p>  [6]潘曉利,陳學(xué)煌,劉永志,基于MIDI模塊的音樂發(fā)生器設(shè)計【期刊論文】電子測量技術(shù),2007</p><p>  [7]沈明山.EDA技術(shù)及可編程器件應(yīng)用實(shí)訓(xùn),科學(xué)出版社,2004.6(4):318-326.</p><

79、;p>  [8]劉婷婷,李軍.電子設(shè)計自動化(EDA).北京師范大學(xué)出版社,2007,9(2):250-257.</p><p>  [9]趙明富,李立軍.EDA技術(shù)基礎(chǔ),北京大學(xué)出版社,2007.5(5):221-224.</p><p>  [10]刑建平,曾繁泰.VHDL程序設(shè)計教程.3版.北京:清華大學(xué)出版社,2005:45-46.</p><p> 

80、 [11]李洋,EDA技術(shù).2版.機(jī)械工業(yè)出版社,2009.</p><p><b>  附錄</b></p><p>  附錄A: 定制好的ROM文件VHDL程序</p><p>  LIBRARY ieee;</p><p>  USE ieee.std_logic_1164.all;</p><

81、p>  ENTITY songer IS</p><p>  PORT(address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  inclock: IN STD_LOGIC ;</p><p>  q: OUT STD_LOGIC_VECTOR (4 DOWNTO 0));</p><p

82、>  END songer;</p><p>  ARCHITECTURE SYN OF songer IS</p><p>  SIGNAL sub_wire0: STD_LOGIC_VECTOR (4 DOWNTO 0);</p><p>  COMPONENT lpm_rom</p><p><b>  GENERIC

83、 (</b></p><p>  lpm_width: NATURAL;</p><p>  lpm_widthad: NATURAL;</p><p>  lpm_address_control: STRING;</p><p>  lpm_outdata: STRING;</p><p>

84、;  lpm_file: STRING</p><p><b>  );</b></p><p>  PORT (address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  inclock: IN STD_LOGIC ;</p><p>  q: OUT STD_

85、LOGIC_VECTOR (4 DOWNTO 0));</p><p>  END COMPONENT;</p><p><b>  BEGIN</b></p><p>  q <= sub_wire0(4 DOWNTO 0);</p><p>  lpm_rom_component : lpm_rom<

86、;/p><p>  GENERIC MAP (</p><p>  LPM_WIDTH => 5,</p><p>  LPM_WIDTHAD => 8,</p><p>  LPM_ADDRESS_CONTROL => "REGISTERED",</p><p>  LPM_OUTD

87、ATA => "UNREGISTERED",</p><p>  LPM_FILE => "C:/music/songer.mif")</p><p>  PORT MAP (address => address,inclock => inclock,q => sub_wire0);</p><

88、p><b>  END SYN;</b></p><p>  附錄B: 音符數(shù)據(jù)地址發(fā)生器模塊NOTETABS程序</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED

89、.ALL;</p><p>  ENTITY NoteTabs IS</p><p>  PORT ( clk : IN STD_LOGIC;</p><p>  SEL : IN STD_LOGIC;</p><p>  RST : IN STD_LOGIC;</p><p>  ToneIndex

90、: OUT STD_LOGIC_VECTOR (4 DOWNTO 0) );</p><p><b>  END;</b></p><p>  ARCHITECTURE one OF NoteTabs IS</p><p>  COMPONENT songer </p><p>  PORT( addr

91、ess : IN STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  inclock : IN STD_LOGIC ;</p><p>  q : OUT STD_LOGIC_VECTOR (4 DOWNTO 0));</p><p>  END COMPONENT;</p><p>  SIGNAL Count

92、er : STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p>  SIGNAL S:STD_LOGIC_VECTOR (1 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  S(1)<=rst; S(0)<=sel;</p><p>  CNT

93、8 : PROCESS(clk, Counter,sel,rst)</p><p>  VARIABLE Coun : STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  IF (clk'EVENT AND clk = '1') then&l

94、t;/p><p><b>  CASE S IS</b></p><p>  WHEN "01"=>Coun:="00000000";Coun:=Coun+1;</p><p>  WHEN "10"=>Coun:="10000010";Coun:=Coun

95、+1; </p><p>  WHEN "11"=> Coun:=Coun+1;</p><p>  WHEN OTHERS=>NULL; </p><p><b>  END CASE;</b></p><p><b>  END IF;</b>

96、</p><p>  Counter<=Coun;</p><p>  END PROCESS;</p><p>  u1 : songer PORT MAP(address=>Counter , q=>ToneIndex,inclock=>clk);</p><p><b>  END;</b>

97、</p><p>  附錄C: 預(yù)置數(shù)查表電路模塊TONETABA程序</p><p>  Library ieee;</p><p>  Use ieee.std_logic_1164.all;</p><p>  Entity tonetaba is</p><p>  Port( index : in std_l

98、ogic_vector(4 downto 0);</p><p>  code : out std_logic_vector(4 downto 0);</p><p>  high : out std_logic;</p><p>  tone : out std_logic_vector(10 downto 0));</p><p><

99、;b>  End;</b></p><p>  Architecture one of tonetaba is</p><p><b>  Begin</b></p><p>  Search : process(index)</p><p><b>  Begin</b><

100、/p><p>  Case index is</p><p>  When "00000"=>tone<="11111111111";code<="00000";high<='0';</p><p>  When "00001"=>tone<

101、;="01100000101";code<="00001";high<='0';</p><p>  When "00010"=>tone<="01110010000";code<="00010";high<='0';</p><

102、;p>  When "00011"=>tone<="10000001100";code<="00011";high<='0';</p><p>  When "00100"=>tone<="10000110101";code<="00100&

103、quot;;high<='0';</p><p>  When "00101"=>tone<="10010101101";code<="00101";high<='0';</p><p>  When "00110"=>tone<=&qu

104、ot;10100001010";code<="00110";high<='0';</p><p>  When "00111"=>tone<="10101011100";code<="00111";high<='0';</p><p>

105、;  When "01000"=>tone<="10110000010";code<="01000";high<='1';</p><p>  When "01001"=>tone<="10111001000";code<="01001"

106、;high<='1';</p><p>  When "01010"=>tone<="11000000110";code<="01010";high<='1';</p><p>  When "01011"=>tone<="11

107、000101000";code<="01011";high<='1';</p><p>  When "01100"=>tone<="11001010110";code<="01100";high<='1';</p><p>  Wh

108、en "01101"=>tone<="11010000100";code<="01101";high<='1';</p><p>  When "01110"=>tone<="11010110101";code<="01110";high

109、<='1';</p><p>  When "01111"=>tone<="11011000000";code<="10001";high<='1';</p><p>  When "10000"=>tone<="1101110

110、1010";code<="10010";high<='1';</p><p>  When "10001"=>tone<="11100000111";code<="10011";high<='1';</p><p>  When &q

111、uot;10010"=>tone<="11100010110";code<="10100";high<='1';</p><p>  When "10011"=>tone<="11100101111";code<="10101";high<=

112、'1';</p><p>  When "10100"=>tone<="11101000110";code<="10110";high<='1';</p><p>  When "10101"=>tone<="11101011010&

113、quot;;code<="10111";high<='1';</p><p>  When others => null;</p><p><b>  End case;</b></p><p>  End process;</p><p><b>  En

114、d;</b></p><p>  附錄D: 發(fā)聲頻率產(chǎn)生模塊SPEAKRA程序</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>

115、  ENTITY Speakera IS</p><p>  PORT ( clk : IN STD_LOGIC;</p><p>  Tone : IN STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p>  SpkS : OUT STD_LOGIC );</p><p><b>  END;</

116、b></p><p>  ARCHITECTURE one OF Speakera IS</p><p>  SIGNAL PreCLK, FullSpkS : STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  DivideCLK : PROCESS(clk)</p&g

117、t;<p>  VARIABLE Count4 : STD_LOGIC_VECTOR (3 DOWNTO 0) ;</p><p><b>  BEGIN</b></p><p>  PreCLK <= '0';</p><p>  IF Count4>11 THEN PreCLK <= '

118、;1'; Count4 := "0000";</p><p>  ELSIF clk'EVENT AND clk = '1' THEN Count4 := Count4 + 1;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p>

119、;<p>  GenSpkS : PROCESS(PreCLK, Tone)</p><p>  VARIABLE Count11 : STD_LOGIC_VECTOR (10 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  IF PreCLK'EVENT AND PreCLK =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論