EDA簡易電子琴設(shè)計(jì)報(bào)告_第1頁
EDA簡易電子琴設(shè)計(jì)報(bào)告_第2頁
EDA簡易電子琴設(shè)計(jì)報(bào)告_第3頁
EDA簡易電子琴設(shè)計(jì)報(bào)告_第4頁
EDA簡易電子琴設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

..一、題目分析1、分析要求,確定總體方框圖本設(shè)計(jì)基本部分是用VHDL語言設(shè)計(jì)一個(gè)簡易的八音符電子琴,在

Quartus

II

平臺(tái)下下載到Cyclone系列的EP1C12Q240C8芯片中,該電路設(shè)計(jì)能夠?qū)崿F(xiàn)DO、RE、MI、FA等八個(gè)音調(diào)的電子琴,發(fā)揮部分是設(shè)計(jì)一樂曲自動(dòng)演奏器,用戶自己編制樂曲存入電子琴,電子琴可以完成自動(dòng)演奏。電子琴音樂產(chǎn)生原理及硬件設(shè)計(jì)由于一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了。根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖1所示,它由樂曲自動(dòng)演奏模塊AUTO、音調(diào)發(fā)生模塊TONE和數(shù)控分頻模塊FENPIN三部分組成。圖1系統(tǒng)的整體組裝設(shè)計(jì)原理圖2、最終完成的技能指標(biāo)〔1設(shè)計(jì)一個(gè)簡易的八音符電子琴,它可通過按鍵輸入來控制音響?!?演奏時(shí)可以選擇是手動(dòng)演奏〔由鍵盤輸入還是自動(dòng)演奏已存入的樂曲。二、選擇方案通過可編程邏輯器件〔PLD和VHDL硬件描述引言來實(shí)現(xiàn)電子琴的基本部分和發(fā)揮部分的設(shè)計(jì)。對(duì)于基本部分,設(shè)計(jì)的主體是數(shù)控分頻器,對(duì)輸入的頻率進(jìn)行分頻,得到各個(gè)音階對(duì)應(yīng)的頻率最為輸出。當(dāng)按下不同的鍵時(shí)發(fā)出不同的聲音。對(duì)于發(fā)揮部分,則在原設(shè)計(jì)的基礎(chǔ)上,增加一個(gè)樂曲存儲(chǔ)模塊,代替了鍵盤輸入,產(chǎn)生節(jié)拍控制〔index數(shù)據(jù)存留時(shí)間和音階選擇信號(hào),即在此模塊中可存放一個(gè)樂曲曲譜真值表,由一個(gè)計(jì)數(shù)器來控制此真值表的輸出,而由此計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號(hào)作為樂曲節(jié)拍控制信號(hào),從而可以設(shè)計(jì)出一個(gè)純硬件的樂曲自動(dòng)演奏電路。方案一:由單片機(jī)來完成設(shè)計(jì)??捎脝纹瑱C(jī)控制鍵盤的輸入,以及產(chǎn)生相應(yīng)的頻率信號(hào)作為輸出。目前,單片機(jī)的功能已比較強(qiáng)大,集成度日益增高且其設(shè)計(jì)和控制比較容易。但是由于在傳統(tǒng)的單片機(jī)設(shè)計(jì)系統(tǒng)中必須使用許多分立元件組成單片機(jī)的外圍電路,如鎖存器,譯碼器等都需要單獨(dú)的電路,因此整個(gè)系統(tǒng)顯得十分復(fù)雜,抗干擾性差,在運(yùn)行過程中容易死機(jī)或進(jìn)入死循環(huán),可靠性降低,而功耗費(fèi)用增高。方案二:利用PLC來完成設(shè)計(jì)。目前利用PLC的技術(shù)已經(jīng)比較成熟。PLC有其優(yōu)點(diǎn),其性能優(yōu)異,體積小,可靠性和精度都比較好,在電子琴的設(shè)計(jì)中可采用PLC來完成硬件的控制,但是用PLC實(shí)現(xiàn)編程相對(duì)比較復(fù)雜,對(duì)于電子琴這種小型設(shè)計(jì)來說成本過高。方案三:利用可編程邏輯器件PLD來完成該設(shè)計(jì)。利用PLD可以很好的解決上述的問題。它的成品體積小,適合電子琴這種小型設(shè)計(jì)。其性能穩(wěn)定,控制精度高〔Xilinx公司的高密度,高速可預(yù)測延時(shí),高性能系列芯片,易于管理和屏蔽,抗干擾能力強(qiáng),可靠性高。綜上,在本設(shè)計(jì)中選擇第三種方案最優(yōu)。三、各模塊原理及其程序1、樂曲自動(dòng)演奏模塊樂曲自動(dòng)演奏模塊〔AUTO.VHD的作用是產(chǎn)生8位發(fā)聲控制輸入信號(hào)/當(dāng)進(jìn)行自動(dòng)演奏時(shí),由存儲(chǔ)在此模塊中的8位二進(jìn)制數(shù)作為發(fā)聲控制輸入,從而自動(dòng)演奏樂曲。為了實(shí)現(xiàn)擴(kuò)展部分的設(shè)計(jì),便需要多加上一個(gè)音樂存儲(chǔ)模塊,該模塊的作用是產(chǎn)生8位發(fā)聲控制輸入index,auto為0或1時(shí)可以選擇自動(dòng)演奏或者鍵盤輸入,如果auto為0,則而由存儲(chǔ)在此模塊中的8位二進(jìn)制數(shù)來作為發(fā)聲控制輸入,由此便可自動(dòng)演奏樂曲。此模塊的VHDL語言中包括兩個(gè)進(jìn)程,首先是對(duì)基準(zhǔn)脈沖進(jìn)行分頻得到4Hz的脈沖,作為第二個(gè)進(jìn)程的時(shí)鐘信號(hào),它的目的是控制每個(gè)音階之間的停頓時(shí)間,此處便是1/4=0.25s,第二個(gè)進(jìn)程是音樂的存儲(chǔ),可根據(jù)需要編寫不同的樂曲。這段模塊的原理圖如圖2所示:CLKCLKAUTOINDEX0[7.0]INDEX2[7.0]圖2樂曲自動(dòng)演奏模塊原理圖樂曲自動(dòng)演奏模塊可以由VHDL語言來實(shí)現(xiàn),下面是一段主要代碼:BEGINIFAUTO='0'THENCASECOUNT0ISWHEN0=>INDEX0<="00000100";--3WHEN1=>INDEX0<="00000100";--3WHEN2=>INDEX0<="00000100";--3WHEN3=>INDEX0<="00000100";--3WHEN4=>INDEX0<="00010000";--5WHEN5=>INDEX0<="00010000";--5WHEN6=>INDEX0<="00010000";--5WHEN7=>INDEX0<="00100000";--6WHEN8=>INDEX0<="10000000";--8WHEN9=>INDEX0<="10000000";--8WHEN10=>INDEX0<="10000000";--8WHEN11=>INDEX0<="00000100";--3WHEN12=>INDEX0<="00000010";--2WHEN13=>INDEX0<="00000010";--2WHEN14=>INDEX0<="00000001";--1WHEN15=>INDEX0<="00000001";--1WHEN16=>INDEX0<="00010000";--5WHEN17=>INDEX0<="00010000";--5WHEN18=>INDEX0<="00001000";--4WHEN19=>INDEX0<="00001000";--4WHEN20=>INDEX0<="00001000";--4WHEN21=>INDEX0<="00000100";--3WHEN22=>INDEX0<="00000010";--2WHEN23=>INDEX0<="00000010";--2WHEN24=>INDEX0<="00010000";--5WHEN25=>INDEX0<="00010000";--5WHEN26=>INDEX0<="00001000";--4WHEN27=>INDEX0<="00001000";--4WHEN28=>INDEX0<="00000100";--3WHEN29=>INDEX0<="00000100";--3WHEN30=>INDEX0<="00000010";--2WHEN31=>INDEX0<="00000010";--2WHENOTHERS=>NULL;ENDCASE;ELSEINDEX0<=INDEX2;ENDIF;ENDPROCESS;ENDBEHAVIORAL;2、音調(diào)發(fā)生模塊音調(diào)發(fā)生模塊〔TONE.VDL的作用是產(chǎn)生獲得音階的分頻預(yù)置值。當(dāng)8位發(fā)聲控制輸入index中的某一位為高電平時(shí),則對(duì)應(yīng)某一音階的數(shù)值將以端口tone輸出,作為獲得該音階的分頻預(yù)置值,該值作為數(shù)控分頻器的輸入,來對(duì)4MHz的脈沖進(jìn)行分頻,由此得到每個(gè)音階相應(yīng)的頻率,例如輸入index="00000010",即對(duì)應(yīng)的按鍵是2,產(chǎn)生的分頻系數(shù)便是6809;由code輸出對(duì)應(yīng)該音階簡譜的顯示數(shù)碼;由high輸出指示音階高8度的顯示,低電平有效。這段模塊的原理圖如圖3所示:TONE[10.0]TONE[10.0]INDEX[7.0]HIGHCODE[6.0]圖3音調(diào)發(fā)生模塊原理圖音調(diào)發(fā)生模塊可以由VHDL語言來實(shí)現(xiàn),下面是一段主要代碼:BEGINCASEINDEXISWHEN"00000001"=>TONE0<=773;CODE<="1001111";HIGH<='1';WHEN"00000010"=>TONE0<=912;CODE<="0010010";HIGH<='1';WHEN"00000100"=>TONE0<=1036;CODE<="0000110";HIGH<='1';WHEN"00001000"=>TONE0<=1116;CODE<="1001100";HIGH<='1';WHEN"00010000"=>TONE0<=1197;CODE<="0100100";HIGH<='1';WHEN"00100000"=>TONE0<=1290;CODE<="0100000";HIGH<='0';WHEN"01000000"=>TONE0<=1372;CODE<="0001111";HIGH<='0';WHEN"10000000"=>TONE0<=1410;CODE<="0000000";HIGH<='0';WHENOTHERS=>TONE0<=2047;CODE<="0000001";HIGH<='0';ENDCASE;ENDPROCESS;3、數(shù)控分頻模塊在對(duì)EDA的學(xué)習(xí)中,我們知道數(shù)控分頻器的功能是在輸入端輸入不同數(shù)據(jù)時(shí),對(duì)輸入時(shí)鐘產(chǎn)生不同的分頻比,輸出不同頻率的時(shí)鐘,以改變輸出信號(hào)的頻率。本設(shè)計(jì)中數(shù)控分頻模塊是利用并行預(yù)置數(shù)的減法計(jì)數(shù)器對(duì)時(shí)基脈沖進(jìn)行分頻,得到與1、2、3、4、5、6、7七個(gè)音符相對(duì)應(yīng)的頻率。該模塊的VHDL描述中包含了三個(gè)進(jìn)程。首先對(duì)32MHz的基準(zhǔn)脈沖進(jìn)行分頻得到8MHz的脈沖,然后按照tone1輸入的分頻系數(shù)對(duì)4MHz的脈沖再次分頻,得到的便是所需要的頻率。而第三個(gè)進(jìn)程的作用是在音調(diào)輸出時(shí)再進(jìn)行二分頻,將脈沖展寬,以使揚(yáng)聲器有足夠功率發(fā)音。這段模塊的原理圖如圖4所示:CLK1SPKSCLK1SPKSTONE1[10.0]圖4數(shù)控分頻模塊原理圖數(shù)控分頻模塊可以由VHDL語言來實(shí)現(xiàn),下面是一段主要代碼:BEGINPROCESS<CLK1>VARIABLECOUNT:INTEGERRANGE0TO8;BEGINIF<CLK1'EVENTANDCLK1='1'>THENCOUNT:=COUNT+1;IFCOUNT=2THENPRECLK<='1';ELSIFCOUNT=4THENPRECLK<='0';COUNT:=0;ENDIF;ENDIF;ENDPROCESS;PROCESS<PRECLK,TONE1>VARIABLECOUNT11:INTEGERRANGE0TO2047;BEGINIF<PRECLK'EVENTANDPRECLK='1'>THENIFCOUNT11<TONE1THENCOUNT11:=COUNT11+1;FULLSPKS<='1';ELSECOUNT11:=0;FULLSPKS<='0';ENDIF;ENDIF;ENDPROCESS;PROCESS<FULLSPKS>VARIABLECOUNT2:STD_LOGIC:='0';BEGINIF<FULLSPKS'EVENTANDFULLSPKS='1'>THENCOUNT2:=NOTCOUNT2;IFCOUNT2='1'THENSPKS<='1';ELSESPKS<='0';ENDIF;ENDIF;ENDPROCESS;4、頂層設(shè)計(jì)該DIANZIQIN模塊是整個(gè)電子琴設(shè)計(jì)的核心,也是VHDL程序的主程序,前面3個(gè)源程序都是作為子程序分別實(shí)現(xiàn)電子琴的某一功能,而DIANZIQIN模塊則通過調(diào)用子程序最終實(shí)現(xiàn)樂曲演奏的目的,奏出美妙的樂曲。利用VHDL語言COMPONENT將三個(gè)模塊組合起來,其中3個(gè)模塊和DIANZIQIN模塊的輸入輸出是一一對(duì)應(yīng)的,該模塊的符號(hào)編輯圖如圖5。圖5頂層設(shè)計(jì)模塊符號(hào)編輯圖四、編程下載測試1、功能仿真功能仿真用于綜合前檢查設(shè)計(jì)的邏輯功能是否符合設(shè)計(jì)要求。仿真過程中可以通過觀察檢測設(shè)計(jì)的輸入信號(hào),輸出信號(hào)以及內(nèi)部信號(hào)以檢測設(shè)計(jì)的邏輯功能。如果仿真都通過的話就可以進(jìn)行引腳鎖定,然后下載程序,在實(shí)驗(yàn)箱上可以直觀的看到結(jié)果。〔1樂曲自動(dòng)演奏模塊的仿真〔如圖6所示圖6樂曲自動(dòng)演奏模塊的仿真該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK初值設(shè)為0,自動(dòng)演奏AUTO設(shè)為1,鍵盤輸入信號(hào)INDEX2為00,INDEX0為音符信號(hào)輸出,是8位的二進(jìn)制代碼它根據(jù)COUNT0的值改變而改變。〔2音調(diào)發(fā)生模塊的仿真〔如圖7圖7音調(diào)發(fā)生模塊的仿真該圖輸入音符信號(hào)INDEX初值為00,輸出是音符顯示信號(hào)CODE為01,高低音顯示信號(hào)為0,音符的分頻系數(shù)為11111111即2047Hz?!?數(shù)控分頻模塊的仿真〔如圖8圖8數(shù)控分頻模塊的仿真該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK1初值為0〔各輸出值都是在時(shí)鐘信號(hào)的下降沿有效,音符分頻系數(shù)TONE1為00100000即1290Hz,驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)SPKS輸出為1?!?簡易電子琴整個(gè)系統(tǒng)的仿真〔如圖9圖9簡易電子琴整個(gè)系統(tǒng)的仿真該圖輸入系統(tǒng)時(shí)鐘信號(hào)CLK初值為0,自動(dòng)演奏信號(hào)HANDTOAUTO初值為0,鍵盤輸入信號(hào)INDEX1為00000000;輸出音符信號(hào)CODE1則為0110000,高低音節(jié)信號(hào)HIGH1變?yōu)?,即高音,音頻信號(hào)SPKOUT即輸出0,輸出為1時(shí)CODE1變?yōu)?110100。2、鎖定引腳:圖10引腳鎖定3、硬件測試結(jié)果選擇模式3,PIO31控制是否自動(dòng)播放預(yù)置歌曲或手動(dòng)鍵入歌曲,可通過按鍵1—8演奏歌曲。五、課程總結(jié)在整個(gè)設(shè)計(jì)過程中,我通過查閱大量有關(guān)資料,與同學(xué)交流經(jīng)驗(yàn)和自學(xué),并向老師請(qǐng)教等方式,使自己學(xué)到了不少知識(shí),也經(jīng)歷了不少艱辛,但收獲同樣巨大。在整個(gè)設(shè)計(jì)中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對(duì)自己工作能力的信心,相信會(huì)對(duì)今后的學(xué)習(xí)工作生活有非常重要的影響。同時(shí)大大提高了動(dòng)手的能力,使我充分體會(huì)到了在創(chuàng)造過程中探索的艱難和成功時(shí)的喜悅。雖然這個(gè)設(shè)計(jì)做的也不太好,功能并沒有完全實(shí)現(xiàn),但是在設(shè)計(jì)過程中所學(xué)到的東西是這次課程設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。通過這次VHDL課程設(shè)計(jì),不僅增強(qiáng)了我們的實(shí)踐動(dòng)手能力,也讓我們對(duì)課堂上所學(xué)到的理論知識(shí)的理解加深了許多,這給我們提供了一個(gè)在學(xué)習(xí)生活中很難得的理論聯(lián)系實(shí)際的機(jī)會(huì)。能夠借此機(jī)會(huì)了解到部分EDA技術(shù)的知識(shí)和學(xué)習(xí)運(yùn)用其中一種硬件描述語言VHDL編程實(shí)現(xiàn)各種常用器件的功能,這是在任何課堂上都得不到的一筆財(cái)富。另一方面我們也發(fā)現(xiàn)了在平時(shí)學(xué)習(xí)過程中難于發(fā)現(xiàn)的許多缺點(diǎn)跟不足。比如實(shí)踐機(jī)會(huì)過少,所學(xué)的理論知識(shí)不能靈活運(yùn)用,在遇到實(shí)際的問題時(shí)無法正確處理;再者在課堂上獲得的專業(yè)知識(shí)過于淺顯,很多的有關(guān)基本操作原理、操作方法都理解不了;課外知識(shí)了解的也過少,導(dǎo)致在課程設(shè)計(jì)初期,面對(duì)完全陌生的設(shè)計(jì)課題無從下手,不知所措。這就提醒我們?cè)谄綍r(shí)的學(xué)習(xí)生活中不能一味埋頭于面前的課本知識(shí),畢竟當(dāng)今社會(huì)競爭越發(fā)激烈,而學(xué)校能教授的東西有限,要想在人才市場中脫穎而出就只能靠我們自己。當(dāng)然,在學(xué)習(xí)之余我們更應(yīng)該積極參加各種有關(guān)專業(yè)知識(shí)的實(shí)踐活動(dòng)和比賽,鞏固所學(xué)理論,多注意培養(yǎng)初步的實(shí)際工作能力和專業(yè)技術(shù)能力,這樣在以后的工作崗位上不會(huì)顯得那么倉促與生疏。六、參考文獻(xiàn)目錄[1]黃正謹(jǐn),在系統(tǒng)編程技術(shù)及其應(yīng)用,東南大學(xué)出版社[2]劉江海.,EDA技術(shù)課程設(shè)計(jì).華中科技大學(xué)出版社[3]王誠,吳繼華,AlteraFPGA/CPLD設(shè)計(jì),人民郵電出版社[4]張紅潤,張亞凡,FPGA/CPLD應(yīng)用設(shè)計(jì)200例,北京航空航天大學(xué)出版社[5]王鎖萍,電子設(shè)計(jì)自動(dòng)化〔EDA教程,電子科技大學(xué)出版社七、附錄源程序如下:1、自動(dòng)演奏模塊程序〔AUTO.VHD:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYAUTOISPORT<CLK:INSTD_LOGIC;--系統(tǒng)時(shí)鐘;鍵盤輸入/自動(dòng)演奏AUTO:INSTD_LOGIC;

--鍵盤輸入信號(hào)CLK2:BUFFERSTD_LOGIC;--音符信號(hào)輸出INDEX2:INSTD_LOGIC_VECTOR<7DOWNTO0>;INDEX0:OUTSTD_LOGIC_VECTOR<7DOWNTO0>>;ENDAUTO;ARCHITECTUREBEHAVIORALOFAUTOISSIGNALCOUNT0:INTEGERRANGE0TO31;BEGINPULSE0:PROCESS<CLK,AUTO>

--此進(jìn)程完成對(duì)系統(tǒng)時(shí)鐘8M的分頻,得到4Hz的信號(hào)clk2VARIABLECOUNT:INTEGERRANGE0TO8;--定義計(jì)數(shù)器變量,值從0到8BEGINIFAUTO='1'THEN--鍵盤輸入為1COUNT:=0;CLK2<='0';--計(jì)數(shù)器值指0,時(shí)鐘信號(hào)為0ELSIF<CLK'EVENTANDCLK='1'>THEN--時(shí)鐘輸入信號(hào)為1COUNT:=COUNT+1;--計(jì)數(shù)器加1IFCOUNT=4THENCLK2<='1';ELSIFCOUNT=8THENCLK2<='0';COUNT:=0;ENDIF;ENDIF;ENDPROCESS;MUSIC:PROCESS<CLK2>--此進(jìn)程完成自動(dòng)演奏部分曲的地址累加BEGINIF<CLK2'EVENTANDCLK2='1'>THENIF<COUNT0=31>THENCOUNT0<=0;ELSECOUNT0<=COUNT0+1;ENDIF;ENDIF;ENDPROCESS;COM1:PROCESS<COUNT0,AUTO,INDEX2>BEGINIFAUTO='0'THENCASECOUNT0IS--此case語句:存儲(chǔ)自動(dòng)演奏部分的曲WHEN0=>INDEX0<="00000100";--3WHEN1=>INDEX0<="00000100";--3WHEN2=>INDEX0<="00000100";--3WHEN3=>INDEX0<="00000100";--3WHEN4=>INDEX0<="00010000";--5WHEN5=>INDEX0<="00010000";--5WHEN6=>INDEX0<="00010000";--5WHEN7=>INDEX0<="00100000";--6WHEN8=>INDEX0<="10000000";--8WHEN9=>INDEX0<="10000000";--8WHEN10=>INDEX0<="10000000";--8WHEN11=>INDEX0<="00000100";--3WHEN12=>INDEX0<="00000010";--2WHEN13=>INDEX0<="00000010";--2WHEN14=>INDEX0<="00000001";--1WHEN15=>INDEX0<="00000001";--1WHEN16=>INDEX0<="00010000";--5WHEN17=>INDEX0<="00010000";--5WHEN18=>INDEX0<="00001000";--4WHEN19=>INDEX0<="00001000";--4WHEN20=>INDEX0<="00001000";--4WHEN21=>INDEX0<="00000100";--3WHEN22=>INDEX0<="00000010";--2WHEN23=>INDEX0<="00000010";--2WHEN24=>INDEX0<="00010000";--5WHEN25=>INDEX0<="00010000";--5WHEN26=>INDEX0<="00001000";--4WHEN27=>INDEX0<="00001000";--4WHEN28=>INDEX0<="00000100";--3WHEN29=>INDEX0<="00000100";--3WHEN30=>INDEX0<="00000010";--2WHEN31=>INDEX0<="00000010";--2WHENOTHERS=>NULL;ENDCASE;ELSEINDEX0<=INDEX2;--此進(jìn)程完成自動(dòng)演奏部分曲的地址累加ENDIF;ENDPROCESS;ENDBEHAVIORAL;2、數(shù)控分頻模塊程序〔FENPIN.VHD:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYFENPINISPORT<CLK1:INSTD_LOGIC;--定義系統(tǒng)時(shí)鐘TONE1:ININTEGERRANGE0TO2047;--定義音符分頻系數(shù),從0到2047HzSPKS:OUTSTD_LOGIC>;--定義驅(qū)動(dòng)揚(yáng)聲器的音頻信號(hào)ENDENTITYFENPIN;ARCHITECTUREARTOFFENPINISSIGNALPRECLK:STD_LOGIC;SIGNALFULLSPKS:STD_LOGIC;BEGINPROCESS<CLK1>VARIABLECOUNT:INTEGERRANGE0TO8;--此進(jìn)程對(duì)系統(tǒng)時(shí)鐘進(jìn)行4分頻BEGINIF<CLK1'EVENTANDCLK1='1'>THENCOUNT:=COUNT+1;IFCOUNT=2THENPRECLK<='1';ELSIFCOUNT=4THENPRECLK<='0';COUNT:=0;ENDIF;ENDIF;ENDPROCESS;PROCESS<PRECLK,TONE1>--此進(jìn)程按照tone1輸入==分頻系數(shù)對(duì)8MHz的脈沖再次分頻,得到所需要的音符頻率VARIABLECOUNT11:INTEGERRANGE0TO2047;BEGINIF<PRECLK'EVENTANDPRECLK='1'>THENIFCOUNT11<TONE1THENCOUNT11:=COUNT11+1;FULLSPKS<='1';ELSECOUNT11:=0;FULLSPKS<='0';--此進(jìn)程對(duì)FULLSPKS進(jìn)行2分頻ENDIF;ENDIF;ENDPROCESS;PROCESS<FULLSPKS>VARIABLECOUNT2:STD_LOGIC:='0';BEGINIF<FULLSPKS'EVENTANDFULLSPKS='1'>THENCOUNT2:=NOTCOUNT2;IFCOUNT2='1'THENSPKS<='1';ELSESPKS<='0';ENDI

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論