版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
學(xué)習(xí)情境三:簡(jiǎn)易電子琴《EDA技術(shù)》1Doc.numbertobeenteredby"HeaderandFooter"主要內(nèi)容A.項(xiàng)目任務(wù)B.項(xiàng)目目標(biāo)C.實(shí)施步驟D.相關(guān)知識(shí)E.評(píng)價(jià)與總結(jié)《EDA技術(shù)》2Doc.numbertobeenteredby"HeaderandFooter"A.項(xiàng)目任務(wù)
掌握基本的VHDL語(yǔ)言。用VHDL語(yǔ)言設(shè)計(jì)樂(lè)音的節(jié)拍與音符產(chǎn)生電路;用VHDL語(yǔ)言設(shè)計(jì)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;用VHDL語(yǔ)言設(shè)計(jì)可控分頻器電路;用VHDL語(yǔ)言設(shè)計(jì)琴鍵輸入電路。理解簡(jiǎn)易電子琴總體設(shè)計(jì)方案,把音樂(lè)播放與演奏電路總裝成簡(jiǎn)易電子琴。B.項(xiàng)目目標(biāo)任務(wù)1.1目標(biāo):掌握基本的VHDL語(yǔ)言;理解音樂(lè)播放電路設(shè)計(jì)方案。掌握用VHDL語(yǔ)言設(shè)計(jì)節(jié)拍與音符產(chǎn)生電路;掌握用VHDL語(yǔ)言設(shè)計(jì)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;掌握用VHDL語(yǔ)言設(shè)計(jì)可控分頻器電路。設(shè)計(jì)結(jié)果:原理圖與原程序、電路仿真圖、能在實(shí)訓(xùn)系統(tǒng)上播放悅耳動(dòng)聽(tīng)的音樂(lè)。任務(wù)1.2目標(biāo):掌握鍵盤(pán)電路設(shè)計(jì)、鍵盤(pán)輸入去抖動(dòng)方法;掌握層次電路設(shè)計(jì)方法;初步具備獨(dú)立的VHDL編程能力。設(shè)計(jì)結(jié)果:原理圖與原程序、電路仿真圖、能在實(shí)訓(xùn)系統(tǒng)上彈奏曲子或播放悅耳動(dòng)聽(tīng)的音樂(lè)。C.實(shí)施步驟任務(wù)3.1實(shí)施步驟一、資訊
1.明確任務(wù)一般來(lái)說(shuō),所有樂(lè)音有四個(gè)基本要素——“音的長(zhǎng)短”(決定節(jié)拍)、“音的高低”(頻率決定)、“音的強(qiáng)度”、“音色”。而其中最重要的是“音的長(zhǎng)短”和“音的高低”。為了簡(jiǎn)化設(shè)計(jì),本任務(wù)設(shè)計(jì)的音樂(lè)播放電路只考慮音的最重要的兩個(gè)方面:“音的長(zhǎng)短”和“音的高低”,忽略音的強(qiáng)度和音色。要求音樂(lè)播放電路最少能連續(xù)循環(huán)播放一首歌曲,在此基礎(chǔ)上可再做進(jìn)一步的擴(kuò)展。為實(shí)現(xiàn)播放“音的長(zhǎng)短”和“音的高低”,可根據(jù)樂(lè)譜用一個(gè)控制電路模塊產(chǎn)生“音的長(zhǎng)短”和“音的高低”信號(hào),控制電路模塊包括一個(gè)節(jié)拍產(chǎn)生子模塊(控制“音的長(zhǎng)短”)與音符產(chǎn)生子模塊(控制“音的高低”)。用一個(gè)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生模塊把音符信號(hào)轉(zhuǎn)換為分頻系數(shù)、音符顯示數(shù)據(jù)和高低音顯示電平。用一個(gè)可控分頻模塊根據(jù)分頻系數(shù)產(chǎn)生不同頻率信號(hào)驅(qū)動(dòng)喇叭或蜂鳴器播放音樂(lè)?!禘DA技術(shù)》6Doc.numbertobeenteredby"HeaderandFooter"電路輸入是兩路時(shí)鐘信號(hào):一路作為可控分頻電路模塊的輸入時(shí)鐘,經(jīng)可控分頻電路模塊分頻后,得到各種所需的樂(lè)音信號(hào)。另一路作為控制電路模塊的輸入時(shí)鐘,用來(lái)產(chǎn)生節(jié)拍。這兩路時(shí)鐘信號(hào)的頻率根據(jù)具體的實(shí)驗(yàn)條件和所選歌曲可有所不同。電路的輸出有:一路一線是樂(lè)音信號(hào)輸出,用來(lái)驅(qū)動(dòng)外接喇叭或蜂鳴器播放音樂(lè);一路四線用來(lái)驅(qū)動(dòng)外接的數(shù)碼管,顯示播放的音符簡(jiǎn)譜符號(hào);一路一線用來(lái)驅(qū)動(dòng)外接的一個(gè)LED,播放高音時(shí)發(fā)光。
2.查閱資料到圖書(shū)館、互聯(lián)網(wǎng)查找有關(guān)資料。前人發(fā)表的有關(guān)音樂(lè)電路的文章主要散見(jiàn)在學(xué)術(shù)期刊和有關(guān)網(wǎng)頁(yè)上。可用樂(lè)曲播放電路、音樂(lè)發(fā)生器等關(guān)鍵詞查找。另外,要理解這些文章所介紹的原理,還要具有音樂(lè)譜、樂(lè)音頻率的有關(guān)知識(shí)。任務(wù)3.1實(shí)施步驟《EDA技術(shù)》7Doc.numbertobeenteredby"HeaderandFooter"二、計(jì)劃音樂(lè)電路是模仿人歌唱的電路,故可用人歌唱作為原型來(lái)分析設(shè)計(jì)本任務(wù)的總體方案。人通過(guò)聲帶振動(dòng)發(fā)出聲音,聲帶振動(dòng)頻率不同發(fā)出不同聲音。故在用數(shù)字電路來(lái)模仿時(shí),用一個(gè)控制電路,實(shí)現(xiàn)聲帶振動(dòng)功能,控制音符信號(hào)的產(chǎn)生;用一個(gè)電路把音符信號(hào)轉(zhuǎn)換為可控分頻模塊可用的分頻系數(shù);可控分頻電路在分頻系數(shù)作用下產(chǎn)生不同頻率信號(hào)來(lái)驅(qū)動(dòng)外接喇叭或蜂鳴器播放音樂(lè)??刂齐娐纺K根據(jù)歌譜控制可控分頻電路模塊按照一定節(jié)拍在不同時(shí)間發(fā)出不同的樂(lè)音。而控制電路模塊應(yīng)該分為兩個(gè)子模塊,一個(gè)用于產(chǎn)生節(jié)拍,稱(chēng)節(jié)拍產(chǎn)生模塊;另一個(gè)用于根據(jù)歌譜控制可控分頻電路模塊在不同時(shí)間發(fā)出不同的樂(lè)音,稱(chēng)音符產(chǎn)生模塊。音樂(lè)電路是連續(xù)循環(huán)播放的,故控制電路模塊的核心部分——節(jié)拍產(chǎn)生模塊是一個(gè)計(jì)數(shù)器,每個(gè)狀態(tài)持續(xù)的時(shí)間是需播放的所有音的音長(zhǎng)的最小公因數(shù),比如是一個(gè)十六分音符時(shí)值,具體時(shí)間長(zhǎng)度應(yīng)根據(jù)需播放的歌曲而定。這樣,每個(gè)音符持續(xù)的時(shí)間是每個(gè)狀態(tài)持續(xù)的時(shí)間的整數(shù)倍,故占據(jù)整數(shù)倍個(gè)狀態(tài)。具體占據(jù)狀態(tài)的個(gè)數(shù)要根據(jù)每個(gè)音的音長(zhǎng)來(lái)決定。控制電路的計(jì)數(shù)器的模即狀態(tài)數(shù),可由需播放歌曲的各個(gè)音所占據(jù)狀態(tài)個(gè)數(shù)累加而得。例如,一首用于播放“梁祝”樂(lè)曲的音樂(lè)電路的控制電路的計(jì)數(shù)器的模是139。節(jié)拍產(chǎn)生電路的計(jì)數(shù)器是用來(lái)產(chǎn)生節(jié)拍定的,音符產(chǎn)生模塊則將節(jié)拍產(chǎn)生電路的計(jì)數(shù)器的狀態(tài)翻譯成對(duì)應(yīng)的音符,如需播放的歌曲中所用到的音符為9~16個(gè),則音符產(chǎn)生模塊的輸出信號(hào)應(yīng)有四位,其他情況依此類(lèi)推。任務(wù)3.1實(shí)施步驟《EDA技術(shù)》8Doc.numbertobeenteredby"HeaderandFooter"控制電路模塊只是根據(jù)歌譜產(chǎn)生控制可控分頻模塊按照一定節(jié)拍在不同時(shí)間發(fā)出不同樂(lè)音的音符信號(hào)??刂齐娐纺K要具體控制可控分頻模塊,還要把音符信號(hào)轉(zhuǎn)換為分頻系數(shù)作為可控分頻模塊的輸入信號(hào),也要根據(jù)音符信號(hào)決定提供給外圍數(shù)碼管的用于顯示簡(jiǎn)譜音符符號(hào)的數(shù)據(jù)和提供給外圍LED的用于顯示高低音的數(shù)據(jù),這就需要另一個(gè)模塊——分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊。分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊根據(jù)音符產(chǎn)生模塊輸出的音符信息,產(chǎn)生每個(gè)時(shí)刻提供給可控分頻模塊的分頻系數(shù)、提供給外圍數(shù)碼管的用于顯示譜音符符號(hào)的數(shù)據(jù)和提供給外圍LED的用于顯示高低音的數(shù)據(jù)??煽胤诸l模塊根據(jù)分頻系數(shù)產(chǎn)生不同頻率信號(hào)驅(qū)動(dòng)喇叭或蜂鳴器播放音樂(lè)。播放音樂(lè)電路設(shè)計(jì)總體參考方案如圖3-1所示,其中的兩個(gè)時(shí)鐘頻率的取值將在下面介紹實(shí)施的部分做分析。任務(wù)3.1實(shí)施步驟《EDA技術(shù)》9Doc.numbertobeenteredby"HeaderandFooter"。圖3-1播放電路總體方案任務(wù)3.1實(shí)施步驟《EDA技術(shù)》10Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟三、決策本音樂(lè)電路設(shè)計(jì)重點(diǎn)在控制電路模塊和可控分頻模塊設(shè)計(jì),下面討論這兩個(gè)模塊以及頂層模塊的設(shè)計(jì)方案的選擇。1、控制電路模塊(節(jié)拍產(chǎn)生模塊與音符產(chǎn)生模塊)設(shè)計(jì)方案的選擇節(jié)拍產(chǎn)生模塊是一個(gè)計(jì)數(shù)器,可采用通常的方法設(shè)計(jì)。音符產(chǎn)生模塊的輸入信號(hào)是節(jié)拍產(chǎn)生模塊輸出的計(jì)數(shù)值,輸出信號(hào)是表示音符的音符序號(hào)。在節(jié)拍產(chǎn)生模塊輸出的計(jì)數(shù)值變化范圍不大并且音符產(chǎn)生模塊的輸出數(shù)值不需靈活改變時(shí),可用VHDL語(yǔ)句直接來(lái)描述音符產(chǎn)生模塊。在節(jié)拍產(chǎn)生模塊輸出的計(jì)數(shù)值變化范圍較大或音符產(chǎn)生模塊的輸出數(shù)值需靈活改變時(shí),可使用LPM_ROM來(lái)存儲(chǔ)對(duì)應(yīng)于不同計(jì)數(shù)值的音符序號(hào)。2、可控分頻模塊設(shè)計(jì)方案的選擇
(1)等占空比和非等占空比方案選擇可控分頻電路按輸出時(shí)鐘的占空比來(lái)分,有等占空比和非等占空比兩類(lèi)方案。為了得到足夠驅(qū)動(dòng)蜂鳴器的功率,采用等占空比輸出的可控分頻電路方案。《EDA技術(shù)》11Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟(2)偶數(shù)分頻、整數(shù)分頻方案的選擇常見(jiàn)的分頻電路有偶數(shù)分頻、奇數(shù)分頻和整數(shù)分頻電路,本任務(wù)從原理來(lái)看,既有偶數(shù)分頻又有奇數(shù)分頻,故應(yīng)屬于整數(shù)分頻電路。非等占空比的偶數(shù)分頻、奇數(shù)分頻電路有統(tǒng)一的設(shè)計(jì)方法并且比較簡(jiǎn)單,但等占空比的偶數(shù)分頻、奇數(shù)分頻電路設(shè)計(jì)方法則不相同。對(duì)于偶數(shù)(2N)的等占空比分頻,可先做N非等占空比分頻,再做2分頻即可,比較簡(jiǎn)單。對(duì)于等占空比的奇數(shù)分頻電路則不能采用這種方法,比較復(fù)雜。本任務(wù)可采取用較高頻率(比如12MHz)的輸入時(shí)鐘,這樣分頻比就比較大,故對(duì)于初學(xué)者,作為初步解決方案,可采用偶數(shù)分頻比近似代替奇數(shù)分頻比的方法,把整數(shù)分頻電路變成偶數(shù)(2N)分頻電路,用先做N非等占空比分頻,再做2分頻這種較簡(jiǎn)單的方法來(lái)設(shè)計(jì);作為提高,可采用比較復(fù)雜的真正的整數(shù)分頻電路設(shè)計(jì)方法設(shè)計(jì)。3.、VHDL輸入設(shè)計(jì)法和原理圖輸入設(shè)計(jì)法的選擇在本任務(wù)中,底層模塊采用VHDL語(yǔ)言設(shè)計(jì)較簡(jiǎn)單,頂層模塊采用原理圖設(shè)計(jì)與VHDL設(shè)計(jì)均可,我們采用原理圖設(shè)計(jì)頂層電路。《EDA技術(shù)》12Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟四、實(shí)施下面以用于播放“梁祝”樂(lè)曲的音樂(lè)電路為例,對(duì)音樂(lè)電路各模塊的實(shí)施進(jìn)行進(jìn)一步的設(shè)計(jì)實(shí)現(xiàn)。
(一)控制電路模塊控制電路模塊包含節(jié)拍產(chǎn)生模塊和音符產(chǎn)生模塊兩個(gè)子模塊,合寫(xiě)成一個(gè)文件。
1、節(jié)拍產(chǎn)生模塊設(shè)計(jì)分析根據(jù)以上分析,此模塊為一個(gè)計(jì)數(shù)器,現(xiàn)在需進(jìn)一步?jīng)Q定計(jì)數(shù)器的模與輸入時(shí)鐘頻率。根據(jù)樂(lè)曲“梁祝”簡(jiǎn)譜,見(jiàn)圖3—2,此樂(lè)曲以四分音符為一拍,四拍為一節(jié),所有音的音長(zhǎng)最小公因數(shù)是一個(gè)十六分音符時(shí)值,所以,以十六分音符時(shí)值作為一個(gè)狀態(tài)持續(xù)時(shí)間,把樂(lè)曲“梁?!敝懈鱾€(gè)音符所占據(jù)狀態(tài)個(gè)數(shù)累加而得知節(jié)拍產(chǎn)生模塊計(jì)數(shù)器的模是139,其中最后體止符用了3個(gè)時(shí)間單位。樂(lè)曲“梁祝”的簡(jiǎn)譜沒(méi)有明確標(biāo)出播放速度,根據(jù)經(jīng)驗(yàn)設(shè)定1min播放60拍,因此一拍持續(xù)時(shí)間即四分音符的時(shí)值為1s,一個(gè)狀態(tài)持續(xù)時(shí)間即一個(gè)十六分音符時(shí)值為0.25s。故節(jié)拍產(chǎn)生模塊輸入時(shí)鐘周期為0.25s,頻率為4Hz。《EDA技術(shù)》13Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟圖3-2《梁?;泛?jiǎn)譜《EDA技術(shù)》14Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟2、音符產(chǎn)生模塊設(shè)計(jì)分析音符產(chǎn)生模塊的功能是將節(jié)拍產(chǎn)生電路的計(jì)數(shù)器的值按照樂(lè)曲“梁?!钡暮?jiǎn)譜翻譯成對(duì)應(yīng)的音符。規(guī)定用Counter表示計(jì)數(shù)器的值,Index表示15個(gè)音符符號(hào)。播放樂(lè)曲“梁祝”需低音7個(gè)、中音7個(gè)與高音1個(gè),共15個(gè)音符,用15個(gè)數(shù)字(Index)1—15來(lái)表示,則樂(lè)曲“梁?!焙?jiǎn)譜的15個(gè)音符與數(shù)字(Index)的對(duì)應(yīng)關(guān)系見(jiàn)表3-1。表3-1樂(lè)曲“梁?!焙?jiǎn)譜音符與數(shù)字對(duì)應(yīng)關(guān)系《EDA技術(shù)》15Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟根據(jù)樂(lè)曲“梁?!焙?jiǎn)譜可得其計(jì)數(shù)器值與音符對(duì)應(yīng)關(guān)系,見(jiàn)表3-2。見(jiàn)表3-2音符產(chǎn)生模塊——計(jì)數(shù)器值與音符對(duì)應(yīng)表《EDA技術(shù)》16Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟3、控制電路模塊(節(jié)拍產(chǎn)生模塊和音符產(chǎn)生模塊)VHDL描述控制電路模塊的輸入時(shí)鐘信號(hào)與C1k4Hz相連;Index表示音符信息,因?yàn)镮ndex取值為1~15,故為四位二進(jìn)制信號(hào)。此控制電路模塊VHDL描述有兩個(gè)進(jìn)程,CNT8進(jìn)程描述的是一個(gè)時(shí)序邏輯電路計(jì)數(shù)器(節(jié)拍產(chǎn)生模塊),Search進(jìn)程描述的是一個(gè)組合邏輯譯碼電路(音符產(chǎn)生模塊),兩模塊由Counter信號(hào)相連,這是一個(gè)數(shù)字系統(tǒng)的控制模塊描述。具體程序描述如下:LIBRARYieee;USEieee.std_logic_1164.ALL;USEieee.std_logic_arith.ALL;ENTITYaaaIS
PORT(clk:INSTD_LOGIC;
Index:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;《EDA技術(shù)》17Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟ARCHITECTUREoneOFaaaISSIGNALCounter:INTEGERRANGE0TO138;SIGNALDateOut:INTEGERRANGE0TO15;BEGINCNT8:PROCESS(clk,Counter)BEGINIFCounter=138THENCounter<=0;ELSIF(clk'EVENTANDclk='1')THENCounter<=Counter+1;ENDIF;ENDPROCESS;《EDA技術(shù)》18Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟Search:PROCESS(Counter)BEGINCASECounterISWHEN00=>DateOut<=3;WHEN01=>DateOut<=3;WHEN02=>DateOut<=3;WHEN03=>DateOut<=3;WHEN04=>DateOut<=5;WHEN05=>DateOut<=5;WHEN06=>DateOut<=5;WHEN07=>DateOut<=6;WHEN08=>DateOut<=8;WHEN09=>DateOut<=8;WHEN10=>DateOut<=8;WHEN11=>DateOut<=9;WHEN12=>DateOut<=6;WHEN13=>DateOut<=8;WHEN14=>DateOut<=5;WHEN15=>DateOut<=5;WHEN16=>DateOut<=12;WHEN17=>DateOut<=12;WHEN18=>DateOut<=12;WHEN19=>DateOut<=15;WHEN20=>DateOut<=13;WHEN21=>DateOut<=12;WHEN22=>DateOut<=10;WHEN23=>DateOut<=12;WHEN24=>DateOut<=9;WHEN25=>DateOut<=9;WHEN26=>DateOut<=9;WHEN27=>DateOut<=9;WHEN28=>DateOut<=9;WHEN29=>DateOut<=9;WHEN30=>DateOut<=9;WHEN31=>DateOut<=9;《EDA技術(shù)》19Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟WHEN32=>DateOut<=9;WHEN33=>DateOut<=9;WHEN34=>DateOut<=9;WHEN35=>DateOut<=10;WHEN36=>DateOut<=7;WHEN37=>DateOut<=7;WHEN38=>DateOut<=6;WHEN39=>DateOut<=6;WHEN40=>DateOut<=5;WHEN41=>DateOut<=5;WHEN42=>DateOut<=5;WHEN43=>DateOut<=6;WHEN44=>DateOut<=8;WHEN45=>DateOut<=8;WHEN46=>DateOut<=9;WHEN47=>DateOut<=9;WHEN48=>DateOut<=3;WHEN49=>DateOut<=3;WHEN50=>DateOut<=8;WHEN51=>DateOut<=8;WHEN52=>DateOut<=6;WHEN53=>DateOut<=5;WHEN54=>DateOut<=6;WHEN55=>DateOut<=8;WHEN56=>DateOut<=5;WHEN57=>DateOut<=5;WHEN58=>DateOut<=5;WHEN59=>DateOut<=5;WHEN60=>DateOut<=5;WHEN61=>DateOut<=5;WHEN62=>DateOut<=5;WHEN63=>DateOut<=5;WHEN64=>DateOut<=10;WHEN65=>DateOut<=10;WHEN66=>DateOut<=10;WHEN67=>DateOut<=12;《EDA技術(shù)》20Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟WHEN68=>DateOut<=7;WHEN69=>DateOut<=7;WHEN70=>DateOut<=9;WHEN71=>DateOut<=9;WHEN72=>DateOut<=6;WHEN73=>DateOut<=8;WHEN74=>DateOut<=5;WHEN75=>DateOut<=5;WHEN76=>DateOut<=5;WHEN77=>DateOut<=5;WHEN78=>DateOut<=5;WHEN79=>DateOut<=5;WHEN80=>DateOut<=3;WHEN81=>DateOut<=5;WHEN82=>DateOut<=3;WHEN83=>DateOut<=3;WHEN84=>DateOut<=5;WHEN85=>DateOut<=6;WHEN86=>DateOut<=7;WHEN87=>DateOut<=9;WHEN88=>DateOut<=6;WHEN89=>DateOut<=6;WHEN90=>DateOut<=6;WHEN91=>DateOut<=6;WHEN92=>DateOut<=6;WHEN93=>DateOut<=6;WHEN94=>DateOut<=5;WHEN95=>DateOut<=6;WHEN96=>DateOut<=8;WHEN97=>DateOut<=8;WHEN98=>DateOut<=8;WHEN99=>DateOut<=9;WHEN100=>DateOut<=12;WHEN101=>DateOut<=12;WHEN102=>DateOut<=12;WHEN103=>DateOut<=10;《EDA技術(shù)》21Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟WHEN104=>DateOut<=9;WHEN105=>DateOut<=9;WHEN106=>DateOut<=10;WHEN107=>DateOut<=9;WHEN108=>DateOut<=8;WHEN109=>DateOut<=8;WHEN110=>DateOut<=6;WHEN111=>DateOut<=5;WHEN112=>DateOut<=3;WHEN113=>DateOut<=3;WHEN114=>DateOut<=3;WHEN115=>DateOut<=3;WHEN116=>DateOut<=8;WHEN117=>DateOut<=8;WHEN118=>DateOut<=8;WHEN119=>DateOut<=8;WHEN120=>DateOut<=6;WHEN121=>DateOut<=8;WHEN122=>DateOut<=6;WHEN123=>DateOut<=5;WHEN124=>DateOut<=3;WHEN125=>DateOut<=5;WHEN126=>DateOut<=6;WHEN127=>DateOut<=8;WHEN128=>DateOut<=5;WHEN129=>DateOut<=5;WHEN130=>DateOut<=5;WHEN131=>DateOut<=5;WHEN132=>DateOut<=5;WHEN133=>DateOut<=5;WHEN134=>DateOut<=5;WHEN135=>DateOut<=5;WHEN136=>DateOut<=0;WHEN137=>DateOut<=0;WHEN138=>DateOut<=0;WHENOTHERS=>DateOut<=0;ENDCASE;ENDPROCESS;Index<=CONV_STD_LOGIC_VECTOR(DateOut,4);END;《EDA技術(shù)》22Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟4、仿真圖圖3-3是控制電路模塊在Quartus軟件中的仿真圖,其中四位二進(jìn)制數(shù)Index用十進(jìn)制表示。圖3-3控制電路模塊《EDA技術(shù)》23Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟(二)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生模塊
1、設(shè)計(jì)分析此模塊的功能是產(chǎn)生提供給可控分頻模塊的分頻系數(shù)、提供給外圍數(shù)碼管和外圍LED的數(shù)據(jù)。樂(lè)曲“梁?!笔荈調(diào),其音符對(duì)應(yīng)的頻率數(shù)據(jù)見(jiàn)表3-3,又因?yàn)榭煽胤诸l模塊的輸入時(shí)鐘設(shè)為12MHz,可控分頻模塊設(shè)計(jì)有12預(yù)分頻和2后分頻,經(jīng)12預(yù)分頻和2后分頻后的頻率為500000Hz,故供給可控分頻模塊的分頻系數(shù)Tone=211-500000/f,又考慮到最大分頻系數(shù)為1397,其二進(jìn)制表示是11010011010,故可控分頻模塊的計(jì)數(shù)器為十一位二進(jìn)制計(jì)數(shù)器。可得音符信號(hào)對(duì)應(yīng)的分頻系數(shù)、音符顯示數(shù)據(jù)和高低音指示電平見(jiàn)表3-3《EDA技術(shù)》24Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟表3-3音符信號(hào)對(duì)應(yīng)的分頻系數(shù)、音符顯示數(shù)據(jù)和高低音指示電平《EDA技術(shù)》25Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟2、設(shè)計(jì)文件VHDL描述對(duì)于簡(jiǎn)單的組合邏輯模塊的VHDL描述,最常用的方法是應(yīng)用CASE語(yǔ)句或IF語(yǔ)句來(lái)描述。在設(shè)計(jì)文件中:Index為四位二進(jìn)制信號(hào),表示輸入音符信息;CODE為四位二進(jìn)制信號(hào),是提供給外圍數(shù)碼管的用于顯示簡(jiǎn)譜音符符號(hào)的數(shù)據(jù);LED是提供給外圍LED的用于顯示高低音的數(shù)據(jù);Tone是供給可控分頻模塊的分頻系數(shù)?!禘DA技術(shù)》26Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYToneTabaISPORT(Index:INSTD_LOGIC_VECTOR(3DOWNTO0);CODE:OUTSTD_LOGIC_VECTOR(3DOWNTO0);LED:OUTSTD_LOGIC;Tone:OUTSTD_LOGIC_VECTOR(10DOWNTO0));END;ARCHITECTUREoneOFToneTabaISBEGINSearch:PROCESS(Index)BEGINCASEIndexIS--譯碼電路,查表方式,控制音調(diào)的預(yù)置數(shù)WHEN"0000"=>Tone<="11111111111";CODE<="0000";LED<='0';WHEN"0001"=>Tone<="01001101000";CODE<="0001";LED<='0';WHEN"0010"=>Tone<="01100000101";CODE<="0010";LED<='0';WHEN"0011"=>Tone<="01110010000";CODE<="0011";LED<='0';WHEN"0100"=>Tone<="01111010000";CODE<="0100";LED<='0';WHEN"0101"=>Tone<="10001000100";CODE<="0101";LED<='0';《EDA技術(shù)》27Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟WHEN"0110"=>Tone<="10010101101";CODE<="0110";LED<='0';WHEN"0111"=>Tone<="10100001010";CODE<="0111";LED<='0';WHEN"1000"=>Tone<="10101011100";CODE<="0001";LED<='1';WHEN"1001"=>Tone<="10110000010";CODE<="0010";LED<='1';WHEN"1010"=>Tone<="10111001000";CODE<="0011";LED<='1';WHEN"1011"=>Tone<="10111101000";CODE<="0110";LED<='1';WHEN"1100"=>Tone<="11000100010";CODE<="0101";LED<='1';WHEN"1101"=>Tone<="11001010110";CODE<="0110";LED<='1';WHEN"1110"=>Tone<="11010000100";CODE<="0111";LED<='1';WHEN"1111"=>Tone<="11010011010";CODE<="0001";LED<='1';WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;END;《EDA技術(shù)》28Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟3、仿真圖圖3-4是分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生模塊在Quartus軟件中的仿真圖,其中CODE用十進(jìn)制(總線形式)表示簡(jiǎn)譜音符符號(hào)的數(shù)據(jù),Index用二進(jìn)制(總線形式)表示輸入音符信息、Tone用二進(jìn)制(總線形式)表示分頻系數(shù)。圖3-4分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生模塊仿真圖《EDA技術(shù)》29Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟(三)可控分頻模塊1、設(shè)計(jì)分析此模塊的功能是用一個(gè)可控分頻電路來(lái)產(chǎn)生播放音樂(lè)所需的每個(gè)音。其實(shí)質(zhì)是設(shè)計(jì)一個(gè)可預(yù)置數(shù)的計(jì)數(shù)器,預(yù)置數(shù)就是分頻系數(shù)。作為初步解決方案,本任務(wù)采用偶數(shù)分頻近似代替奇數(shù)分頻的方法,把整數(shù)分頻電路變成偶數(shù)分頻電路來(lái)設(shè)計(jì)??煽胤诸l模塊是一個(gè)具有12預(yù)分頻和2后分頻的可控分頻電路??煽胤诸l模塊的輸入時(shí)鐘clk頻率選12MHz,為了使可控分頻模塊分頻系數(shù)取值范圍比較合適,輸入時(shí)鐘先經(jīng)12分頻,同時(shí)為了使輸出信號(hào)SpkS具有較高的驅(qū)動(dòng)功率,可控分頻后再經(jīng)2分頻,使輸出信號(hào)SpkS具有50%的占空比,從而具有較高的驅(qū)動(dòng)功率。2、設(shè)計(jì)文件VHDL描述《EDA技術(shù)》30Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYSpeakeraISPORT(clk:INSTD_LOGIC;Tone:INSTD_LOGIC_VECTOR(10DOWNTO0);
SpkS:OUTSTD_LOGIC);END;ARCHITECTUREoneOFSpeakeraISSIGNALPreCLK,FullSpkS:STD_LOGIC;BEGINDivideCLK:PROCESS(clk)--12分頻計(jì)數(shù)器VARIABLECount4:STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFclk'EVENTANDclk='1'THENifCount4>11THENPreCLK<='1';Count4:="0000";elseCount4:=Count4+1;PreCLK<='0';ENDIF;ENDIF;ENDPROCESS;《EDA技術(shù)》31Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟GenSpkS:PROCESS(PreCLK,Tone)--11位可預(yù)置計(jì)數(shù)器,非等占空比分頻電路VARIABLECount11:STD_LOGIC_VECTOR(10DOWNTO0);BEGINIFPreCLK'EVENTANDPreCLK='1'THENIFCount11=16#7FF#THENCount11:=Tone;FullSpkS<='1';ELSECount11:=Count11+1;FullSpkS<='0';ENDIF;ENDIF;ENDPROCESS;DelaySpkS:PROCESS(FullSpkS)--將輸出再2分頻,等占空比頻電路,故整個(gè)電路構(gòu)成等占空比頻電路,使揚(yáng)聲器有足夠功率發(fā)音VARIABLECount2:STD_LOGIC;BEGINIFFullSpkS'EVENTANDFullSpkS='1'THENCount2:=NOTCount2;IFCount2='1'THENSpkS<='1';ELSESpkS<='0';ENDIF;ENDIF;ENDPROCESS;END;《EDA技術(shù)》32Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟3、仿真圖圖3-5是可控分頻模塊在Quartus軟件中的仿真圖。其中clk輸入頻率為12M,由于頻率太大,顯示的是一條黑帶,Tone是用二進(jìn)制(總線形式)表示的分頻系數(shù),Spks是可控分頻模塊輸出音頻信號(hào)。圖3-5可控分頻模塊仿真圖《EDA技術(shù)》33Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟(四)播放電路頂層模塊設(shè)計(jì)播放電路頂層模塊用原理圖輸入法設(shè)計(jì)。把以上各子模塊在Quartus創(chuàng)建圖元,新建一個(gè)原理圖編輯文件,然后把創(chuàng)建的圖元組裝起來(lái)構(gòu)成一個(gè)完整的電路進(jìn)行編譯,仿真。
1、播放電路頂層原理圖輸入描述。圖3-6播放電路原理圖輸入《EDA技術(shù)》34Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟2、播放電路仿真圖圖3-7播放電路仿真圖《EDA技術(shù)》35Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟五、檢查分別編譯各底層模塊和頂層電路,并分別仿真底層模塊和頂層電路。通過(guò)后,應(yīng)將源代碼下載到硬件中做最后的驗(yàn)證。六、評(píng)估對(duì)本次設(shè)計(jì)進(jìn)行評(píng)估,可嘗試更好的方案、方法。寫(xiě)出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告應(yīng)包括所應(yīng)用到的EDA方法及知識(shí)的總結(jié)。《EDA技術(shù)》36Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟一、資訊音樂(lè)演奏電路由琴鍵輸入識(shí)別模塊電路;分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊;可控分頻模塊電路構(gòu)成。在音樂(lè)播放電路設(shè)計(jì)中我們已設(shè)計(jì)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊;可控分頻模塊電路。所以設(shè)計(jì)音樂(lè)演奏電路重點(diǎn)在設(shè)計(jì)琴鍵輸入識(shí)別模塊電路;以及把音樂(lè)演奏電路與音樂(lè)播放電路總裝成一個(gè)簡(jiǎn)易電子琴。二、計(jì)劃設(shè)計(jì)一個(gè)琴鍵輸入識(shí)別模塊電路,產(chǎn)生歌譜的音符信號(hào);改進(jìn)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊電路,設(shè)置音樂(lè)演奏與播放功能選擇端;把音樂(lè)演奏電路與音樂(lè)播放電路總裝成一個(gè)簡(jiǎn)易電子琴?!禘DA技術(shù)》37Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟三、決策
1.琴鍵輸入識(shí)別模塊電路設(shè)計(jì)方案琴鍵輸入識(shí)別模塊電路主要解決按鍵后產(chǎn)生相應(yīng)的音符信號(hào)與鍵盤(pán)去抖動(dòng)。音符信號(hào)產(chǎn)生用VHDL選擇語(yǔ)句容易實(shí)現(xiàn);鍵盤(pán)去抖動(dòng)的方法有計(jì)數(shù)器、移位寄存器、D型觸發(fā)器延時(shí)、采樣型防抖微分電路四種,可選擇一種完成去抖動(dòng)設(shè)計(jì)2.改進(jìn)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊電路主要改進(jìn)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊電路,實(shí)現(xiàn)音樂(lè)演奏與播放功能選擇3.音樂(lè)演奏電路與音樂(lè)播放電路總裝把音樂(lè)演奏電路與音樂(lè)播放電路總裝成簡(jiǎn)易電子琴,然后編譯、仿真、下載。四、實(shí)施這個(gè)任務(wù)學(xué)生自己動(dòng)手做,老師現(xiàn)場(chǎng)指導(dǎo),學(xué)生在做中完成學(xué)習(xí)任務(wù)。下面給出演奏電路與簡(jiǎn)易電子琴參考設(shè)計(jì)方案。1.演奏電路設(shè)計(jì)(參考)學(xué)生在方案實(shí)施過(guò)程中,可先設(shè)計(jì)一個(gè)琴鍵輸入識(shí)別模塊電路(注意鍵盤(pán)去抖動(dòng)設(shè)計(jì))。然后利用琴鍵輸入識(shí)別模塊電路,音樂(lè)播放電路中已設(shè)計(jì)好的分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊,可控分頻模塊組裝音樂(lè)演奏電路頂層文件(原理圖輸入或VHDL設(shè)計(jì)輸入均可)。演奏電路頂層設(shè)計(jì)文件,見(jiàn)圖3-8?!禘DA技術(shù)》38Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟圖3-8演奏電路頂層設(shè)計(jì)文件
《EDA技術(shù)》39Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟2.簡(jiǎn)易電子琴總裝電路設(shè)計(jì)(參考)改進(jìn)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊電路設(shè)計(jì),使其具有音樂(lè)播放與演奏選擇功能。然后把各模塊總裝成一個(gè)簡(jiǎn)易電子琴電路如圖3-9所示,仿真圖如圖3-10所示圖3-9簡(jiǎn)易電子琴頂層設(shè)計(jì)文件《EDA技術(shù)》40Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟圖3-10簡(jiǎn)易電子琴仿真《EDA技術(shù)》41Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟五、檢查分別編譯各底層模塊和整個(gè)電路設(shè)計(jì),并分別仿真控制電路模塊和分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊。通過(guò)后,將源代碼下載到硬件中做最后的驗(yàn)證。六、評(píng)估對(duì)本次設(shè)計(jì)進(jìn)行評(píng)估,可嘗試更好的方案、方法。寫(xiě)出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告應(yīng)包括所應(yīng)用到的EDA方法及知識(shí)的總結(jié)?!禘DA技術(shù)》42Doc.numbertobeenteredby"HeaderandFooter"D.
相關(guān)知識(shí)硬件描述語(yǔ)言VHDL音樂(lè)知識(shí)3.1引言
3.2VHDL的基礎(chǔ)知識(shí)
3.3VHDL結(jié)構(gòu)體的描述方式
3.4結(jié)構(gòu)體的子結(jié)構(gòu)形式
3.5順序語(yǔ)句和并發(fā)語(yǔ)句
3.6VHDL中的信號(hào)和信號(hào)處理
3.7元件例化
3.8配置
硬件描述語(yǔ)言VHDL--目錄《EDA技術(shù)》44Doc.numbertobeenteredby"HeaderandFooter"VHDL的特點(diǎn):1.支持多種設(shè)計(jì)方法和技術(shù)。2.與工藝技術(shù)獨(dú)立。3.多層次描述能力。4.標(biāo)準(zhǔn)化,易于共享和復(fù)用。VHDL程序的構(gòu)件實(shí)體結(jié)構(gòu)體程序包配置庫(kù)VHDL的版本:IEEESTD1076.1987[LRM87]IEEESTD1076.1993[LRM93]3.1引言《EDA技術(shù)》45Doc.numbertobeenteredby"HeaderandFooter"3.2VHDL的基礎(chǔ)知識(shí)《EDA技術(shù)》46Doc.numbertobeenteredby"HeaderandFooter"8位計(jì)數(shù)器ENTITYcounterISPORT(data_in:ININTEGERRANGE0TO255;
clk,ena,load,clear:INSTD_LOGIC;Count_out:OUTINTEGERRANGE0TO255);ENDcounter;
enaclkloadcleardata_incount_out實(shí)體countLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》47Doc.numbertobeenteredby"HeaderandFooter"8位計(jì)數(shù)器的功能描述:
ARCHITECTUREbehav_countOFcounterIS
SIGNALcounter_data:INTEGERRANGE0TO255;
BEGIN
PROCESS(clk,clear,load)
BEGIN
IF(clear=‘0’)THENcounter_data=0;
ELSIF(clk‘EVENTANDclk=‘1’)THEN
IF(load=‘1’)THENcounter_data<=data_in;
ELSE
IF(ena=‘1’)THEN
IFcounter_data=255THENcounter_data<=0;
ELSEcounter_data<=counter_data+1;
ENDIF;
ELSE
counter_data<=counter_data;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESS;
count_out<=counter_data;
ENDbehav_count;進(jìn)程結(jié)構(gòu)體3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》48Doc.numbertobeenteredby"HeaderandFooter"ENTITY實(shí)體名IS[GENERIC(類(lèi)屬表);][PORT(端口表);]
[實(shí)體說(shuō)明部分;]
[BEGIN實(shí)體語(yǔ)句部分;]
END實(shí)體名;
GENERIC(端口名{,端口名}:類(lèi)型名[:=初始值]{端口名{,端口名}:類(lèi)型名[:=初始值]});例GENERIC(m:TIME:=3ns);
1實(shí)體(ENTITY)說(shuō)明(1)類(lèi)屬說(shuō)明3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》49Doc.numbertobeenteredby"HeaderandFooter"PORT(端口名{,端口名}:方向數(shù)據(jù)類(lèi)型;::端口名{,端口名}:方向數(shù)據(jù)類(lèi)型);端口方向?qū)嶓wINOUTINOUTBUFFERLINKAGE(2)端口說(shuō)明3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》50Doc.numbertobeenteredby"HeaderandFooter"
2結(jié)構(gòu)體(ARCHITECTURE)ARCHITECTURE
結(jié)構(gòu)體名
OF
實(shí)體名
IS[定義語(yǔ)句]
BEGIN
[并行處理語(yǔ)句]
END
結(jié)構(gòu)體名;=DQclk3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》51Doc.numbertobeenteredby"HeaderandFooter"
設(shè)計(jì)庫(kù)IEEE庫(kù)預(yù)定義庫(kù)(隱含打開(kāi))STD庫(kù)STANDARD(隱含說(shuō)明)TEXTIO(用UES說(shuō)明)WORK庫(kù)資源庫(kù)(用LIBRARY)其它庫(kù)STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_COMPLEXVITAL_TIMINGVITAL_PRIMITIVE3庫(kù)(LIBRARY)3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》52Doc.numbertobeenteredby"HeaderandFooter"PACKAGE程序包名IS[說(shuō)明語(yǔ)句]
END[PACKAGE][程序包名];
PACKAGEBODY程序包名IS[說(shuō)明語(yǔ)句]
END[PACKAGEBODY][程序包名];
程序包說(shuō)明程序包體4程序包(PACKAGE)3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》53Doc.numbertobeenteredby"HeaderandFooter"
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;PACKAGEupacISCONSTANTk:INTEGER:=4;TYPEinstructionIS(add,sub,adc,inc,
srf,slf,mov);SUBTYPEcpu_busISSTD_LOGIC_VECTOR(k-1DOWNTO0);ENDupac;
程序包設(shè)計(jì)舉例13.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》54Doc.numbertobeenteredby"HeaderandFooter"PACKAGEexampleISCONSTANTpi:REAL:=3.1415926;
CONSTANTdefer:INTEGER;
FUNCTIONmean(a,b,c:REAL)RETURNREAL;
COMPONENTandISGENERIC(tpd1,tpd2:TIME:=3ns);PORT(in1,in2:INBIT;y:OUTBIT);ENDCOMPONENTand;
ENDexample;
PACKAGEBODYexampleISCONSTANTdefer:INTEGER:=5;FUNCTIONmean(a,b,c:REAL)RETURNREALISBEGINRETURN(a+b+c)/3.0;ENDFUNCTIONmean;ENDPACKAGEBODYexample;
程序包體的應(yīng)用3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》55Doc.numbertobeenteredby"HeaderandFooter"1.STANDARDD程序包
2.TEXTIO程序包
3.STD_LOGIC_1164程序包
4.NUMERICSTD和NUMERIC_BIT程序包
5.VITAL_TIMING和VITAL_PRIMITIVE程序包
6.MATH_REAL和MATH_COMPLEX程序包
STDIEEE3.2.2VHDL常用資源庫(kù)中的程序包《EDA技術(shù)》56Doc.numbertobeenteredby"HeaderandFooter"1.對(duì)象常量(CONSTANT)變量(VARIABLE)
信號(hào)(SIGNAL)
文件(FILE)
(1)常量
CONSTANT常量名:數(shù)據(jù)類(lèi)型∶=標(biāo)達(dá)式;例如:
CONSTANTVcc:REAL∶=5.0;(2)變量
VARIABLE變量名:數(shù)據(jù)類(lèi)型約束條件∶=表達(dá)式;
例:VARIABLEx:STD_LOGIC∶=’0’;
VARIABLEa,b:INTEGER;
3.2.3數(shù)據(jù)對(duì)象和類(lèi)型《EDA技術(shù)》57Doc.numbertobeenteredby"HeaderandFooter"SIGNAL信號(hào)名:數(shù)據(jù)類(lèi)型約束條件∶=表達(dá)式;例如:SIGNALclk:BIT∶=‘0’;除了基本信號(hào)之外,信號(hào)也用于表示不同寬度的總線,例如:
SIGNALbus_a:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALbus_b:STD_LOGIC_VECTOR(0DOWNTO7);信號(hào)在說(shuō)明語(yǔ)句中用賦值號(hào)“:=”賦初始值,信號(hào)量用代入語(yǔ)句賦值,并可延時(shí),信號(hào)量的代入:
y<=aANDb;在VHDL語(yǔ)言中,信號(hào)是全局量。
(3)信號(hào)3.2.3數(shù)據(jù)對(duì)象和類(lèi)型《EDA技術(shù)》58Doc.numbertobeenteredby"HeaderandFooter"(1)VHDL語(yǔ)言所定義的標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型有10個(gè):整數(shù)類(lèi)型1,-2實(shí)數(shù)類(lèi)型1.2,1.2E+3位
‘0’,‘1’
位矢量“001100”,X“00BE”
布爾量真(TRUE),假(FALSE)字符
字符是用單引號(hào)括起來(lái)的字母或符號(hào),字符區(qū)分大小寫(xiě),‘A’、’a’、‘B’、’b’都是不同的字符。
字符串字符串是由雙引號(hào)括起來(lái)的一個(gè)字符序列。例如:“COUNTER”、“8bit_bus”等。3.2.3數(shù)據(jù)對(duì)象和類(lèi)型2.數(shù)據(jù)類(lèi)型(1)VHDL語(yǔ)言所定義的標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型(2)用戶(hù)自定義的數(shù)據(jù)類(lèi)型(3)用戶(hù)定義的子類(lèi)型(4)數(shù)據(jù)類(lèi)型的轉(zhuǎn)換
(5)IEEE標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型“STD_LOGIC”和“STD_LOGIC_VECTOR”《EDA技術(shù)》59Doc.numbertobeenteredby"HeaderandFooter"3.2.3數(shù)據(jù)對(duì)象和類(lèi)型時(shí)間類(lèi)型55sec;2min。在STANDARD程序包中給出的時(shí)間預(yù)定義單位為:fs,ps,ns,μs,ms,sec,min,hr。錯(cuò)誤等級(jí)錯(cuò)誤等級(jí)在仿真時(shí)用于表示系統(tǒng)工作的狀態(tài)。錯(cuò)誤等級(jí)分為四鐘:NOTE(注意)、WARING(警告)、ERROR(錯(cuò)誤)和FAILURE(失?。W匀粩?shù)(NATURAL)和正整數(shù)(POSITIVE)《EDA技術(shù)》60Doc.numbertobeenteredby"HeaderandFooter"TYPE數(shù)據(jù)類(lèi)型名{,數(shù)據(jù)類(lèi)型名}數(shù)據(jù)類(lèi)型定義;枚舉類(lèi)型
TYPE數(shù)據(jù)類(lèi)型名IS(元素,元素,……);例如:TYPEinstructionIS(add,sub,inc,srl,srf,
mov,dec,);3.2.3數(shù)據(jù)對(duì)象和類(lèi)型(2)用戶(hù)定義的數(shù)據(jù)類(lèi)型
《EDA技術(shù)》61Doc.numbertobeenteredby"HeaderandFooter"
整數(shù)類(lèi)型和實(shí)數(shù)類(lèi)型
TYPEdigitISINTEGERRANGE0TO9;
數(shù)組
TYPE數(shù)組名ISARRAY[下標(biāo)約束]OF數(shù)組元素的類(lèi)型名;
TYPEword8ISARRAY(1TO8)OFBIT;TYPEword8ISARRAY(INTEGERRANGE1TO8)OFBIT;TYPEword8ISARRAY(INTEGERRANGE<>)OFSTD_LOGIC;--無(wú)界數(shù)組
TYPERAMISARRAY(1TO8,1TO10)OFBIT;--二維數(shù)組
TYPEinstructionIS(add,sub,inc,dec,srl,srf,mov,xfr);TYPEinsflagISARRAY(instructionaddTOsrf)OFSTD_LOGIC;
多維數(shù)組僅用于仿真生成硬件的抽象模型,而不能用于邏輯綜合。
3.2.3數(shù)據(jù)對(duì)象和類(lèi)型《EDA技術(shù)》62Doc.numbertobeenteredby"HeaderandFooter"時(shí)間類(lèi)型(物理類(lèi)型)TYPE數(shù)據(jù)類(lèi)型名IS范圍
UNITS基本單位;單位;
ENDUNITS;例如:TYPEtimeISRANGE–1E18TO1E18UNITSfs;
ps=1000fs;
ns=1000ps;us=1000ns;ms=1000us;sec=1000ms;min=60sec;hr=60min;ENDUNITS;
3.2.3數(shù)據(jù)對(duì)象和類(lèi)型《EDA技術(shù)》63Doc.numbertobeenteredby"HeaderandFooter"TYPEcapacitorISRANGE0TO1E18UNITSfF;
pF=1000fF;
nF=1000pF;
uF=1000nF;mF=1000uF;F=1000mF;ENDUNITS;3.2.3數(shù)據(jù)對(duì)象和類(lèi)型物理量的定義應(yīng)用《EDA技術(shù)》64Doc.numbertobeenteredby"HeaderandFooter"記錄是由不同類(lèi)型的數(shù)據(jù)集合在一起形成的數(shù)據(jù)類(lèi)型,
TYPE數(shù)據(jù)類(lèi)型名ISRECODE
元素名:數(shù)據(jù)類(lèi)型;元素名:數(shù)據(jù)類(lèi)型;∶
ENDRECODE;記錄經(jīng)常用于描述總線和通訊協(xié)議。例如:
TYPEPCI_busISRECODE
Addr:STD_LOGIC_VECTOR(31DOWNTO0);
Data:STD_LOGIC_VECTOR(31DOWNTO0);
R0:INTEGER;Inst:instruction;ENDRECODE;
3.2.3數(shù)據(jù)對(duì)象和類(lèi)型記錄《EDA技術(shù)》65Doc.numbertobeenteredby"HeaderandFooter"文件類(lèi)型是在系統(tǒng)環(huán)境中定義為代表文件的一類(lèi)客體。其說(shuō)明格式為:
TYPE文件類(lèi)型名ISFILE限制;例如:TYPEtextISFILEOFstring;在TEXTIO中有兩個(gè)預(yù)定義的標(biāo)準(zhǔn)文本文件:
FILEinput:textOPENread_modeIS
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年技術(shù)投資合作協(xié)議
- 民間借款協(xié)議書(shū)的風(fēng)險(xiǎn)防范
- 數(shù)字作品版權(quán)協(xié)議模板
- 2024新合作設(shè)立分公司協(xié)議范本
- 2024版工程中介居間合同樣本
- 房產(chǎn)代理合同范本
- 勞動(dòng)合同續(xù)簽的溝通技巧分享
- 股權(quán)質(zhì)押合同新格式
- 蘇教版小學(xué)數(shù)學(xué)四年級(jí)下冊(cè)《用數(shù)對(duì)確定位置》公開(kāi)課教學(xué)設(shè)計(jì)及說(shuō)課稿
- 策略性合作合同模板及解讀
- 急性腦梗死的橋接治療課件
- 《中國(guó)工藝美術(shù)史》考研備考題庫(kù)(知識(shí)點(diǎn)整理)
- 人民醫(yī)院神經(jīng)外科臨床技術(shù)操作規(guī)范2023版
- 人教鄂教版六年級(jí)科學(xué)上冊(cè)全冊(cè)教學(xué)設(shè)計(jì)教案
- 暈厥的診斷與治療暈厥專(zhuān)家講座
- 《做自己的心理醫(yī)生 現(xiàn)代人的心理困惑和自我療愈策略》讀書(shū)筆記思維導(dǎo)圖PPT模板下載
- 研學(xué)安全主題班會(huì)課件
- 《觀察洋蔥表皮細(xì)胞》實(shí)驗(yàn)記錄單
- 學(xué)校德育活動(dòng)記錄
- 《靜女》公開(kāi)課教案優(yōu)秀3篇
- HSK四級(jí)聽(tīng)力答題技巧課件
評(píng)論
0/150
提交評(píng)論