EDA技術(shù)項(xiàng)目化教程學(xué)習(xí)情境三電子課件_第1頁
EDA技術(shù)項(xiàng)目化教程學(xué)習(xí)情境三電子課件_第2頁
EDA技術(shù)項(xiàng)目化教程學(xué)習(xí)情境三電子課件_第3頁
EDA技術(shù)項(xiàng)目化教程學(xué)習(xí)情境三電子課件_第4頁
EDA技術(shù)項(xiàng)目化教程學(xué)習(xí)情境三電子課件_第5頁
已閱讀5頁,還剩184頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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語言。用VHDL語言設(shè)計(jì)樂音的節(jié)拍與音符產(chǎn)生電路;用VHDL語言設(shè)計(jì)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;用VHDL語言設(shè)計(jì)可控分頻器電路;用VHDL語言設(shè)計(jì)琴鍵輸入電路。理解簡(jiǎn)易電子琴總體設(shè)計(jì)方案,把音樂播放與演奏電路總裝成簡(jiǎn)易電子琴。B.項(xiàng)目目標(biāo)任務(wù)1.1目標(biāo):掌握基本的VHDL語言;理解音樂播放電路設(shè)計(jì)方案。掌握用VHDL語言設(shè)計(jì)節(jié)拍與音符產(chǎn)生電路;掌握用VHDL語言設(shè)計(jì)分頻系數(shù)、音符顯示數(shù)據(jù)產(chǎn)生電路;掌握用VHDL語言設(shè)計(jì)可控分頻器電路。設(shè)計(jì)結(jié)果:原理圖與原程序、電路仿真圖、能在實(shí)訓(xùn)系統(tǒng)上播放悅耳動(dòng)聽的音樂。任務(wù)1.2目標(biāo):掌握鍵盤電路設(shè)計(jì)、鍵盤輸入去抖動(dòng)方法;掌握層次電路設(shè)計(jì)方法;初步具備獨(dú)立的VHDL編程能力。設(shè)計(jì)結(jié)果:原理圖與原程序、電路仿真圖、能在實(shí)訓(xùn)系統(tǒng)上彈奏曲子或播放悅耳動(dòng)聽的音樂。C.實(shí)施步驟任務(wù)3.1實(shí)施步驟一、資訊

1.明確任務(wù)一般來說,所有樂音有四個(gè)基本要素——“音的長(zhǎng)短”(決定節(jié)拍)、“音的高低”(頻率決定)、“音的強(qiáng)度”、“音色”。而其中最重要的是“音的長(zhǎng)短”和“音的高低”。為了簡(jiǎn)化設(shè)計(jì),本任務(wù)設(shè)計(jì)的音樂播放電路只考慮音的最重要的兩個(gè)方面:“音的長(zhǎng)短”和“音的高低”,忽略音的強(qiáng)度和音色。要求音樂播放電路最少能連續(xù)循環(huán)播放一首歌曲,在此基礎(chǔ)上可再做進(jìn)一步的擴(kuò)展。為實(shí)現(xiàn)播放“音的長(zhǎng)短”和“音的高低”,可根據(jù)樂譜用一個(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)喇叭或蜂鳴器播放音樂。《EDA技術(shù)》6Doc.numbertobeenteredby"HeaderandFooter"電路輸入是兩路時(shí)鐘信號(hào):一路作為可控分頻電路模塊的輸入時(shí)鐘,經(jīng)可控分頻電路模塊分頻后,得到各種所需的樂音信號(hào)。另一路作為控制電路模塊的輸入時(shí)鐘,用來產(chǎn)生節(jié)拍。這兩路時(shí)鐘信號(hào)的頻率根據(jù)具體的實(shí)驗(yàn)條件和所選歌曲可有所不同。電路的輸出有:一路一線是樂音信號(hào)輸出,用來驅(qū)動(dòng)外接喇叭或蜂鳴器播放音樂;一路四線用來驅(qū)動(dòng)外接的數(shù)碼管,顯示播放的音符簡(jiǎn)譜符號(hào);一路一線用來驅(qū)動(dòng)外接的一個(gè)LED,播放高音時(shí)發(fā)光。

2.查閱資料到圖書館、互聯(lián)網(wǎng)查找有關(guān)資料。前人發(fā)表的有關(guān)音樂電路的文章主要散見在學(xué)術(shù)期刊和有關(guān)網(wǎng)頁上。可用樂曲播放電路、音樂發(fā)生器等關(guān)鍵詞查找。另外,要理解這些文章所介紹的原理,還要具有音樂譜、樂音頻率的有關(guān)知識(shí)。任務(wù)3.1實(shí)施步驟《EDA技術(shù)》7Doc.numbertobeenteredby"HeaderandFooter"二、計(jì)劃音樂電路是模仿人歌唱的電路,故可用人歌唱作為原型來分析設(shè)計(jì)本任務(wù)的總體方案。人通過聲帶振動(dòng)發(fā)出聲音,聲帶振動(dòng)頻率不同發(fā)出不同聲音。故在用數(shù)字電路來模仿時(shí),用一個(gè)控制電路,實(shí)現(xiàn)聲帶振動(dòng)功能,控制音符信號(hào)的產(chǎn)生;用一個(gè)電路把音符信號(hào)轉(zhuǎn)換為可控分頻模塊可用的分頻系數(shù);可控分頻電路在分頻系數(shù)作用下產(chǎn)生不同頻率信號(hào)來驅(qū)動(dòng)外接喇叭或蜂鳴器播放音樂??刂齐娐纺K根據(jù)歌譜控制可控分頻電路模塊按照一定節(jié)拍在不同時(shí)間發(fā)出不同的樂音。而控制電路模塊應(yīng)該分為兩個(gè)子模塊,一個(gè)用于產(chǎn)生節(jié)拍,稱節(jié)拍產(chǎn)生模塊;另一個(gè)用于根據(jù)歌譜控制可控分頻電路模塊在不同時(shí)間發(fā)出不同的樂音,稱音符產(chǎn)生模塊。音樂電路是連續(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)來決定??刂齐娐返挠?jì)數(shù)器的模即狀態(tài)數(shù),可由需播放歌曲的各個(gè)音所占據(jù)狀態(tài)個(gè)數(shù)累加而得。例如,一首用于播放“梁?!睒非囊魳冯娐返目刂齐娐返挠?jì)數(shù)器的模是139。節(jié)拍產(chǎn)生電路的計(jì)數(shù)器是用來產(chǎn)生節(jié)拍定的,音符產(chǎn)生模塊則將節(jié)拍產(chǎn)生電路的計(jì)數(shù)器的狀態(tài)翻譯成對(duì)應(yīng)的音符,如需播放的歌曲中所用到的音符為9~16個(gè),則音符產(chǎn)生模塊的輸出信號(hào)應(yīng)有四位,其他情況依此類推。任務(wù)3.1實(shí)施步驟《EDA技術(shù)》8Doc.numbertobeenteredby"HeaderandFooter"控制電路模塊只是根據(jù)歌譜產(chǎn)生控制可控分頻模塊按照一定節(jié)拍在不同時(shí)間發(fā)出不同樂音的音符信號(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)喇叭或蜂鳴器播放音樂。播放音樂電路設(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í)施步驟三、決策本音樂電路設(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語句直接來描述音符產(chǎn)生模塊。在節(jié)拍產(chǎn)生模塊輸出的計(jì)數(shù)值變化范圍較大或音符產(chǎn)生模塊的輸出數(shù)值需靈活改變時(shí),可使用LPM_ROM來存儲(chǔ)對(duì)應(yīng)于不同計(jì)數(shù)值的音符序號(hào)。2、可控分頻模塊設(shè)計(jì)方案的選擇

(1)等占空比和非等占空比方案選擇可控分頻電路按輸出時(shí)鐘的占空比來分,有等占空比和非等占空比兩類方案。為了得到足夠驅(qū)動(dòng)蜂鳴器的功率,采用等占空比輸出的可控分頻電路方案。《EDA技術(shù)》11Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟(2)偶數(shù)分頻、整數(shù)分頻方案的選擇常見的分頻電路有偶數(shù)分頻、奇數(shù)分頻和整數(shù)分頻電路,本任務(wù)從原理來看,既有偶數(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)單的方法來設(shè)計(jì);作為提高,可采用比較復(fù)雜的真正的整數(shù)分頻電路設(shè)計(jì)方法設(shè)計(jì)。3.、VHDL輸入設(shè)計(jì)法和原理圖輸入設(shè)計(jì)法的選擇在本任務(wù)中,底層模塊采用VHDL語言設(shè)計(jì)較簡(jiǎn)單,頂層模塊采用原理圖設(shè)計(jì)與VHDL設(shè)計(jì)均可,我們采用原理圖設(shè)計(jì)頂層電路?!禘DA技術(shù)》12Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟四、實(shí)施下面以用于播放“梁?!睒非囊魳冯娐窞槔瑢?duì)音樂電路各模塊的實(shí)施進(jìn)行進(jìn)一步的設(shè)計(jì)實(shí)現(xiàn)。

(一)控制電路模塊控制電路模塊包含節(jié)拍產(chǎn)生模塊和音符產(chǎn)生模塊兩個(gè)子模塊,合寫成一個(gè)文件。

1、節(jié)拍產(chǎn)生模塊設(shè)計(jì)分析根據(jù)以上分析,此模塊為一個(gè)計(jì)數(shù)器,現(xiàn)在需進(jìn)一步?jīng)Q定計(jì)數(shù)器的模與輸入時(shí)鐘頻率。根據(jù)樂曲“梁?!焙?jiǎn)譜,見圖3—2,此樂曲以四分音符為一拍,四拍為一節(jié),所有音的音長(zhǎng)最小公因數(shù)是一個(gè)十六分音符時(shí)值,所以,以十六分音符時(shí)值作為一個(gè)狀態(tài)持續(xù)時(shí)間,把樂曲“梁?!敝懈鱾€(gè)音符所占據(jù)狀態(tài)個(gè)數(shù)累加而得知節(jié)拍產(chǎn)生模塊計(jì)數(shù)器的模是139,其中最后體止符用了3個(gè)時(shí)間單位。樂曲“梁祝”的簡(jiǎn)譜沒有明確標(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?!禘DA技術(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ù)器的值按照樂曲“梁?!钡暮?jiǎn)譜翻譯成對(duì)應(yīng)的音符。規(guī)定用Counter表示計(jì)數(shù)器的值,Index表示15個(gè)音符符號(hào)。播放樂曲“梁祝”需低音7個(gè)、中音7個(gè)與高音1個(gè),共15個(gè)音符,用15個(gè)數(shù)字(Index)1—15來表示,則樂曲“梁?!焙?jiǎn)譜的15個(gè)音符與數(shù)字(Index)的對(duì)應(yīng)關(guān)系見表3-1。表3-1樂曲“梁?!焙?jiǎn)譜音符與數(shù)字對(duì)應(yīng)關(guān)系《EDA技術(shù)》15Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.1實(shí)施步驟根據(jù)樂曲“梁?!焙?jiǎn)譜可得其計(jì)數(shù)器值與音符對(duì)應(yīng)關(guān)系,見表3-2。見表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ù)。樂曲“梁?!笔荈調(diào),其音符對(duì)應(yīng)的頻率數(shù)據(jù)見表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ù)和高低音指示電平見表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語句或IF語句來描述。在設(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è)可控分頻電路來產(chǎn)生播放音樂所需的每個(gè)音。其實(shí)質(zhì)是設(shè)計(jì)一個(gè)可預(yù)置數(shù)的計(jì)數(shù)器,預(yù)置數(shù)就是分頻系數(shù)。作為初步解決方案,本任務(wù)采用偶數(shù)分頻近似代替奇數(shù)分頻的方法,把整數(shù)分頻電路變成偶數(shù)分頻電路來設(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)建的圖元組裝起來構(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í)施步驟五、檢查分別編譯各底層模塊和頂層電路,并分別仿真底層模塊和頂層電路。通過后,應(yīng)將源代碼下載到硬件中做最后的驗(yàn)證。六、評(píng)估對(duì)本次設(shè)計(jì)進(jìn)行評(píng)估,可嘗試更好的方案、方法。寫出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告應(yīng)包括所應(yīng)用到的EDA方法及知識(shí)的總結(jié)?!禘DA技術(shù)》36Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟一、資訊音樂演奏電路由琴鍵輸入識(shí)別模塊電路;分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊;可控分頻模塊電路構(gòu)成。在音樂播放電路設(shè)計(jì)中我們已設(shè)計(jì)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊;可控分頻模塊電路。所以設(shè)計(jì)音樂演奏電路重點(diǎn)在設(shè)計(jì)琴鍵輸入識(shí)別模塊電路;以及把音樂演奏電路與音樂播放電路總裝成一個(gè)簡(jiǎn)易電子琴。二、計(jì)劃設(shè)計(jì)一個(gè)琴鍵輸入識(shí)別模塊電路,產(chǎn)生歌譜的音符信號(hào);改進(jìn)分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊電路,設(shè)置音樂演奏與播放功能選擇端;把音樂演奏電路與音樂播放電路總裝成一個(gè)簡(jiǎn)易電子琴。《EDA技術(shù)》37Doc.numbertobeenteredby"HeaderandFooter"任務(wù)3.2實(shí)施步驟三、決策

1.琴鍵輸入識(shí)別模塊電路設(shè)計(jì)方案琴鍵輸入識(shí)別模塊電路主要解決按鍵后產(chǎn)生相應(yīng)的音符信號(hào)與鍵盤去抖動(dòng)。音符信號(hào)產(chǎn)生用VHDL選擇語句容易實(shí)現(xià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)音樂演奏與播放功能選擇3.音樂演奏電路與音樂播放電路總裝把音樂演奏電路與音樂播放電路總裝成簡(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í)施過程中,可先設(shè)計(jì)一個(gè)琴鍵輸入識(shí)別模塊電路(注意鍵盤去抖動(dòng)設(shè)計(jì))。然后利用琴鍵輸入識(shí)別模塊電路,音樂播放電路中已設(shè)計(jì)好的分頻系數(shù)、LED數(shù)據(jù)產(chǎn)生模塊,可控分頻模塊組裝音樂演奏電路頂層文件(原理圖輸入或VHDL設(shè)計(jì)輸入均可)。演奏電路頂層設(shè)計(jì)文件,見圖3-8。《EDA技術(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ì),使其具有音樂播放與演奏選擇功能。然后把各模塊總裝成一個(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)生模塊。通過后,將源代碼下載到硬件中做最后的驗(yàn)證。六、評(píng)估對(duì)本次設(shè)計(jì)進(jìn)行評(píng)估,可嘗試更好的方案、方法。寫出設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告應(yīng)包括所應(yīng)用到的EDA方法及知識(shí)的總結(jié)?!禘DA技術(shù)》42Doc.numbertobeenteredby"HeaderandFooter"D.

相關(guān)知識(shí)硬件描述語言VHDL音樂知識(shí)3.1引言

3.2VHDL的基礎(chǔ)知識(shí)

3.3VHDL結(jié)構(gòu)體的描述方式

3.4結(jié)構(gòu)體的子結(jié)構(gòu)形式

3.5順序語句和并發(fā)語句

3.6VHDL中的信號(hào)和信號(hào)處理

3.7元件例化

3.8配置

硬件描述語言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)體程序包配置庫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(類屬表);][PORT(端口表);]

[實(shí)體說明部分;]

[BEGIN實(shí)體語句部分;]

END實(shí)體名;

GENERIC(端口名{,端口名}:類型名[:=初始值]{端口名{,端口名}:類型名[:=初始值]});例GENERIC(m:TIME:=3ns);

1實(shí)體(ENTITY)說明(1)類屬說明3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》49Doc.numbertobeenteredby"HeaderandFooter"PORT(端口名{,端口名}:方向數(shù)據(jù)類型;::端口名{,端口名}:方向數(shù)據(jù)類型);端口方向?qū)嶓wINOUTINOUTBUFFERLINKAGE(2)端口說明3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》50Doc.numbertobeenteredby"HeaderandFooter"

2結(jié)構(gòu)體(ARCHITECTURE)ARCHITECTURE

結(jié)構(gòu)體名

OF

實(shí)體名

IS[定義語句]

BEGIN

[并行處理語句]

END

結(jié)構(gòu)體名;=DQclk3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》51Doc.numbertobeenteredby"HeaderandFooter"

設(shè)計(jì)庫IEEE庫預(yù)定義庫(隱含打開)STD庫STANDARD(隱含說明)TEXTIO(用UES說明)WORK庫資源庫(用LIBRARY)其它庫STD_LOGIC_1164STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDNUMERIC_STDNUMERIC_BITMATH_REALMATH_COMPLEXVITAL_TIMINGVITAL_PRIMITIVE3庫(LIBRARY)3.2.1VHDL程序的結(jié)構(gòu)《EDA技術(shù)》52Doc.numbertobeenteredby"HeaderandFooter"PACKAGE程序包名IS[說明語句]

END[PACKAGE][程序包名];

PACKAGEBODY程序包名IS[說明語句]

END[PACKAGEBODY][程序包名];

程序包說明程序包體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常用資源庫中的程序包《EDA技術(shù)》56Doc.numbertobeenteredby"HeaderandFooter"1.對(duì)象常量(CONSTANT)變量(VARIABLE)

信號(hào)(SIGNAL)

文件(FILE)

(1)常量

CONSTANT常量名:數(shù)據(jù)類型∶=標(biāo)達(dá)式;例如:

CONSTANTVcc:REAL∶=5.0;(2)變量

VARIABLE變量名:數(shù)據(jù)類型約束條件∶=表達(dá)式;

例:VARIABLEx:STD_LOGIC∶=’0’;

VARIABLEa,b:INTEGER;

3.2.3數(shù)據(jù)對(duì)象和類型《EDA技術(shù)》57Doc.numbertobeenteredby"HeaderandFooter"SIGNAL信號(hào)名:數(shù)據(jù)類型約束條件∶=表達(dá)式;例如:SIGNALclk:BIT∶=‘0’;除了基本信號(hào)之外,信號(hào)也用于表示不同寬度的總線,例如:

SIGNALbus_a:STD_LOGIC_VECTOR(7DOWNTO0);SIGNALbus_b:STD_LOGIC_VECTOR(0DOWNTO7);信號(hào)在說明語句中用賦值號(hào)“:=”賦初始值,信號(hào)量用代入語句賦值,并可延時(shí),信號(hào)量的代入:

y<=aANDb;在VHDL語言中,信號(hào)是全局量。

(3)信號(hào)3.2.3數(shù)據(jù)對(duì)象和類型《EDA技術(shù)》58Doc.numbertobeenteredby"HeaderandFooter"(1)VHDL語言所定義的標(biāo)準(zhǔn)數(shù)據(jù)類型有10個(gè):整數(shù)類型1,-2實(shí)數(shù)類型1.2,1.2E+3位

‘0’,‘1’

位矢量“001100”,X“00BE”

布爾量真(TRUE),假(FALSE)字符

字符是用單引號(hào)括起來的字母或符號(hào),字符區(qū)分大小寫,‘A’、’a’、‘B’、’b’都是不同的字符。

字符串字符串是由雙引號(hào)括起來的一個(gè)字符序列。例如:“COUNTER”、“8bit_bus”等。3.2.3數(shù)據(jù)對(duì)象和類型2.數(shù)據(jù)類型(1)VHDL語言所定義的標(biāo)準(zhǔn)數(shù)據(jù)類型(2)用戶自定義的數(shù)據(jù)類型(3)用戶定義的子類型(4)數(shù)據(jù)類型的轉(zhuǎn)換

(5)IEEE標(biāo)準(zhǔn)數(shù)據(jù)類型“STD_LOGIC”和“STD_LOGIC_VECTOR”《EDA技術(shù)》59Doc.numbertobeenteredby"HeaderandFooter"3.2.3數(shù)據(jù)對(duì)象和類型時(shí)間類型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(失敗)。自然數(shù)(NATURAL)和正整數(shù)(POSITIVE)《EDA技術(shù)》60Doc.numbertobeenteredby"HeaderandFooter"TYPE數(shù)據(jù)類型名{,數(shù)據(jù)類型名}數(shù)據(jù)類型定義;枚舉類型

TYPE數(shù)據(jù)類型名IS(元素,元素,……);例如:TYPEinstructionIS(add,sub,inc,srl,srf,

mov,dec,);3.2.3數(shù)據(jù)對(duì)象和類型(2)用戶定義的數(shù)據(jù)類型

《EDA技術(shù)》61Doc.numbertobeenteredby"HeaderandFooter"

整數(shù)類型和實(shí)數(shù)類型

TYPEdigitISINTEGERRANGE0TO9;

數(shù)組

TYPE數(shù)組名ISARRAY[下標(biāo)約束]OF數(shù)組元素的類型名;

TYPEword8ISARRAY(1TO8)OFBIT;TYPEword8ISARRAY(INTEGERRANGE1TO8)OFBIT;TYPEword8ISARRAY(INTEGERRANGE<>)OFSTD_LOGIC;--無界數(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ì)象和類型《EDA技術(shù)》62Doc.numbertobeenteredby"HeaderandFooter"時(shí)間類型(物理類型)TYPE數(shù)據(jù)類型名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ì)象和類型《EDA技術(shù)》63Doc.numbertobeenteredby"HeaderandFooter"TYPEcapacitorISRANGE0TO1E18UNITSfF;

pF=1000fF;

nF=1000pF;

uF=1000nF;mF=1000uF;F=1000mF;ENDUNITS;3.2.3數(shù)據(jù)對(duì)象和類型物理量的定義應(yīng)用《EDA技術(shù)》64Doc.numbertobeenteredby"HeaderandFooter"記錄是由不同類型的數(shù)據(jù)集合在一起形成的數(shù)據(jù)類型,

TYPE數(shù)據(jù)類型名ISRECODE

元素名:數(shù)據(jù)類型;元素名:數(shù)據(jù)類型;∶

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ì)象和類型記錄《EDA技術(shù)》65Doc.numbertobeenteredby"HeaderandFooter"文件類型是在系統(tǒng)環(huán)境中定義為代表文件的一類客體。其說明格式為:

TYPE文件類型名ISFILE限制;例如:TYPEtextISFILEOFstring;在TEXTIO中有兩個(gè)預(yù)定義的標(biāo)準(zhǔn)文本文件:

FILEinput:textOPENread_modeIS

溫馨提示

  • 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)論