版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、1 引言vhdl語言是一種用于電路設(shè)計(jì)的高級(jí)語言。它在80年代的后期出現(xiàn)。最初是由美國(guó)國(guó)防部開發(fā)出來供美軍用來提高設(shè)計(jì)的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計(jì)語言 。隨著eda技術(shù)的高速發(fā)展,電子系統(tǒng)的設(shè)計(jì)技術(shù)和工具發(fā)生了深刻的變化,大規(guī)??删幊踢壿嬈骷pldfpga的出現(xiàn),給設(shè)計(jì)人員帶來了諸多方便。利用它進(jìn)行產(chǎn)品開發(fā),不僅成本低、周期短、可靠性高,而且具有完全的知識(shí)產(chǎn)權(quán)。突出了其作為硬件描述語言的良好的可讀性、可移植性和易讀性等優(yōu)點(diǎn)。本文基于fpga開發(fā)系統(tǒng),在quartusii 7.2軟件平臺(tái)上,完成了簡(jiǎn)易多功能信號(hào)發(fā)生器電路的設(shè)計(jì)和與仿真,并下載到試驗(yàn)箱進(jìn)行硬件實(shí)現(xiàn)。首先,本文介
2、紹了quartusii 7.2軟件的基本使用方法和vhdl硬件描述語言的特點(diǎn),采用vhdl 硬件描述語言描述簡(jiǎn)易信號(hào)發(fā)生器,完成對(duì)電路的功能仿真。在設(shè)計(jì)過程中,重點(diǎn)探討了簡(jiǎn)易信號(hào)發(fā)生器設(shè)計(jì)思路和功能模塊劃分。然后,初步探討了電路邏輯綜合的原理,該軟件對(duì)簡(jiǎn)易多功能信號(hào)發(fā)生器電路進(jìn)行了邏輯綜合。最后,使用eda實(shí)驗(yàn)開發(fā)系統(tǒng)進(jìn)行電路的下載和驗(yàn)證。驗(yàn)證結(jié)果表明設(shè)計(jì)的簡(jiǎn)易簡(jiǎn)易信號(hào)發(fā)生器完成了預(yù)期的功能。簡(jiǎn)易多功能信號(hào)發(fā)生器是信號(hào)發(fā)生器的一種,在生產(chǎn)實(shí)踐和科研領(lǐng)域中有著廣泛的應(yīng)用。在研制、生產(chǎn)、測(cè)試和維修各種電子元件、部件以及整機(jī)設(shè)備時(shí),都需要有信號(hào)源,由它產(chǎn)生不同頻率不同波形的電壓、電流信號(hào)并加到被測(cè)器
3、件或設(shè)備上,用其他儀器觀察、測(cè)量被測(cè)儀器的輸出響應(yīng),以分析確定它們的性能參數(shù)。信號(hào)發(fā)生器是電子測(cè)量領(lǐng)域中最基本、應(yīng)用最廣泛的一類電子儀器。它可以產(chǎn)生多種波形信號(hào),如正弦波,三角波,方波和鋸齒波等,因而廣泛用于通信、雷達(dá)、導(dǎo)航、宇航等領(lǐng)域。本設(shè)計(jì)是采用vhdl來實(shí)現(xiàn)的簡(jiǎn)易樂曲演奏器。它能實(shí)現(xiàn)自動(dòng)演奏已存歌曲和手動(dòng)演奏簡(jiǎn)易樂曲。且要求實(shí)現(xiàn)如下功能:(1)通過按鍵輸入來控制音響聲音 ;(2)演奏時(shí)可以通過按鍵選擇是手動(dòng)演奏還是自動(dòng)演奏,手動(dòng)演奏是通過按鍵進(jìn)行簡(jiǎn)易樂曲的演奏,自動(dòng)演奏則是演奏已存入的固定樂曲;(3)至少保存一首自動(dòng)演奏的樂曲,且自動(dòng)演奏的樂曲能重復(fù)播放;(4)進(jìn)行手動(dòng)演奏和自動(dòng)演奏時(shí),
4、數(shù)碼管上要同時(shí)能顯示演奏樂曲的樂譜;(5)擴(kuò)展功能(選作)自動(dòng)播放時(shí),設(shè)置低速,中速,快速控制鍵,能實(shí)現(xiàn)樂曲不同速度的播放。2 vhdl及quartusii軟件簡(jiǎn)介2.1 eda簡(jiǎn)介eda是電子設(shè)計(jì)自動(dòng)化(electronic design automation)的縮寫,在20世紀(jì)60年代中期從計(jì)算機(jī)輔助設(shè)計(jì)(cad)、計(jì)算機(jī)輔助制造(cam)、計(jì)算機(jī)輔助測(cè)試(cat)和計(jì)算機(jī)輔助工程(cae)的概念發(fā)展而來的。eda技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在eda軟件平臺(tái)上,用硬件描述語言hdl完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片
5、的適配編譯、邏輯映射和編程下載等工作。eda技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。 利用eda工具,電子設(shè)計(jì)師可以從概念、算法、協(xié)議等開始設(shè)計(jì)電子系統(tǒng),大量工作可以通過計(jì)算機(jī)完成,并可以將電子產(chǎn)品從電路設(shè)計(jì)、性能分析到設(shè)計(jì)出ic版圖或pcb版圖的整個(gè)過程的計(jì)算機(jī)上自動(dòng)處理完成?,F(xiàn)在對(duì)eda的概念或范疇用得很寬。包括在機(jī)械、電子、通信、航空航天、化工、礦產(chǎn)、生物等各個(gè)領(lǐng)域,都有eda的應(yīng)用。2.2 硬件描述語言vhdl硬件描述語言(hdl)是一種用于設(shè)計(jì)硬件電子系統(tǒng)的計(jì)算機(jī)語言,它用軟件編程的方式來描述電子系統(tǒng)的邏輯功能、電路結(jié)構(gòu)和連接形式,與傳統(tǒng)的門級(jí)描述方
6、式相比,它更適合大規(guī)模系統(tǒng)的設(shè)計(jì)。例如一個(gè)32位的加法器,利用圖形輸入軟件需要輸人500至1000個(gè)門,而利用vhdl語言只需要書寫一行“a=b+c” 即可。而且 vhdl語言可讀性強(qiáng),易于修改和發(fā)現(xiàn)錯(cuò)誤。早期的硬件描述語言,如abel、hdl、ahdl,由不同的eda廠商開發(fā),互不兼容,而且不支持多層次設(shè)計(jì),層次間翻譯工作要由人工完成。為了克服以上不足,1985年美國(guó)國(guó)防部正式推出了高速集成電路硬件描述語言vhdl,1987年ieee采納vhdl為硬件描述語言標(biāo)準(zhǔn)(ieee-std-1076)。vhdl是一種全方位的硬件描述語言,包括系統(tǒng)行為級(jí)。寄存器傳輸級(jí)和邏輯門多個(gè)設(shè)計(jì)層次,支持結(jié)構(gòu)、數(shù)
7、據(jù)流和行為三種描述形式的混合描述,因此vhdl幾乎覆蓋了以往各種硬件俄語言的功能,整個(gè)自頂向下或由下向上的電路設(shè)計(jì)過程都可以用vhdl來完成。vhdl還具有以下優(yōu)點(diǎn):(1)vhdl的寬范圍描述能力使它成為高層進(jìn)設(shè)計(jì)的核心,將設(shè)計(jì)人員的工作重心提高到了系統(tǒng)功能的實(shí)現(xiàn)與調(diào)試,而花較少的精力于物理實(shí)現(xiàn)。(2)vhdl可以用簡(jiǎn)潔明確的代碼描述來進(jìn)行復(fù)雜控制邏輯設(shè)計(jì),靈活且方便,而且也便于設(shè)計(jì)結(jié)果的交流、保存和重用。(3)vhdl的設(shè)計(jì)不依賴于特定的器件,方便了工藝的轉(zhuǎn)換。(4)vhdl是一個(gè)標(biāo)準(zhǔn)語言,為眾多的eda廠商支持,因此移植性好。美國(guó)于1981年提出了一種新的、標(biāo)準(zhǔn)化的hdl,稱之為vhsic
8、(very high speed integrated circuit) hardware description language,簡(jiǎn)稱vhdl。這是一種用形式化方法來描述數(shù)字電路和設(shè)計(jì)數(shù)字邏輯系統(tǒng)的語言。設(shè)計(jì)者可以利用這種語言來描述自己的設(shè)計(jì)思想,然后利用電子設(shè)計(jì)自動(dòng)化工具進(jìn)行仿真,再自動(dòng)綜合到門電路,最后用pld實(shí)現(xiàn)其功能。2.3軟件介紹quartus ii 是altera公司的綜合性pld開發(fā)軟件,支持原理圖、vhdl、veriloghdl以及ahdl(altera hardware description language)等多種設(shè)計(jì)輸入形式,內(nèi)嵌自有的綜合器以及仿真器,可以完成從設(shè)
9、計(jì)輸入到硬件配置的完整pld設(shè)計(jì)流程。 quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl腳本完成設(shè)計(jì)流程外,提供了完善的用戶圖形界面設(shè)計(jì)方式。具有運(yùn)行速度快,界面統(tǒng)一,功能集中,易學(xué)易用等特點(diǎn)。 quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模塊庫,使用戶可以充分利用成熟的模塊,簡(jiǎn)化了設(shè)計(jì)的復(fù)雜性、加快了設(shè)計(jì)速度。對(duì)第三方eda工具的良好支持也使用戶可以在設(shè)計(jì)流程的各個(gè)階段使用熟悉的第三方eda工具。 此外,quartus ii 通過和dsp builder工具與matlab/simulink相結(jié)合,可以方便地實(shí)現(xiàn)各種
10、dsp應(yīng)用系統(tǒng);支持altera的片上可編程系統(tǒng)(sopc)開發(fā),集系統(tǒng)級(jí)設(shè)計(jì)、嵌入式軟件開發(fā)、可編程邏輯設(shè)計(jì)于一體,是一種綜合性的開發(fā)平臺(tái)。 maxplus ii 作為altera的上一代pld設(shè)計(jì)軟件,由于其出色的易用性而得到了廣泛的應(yīng)用。altera在quartus ii 中包含了許多諸如signaltap ii、chip editor和rtl viewer的設(shè)計(jì)輔助工具,集成了sopc和hardcopy設(shè)計(jì)流程,并且繼承了maxplus ii 友好的圖形界面及簡(jiǎn)便的使用方法。 altera quartus ii 作為一種可編程邏輯的設(shè)計(jì)環(huán)境, 由于其強(qiáng)大的設(shè)計(jì)能力和直觀易用的接口,越來
11、越受到數(shù)字系統(tǒng)設(shè)計(jì)者的歡迎。3 簡(jiǎn)易樂曲演奏器設(shè)計(jì)及仿真3.1原理描述3.1.1音名與頻率的關(guān)系樂譜中從低音1到高音1之間每個(gè)音名的頻率如表3-1所示:表3-1 簡(jiǎn)譜中的音名與頻率的關(guān)系音名頻率(hz)音名頻率(hz)音名頻率(hz)低音1261中音1523高音11046低音2294中音2578高音21175低音3330中音3659高音31318低音4349中音4698高音41397低音5392中音5784高音51568低音6440中音6880高音61760低音7440中音7988高音719763.1.2可變分頻器1. 基準(zhǔn)頻率的選取各音名所對(duì)應(yīng)的頻率可由一頻率較高的基準(zhǔn)頻率進(jìn)行整數(shù)分頻得到,
12、所以實(shí)際產(chǎn)生各音名頻率為近似的整數(shù)值。這是由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將得到的分頻系數(shù)四舍五入取整,若基準(zhǔn)頻率過低,則由于分頻系數(shù)過小,四舍五入取整后的誤差較大,若基準(zhǔn)頻率過高,雖然誤碼差較小,但分頻結(jié)構(gòu)將變大,實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的因素,在盡量減小頻率差的前提下取舍合適的基準(zhǔn)頻率。本次設(shè)計(jì)選擇12mhz作為基準(zhǔn)頻率。2. 分頻系數(shù)a、公用二進(jìn)制的計(jì)數(shù)容量n及初始值的選取d(1) 分頻系數(shù)的選取 首先將12mhz的基準(zhǔn)頻率進(jìn)行12分頻,得到1mhz的基準(zhǔn)頻率,分頻系數(shù)a1mhz音名頻率,此分頻系數(shù)可由計(jì)數(shù)器實(shí)現(xiàn)。為得到對(duì)稱方波,可將分頻系數(shù)a分解為:分頻系數(shù)a=
13、分頻系數(shù)n2。即先進(jìn)行分頻系數(shù)n的分頻,得到不對(duì)稱方波,然后再2分頻得到對(duì)稱方波。(2) 公用二進(jìn)制的計(jì)數(shù)容量n的選取n分頻可由n進(jìn)制計(jì)數(shù)器實(shí)現(xiàn)。n進(jìn)制計(jì)數(shù)器可用復(fù)位法或置位法實(shí)現(xiàn),由于加載初始值d的置位法可有效地減少設(shè)計(jì)所占用的可編程邏輯器件資源,因此,此次設(shè)計(jì)采用置位法。低音1的分頻數(shù)n為最大,其值為1275,應(yīng)取公用二進(jìn)制計(jì)數(shù)器的計(jì)數(shù)容量n大與“最大分頻系數(shù)n”,故本次設(shè)計(jì)的公用二進(jìn)制計(jì)數(shù)器應(yīng)該設(shè)計(jì)為十一位二進(jìn)制加法計(jì)數(shù)器,其計(jì)數(shù)最大容量為2048,計(jì)數(shù)的最大值n為2047,可滿足本次設(shè)計(jì)中所有音名對(duì)音頻系數(shù)的要求。(3) 初始值的選取d初始值d = 計(jì)數(shù)最大值n - 分頻系數(shù)n此次設(shè)計(jì)
14、中應(yīng)用的各音名對(duì)應(yīng)的分頻系數(shù)值及初始值如表所示:表3-2各音名對(duì)應(yīng)的分頻系數(shù)值及初始值音符初始值對(duì)應(yīng)音譜區(qū)別高中低音020470011091112119621312893141331415140951614796171541718156912916212210166832111689421217285213176362141794123. 小星星的音符譜為:1;1;5;5;6;6;5;4;4;3;3;2;2;1;5;5;4;4;3;3;2;5;5;4;4;3;3;2;1;1;5;5;6;6;5;4;4;3;3;2;2;13.1.3節(jié)拍發(fā)生器原理該演奏電路的最小節(jié)拍為1拍,將一拍的時(shí)長(zhǎng)定為0.2
15、5s,則只需要再提供一個(gè)4hz的時(shí)鐘頻率即可產(chǎn)生一拍的時(shí)長(zhǎng)。為了能達(dá)到演奏時(shí)能循環(huán)進(jìn)行,則需設(shè)置一個(gè)時(shí)長(zhǎng)計(jì)數(shù)器,當(dāng)樂曲演奏完時(shí),保證能自動(dòng)從頭開始演奏。3.2樂曲演奏電路各模塊設(shè)計(jì)本次設(shè)計(jì)樂曲演奏電路結(jié)構(gòu)方框圖如圖3-1所示:基準(zhǔn)時(shí)鐘12mhz模式選擇 auto手動(dòng)輸入fpga時(shí)鐘電路數(shù)控分頻器電路音樂節(jié)拍產(chǎn)生電路音調(diào)編碼電路4hz12mhz揚(yáng)聲器數(shù)碼管圖3-1樂曲演奏電路結(jié)構(gòu)方框圖3.3 樂曲演奏電路的子結(jié)構(gòu)頂層結(jié)構(gòu)所包含的模塊分別有音調(diào)發(fā)生器(ydfsq)模塊、音調(diào)編碼器(ydbmq)模塊、分頻器模塊(dd)、手動(dòng)自動(dòng)選擇(bmux)模塊及數(shù)控分頻器(skfpq)模塊。3.3.1 音調(diào)發(fā)生
16、器模塊1. 音調(diào)發(fā)生器模塊在此模塊中設(shè)置了一個(gè)8位二進(jìn)制計(jì)數(shù)器(計(jì)數(shù)最大值為64),這個(gè)計(jì)數(shù)器的計(jì)數(shù)頻率選為4hz,即每一計(jì)數(shù)值的停留時(shí)間為0.25s,恰好為當(dāng)全音符設(shè)為1s時(shí),四四拍的4分音符的持續(xù)時(shí)間。音調(diào)發(fā)生器模塊vhdl源程序如下:library ieee;use ieee.std_logic_1164.all; entity ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end;architecture bhv of ydfsq issignal counter:integer range 0 t
17、o 99; beginprocess(clk,counter)beginif counter=100 thencounter=0;elsif clkevent and clk=1then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindext
18、oneindextoneindexnull;end case;end process;end;2. 音調(diào)發(fā)生器模塊的仿真圖圖3-2 音調(diào)發(fā)生器模塊的仿真波形圖通過仿真圖可以清楚的看到,時(shí)鐘clk由0開始計(jì)數(shù),每計(jì)一次數(shù)輸出toneindex的值隨之發(fā)生一定的變化,只不過根據(jù)樂譜的不同,輸出的變化也不盡相同。例如在本次設(shè)計(jì)中,自第1個(gè)時(shí)鐘上升沿來臨到第4個(gè)時(shí)鐘上升沿,輸出toneindex “1”。于是根據(jù)樂譜的不同就輸出不同的音符,作為音調(diào)編碼器的輸入。然后把輸出toneindex輸入到音調(diào)編碼器模塊,進(jìn)行下一步編碼工作。于是,由仿真圖可以知道本模塊輸出的即為演奏音樂的音符譜,說明該程序正確,
19、可以生成邏輯器件。3. 音調(diào)發(fā)生器模塊生成的邏輯器件圖3-3 音調(diào)發(fā)生器電路模塊生成器件3.3.2音調(diào)編碼器電路模塊1. 音調(diào)編碼器模塊該編碼模塊的作用為將輸入的音符數(shù)據(jù)翻譯為音樂產(chǎn)生模塊的所需要的分頻系數(shù),并且顯示音符的數(shù)字碼型和高音階,通過對(duì)照表3-2各音名對(duì)應(yīng)的分頻系數(shù)值及初始值,根據(jù)輸入得到初始值,從而得到分頻系數(shù)以便進(jìn)行分頻,得到所需的頻率。音調(diào)編碼器模塊的vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out intege
20、r range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;architecture bhv of ydbmq isbeginprocess(index)begin case index iswhen 0 =tone=2047;code=0;code1tone=1091;code=1;code1tone=1196;code=2;code1tone=1289;code=3;code1tone=1331;code=4;code1tone=1409;code=5;code1tone=147
21、9;code=6;code1tone=1541;code=7;code1tone=1569;code=1;code1tone=1621;code=2;code1tone=1668;code=3;code1tone=1689;code=4;code1tone=1728;code=5;code1tone=1763;code=6;code1tone=1794;code=7;code1null;end case;end process;end ;2. 音調(diào)編碼器模塊的仿真圖圖3-4 音調(diào)發(fā)生器模塊的仿真波形圖在此程序中index為音樂節(jié)拍產(chǎn)生模塊輸出的音符數(shù)據(jù),經(jīng)過翻譯后將tone輸出到數(shù)控分頻模塊為
22、其提供分頻系數(shù)的初始值,code為數(shù)碼管顯示的字符數(shù),應(yīng)用模式5,所以直接輸出音符的二進(jìn)制值,code1為高音階指示信號(hào),當(dāng)code1為是說明輸出為高音階的音符。通過仿真圖可以清楚地看到結(jié)果。3. 音調(diào)編碼器模塊生成的邏輯器件圖3-5 音調(diào)發(fā)生器電路模塊生成器件3.3.3分頻器電路模塊1. 分頻器模塊該編碼模塊的作用為將12mhz的時(shí)鐘信號(hào)分頻出4hz的時(shí)鐘信號(hào),從而實(shí)現(xiàn)只用一個(gè)時(shí)鐘信號(hào)控制電路。分頻器模塊的vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity dd isport(clk:in std_logic;d:buffer st
23、d_logic);end;architecture bhv of dd isbegin process(clk)variable count4:integer range 0 to 1500000;begin if clkevent and clk=1thencount4:=count4+1;if count4=1500000 then d=not d;count4:=0;end if;end if;end process;end;2. 分頻器模塊的仿真圖圖3-6 分頻器模塊的仿真波形圖在此程序中clk為輸入的12mhz時(shí)鐘信號(hào),經(jīng)過3m分頻得到4hz的時(shí)鐘信號(hào)。3. 分頻器模塊生成的邏輯器件
24、圖3-7 分頻器電路模塊生成器件3.3.4 手動(dòng)自動(dòng)選擇模塊1. 手動(dòng)自動(dòng)選擇模塊根據(jù)設(shè)計(jì)的要求,該簡(jiǎn)易樂曲演奏器能實(shí)現(xiàn)手動(dòng)或自動(dòng)演奏樂曲的功能。于是,可通過一個(gè)按鍵cs來進(jìn)行自動(dòng)與手動(dòng)的選擇,當(dāng)cs按下時(shí),樂曲自動(dòng)演奏,其他情況下均為手動(dòng)演奏樂曲,即可以通過按下其他的按鍵(與cs相連的按鍵除外)來控制不同的音符。與此同時(shí),還需要一個(gè)復(fù)位信號(hào)rst來控制該演奏器是否工作,當(dāng)rst為1時(shí),停止演奏,為0時(shí),可以演奏。以上提到的手動(dòng)與自動(dòng)的選擇只能在rst為0時(shí)有效。手動(dòng)自動(dòng)選擇模塊的vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity b
25、mux isport(d1,d2:in integer range 0 to 15;cs,rst:in std_logic;q:out integer range 0 to 15); end;architecture bhv of bmux isbegin process(cs,rst)beginif rst=1then qqqq=d1;end case;end if;end process;end;2. 手動(dòng)自動(dòng)選擇模塊的仿真圖圖3-8 分頻器模塊的仿真波形圖此仿真圖中輸入cs代表手動(dòng)自動(dòng)演奏的選擇端,輸入rst代表整體復(fù)位端,輸入d1、d2分別代表手動(dòng)和自動(dòng)演奏的音符,q為輸出端,由此仿真
26、圖可清楚的看到當(dāng)rst=1時(shí),不論選擇的是手動(dòng)還是自動(dòng),輸出都為零,達(dá)到了整體復(fù)位的功能;當(dāng)rst=0且cs=1時(shí),自動(dòng)演奏樂曲,因?yàn)閝與d2的值相同;當(dāng)rst=0且cs=0時(shí),手動(dòng)演奏樂曲,因?yàn)檫@時(shí)的q與d1的值相同,從而也達(dá)到了演奏方式選擇的功能。3. 手動(dòng)自動(dòng)選擇模塊生成的邏輯器件圖3-9 分頻器電路模塊生成器件3.3.5 數(shù)控分頻器模塊1. 數(shù)控分頻器模塊的功能該模塊的clk端輸入一個(gè)具有較高頻率(本實(shí)驗(yàn)為12mhz)的信號(hào),通過skfpq分頻后由spks輸出。由于直接從數(shù)控分頻器中出來的輸出信號(hào)是脈寬極窄的脈沖信號(hào),為了便于驅(qū)動(dòng)喇叭,需另加一個(gè)d觸發(fā)器均衡其占空比,也即作二分頻處理。
27、skfpq對(duì)clk輸入信號(hào)的分頻比由11位預(yù)置數(shù)tone10.0決定。spks的輸出頻率將決定每一音符的音調(diào),這樣分頻計(jì)數(shù)器的預(yù)置數(shù)tone10.0與spks的輸出頻率就有了對(duì)應(yīng)關(guān)系。數(shù)控分頻器模塊的vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end;architecture bhv of skfpq issignal preclk:std_logic;signal
28、 fullspks:std_logic;begin process(clk)variable count:integer range 0 to 16;begin preclk=0;if count=12 then preclk=1;count:=0;elsif clkevent and clk=0thencount:=count+1;end if;end process;process(preclk,tone)variable count1:integer range 0 to 2047;begin if preclkevent and preclk=1then if count1=2047
29、thencount1:=tone;fullspks=1;else count1:=count1+1;fullspks=0;end if;end if;end process;process(fullspks)variable count2:std_logic;beginif fullspksevent and fullspks=1 thencount2:=not count2;if count2=1 then spks=1;elsespks=0;end if;end if;end process;end;2. 數(shù)控分頻器模塊的仿真圖圖3-10 數(shù)控分頻器模塊的仿真波形圖在此仿真圖中,輸入clk
30、是一個(gè)頻率較大的時(shí)鐘信號(hào),輸入tone代表著某個(gè)音符的分頻初始值,輸出spks則代表將輸入clk先經(jīng)過12次分頻,再經(jīng)過(預(yù)置數(shù)終值2048-tone)次分頻,最終再進(jìn)行二分頻處理,而這個(gè)信號(hào)的頻率就是我們需要演奏的音譜的頻率,根據(jù)頻率的不同,從而能通過喇叭聽到不同的聲音,實(shí)現(xiàn)音樂的播放。3. 數(shù)控分頻器模塊生成的邏輯器件圖3-11 數(shù)控分頻器電路模塊生成器件3.4 頂層程序及仿真3.4.1 頂層程序利用元件例化把各個(gè)子模塊組合起來,進(jìn)行編譯、下載,從而實(shí)現(xiàn)整體功能。它將音調(diào)發(fā)生器(ydfsq)模塊、音調(diào)編碼器(ydbmq)模塊、分頻器模塊(dd)、手動(dòng)自動(dòng)選擇(bmux)模塊及數(shù)控分頻器(s
31、kfpq)模塊連接起來。頂層的vhdl源程序:library ieee;use ieee.std_logic_1164.all;entity yybf isport(clk1:in std_logic;cs:in std_logic;rst:in std_logic;d2:in integer range 0 to 15;oup1:out std_logic;oup2:out integer range 0 to 15;oup3:out integer range 0 to 15);end;architecture bhv of yybf issignal s1: integer range
32、0 to 15;signal s2: integer range 0 to 15;signal s3: integer range 0 to 2047;signal d: std_logic;component ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end component;component ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to
33、 15;tone:out integer range 0 to 2047);end component;component bmux isport(d1,d2:in integer range 0 to 15;cs,rst:in std_logic;q:out integer range 0 to 15); end component;component skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end component;component dd isport(clk:i
34、n std_logic;d:out std_logic);end component;beginu1: ydfsq port map(d,s1);u2:ydbmq port map(s2,oup2,oup3,s3);u3:bmux port map(s1,d2,cs,rst,s2);u4:skfpq port map(clk1,s3,oup1);u5:dd port map (clk1,d);end bhv;3.4.2 頂層原理仿真圖圖3-12 頂層原理仿真圖3.5 硬件下載及實(shí)現(xiàn)輸入程序并且編譯無誤,并且仿真無誤后,便進(jìn)行引腳鎖定及程序下載,在進(jìn)行引腳鎖定時(shí)必須對(duì)照引腳鎖定圖進(jìn)行鎖定,采用模
35、式5其引腳鎖定圖如圖3-13所示:圖3-13模式5實(shí)驗(yàn)電路結(jié)構(gòu)圖根據(jù)需要,本設(shè)計(jì)采用模式5,這是因?yàn)閿?shù)碼管自帶譯碼芯片,輸出時(shí)只需輸出數(shù)字的二進(jìn)制數(shù),因此不必直接輸出數(shù)字的碼型,這就方便了字符的輸出。根據(jù)模式5上所對(duì)應(yīng)的引腳號(hào)查表可以得出需要鎖定的引腳號(hào)碼。鎖定完后如圖 3-14所示:圖3-14引腳鎖定圖cs鍵8為自動(dòng)手動(dòng)選擇鍵,當(dāng)cs=1時(shí)為手動(dòng),否則為自動(dòng);clk1 鎖定clock0的12mhz;oup2鎖定譯碼管1;oup3鎖定譯碼管2;rst鎖定鍵3;oup1鎖定揚(yáng)聲器;引腳鎖定后執(zhí)行programmer 下載程序至試驗(yàn)箱進(jìn)行驗(yàn)證,經(jīng)驗(yàn)證本次設(shè)計(jì)完成的設(shè)計(jì)基本正確,但是基準(zhǔn)時(shí)鐘選取的不
36、同演奏的效果不同??偨Y(jié)通過本次課程設(shè)計(jì),深刻體會(huì)了vhdl設(shè)計(jì)的優(yōu)勢(shì),通過強(qiáng)大的eda工具和硬件描述語言使演奏電路很易實(shí)現(xiàn)。并且通過此次設(shè)計(jì)讓我們把課本中的知識(shí)系統(tǒng)的聯(lián)系起來,更加體會(huì)到模塊式設(shè)計(jì)的方法所帶來的方便和明了化。通過模塊式的方法,可以將復(fù)雜的總程序分成幾個(gè)模塊各自分工執(zhí)行,獨(dú)立工作互不干擾。然后通過原理圖將各個(gè)模塊直接相連,或者用元件例化的方式,用vhdl語言進(jìn)行描述,達(dá)到了統(tǒng)一化管理各個(gè)模塊的作用。通過查找資料,與同學(xué)交流增強(qiáng)了我們自主學(xué)習(xí)的能力;了解到了聲音音譜的發(fā)生規(guī)律,信號(hào)的頻率與聲音的關(guān)系,并且通過對(duì)基準(zhǔn)頻率的分頻,來生成不同的聲譜。從設(shè)計(jì)方面得知,在進(jìn)行設(shè)計(jì)時(shí),應(yīng)首先對(duì)
37、各方面的資料進(jìn)行綜合,在基本原理的范圍內(nèi)進(jìn)行模塊式的分解和綜合,最后達(dá)到設(shè)計(jì)的需求。這次設(shè)計(jì)使我對(duì)quartus的運(yùn)用更加靈活,熟悉了對(duì)該軟件從工程建立到程序下載執(zhí)行各個(gè)步驟的操作,對(duì)以前學(xué)習(xí)上的不足得到了補(bǔ)充??傊?,這次設(shè)計(jì)讓我們學(xué)到了很多知識(shí),為我們以后的學(xué)習(xí)奠定了基礎(chǔ)。在課設(shè)的過程當(dāng)中,不知不覺中增添了對(duì)專業(yè)課的學(xué)習(xí)興趣,感覺我們學(xué)的東西終于與實(shí)際真正得結(jié)合起來了,學(xué)習(xí)的知識(shí)不再感覺枯燥乏味。尤其是當(dāng)自己設(shè)計(jì)的音樂播放器發(fā)出聲音的時(shí)候,心中的喜悅與自豪油然而生。最后,感謝老師的辛勤指導(dǎo)和嚴(yán)格要求。真誠(chéng)地說一聲:老師,您辛苦了! 參考文獻(xiàn)1.voknei a.pedroni.vhdl數(shù)字電
38、路設(shè)計(jì)教程.電子工業(yè)出版社,2008.52.潘松,黃繼業(yè).eda技術(shù)實(shí)用教程(第二版).科學(xué)出版社,2005.23.焦素敏.eda應(yīng)用技術(shù).清華大學(xué)出版社,2002.44.徐向民.數(shù)字系統(tǒng)設(shè)計(jì)及vhdl實(shí)踐.機(jī)械工業(yè)出版社,2007.105.劉江海.eda技術(shù)課程設(shè)計(jì).華中科技大學(xué)出版社,2009.5附錄全部程序如下:音調(diào)發(fā)生器模塊library ieee;use ieee.std_logic_1164.all; entity ydfsq isport(clk:in std_logic;toneindex:out integer range 0 to 15);end;architecture
39、bhv of ydfsq issignal counter:integer range 0 to 99; beginprocess(clk,counter)begin if counter=100 thencounter=0;elsif clkevent and clk=1then countertoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneindextoneind
40、extoneindextoneindextoneindextoneindextoneindextoneindextoneindexnull;end case;end process;end;音調(diào)編碼器模塊library ieee;use ieee.std_logic_1164.all;entity ydbmq isport(index:in integer range 0 to 15;code:out integer range 0 to 15;code1:out integer range 0 to 15;tone:out integer range 0 to 2047);end;archi
41、tecture bhv of ydbmq isbeginprocess(index)begin case index iswhen 0 =tone=2047;code=0;code1tone=1091;code=1;code1tone=1196;code=2;code1tone=1289;code=3;code1tone=1331;code=4;code1tone=1409;code=5;code1tone=1479;code=6;code1tone=1541;code=7;code1tone=1569;code=1;code1tone=1621;code=2;code1tone=1668;c
42、ode=3;code1tone=1689;code=4;code1tone=1728;code=5;code1tone=1763;code=6;code1tone=1794;code=7;code1null;end case;end process;end ;分頻器模塊library ieee;use ieee.std_logic_1164.all;entity dd isport(clk:in std_logic;d:buffer std_logic);end;architecture bhv of dd isbegin process(clk)variable count4:integer
43、 range 0 to 1500000;begin if clkevent and clk=1thencount4:=count4+1; if count4=1500000 then d=not d;count4:=0;end if;end if;end process;end;手動(dòng)自動(dòng)選擇模塊library ieee;use ieee.std_logic_1164.all;entity bmux isport(d1,d2:in integer range 0 to 15;cs,rst:in std_logic;q:out integer range 0 to 15); end;archite
44、cture bhv of bmux isbegin process(cs,rst)beginif rst=1then qqqq=d1;end case;end if;end process;end;數(shù)控分頻器模塊library ieee;use ieee.std_logic_1164.all;entity skfpq isport(clk:in std_logic;tone:in integer range 0 to 2047;spks:out std_logic);end;architecture bhv of skfpq issignal preclk:std_logic;signal fullspks:std_logic;begin process(clk)variable count:integer range 0 to 16;begin preclk=0;if count=12 then preclk=1;count:=0;elsif clkevent and clk=0then count:=cou
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學(xué)大三(鐵道工程)鐵路橋梁施工技術(shù)試題及答案
- 2025年大學(xué)第四學(xué)年(視覺藝術(shù))創(chuàng)作創(chuàng)新階段測(cè)試題及答案
- 2026年智能場(chǎng)景面板項(xiàng)目項(xiàng)目建議書
- 2025年本科工業(yè)設(shè)計(jì)(產(chǎn)品造型設(shè)計(jì))試題及答案
- 2025年大學(xué)大一(建筑學(xué))建筑設(shè)計(jì)基礎(chǔ)原理測(cè)試題及答案
- 2026年智能香氛夜燈項(xiàng)目評(píng)估報(bào)告
- 2026年水產(chǎn)品營(yíng)銷(營(yíng)銷規(guī)范)試題及答案
- 2026年智能衛(wèi)浴健康融合項(xiàng)目可行性研究報(bào)告
- 2025年大學(xué)大二(印刷材料)紙張性能檢測(cè)階段測(cè)試試題及答案
- 2026年美甲設(shè)計(jì)(漸變美甲工藝)試題及答案
- 2025年物業(yè)管理中心工作總結(jié)及2026年工作計(jì)劃
- 雨課堂學(xué)堂在線學(xué)堂云軍事理論國(guó)防大學(xué)單元測(cè)試考核答案
- 馬路切割承包協(xié)議書
- 多源醫(yī)療數(shù)據(jù)融合的聯(lián)邦學(xué)習(xí)策略研究
- 2025至2030中國(guó)工業(yè)邊緣控制器行業(yè)運(yùn)營(yíng)態(tài)勢(shì)與投資前景調(diào)查研究報(bào)告
- 磁電感應(yīng)式傳感器課件
- 學(xué)??剌z保學(xué)工作流程及四書一表一單
- 2026屆湖南省常德市石門一中生物高二第一學(xué)期期末統(tǒng)考試題含解析
- 20052-2024電力變壓器能效限定值及能效等級(jí)
- 冷渣機(jī)調(diào)整課件
- 地埋式生活污水處理工藝技術(shù)方案
評(píng)論
0/150
提交評(píng)論