版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> EDA課程設(shè)計報告書</p><p><b> 年 月 日</b></p><p> 基于VHDL文本輸入法的簡易電子琴的設(shè)計</p><p> 1設(shè)計目的 本課程設(shè)計主要是基于VHDL文本輸入法設(shè)計樂曲演奏電路,該系統(tǒng)基于計算機中時鐘分頻器的原理,采用自頂向下的設(shè)計方法來實現(xiàn),通過按鍵輸入來控制音響或者自
2、動演奏已存入的歌曲。系統(tǒng)由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三個部分組成。系統(tǒng)實現(xiàn)是用硬件描述語言VHDL按模塊化方式進行設(shè)計,然后進行編程、時序仿真、電路功能驗證,奏出美妙的樂曲。該設(shè)計最重要的一點就是通過按鍵控制不同的音調(diào)發(fā)生,每一個音調(diào)對應(yīng)不同的頻率,從而輸出對應(yīng)頻率的聲音。</p><p> 2設(shè)計的主要內(nèi)容和要求(1)設(shè)計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。</p&g
3、t;<p> ?。?)系統(tǒng)演奏時通過按鍵可以選擇是手動演奏還是自動演奏已存入的樂曲。</p><p> ?。?)能夠自動演奏多首樂曲,且樂曲可重復演奏。</p><p><b> 3 整體設(shè)計方案</b></p><p> 本課程設(shè)計目的在于靈活運用EDA技術(shù)編程實現(xiàn)一個簡易電子琴的樂曲演奏,不同的音階對應(yīng)不同頻率的正弦波。按
4、下每個代表不同音階的按鍵時,能夠發(fā)出對應(yīng)頻率的聲音。故系統(tǒng)可分為樂曲自動演奏模塊(AUTO)、音調(diào)發(fā)生模塊(TONE)和數(shù)控分頻模塊(FENPIN)三部分。系統(tǒng)的整體組裝設(shè)計原理圖如圖3-1。 </p><p> 圖3-1 系統(tǒng)的整體組裝設(shè)計原理圖</p><p> 由于設(shè)計分模塊組成,每個單獨的模塊都是一個完整的源程序,分別實現(xiàn)不同性質(zhì)的功能,但是每個模塊又是緊密關(guān)聯(lián)的,前一個模塊
5、的輸出很可能是后一模塊的輸入。如AUTO模塊的音符信號輸出就是TONE模塊的音符信號輸入。另外,時鐘脈沖信號在本課程設(shè)計中用的最多,用處也最大,一般情況下時鐘信號處上升沿有效,判斷和控制各個計數(shù)器計數(shù)多少。</p><p> 4 簡易電子琴的設(shè)計過程</p><p> 根據(jù)系統(tǒng)設(shè)計要求,該系統(tǒng)基于計算機中時鐘分頻器的原理,設(shè)計采用自頂向下的設(shè)計方法,通過按鍵輸入來控制音響或者自動演奏已
6、存入的歌曲。它由樂曲自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三部分組成。</p><p> 4.1 樂曲自動演奏模塊</p><p> 樂曲自動演奏模塊的作用是產(chǎn)生8位發(fā)生控制輸入信號。當進行自動演奏時,由存儲在此模塊的8位二進制數(shù)作為發(fā)聲控制輸入,從而自動演奏樂曲。</p><p> 該模塊的VHDL源程序主要由3個工作進程組成,分別為PULSE0,MUSI
7、C和COM1。PULSE0的作用是根據(jù)鍵盤輸入(自動演奏)的值(0或1)來判斷計數(shù)器COUNT以及脈沖CLK2的輸出值。部分源程序如下:</p><p> PULSE0:PROCESS(CLK,AUTO) --工作進程開始</p><p> VARIABLE COUNT:INTEGER RANGE 0 TO 8; --定義計數(shù)器變量,值從0
8、到8</p><p> IF AUTO='1'THEN --鍵盤輸入為1</p><p> COUNT:=0;CLK2<='0'; --計數(shù)器值指0,時鐘信號為0</p><p> ELSIF(CLK'EVENT AND CLK=
9、'1')THEN --時鐘輸入信號為1</p><p> COUNT:=COUNT+1; --計數(shù)器加1</p><p> 當確定了時鐘信號輸出的值后,在第二個PROCESS中就可以由它控制8位發(fā)聲控制輸入信號了。即CLK2的值為0時,COUNT0為1。最后的COM1便是由前兩個PROCESS所確定的COUNT0
10、、AUTO和鍵盤輸入信號值INDEX2將8位的二進制數(shù)轉(zhuǎn)化為音符信號的輸出,達到自動演奏的目的。部分源程序如下:</p><p> IF AUTO='0'THEN</p><p> CASE COUNT0 IS</p><p> WHEN 0=>INDEX0<="00000100"; --3</p>
11、<p> WHEN 4=>INDEX0<="00010000"; --5</p><p> 該模塊最主要的用途就是將輸入二進制數(shù)轉(zhuǎn)化為發(fā)聲控制輸入,是產(chǎn)生音符的重要步驟, AUTO模塊的源程序符號編輯圖如圖4-1。</p><p> 圖4-1 AUTO模塊的符號編輯圖</p><p> 4.2 音調(diào)發(fā)生模塊&
12、lt;/p><p> 音調(diào)發(fā)生模塊的作用是產(chǎn)生音階的分頻預置值。當8位發(fā)聲控制輸入信號中的某一位為高電平時,則對應(yīng)某一音階的數(shù)值將輸出,該數(shù)值即為該音階的分頻預置值,分頻預置值控制數(shù)控分頻模塊進行分頻,由此得到每個音階對應(yīng)的頻率。</p><p> 該模塊的唯一輸入信號INDEX對應(yīng)就是自動模塊中最后的輸出INDEX0,音符顯示信號CODE,高低音顯示信號HIGH和音符分頻系數(shù)都是根據(jù)音符
13、輸入確定的。比如我們自定義INDEX第8位為高電平時,它的分頻系數(shù)則為773Hz,音符顯示信號為1001111,即是773的二進制表示,此時高低音顯示1表示高音。部分源程序如下:</p><p> CASE INDEX IS</p><p> WHEN"00000010"=>TONE0<=912;CODE<="0010010";
14、HIGH<='1'; </p><p> --音符第7位為1,分頻數(shù)912Hz,音符顯示為0010010,屬高音</p><p> WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';</p><p>
15、 WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';</p><p> 顯然,該模塊最主要的作用就是給音符輸入預設(shè)頻率值,因為,電子琴最終實現(xiàn)樂曲演奏就是輸出不同頻率的正弦波,此模塊就是將二進制發(fā)聲信號轉(zhuǎn)化為對應(yīng)的頻率。</p><p> 4.3 數(shù)控分頻模塊</
16、p><p> 數(shù)控分頻模塊是對時基脈沖進行分頻,得到與0、1、2、3、4、5、6、7八個音符相對應(yīng)的頻率。該模塊主要由4個工作進程組成。首先,根據(jù)系統(tǒng)時鐘信號的輸入得到時基脈沖以及計數(shù)器的值,而時鐘信號在AUTO模塊中便已給出,兩者之間的設(shè)置關(guān)系類似于AUTO模塊中第一個工作進程的設(shè)置。第二個PROCESS是此模塊的核心,即由時基脈沖值轉(zhuǎn)化為音符的頻率。部分源程序如下:</p><p>
17、VARIABLE COUNT11:INTEGER RANGE 0 TO 2047; </p><p> --定義頻率計數(shù)器,從0到2047Hz</p><p> IF(PRECLK'EVENT AND PRECLK='1')THEN --時基脈沖為1時</p><p> IF COUNT11<TONE1 THEN
18、 --頻率計數(shù)器小于音符分頻系數(shù)</p><p> COUNT11:=COUNT11+1;FULLSPKS<='1'; --計數(shù)加1,揚聲器音頻為1</p><p><b> ELSE</b></p><p> COUNT11:=0;FULLSPKS<='0';</p>
19、;<p> 最后一個PROCESS則是用來設(shè)置揚聲器輸出信號的,揚聲器信號由0和1控制,當且僅當前一個PROCESS中的FULLSPKS輸出為1時,揚聲器才有輸出,再根據(jù)計數(shù)器取值來確定輸出是1還是0。部分源程序如下:</p><p> IF(FULLSPKS'EVENT AND FULLSPKS='1')THEN --揚聲器音頻信號為1</p>&l
20、t;p> COUNT2:=NOT COUNT2;</p><p> IF COUNT2='1'THEN</p><p> SPKS<='1'; --揚聲器輸出為1</p><p> ELSE SPK<=’0’; </p><p><b> 4.
21、4 頂層設(shè)計</b></p><p> 該DIANZIQIN模塊是整個電子琴設(shè)計的核心,也是VHDL程序的主程序,前面3個源程序都是作為子程序分別實現(xiàn)電子琴的某一功能,而DIANZIQIN模塊則通過調(diào)用子程序最終實現(xiàn)樂曲演奏的目的,奏出美妙的樂曲。利用VHDL語言COMPONENT將三個模塊組合起來,其中3個模塊和DIANZIQIN模塊的輸入輸出是一一對應(yīng)的,比如AUTO對應(yīng)HANDTOAUTO,T
22、ONE0對應(yīng)TONE2,SPKS對應(yīng)SPKOUT等,該模塊的符號編輯圖如圖4-4。</p><p> 圖4-4 DIANZIQIN模塊的符號編輯圖</p><p> 該圖描述的是DIANZIQIN模塊輸入輸出的變量表示,整個系統(tǒng)的整體組裝設(shè)計原理圖就是這4幅編輯圖按輸入輸出關(guān)系順序連接而成的。</p><p><b> 5 系統(tǒng)仿真</b&g
23、t;</p><p> 系統(tǒng)仿真是在實際系統(tǒng)上進行實驗研究比較困難時適用的必不可少的工具,它是指通過系統(tǒng)模型實驗去研究一個已經(jīng)存在或正在設(shè)計的系統(tǒng)的過程,通俗地講,就是進行模型實驗。因而,系統(tǒng)仿真的結(jié)果決定整個課程設(shè)計任務(wù)完成的到位程度。</p><p><b> 5.1 時序仿真</b></p><p> 編譯完成后,可以對所進行的設(shè)計
24、進行仿真,下面簡單介紹一下仿真的步驟。</p><p> (1) 在QuartusII菜單欄中,單擊File按鈕,選擇new,在new對話框中選擇other Files,在列表中選中Vector Waveform File,單擊OK,彈出仿真窗口,在左窗口處雙擊鼠標左鍵,在彈出的窗口選擇NodesFinder...項,列出所有的信號,選擇所需要的信號,然后畫出輸入信號的波形,最后將該文件以.vwf的擴展名存盤。
25、</p><p> (2) 在QuartusII工具欄中,單擊Start simulation按鈕,當仿真器結(jié)束工作時,即可看到仿真結(jié)果。</p><p> 本課程設(shè)計的仿真平臺是QuartusII,通過對VHDL源程序進行編譯檢錯,然后創(chuàng)建波形文件(后綴名為.vwf),加入輸入輸出變量,選擇適用的芯片(EPM7128SLC84-15)以及設(shè)定仿真結(jié)束時間(20us或50us),設(shè)置好
26、輸入初值進行仿真,得到仿真波形圖。由于電子琴4個模塊都是獨立的程序,可分別對各個程序仿真,驗證輸入輸出的正確性,但在最終能演奏出樂曲的則是頂層設(shè)計模塊。</p><p> 樂曲自動演奏模塊的仿真如圖5-1所示。</p><p> 圖5-1 樂曲自動演奏模塊的仿真圖</p><p> 該圖輸入系統(tǒng)時鐘信號CLK初值設(shè)為0,自動演奏AUTO設(shè)為1,鍵盤輸入信號I
27、NDEX2為00,INDEX0為音符信號輸出,是8位的二進制代碼它根據(jù)COUNT0的值改變而改變。</p><p> (2) 音調(diào)發(fā)生模塊的仿真如圖5-2所示。</p><p> 圖5-2 音調(diào)發(fā)生模塊的仿真圖</p><p> 該圖輸入音符信號INDEX初值為00,輸出是音符顯示信號CODE為01,高低音顯示信號為0,音符的分頻系數(shù)為11111111即20
28、47Hz。</p><p> (3) 數(shù)控分頻模塊的仿真如圖5-3所示。</p><p> 圖5-3 數(shù)控分頻模塊的仿真圖</p><p> 該圖輸入系統(tǒng)時鐘信號CLK1初值為0(各輸出值都是在時鐘信號的下降沿有效),音符分頻系數(shù)TONE1為00100000即1290Hz,驅(qū)動揚聲器的音頻信號SPKS輸出為1。</p><p> (
29、4) 簡易電子琴整個系統(tǒng)的仿真如圖5-4所示。</p><p> 圖5-3 簡易電子琴整個系統(tǒng)的仿真圖</p><p> 該圖輸入系統(tǒng)時鐘信號CLK32MHZ初值為0,自動演奏信號HANDTOAUTO初值為0,鍵盤輸入信號INDEX1為00000000;輸出音符信號CODE1則為0110000,高低音節(jié)信號HIGH1變?yōu)?,即高音,音頻信號SPKOUT即輸出0,輸出為1時CODE1變
30、為0110100,這時出現(xiàn)10ns的延時。在仿真時由于系統(tǒng)各方面原因影響,出現(xiàn)延時屬于正?,F(xiàn)象。</p><p> 5.2 電路功能驗證</p><p> 如果說前面的過程都是理論上進行軟件設(shè)計制作,那么電路驗證則是硬件產(chǎn)生實際結(jié)果的必要步驟,它是軟件編程導入硬件系統(tǒng)得到最終設(shè)計目標的一個過程。此課程設(shè)計中主要用到的硬件設(shè)施有EPM7128SLC84-15芯片、一個12MHz的頻率元件
31、、揚聲器、鍵盤或脈沖開關(guān)、發(fā)光二極管等,硬件和軟件系統(tǒng)相連接的樞紐就是芯片引腳和VHDL主程序中所有輸入輸出之間對應(yīng)的關(guān)系。 </p><p> 在選擇好芯片以及設(shè)置引腳值后,下載源程序到此芯片上,確認編程器硬件是否已安裝好。按如下步驟打開編程器窗口:在QuartusII軟件中將配置數(shù)據(jù)下載到一個FLEX器件中。再次對源程序進行編譯導入程序然后運行,揚聲器發(fā)出初設(shè)的音符3,5音即報警。手按鍵盤或撥脈沖開關(guān)改變輸
32、入信號則揚聲器發(fā)出對應(yīng)的頻率的聲音,鍵盤(開關(guān))是與芯片引腳對應(yīng)相連的。</p><p><b> 6 使用說明</b></p><p> 簡易電子琴由自動演奏模塊、音調(diào)發(fā)生模塊和數(shù)控分頻模塊三個部分組成。上電后,通過按鍵控制音響和電子琴的演奏。演奏時由鍵盤輸入可以選擇是手動演奏還是自動演奏已存入的樂曲。按下每個代表不同音階的按鍵時,能夠發(fā)出對應(yīng)頻率的聲音。從而完
33、成不同樂譜的演奏。</p><p><b> 7 設(shè)計總結(jié)</b></p><p> 通過這次VHDL課程設(shè)計,不僅增強了我們的實踐動手能力,也讓我們對課堂上所學到的理論知識的理解加深了許多,這給我們提供了一個在學習生活中很難得的理論聯(lián)系實際的機會。能夠借此機會了解到部分EDA技術(shù)的知識和學習運用其中一種硬件描述語言VHDL編程實現(xiàn)各種常用器件的功能,這是在哪堂講
34、課上都得不到的一筆財富。</p><p> 另一方面我們也發(fā)現(xiàn)了在平時學習過程中難于發(fā)現(xiàn)的許多缺點跟不足。比如實踐機會過少,所學的理論知識不能靈活運用,在遇到實際的問題時無法正確處理;再者在課堂上獲得的專業(yè)知識過于淺顯,很多的有關(guān)基本操作原理、操作方法都理解不了;課外知識了解的也過少,導致在課程設(shè)計初期,面對完全陌生的設(shè)計課題無從下手,不知所措。這就提醒我們在平時的學習生活中不能一味埋頭于面前的課本知識,畢竟當
35、今社會競爭越發(fā)激烈,而學校能教授的東西有限,要想在人才市場中脫穎而出就只能靠我們自己。當然,在學習之余我們更應(yīng)該積極參加各種有關(guān)專業(yè)知識的實踐活動和比賽,鞏固所學理論,多注意培養(yǎng)初步的實際工作能力和專業(yè)技術(shù)能力,這樣在以后的工作崗位上不會顯得那么倉促與生疏。</p><p><b> 參考文獻</b></p><p> [1] 江國強.EDA技術(shù)與應(yīng)用(第三版).
36、北京:電子工業(yè)出版社,2010</p><p> [2] 辛春艷. VHDL硬件描述語言. 北京:國防工業(yè)出版社,2002</p><p> [3] 甘歷. VHDL應(yīng)用與開發(fā)實踐. 北京:科學出版社,2003</p><p> [4] VHDL Language Reference Guide ,Alde Inc . Henderson NV USA ,19
37、99</p><p> [5] 齊洪喜,陸穎. VHDL電路設(shè)計實用教程. 北京:清華大學出版社,2004</p><p> [6] 潘松,黃繼業(yè). EDA技術(shù)實用教程. 北京:科學出版社,2002</p><p><b> 附錄:</b></p><p> 樂曲自動演奏源程序清單</p><
38、p> --程序名稱:AUTO.VHD</p><p> --程序功能:采用VHDL語言編程產(chǎn)生8位發(fā)聲控制輸入信號。</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p
39、><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY AUTO IS</p><p> PORT(CLK: IN STD_LOGIC; --系統(tǒng)時鐘信號</p><p> AUTO: IN STD_LOGIC;
40、 --鍵盤輸入/自動演奏</p><p> CLK2: BUFFER STD_LOGIC; --時鐘輸出</p><p> INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --鍵盤輸入信號</p><p> INDEX0: OUT STD_LOGIC_VECTOR(
41、7 DOWNTO 0)); --音符信號輸出</p><p><b> END AUTO;</b></p><p> ARCHITECTURE BEHAVIORAL OF AUTO IS</p><p> SIGNAL COUNT0:INTEGER RANGE 0 TO 31; --定義信號計數(shù)器,有32個信號元素</p>
42、<p><b> BEGIN</b></p><p> PULSE0:PROCESS(CLK,AUTO) --PULSE0工作進程開始</p><p> VARIABLE COUNT:INTEGER RANGE 0 TO 8; --定義變量計數(shù)器,從0到8</p><p><b>
43、; BEGIN</b></p><p> IF AUTO='1'THEN --鍵盤輸入為1</p><p> COUNT:=0;CLK2<='0'; --計數(shù)器值為0,時鐘信號2幅值為0</p><p> ELSIF(CLK'
44、;EVENT AND CLK='1')THEN --輸入的時鐘信號為其他值</p><p> COUNT:=COUNT+1; --計數(shù)器加1即為1</p><p> IF COUNT=4 THEN </p><p> CLK2<='1';</p>
45、;<p> ELSIF COUNT=8 THEN</p><p> CLK2<='0';COUNT:=0;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;&l
46、t;/p><p> MUSIC:PROCESS(CLK2) --MUSIC工作進程開始</p><p><b> BEGIN</b></p><p> IF(CLK2'EVENT AND CLK2='1')THEN --時鐘信號2為1</p><p
47、> IF(COUNT0=31)THEN --計數(shù)器值為31</p><p> COUNT0<=0; --計數(shù)器清0</p><p><b> ELSE</b></p><p> COUNT0<=COUNT0+1;</p>&
48、lt;p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> COM1:PROCESS(COUNT0,AUTO,INDEX2)</p><p><b> BEGIN</b&g
49、t;</p><p> IF AUTO='0'THEN --鍵盤輸入為0</p><p> CASE COUNT0 IS --由計數(shù)器從0到31的取值判斷音符信號的8位二進制數(shù)</p><p> WHEN 0=>INDEX0<="00000100";
50、 --3</p><p> WHEN 1=>INDEX0<="00000100"; --3</p><p> WHEN 2=>INDEX0<="00000100"; --3</p><p> WHEN 3=>INDEX0<="00000100";
51、 --3</p><p> WHEN 4=>INDEX0<="00010000"; --5</p><p> WHEN 5=>INDEX0<="00010000"; --5</p><p> WHEN 6=>INDEX0<="00010000";
52、 --5</p><p> WHEN 7=>INDEX0<="00100000"; --6</p><p> WHEN 8=>INDEX0<="10000000"; --8</p><p> WHEN 9=>INDEX0<="10000000";
53、 --8</p><p> WHEN 10=>INDEX0<="10000000"; --8</p><p> WHEN 11=>INDEX0<="00000100"; --3</p><p> WHEN 12=>INDEX0<="00000010";
54、--2</p><p> WHEN 13=>INDEX0<="00000010"; --2</p><p> WHEN 14=>INDEX0<="00000001"; --1</p><p> WHEN 15=>INDEX0<="00000001"; -
55、-1</p><p> WHEN 16=>INDEX0<="00010000"; --5</p><p> WHEN 17=>INDEX0<="00010000"; --5</p><p> WHEN 18=>INDEX0<="00001000"; --
56、4</p><p> WHEN 19=>INDEX0<="00001000"; --4</p><p> WHEN 20=>INDEX0<="00001000"; --4</p><p> WHEN 21=>INDEX0<="00000100"; --3
57、</p><p> WHEN 22=>INDEX0<="00000010"; --2</p><p> WHEN 23=>INDEX0<="00000010"; --2</p><p> WHEN 24=>INDEX0<="00010000"; --5&
58、lt;/p><p> WHEN 25=>INDEX0<="00010000"; --5</p><p> WHEN 26=>INDEX0<="00001000"; --4</p><p> WHEN 27=>INDEX0<="00001000"; --4&l
59、t;/p><p> WHEN 28=>INDEX0<="00000100"; --3</p><p> WHEN 29=>INDEX0<="00000100"; --3</p><p> WHEN 30=>INDEX0<="00000010"; --2<
60、;/p><p> WHEN 31=>INDEX0<="00000010"; --2</p><p> WHEN OTHERS=>NULL;</p><p><b> END CASE;</b></p><p> ELSE INDEX0<=INDEX2;
61、 --將音符信號0的值賦給音符信號2</p><p><b> END IF;</b></p><p> END PROCESS;</p><p> END BEHAVIORAL;</p><p><b> 音調(diào)發(fā)生源程序清單</b></p><p&
62、gt; --程序名稱:TONE.VHD</p><p> --程序功能:采用VHDL語言編程產(chǎn)生音階的分頻預置值。</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p>
63、<p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY TONE IS</p><p> PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --音符輸入信號</p><p> CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO
64、0); --音符顯示信號</p><p> HIGH: OUT STD_LOGIC; --高低音顯示信號</p><p> TONE0:OUT INTEGER RANGE 0 TO 2047); --音符的分頻系數(shù)</p><p><b> END TONE;</b></p&g
65、t;<p> ARCHITECTURE ART OF TONE IS</p><p><b> BEGIN</b></p><p> SEARCH:PROCESS(INDEX) </p><p><b> BEGIN</b></p><p> CASE INDEX IS&
66、lt;/p><p> WHEN"00000001"=>TONE0<=773;CODE<="1001111";HIGH<='1'; </p><p> --分頻系數(shù)773Hz,音符顯示1001111,顯示低音</p><p> WHEN"00000010"=>
67、TONE0<=912;CODE<="0010010";HIGH<='1';</p><p> WHEN"00000100"=>TONE0<=1036;CODE<="0000110";HIGH<='1';</p><p> WHEN"000010
68、00"=>TONE0<=1116;CODE<="1001100";HIGH<='1';</p><p> WHEN"00010000"=>TONE0<=1197;CODE<="0100100";HIGH<='1';</p><p> WH
69、EN"00100000"=>TONE0<=1290;CODE<="0100000";HIGH<='0';</p><p> WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';</p>
70、<p> WHEN"10000000"=>TONE0<=1410;CODE<="0000000";HIGH<='0';</p><p> WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';</p&
71、gt;<p><b> END CASE;</b></p><p> END PROCESS;</p><p><b> END ART;</b></p><p> ?。簲?shù)控分頻源程序清單</p><p> --程序名稱:FENPIN.VHD</p><p&
72、gt; --程序功能:采用VHDL語言編程對時基脈沖進行分頻,得到8個音符相對應(yīng)的頻率。</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_
73、LOGIC_UNSIGNED.ALL;</p><p> ENTITY FENPIN IS</p><p> PORT(CLK1: IN STD_LOGIC;</p><p> TONE1: IN INTEGER RANGE 0 TO 2047; --系統(tǒng)時鐘信號</p><p> SPKS: OUT STD_LOGIC);
74、 --音符分頻系數(shù)</p><p> END ENTITY FENPIN; --驅(qū)動揚聲器的音頻信號</p><p> ARCHITECTURE ART OF FENPIN IS</p><p> SIGNAL PRECLK:STD_LOGIC; --定義時基脈沖信號
75、</p><p> SIGNAL FULLSPKS:STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(CLK1)</p><p> VARIABLE COUNT:INTEGER RANGE 0 TO 8; --定義變量計數(shù)器,從0到8</p>
76、<p><b> BEGIN</b></p><p> IF(CLK1'EVENT AND CLK1='1')THEN --據(jù)時鐘信號為1時 </p><p> COUNT:=COUNT+1; --判斷計數(shù)器取值為1</p><p>
77、 IF COUNT=2 THEN</p><p> PRECLK<='1';</p><p> ELSIF COUNT=4 THEN --若計數(shù)器計4</p><p> PRECLK<='0';COUNT:=0; --時基脈沖為0,計數(shù)
78、器清零</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p> PROCESS(PRECLK,TONE1)</p><p> VARIABLE COUNT11:
79、INTEGER RANGE 0 TO 2047; --定義變量頻率計數(shù)器11,從0</p><p><b> 到2047Hz</b></p><p><b> BEGIN</b></p><p> IF(PRECLK'EVENT AND PRECLK='1')THEN --
80、PRECLK脈沖上升沿觸發(fā)</p><p> IF COUNT11<TONE1 THEN --若計數(shù)器11值小于音符信號1</p><p> COUNT11:=COUNT11+1;FULLSPKS<='1'; --計數(shù)器加1,音頻信號為1</p><p><b> ELSE<
81、;/b></p><p> COUNT11:=0;FULLSPKS<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><p>
82、 PROCESS(FULLSPKS) --音頻信號輸出進程開始</p><p> VARIABLE COUNT2:STD_LOGIC:='0'; --定義變量計數(shù)器2,初值為0</p><p><b> BEGIN</b></p><p> IF
83、(FULLSPKS'EVENT AND FULLSPKS='1')THEN --音頻信號輸出上升沿有效時</p><p> COUNT2:=NOT COUNT2;</p><p> IF COUNT2='1'THEN</p><p> SPKS<='1';</p><p&g
84、t;<b> ELSE</b></p><p> SPKS<='0';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS;</p><
85、p><b> END ART;</b></p><p><b> 頂層設(shè)計源程序清單</b></p><p> --程序名稱:DIANZIQIN.VHD</p><p> --程序功能:采用VHDL語言編寫主程序調(diào)用3個子程序,實現(xiàn)樂曲演奏的功能。</p><p> LIBRARY
86、IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY DIANZIQIN
87、 IS</p><p> PORT(CLK32MHZ: IN STD_LOGIC; --系統(tǒng)時鐘信號</p><p> HANDTOAUTO: IN STD_LOGIC; --鍵盤輸入/自動演奏信號</p><p> CODE1: OUT STD_LOGIC_VECTOR(6 DOW
88、NTO 0); --音符顯示信號</p><p> INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --鍵盤輸入信號</p><p> HIGH1: OUT STD_LOGIC; --高低音節(jié)信號</p><p> SPKOUT: OUT STD_LOGIC);
89、 --音頻信號</p><p><b> END;</b></p><p> ARCHITECTURE ART OF DIANZIQIN IS</p><p> COMPONENT AUTO --引用 AUTO元件</p>
90、;<p> PORT(CLK: IN STD_LOGIC; </p><p> AUTO: IN STD_LOGIC; --輸入自動演奏信號</p><p> INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0); --輸入8位控制信
91、號</p><p> INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --輸出8位的音符</p><p> END COMPONENT;</p><p> COMPONENT TONE --引用TONE元件</p><p>
92、 PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p> CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);</p><p> HIGH: OUT STD_LOGIC;</p><p> TONE0: OUT INTEGER RANGE 0 TO 2047);</p&
93、gt;<p> END COMPONENT;</p><p> COMPONENT FENPIN --引用FENPIN元件</p><p> PORT(CLK1: IN STD_LOGIC;</p><p> TONE1: IN INTEGER RANGE 0 TO 2047
94、;</p><p> SPKS: OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> SIGNAL TONE2:INTEGER RANGE 0 TO 2047; --定義主程序音調(diào)頻率信號</p><p> SIGNAL INDX:STD_LOGIC_VECTOR(7 D
95、OWNTO 0); --定義8位的音符信號</p><p><b> BEGIN</b></p><p> U0:AUTO PORT MAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);
96、 --調(diào)用自動演奏模塊</p><p> U1:TONE PORT</p><p> MAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1); --調(diào)用音調(diào)發(fā)</p><p><b> 生模塊</b></p><p> U
97、2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT); </p><p> END ART; --調(diào)用數(shù)控分頻模塊</p><p> 大學本科生畢業(yè)設(shè)計(論文)撰寫規(guī)范</p><p> 本科生畢業(yè)設(shè)計
98、(論文)是學生在畢業(yè)前提交的一份具有一定研究價值和實用價值的學術(shù)資料。它既是本科學生開始從事工程設(shè)計、科學實驗和科學研究的初步嘗試,也是學生在教師的指導下,對所進行研究的適當表述,還是學生畢業(yè)及學位資格認定的重要依據(jù)。畢業(yè)論文撰寫是本科生培養(yǎng)過程中的基本訓練環(huán)節(jié)之一,應(yīng)符合國家及各專業(yè)部門制定的有關(guān)標準,符合漢語語法規(guī)范。指導教師應(yīng)加強指導,嚴格把關(guān)。</p><p><b> 1、論文結(jié)構(gòu)及要求&l
99、t;/b></p><p> 論文包括題目、中文摘要、外文摘要、目錄、正文、參考文獻、致謝和附錄等幾部分。</p><p><b> 1.1 題目</b></p><p> 論文題目應(yīng)恰當、準確地反映論文的主要研究內(nèi)容。不應(yīng)超過25字,原則上不得使用標點符號,不設(shè)副標題。</p><p> 1.2 摘要與關(guān)
100、鍵詞</p><p><b> 1.2.1 摘要</b></p><p> 本科生畢業(yè)設(shè)計(論文)的摘要均要求用中、英兩種文字給出,中文在前。</p><p> 摘要應(yīng)扼要敘述論文的研究目的、研究方法、研究內(nèi)容和主要結(jié)果或結(jié)論,文字要精煉,具有一定的獨立性和完整性,摘要一般應(yīng)在300字左右。摘要中不宜使用公式、圖表,不標注引用文獻編號,避
101、免將摘要寫成目錄式的內(nèi)容介紹。</p><p><b> 1.2.2 關(guān)鍵詞</b></p><p> 關(guān)鍵詞是供檢索用的主題詞條,應(yīng)采用能覆蓋論文主要內(nèi)容的通用技術(shù)詞條(參照相應(yīng)的技術(shù)術(shù)語標準),一般列3~5個,按詞條的外延層次從大到小排列,應(yīng)在摘要中出現(xiàn)。</p><p><b> 1.3 目錄</b></
102、p><p> 目錄應(yīng)獨立成頁,包括論文中全部章、節(jié)的標題及頁碼。</p><p><b> 1.4 論文正文</b></p><p> 論文正文包括緒論、論文主體及結(jié)論等部分。</p><p><b> 1.4.1 緒論</b></p><p> 緒論一般作為論文的首篇
103、。緒論應(yīng)說明選題的背景、目的和意義,國內(nèi)外文獻綜述以及論文所要研究的主要內(nèi)容。</p><p> 文管類論文的緒論是畢業(yè)論文的開頭部分,一般包括說明論文寫作的目的與意義,對所研究問題的認識以及提出問題。緒論只是文章的開頭,不必寫章號。</p><p> 畢業(yè)設(shè)計(論文)緒論部分字數(shù)不多于全部論文字數(shù)的1/4。</p><p> 1.4.2 論文主體</p
104、><p> 論文主體是論文的主要部分,要求結(jié)構(gòu)合理,層次清楚,重點突出,文字簡練、通順。論文主體的內(nèi)容要求參照《大學本科生畢業(yè)設(shè)計(論文)的規(guī)定》第五章。</p><p> 論文主體各章后應(yīng)有一節(jié)“本章小結(jié)”。</p><p><b> 1.4.3 結(jié)論</b></p><p> 結(jié)論作為單獨一章排列,但不加章號。&
105、lt;/p><p> 結(jié)論是對整個論文主要成果的歸納,要突出設(shè)計(論文)的創(chuàng)新點,以簡練的文字對論文的主要工作進行評價,一般為400~1 000字。</p><p><b> 1.5 參考文獻</b></p><p> 參考文獻是論文不可缺少的組成部分,它反映了論文的取材來源和廣博程度。論文中要注重引用近期發(fā)表的與論文工作直接有關(guān)的學術(shù)期刊類
106、文獻。對理工類論文,參考文獻數(shù)量一般應(yīng)在15篇以上,其中學術(shù)期刊類文獻不少于8篇,外文文獻不少于3篇;對文科類、管理類論文,參考文獻數(shù)量一般為10~20篇,其中學術(shù)期刊類文獻不少于8篇,外文文獻不少于3篇。</p><p> 在論文正文中必須有參考文獻的編號,參考文獻的序號應(yīng)按在正文中出現(xiàn)的順序排列。</p><p> 產(chǎn)品說明書、各類標準、各種報紙上刊登的文章及未公開發(fā)表的研究報告(
107、著名的內(nèi)部報告如PB、AD報告及著名大公司的企業(yè)技術(shù)報告等除外)不宜做為參考文獻引用。但對于工程設(shè)計類論文,各種標準、規(guī)范和手冊可作為參考文獻。</p><p> 引用網(wǎng)上參考文獻時,應(yīng)注明該文獻的準確網(wǎng)頁地址,網(wǎng)上參考文獻不包含在上述規(guī)定的文獻數(shù)量之內(nèi)。</p><p><b> 1.6 致謝</b></p><p> 對導師和給予指導
108、或協(xié)助完成論文工作的組織和個人表示感謝。內(nèi)容應(yīng)簡潔明了、實事求是,避免俗套。</p><p><b> 1.7 附錄</b></p><p> 如開題報告、文獻綜述、外文譯文及外文文獻復印件、公式的推導、程序流程圖、圖紙、數(shù)據(jù)表格等有些不宜放在正文中,但有參考價值的內(nèi)容可編入論文的附錄中。</p><p><b> 2、論文書寫
109、規(guī)定</b></p><p> 2.1 論文正文字數(shù)</p><p> 理工類 論文正文字數(shù)不少于20 000字。</p><p> 文管類 論文正文字數(shù)12 000-20 000字。其中漢語言文學專業(yè)不少于7 000字。</p><p> 外語類 論文正文字數(shù)8 000-10 000個外文單詞。</p>
110、<p> 藝術(shù)類 論文正文字數(shù)3 000~5 000字。</p><p><b> 2.2 論文書寫</b></p><p> 本科生畢業(yè)論文用B5紙計算機排版、編輯與雙面打印輸出。</p><p> 論文版面設(shè)置為:畢業(yè)論文B5紙、縱向、為橫排、不分欄,上下頁邊距分別為2.5cm和2cm,左右頁邊距分別為2.4cm和2
111、cm,對稱頁邊距、左側(cè)裝訂并裝訂線為0cm、奇偶頁不同、無網(wǎng)格。論文正文滿頁為29行,每行33個字,字號為小四號宋體,每頁版面字數(shù)為957個,行間距為固定值20磅。</p><p> 頁眉。頁眉應(yīng)居中置于頁面上部。單數(shù)頁眉的文字為“章及標題”;雙數(shù)頁眉的文字為“大學本科生畢業(yè)設(shè)計(論文)”。頁眉的文字用五號宋體,頁眉文字下面為2條橫線(兩條橫線的長度與版芯尺寸相同,線粗0.5磅)。頁眉、頁腳邊距分別為1.8cm
112、和1.7cm。</p><p> 頁碼。頁碼用小五號字,居中標于頁面底部。摘要、目錄等文前部分的頁碼用羅馬數(shù)字單獨編排,正文以后的頁碼用阿拉伯數(shù)字編排。</p><p><b> 2.3 摘要</b></p><p> 中文摘要一般為300字左右,外文摘要應(yīng)與中文摘要內(nèi)容相同,在語法、用詞和書寫上應(yīng)正確無誤,摘要頁勿需寫出論文題目。中、外
113、文摘要應(yīng)各占一頁,編排裝訂時放置正文前,并且中文在前,外文在后。</p><p><b> 2.4 目錄</b></p><p> 目錄應(yīng)包括論文中全部章節(jié)的標題及頁碼,含中、外文摘要;正文章、節(jié)題目;</p><p> 參考文獻;致謝;附錄。</p><p> 正文章、節(jié)題目(理工類要求編寫到第3級標題,即□.
114、□.□。文科、管理類可視論文需要進行,編寫到2~3級標題。)</p><p><b> 2.5 論文正文</b></p><p> 2.5.1 章節(jié)及各章標題</p><p> 論文正文分章、節(jié)撰寫,每章應(yīng)另起一頁。</p><p> 各章標題要突出重點、簡明扼要。字數(shù)一般在15字以內(nèi),不得使用標點符號。標題中盡
115、量不用英文縮寫詞,對必須采用者,應(yīng)使用本行業(yè)的通用縮寫詞。</p><p><b> 2.5.2 層次</b></p><p> 層次以少為宜,根據(jù)實際需要選擇。層次代號格式見表1和表2。</p><p> 表1 理工類論文層次代號及說明</p><p> ↑
116、 ↑</p><p> 版心左邊線 版心右邊線</p><p> 表2 文管類論文層次代號及說明</p><p> ↑ ↑</p><p> 版心左邊線
117、 版心右邊線</p><p> 各層次題序及標題不得置于頁面的最后一行(孤行)。</p><p><b> 2.6 參考文獻</b></p><p> 正文中引用文獻標示應(yīng)置于所引內(nèi)容最末句的右上角,用小五號字體。所引文獻編號用阿拉伯數(shù)字置于方括號“[ ]”中,如“二次銑削[1]”。當提
118、及的參考文獻為文中直接說明時,其序號應(yīng)該與正文排齊,如“由文獻[8,10~14]可知”。</p><p> 經(jīng)濟、管理類論文引用文獻,若引用的是原話,要加引號,一般寫在段中;若引的不是原文只是原意,文前只需用冒號或逗號,而不用引號。在參考文獻之外,若有注釋的話,建議采用夾注,即緊接文句,用圓括號標明。</p><p> 不得將引用文獻標示置于各級標題處。</p><
119、p> 參考文獻書寫格式應(yīng)符合GB7714-1987《文后參考文獻著錄規(guī)則》。常用參考文獻編寫項目和順序應(yīng)按文中引用先后次序規(guī)定如下:</p><p><b> 著作圖書文獻</b></p><p> 序號└─┘作者.書名(版次).出版地:出版者,出版年:引用部分起止頁</p><p><b> 第一版應(yīng)省略</b&
120、gt;</p><p><b> 翻譯圖書文獻</b></p><p> 序號└─┘作者.書名(版次).譯者.出版地: 出版者,出版年:引用部分起止頁</p><p><b> 第一版應(yīng)省略</b></p><p><b> 學術(shù)刊物文獻</b></p>
121、<p> 序號└─┘作者.文章名.學術(shù)刊物名.年,卷(期):引用部分起止頁</p><p><b> 學術(shù)會議文獻</b></p><p> 序號└─┘作者.文章名.編者名.會議名稱,會議地址,年份.出版地,出版者,</p><p> 出版年:引用部分起止頁</p><p><b> 學位論
122、文類參考文獻</b></p><p> 序號└─┘研究生名.學位論文題目.出版地.學校(或研究單位)及學位論文級別.答</p><p> 辯年份:引用部分起止頁 </p><p> 西文文獻中第一個詞和每個實詞的第一個字母大寫,余者小寫;俄文文獻名第一個詞和專有名詞的第一個字母大寫,余者小寫;日文文獻中的漢字須用日文漢字,不得用中文漢字、簡化漢字代
123、替。文獻中的外文字母一律用正體。</p><p> 作者為多人時,一般只列出前3名作者,不同作者姓名間用逗號相隔。外文姓名按國際慣例,將作者名的縮寫置前,作者姓置后。</p><p> 學術(shù)會議若出版論文集者,可在會議名稱后加上“論文集”字樣。未出版論文集者省去“出版者”、“出版年”兩項。會議地址與出版地相同者省略“出版地”。會議年份與出版年相同者省略“出版年”。</p>
124、<p> 學術(shù)刊物文獻無卷號的可略去此項,直接寫“年,(期)”。</p><p> 參考文獻序號頂格書寫,不加括號與標點,其后空一格寫作者名。序號應(yīng)按文獻在論文中的被引用順序編排。換行時與作者名第一個字對齊。若同一文獻中有多處被引用,則要寫出相應(yīng)引用頁碼,各起止頁碼間空一格,排列按引用順序,不按頁碼順序。</p><p> 參考文獻書寫格式示例見附錄1。</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- vhdl電子琴的設(shè)計
- eda電子密碼課程設(shè)計---基于vhdl文本輸入法的電子密碼鎖的設(shè)計
- 基于fpga的簡易電子琴設(shè)計
- 基于fpga的簡易電子琴實現(xiàn)
- 畢業(yè)設(shè)計--簡易電子琴的設(shè)計
- 簡易電子琴課程設(shè)計
- 簡易電子琴課程設(shè)計
- 簡易電子琴課程設(shè)計
- 基于at89c52的簡易電子琴設(shè)計
- 簡易電子琴的制作畢業(yè)設(shè)計
- 基于51單片機簡易電子琴設(shè)計
- 電子琴簡譜簡易教程
- 簡易電子琴課程設(shè)計 (2)
- 課程設(shè)計報告--- 簡易電子琴
- 基于單片機的簡易電子琴課程設(shè)計
- 單片機電子琴課程設(shè)計--帶存儲播放功能的簡易電子琴設(shè)計
- 基于單片機的簡易電子琴課程設(shè)計
- 聲光電子琴畢業(yè)論文--基于51單片機簡易電子琴設(shè)計
- fpga課程設(shè)計報告--簡易電子琴的設(shè)計
- 電子琴課程設(shè)計--基于單片機的電子琴設(shè)計
評論
0/150
提交評論