VHDL語言及程序設(shè)計(jì)_第1頁
VHDL語言及程序設(shè)計(jì)_第2頁
VHDL語言及程序設(shè)計(jì)_第3頁
VHDL語言及程序設(shè)計(jì)_第4頁
VHDL語言及程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩60頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、VHDL硬件描述語言及應(yīng)用硬件描述語言及應(yīng)用 -一種很好的數(shù)字系統(tǒng)硬件電路的形式化描述實(shí)現(xiàn)hwadee2022-7-42VHDL語言概述HDL:Hardware Description LanguageVHDL:由美國國防部開發(fā),1987年由IEEE標(biāo)準(zhǔn)化,1993年進(jìn)一步修訂Verilog:1983年由Gateway Design Automation公司開發(fā), 1990年被推向公眾領(lǐng)域, 1995年成為IEEE標(biāo)準(zhǔn)建議:VHDL比較嚴(yán)謹(jǐn),Verilog比較自由,初學(xué)還是用VHDL比較好,初學(xué)用Verilog會(huì)比較容易出錯(cuò) hwadee2022-7-43VHDL中的注意事項(xiàng)o在VHDL語言中

2、,大小寫不加區(qū)分,但在代碼中巧妙應(yīng)用大小寫,可以使代碼變得易于閱讀和規(guī)范o實(shí)體名必須與VHDL文件名相同,否則編譯會(huì)出錯(cuò)o信號(hào)與變量,過程與函數(shù)的區(qū)分hwadee2022-7-44VHDL語言程序的基本構(gòu)成庫、包集合庫、包集合:用于存放預(yù)先編譯好的程序包(PACKAGE)和數(shù)據(jù)集合體,以便不同的VHDL設(shè)計(jì)使用實(shí)體說明實(shí)體說明:規(guī)定設(shè)計(jì)單元的輸入輸出接口信號(hào)和引腳構(gòu)造體:構(gòu)造體:定義設(shè)計(jì)單元的具體構(gòu)造和操作hwadee2022-7-45VHDL語言程序的基本構(gòu)成示例庫、包集合說明實(shí)體說明構(gòu)造體hwadee2022-7-46庫和包集合的使用庫和包集合的使用o庫的說明總是放在設(shè)計(jì)單元的最前面,調(diào)用

3、方法: LIRARY 庫名 USE 庫名.所要調(diào)用的程序包名.ALLo具體可打開安裝目錄C:alteraquartus60librariesvhdl下相應(yīng)的文件進(jìn)行學(xué)習(xí)o常用庫和包集合:IEEE庫中的包集合STD_LOGIC_1164,STD_LOGIC_ARITH,STD_LOGIC_UNSIGNED,其中后兩個(gè)包在日本synopsys(新思)公司目錄中,該公司在FPGA行列還推出了prime time靜態(tài)時(shí)序分析工具oSTD庫中STANDARD包集合是VHDL的標(biāo)準(zhǔn)配置,使用時(shí)可以不說明oWORK庫:VHDL現(xiàn)行工作庫,可以理解為用戶當(dāng)前編輯的目錄中所有可用的包和數(shù)據(jù)集hwadee2022

4、-7-47 實(shí)體(實(shí)體(ENTITY) o 實(shí)體類似于原理圖中的一個(gè)部件符號(hào),它并不描述實(shí)體類似于原理圖中的一個(gè)部件符號(hào),它并不描述設(shè)計(jì)的具體功能,只是定義所需的全部輸入設(shè)計(jì)的具體功能,只是定義所需的全部輸入/輸出信輸出信號(hào)。實(shí)體格式如下:號(hào)。實(shí)體格式如下:oENTITY 實(shí)體名 ISGENERIC(常數(shù)名:數(shù)據(jù)類型:設(shè)定值) 類屬說明 PORT 端口說明 (端口信號(hào)名1: 模式 類型;端口信號(hào)名2: 模式 類型;端口信號(hào)名3: 模式 類型;端口信號(hào)名4: 模式 類型);END 實(shí)體名;實(shí)體名:實(shí)體名必須與實(shí)體名:實(shí)體名必須與VHDL文件名相同,否則編文件名相同,否則編譯會(huì)出錯(cuò)譯會(huì)出錯(cuò)hwad

5、ee2022-7-48 Exemple of ENTITYGENERIC所定義的元件叫做參數(shù)化元件,所定義的元件叫做參數(shù)化元件,即元件的規(guī)模或特性由即元件的規(guī)?;蛱匦杂蒅ENERIC的常數(shù)的常數(shù)決定,利用決定,利用GENERIC可以設(shè)計(jì)更加通用可以設(shè)計(jì)更加通用的元件,彈性地適應(yīng)不同的應(yīng)用的元件,彈性地適應(yīng)不同的應(yīng)用 端口信號(hào)名在實(shí)體之中必須是唯一端口信號(hào)名在實(shí)體之中必須是唯一的,信號(hào)名應(yīng)是合法的標(biāo)識(shí)符的,信號(hào)名應(yīng)是合法的標(biāo)識(shí)符分別有分別有IN、OUT、INOUT、BUFFER、LINKAGE 常用的有常用的有INTEGER、STD_LOGIC、STD_LOGIC_VECTOR hwadee20

6、22-7-49 ARCHITECTUREo所有能被仿真的實(shí)體都由結(jié)構(gòu)體(ARCHITECTURE)描述,即結(jié)構(gòu)體描述實(shí)體的結(jié)構(gòu)或行為,一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體分別代表該實(shí)體功能的不同實(shí)現(xiàn)方案o結(jié)構(gòu)體格式:ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS定義語句(元件例化);BEGIN并行處理語句;END 結(jié)構(gòu)體名;o結(jié)構(gòu)體名是對(duì)本結(jié)構(gòu)體的命名,它是該結(jié)構(gòu)體的惟一名稱,雖然可以由設(shè)計(jì)人員自由命名,但一般都將命名和對(duì)實(shí)體的描述結(jié)合起來,例如:行為描述(BEHAVE),寄存器傳輸級(jí)(RTL)hwadee2022-7-410 Exemple of ARCHITECTUREhwadee

7、2022-7-411 ARCHITECTURE的BLOCK子結(jié)構(gòu)o子結(jié)構(gòu)的使用使設(shè)計(jì)者可以把整個(gè)電路分成若干個(gè)相對(duì)獨(dú)立的模塊來進(jìn)子結(jié)構(gòu)的使用使設(shè)計(jì)者可以把整個(gè)電路分成若干個(gè)相對(duì)獨(dú)立的模塊來進(jìn)行描述行描述o子結(jié)構(gòu)有:子結(jié)構(gòu)有:BLOCK,PROCESS,SUBPROGRAMSoBLOCK與與ARCHITECTURE相當(dāng)于整體原理圖與子原理圖關(guān)系,結(jié)相當(dāng)于整體原理圖與子原理圖關(guān)系,結(jié)構(gòu)內(nèi)部語句是并發(fā)的,如希望構(gòu)內(nèi)部語句是并發(fā)的,如希望BLOCK有條件執(zhí)行,可采用衛(wèi)式有條件執(zhí)行,可采用衛(wèi)式BLOCK,如下:,如下:hwadee2022-7-412 ARCHITECTURE的PROCESS子結(jié)構(gòu)hwa

8、dee2022-7-413 ARCHITECTURE的SUBPROGRAM子結(jié)構(gòu)o與高級(jí)語言中的子程序概念差不多,可以反復(fù)調(diào)用,但不能重入,結(jié)構(gòu)內(nèi)語句為順序執(zhí)行,有Procedure和Function之分o多個(gè)過程和函數(shù)匯集在一起構(gòu)成包集合,幾個(gè)包集合匯集在一起構(gòu)成庫hwadee2022-7-414 VHDL中的數(shù)據(jù)對(duì)象o在邏輯綜合中,在邏輯綜合中,VHDL常用的數(shù)據(jù)對(duì)象有信號(hào)、變量及常量常用的數(shù)據(jù)對(duì)象有信號(hào)、變量及常量 o 信號(hào)信號(hào)SIGNAL:為全局變量,定義格式:SIGNAL 信號(hào)名: 數(shù)據(jù)類型:=初始值;賦值格式:目標(biāo)信號(hào)名=表達(dá)式o常在結(jié)構(gòu)體中用賦值語句完成對(duì)信號(hào)賦初值的任務(wù),因?yàn)榫C

9、合器往往忽略信號(hào)聲名時(shí)所賦的值 o常量:常量:全局變量,在設(shè)計(jì)中描述某一規(guī)定類型的特定值不變,如利用它可設(shè)計(jì)不同模值的計(jì)數(shù)器,模值存于一常量中,對(duì)不同的設(shè)計(jì),改變模值僅需改變此常量即可,就如上一章所說的參數(shù)化元件。定義格式:CONSTANT 常數(shù)名:數(shù)據(jù)類型:=表達(dá)式o 變量(變量(VARIABLE):):用于聲明局部值或用于子程序中,變量的賦值符號(hào)為“:=”,定義格式:VARIABLE 變量名: 數(shù)據(jù)類型:=初始值hwadee2022-7-415 VHDL中的信號(hào)與變量中的信號(hào)與變量o信號(hào)是實(shí)際的,是內(nèi)部的一個(gè)存信號(hào)是實(shí)際的,是內(nèi)部的一個(gè)存儲(chǔ)元件(儲(chǔ)元件(SIGNAL)或者是外部)或者是外部

10、輸入(輸入(IN、OUT、INOUT、BUFFER)o變量是虛的,僅是為了書寫方便變量是虛的,僅是為了書寫方便而引入的一個(gè)名稱,常用在實(shí)現(xiàn)而引入的一個(gè)名稱,常用在實(shí)現(xiàn)某種算法的賦值語句當(dāng)中某種算法的賦值語句當(dāng)中 o如果在一個(gè)進(jìn)程中多次為一個(gè)信如果在一個(gè)進(jìn)程中多次為一個(gè)信號(hào)賦值,只有最后一個(gè)值會(huì)起作號(hào)賦值,只有最后一個(gè)值會(huì)起作用用 ,這與,這與SIGNAL的硬件特性的硬件特性有關(guān)有關(guān)o變量賦值時(shí),變量的值改變是立變量賦值時(shí),變量的值改變是立即發(fā)生的即發(fā)生的 o信號(hào)賦值用信號(hào)賦值用“=”,變量賦值用變量賦值用“:=”hwadee2022-7-416 VHDL的數(shù)據(jù)類型o VHDL是一種強(qiáng)類型語言,

11、對(duì)于每一個(gè)常數(shù)、變量、信號(hào)、函數(shù)及設(shè)定的各種參量的數(shù)據(jù)類型(DATA TYPES)都有嚴(yán)格要求,相同數(shù)據(jù)類型的變量才能互相傳遞和作用,標(biāo)準(zhǔn)定義的數(shù)據(jù)類型都在VHDL標(biāo)準(zhǔn)程序表STD中定義,實(shí)際使用中,不需要用USE語句以顯式調(diào)用o VHDL常用的數(shù)據(jù)類型有三種:標(biāo)準(zhǔn)定義的數(shù)據(jù)類型、IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量及用戶自定義的數(shù)據(jù)類型 hwadee2022-7-417標(biāo)準(zhǔn)定義的數(shù)據(jù)類型標(biāo)準(zhǔn)定義的數(shù)據(jù)類型 oBoolean布爾量:取值為FALSE和TRUECHARACTER字符:ASCII字符,編程時(shí)用單引號(hào)括起來,如ASTRING字符串:字符失量,雙引號(hào)括起來,如“ADFBD”INTEGER整數(shù)

12、:32位,范圍從-(231-1)到(231-1);REAL實(shí)數(shù):實(shí)數(shù)類型僅能在VHDL仿真器中使用,綜合器不支持BIT位:取值為0或1;TIME時(shí)間:范圍從-(231-1)到(231-1),表達(dá)方法包含數(shù)字、(空格)單位兩部分,如(10 PS);BIT_VECTOR位矢量:其于BIT數(shù)據(jù)的數(shù)組,使用矢量必須注明寬度,即數(shù)組中的元素個(gè)數(shù)和排列,如SIGNAL A: BIT_VECTOR(7 DOWNTO 0)NATUREAL自然數(shù):整數(shù)的一個(gè)POSITIVE正整數(shù):SEVRITY LEVEL錯(cuò)誤等級(jí):在VHDL仿真器中,錯(cuò)誤等級(jí)用來設(shè)計(jì)系統(tǒng)的工作狀態(tài),共有四種可能的狀態(tài)值:NOTE,WARNIN

13、G,ERROR和FAILUREhwadee2022-7-418IEEE預(yù)定義的標(biāo)準(zhǔn)邏輯位與矢量預(yù)定義的標(biāo)準(zhǔn)邏輯位與矢量 o STD_LOGIC:工業(yè)標(biāo)準(zhǔn)的邏輯類型,取值為0、1、Z、X(強(qiáng)未知)、W(弱未知)、L(弱0)、H(弱1)、(忽略)、U(未初始化),只有前四種具有實(shí)際物理意義,其他的是為了與模擬環(huán)境相容才保留的o STD_LOGIC_VECTOR:工業(yè)標(biāo)準(zhǔn)的邏輯類型集,STD_LOGIC的組合 hwadee2022-7-419用戶自定義的數(shù)據(jù)類型 o用戶自定義的數(shù)據(jù)類型有枚舉類型、整數(shù)類型和實(shí)數(shù)類型、數(shù)組類型、記錄類型四種o枚舉類型: TYPE 數(shù)據(jù)類型名 IS (枚舉文字,枚舉文字

14、,. . . .)o整數(shù)類型與實(shí)數(shù)類型是標(biāo)準(zhǔn)包中預(yù)定義的整數(shù)類型的子集,由于綜合器無法綜合未限定范圍的整數(shù)類型的信號(hào)或變量,故一定要用RANGE子句為所定義整數(shù)范圍限定范圍以使綜合器能決定信號(hào)或變量的二進(jìn)制的位數(shù)。格式: TYPE 數(shù)據(jù)類型名 IS RANGE 約束范圍;o數(shù)組類型:數(shù)組是同一類型數(shù)據(jù)集合數(shù)組是同一類型數(shù)據(jù)集合,記錄內(nèi)元素類型可以不同記錄內(nèi)元素類型可以不同TYPE 數(shù)據(jù)類型名 IS ARRAY(下限 TO 上限) OF 類型名稱,多維數(shù)組不能生成邏輯電路,只能用于仿真圖形o記錄類型:TYPE 記錄類型名 IS RECODE元素名: 數(shù)據(jù)類型名;元素名: 數(shù)據(jù)類型名;。END R

15、ECODEhwadee2022-7-420 用戶自定義的數(shù)據(jù)類型舉例用戶自定義的數(shù)據(jù)類型舉例RANGE其范圍一般由調(diào)用者傳遞的參數(shù)決定其范圍一般由調(diào)用者傳遞的參數(shù)決定hwadee2022-7-421 用戶自定義的子類型用戶自定義的子類型o 對(duì)已定義類型作一些范圍限制(也可以與原數(shù)據(jù)類型完全一致),定義格式為: SUBTYPE 子類型名 IS 數(shù)據(jù)類型名(范圍)hwadee2022-7-422 數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換oVHDL中,不同數(shù)據(jù)類型不能直接進(jìn)行運(yùn)算和代入,要進(jìn)行運(yùn)算或代入必需對(duì)類型進(jìn)行轉(zhuǎn)換,使之一致hwadee2022-7-423 BIT_VECTOR與與STD_LOGIC_VECT

16、ORo代入STD_LOGIC_VECTOR的值只能是二進(jìn)制,代入BIT_VECTOR的值除二進(jìn)制外還可以是八進(jìn)制和十六進(jìn)制hwadee2022-7-424 數(shù)據(jù)類型的限定數(shù)據(jù)類型的限定oVHDL中有時(shí)可以用上下文關(guān)系來判斷某一數(shù)據(jù)的數(shù)據(jù)類型,如果不能判斷出來,就必需對(duì)數(shù)據(jù)進(jìn)行類型限定,類似C中的強(qiáng)制類型轉(zhuǎn)換hwadee2022-7-425運(yùn)算符運(yùn)算符:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,邏輯運(yùn)算符與連接運(yùn)算符算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,邏輯運(yùn)算符與連接運(yùn)算符 hwadee2022-7-426 運(yùn)算符的使用運(yùn)算符的使用o邏輯運(yùn)算、算術(shù)運(yùn)算、關(guān)系運(yùn)算的左右以及代入的數(shù)據(jù)類型一定要相同oVHDL中左右沒有優(yōu)先級(jí)的差

17、異,如 x=(a AND b) OR (NOT c AND d)o能真正綜合的算術(shù)運(yùn)算符只有“+”,“-”,“*”;“MOD”,“REM”,“/”分母是2乘方時(shí)可綜合,由于硬件特性,后4種應(yīng)慎用,最好作適當(dāng)變通o“=”應(yīng)通過上下文關(guān)系判定是關(guān)系運(yùn)算符還是代入符o位的連接也可以采用集合的方式,把并置符改成“,”即可,如:temp_4=(1,0,1,0);其中temp_4為4位寬的位失量,但這種方式不能用于位失量連接,如:temp_4=(temp_2,temp_2);就是錯(cuò)誤的hwadee2022-7-427 VHDL的主要描述語句的主要描述語句o 順序描述語句和并發(fā)描述語句是程序設(shè)計(jì)中兩大基本描

18、述語句系列 o 順序描述語名只出現(xiàn)在PROCESS和SUBPROGRAM中,語句按出現(xiàn)的次序加以執(zhí)行o 對(duì)于FPGA搭建的應(yīng)用系統(tǒng),元件在定義的仿真時(shí)該應(yīng)該是并發(fā)工作的,并發(fā)語句就用于表示這種并發(fā)行為hwadee2022-7-428 賦值語句賦值語句o賦值語句分為變量賦值和信號(hào)賦值,區(qū)賦值語句分為變量賦值和信號(hào)賦值,區(qū)別如下別如下:格式:格式:變量賦值為“變量名:=表達(dá)式”,信號(hào)賦值為“信號(hào)名=表達(dá)式” 所用的地方:所用的地方:變量說明和使用都只能在順序語句中(進(jìn)程、函數(shù)),信號(hào)的說明只能在同步語句中,但可以在順序語句和同步語句中使用賦值過程:賦值過程:變量的賦值是立即的,而信號(hào)的賦值的執(zhí)行和

19、信號(hào)值的更新至少要延時(shí)DELTA延時(shí),只有延時(shí)后信號(hào)才能得到新值,否則將保持原值,在進(jìn)程中,信號(hào)賦值在結(jié)束時(shí)起作用順序語句順序語句hwadee2022-7-429 WAIT語句語句 oWAIT語句屬于敏感信號(hào)激勵(lì)信號(hào),一個(gè)進(jìn)程語句含有敏感信號(hào)時(shí),進(jìn)程中不能出現(xiàn)WAIT等待語句;當(dāng)進(jìn)程語句不含有敏感信號(hào)時(shí),進(jìn)程語句必須含有其他形態(tài)的敏感信號(hào)激勵(lì)oWAIT語句有五種形式:WAIT 無限等待;WAIT ON (敏感信號(hào)1,敏感信號(hào)2,敏感信號(hào)N) 敏感信號(hào)變化,表中的信號(hào)產(chǎn)生變化時(shí)才往下運(yùn)行oWAIT UNTIL 布爾表達(dá)式 為TRUE時(shí),進(jìn)程啟動(dòng),為FARLSE是等待WAIT FOR 時(shí)間表達(dá)式

20、到時(shí)進(jìn)程才會(huì)啟動(dòng)WAIT UNTIL 布爾表達(dá)式 ON (敏感信號(hào)1,敏感信號(hào)2,敏感信號(hào)N) FOR 時(shí)間表達(dá)式 多條件等待語句,注意在多條件等待語句的表達(dá)式中,至少應(yīng)有一個(gè)信號(hào)量,因?yàn)樘幱诘却M(jìn)程中的變量是不可改變的 兩個(gè)描述完全等價(jià),右邊的寫法中每次a和b有新的變化,進(jìn)程便會(huì)結(jié)束掛起壯態(tài)順序語句順序語句hwadee2022-7-430 IF語句 o 其完整的書寫格式IF標(biāo)號(hào): IF THEN ;ELSIF THEN ;.ELSE ;END IF IF標(biāo)號(hào)順序語句順序語句hwadee2022-7-431 CASE語句語句oCASE語句是另一種形式的流程控制語句,可讀性比IF的強(qiáng),格式如下C

21、ASE 條件表達(dá)式 ISWHEN 條件取值 =順序處理語句 ;WHEN 條件取值 =順序處理語句 ;WHEN 條件取值 =順序處理語句 ;WHEN OTHERS =順序處理語句 ;END CASE;順序語句順序語句hwadee2022-7-432FOR模式的模式的LOOP語句語句o 格式格式:LOOP標(biāo)號(hào): FOR 循環(huán)變量 IN 離散范圍 LOOP順序處理語句;END LOOP LOOP標(biāo)號(hào);順序語句順序語句hwadee2022-7-433WHILE模式的模式的LOOP語句語句o格式格式:LOOP標(biāo)號(hào): WHILE條件LOOP順序處理語句;END LOOPLOOP標(biāo)號(hào);順序語句順序語句hwa

22、dee2022-7-434 NEXT和EXIT語句o這兩種語句都是用于跳出LOOP循環(huán)的,NEXT語句是用來跳出本次循環(huán)的,而EXIT語句是用于跳出全部循環(huán)的。格式:NEXT或EXIT LOOP標(biāo)號(hào) WHEN條件 順序語句順序語句hwadee2022-7-435NEXT與EXIT使用說明o NEXT語句一般用于LOOP的內(nèi)循環(huán)控制o EXIT沒有循環(huán)標(biāo)號(hào),退出當(dāng)前LOOPo EXIT有循環(huán)標(biāo)號(hào),程序跳至標(biāo)號(hào)處o EXIT+循環(huán)標(biāo)號(hào)+WHEN,當(dāng)WHEN為真時(shí)跳至標(biāo)號(hào)處,如無標(biāo)號(hào)跳出當(dāng)前LOOP順序語句順序語句hwadee2022-7-436 NULL與與 RETURN語句語句 oNULL空操作

23、語句,書寫格式為空操作語句,書寫格式為“NULL;”,唯一的作用是使,唯一的作用是使程序流程運(yùn)行到下一個(gè)語句,常用于程序流程運(yùn)行到下一個(gè)語句,常用于CASE語句當(dāng)中語句當(dāng)中o用在一段子程序結(jié)束后,用來返回到主程序的控制語句,一般情用在一段子程序結(jié)束后,用來返回到主程序的控制語句,一般情況之下,有兩種書寫格式,分別是況之下,有兩種書寫格式,分別是RETURN; 只能用于進(jìn)程返回只能用于進(jìn)程返回RETURN 表達(dá)式;表達(dá)式;只能用于函數(shù)返回只能用于函數(shù)返回o 在實(shí)際的應(yīng)用中,一般的在實(shí)際的應(yīng)用中,一般的VHDL綜合工具要求函數(shù)綜合工具要求函數(shù)中只能包含一個(gè)中只能包含一個(gè)RETURN,并規(guī)定這條,并

24、規(guī)定這條RETURN語句只能寫在函數(shù)末尾,但一些語句只能寫在函數(shù)末尾,但一些VHDL綜合工具允綜合工具允許函數(shù)中出現(xiàn)多個(gè)許函數(shù)中出現(xiàn)多個(gè)RETURN語句語句 順序語句順序語句hwadee2022-7-437REPORT 和和ASSERT斷言語句斷言語句o報(bào)告語句是93版VHDL標(biāo)準(zhǔn)提供的一種新的順序語句,該語句沒有增加任何功能,只是提供了某些形式的順序斷言語句的短格式,也算是ASSERT語句的一個(gè)精簡,格式如下:REPORT 輸出信息SEVERITY出錯(cuò)級(jí)別o主要用于程序仿真、調(diào)試中的人機(jī)對(duì)話,它可以給出一個(gè)文字串作為警告和錯(cuò)誤信息,基本書寫格式如下:ASSERT條件REPORT輸出信號(hào) 字符

25、串SEVERITY錯(cuò)誤級(jí)別;有四種NOTE、WARNING、ERROR和FAILURE 順序語句順序語句hwadee2022-7-438并發(fā)并發(fā)信號(hào)信號(hào)賦值語句賦值語句 o 注意:信號(hào)賦值語句在順序語句里面也有,順序語句里可以給信號(hào)賦值也可以給變量賦值,而順序語句里只能對(duì)變量說明,不能對(duì)信號(hào)說明。并行語句剛好相反 o 為什么變量不能在并行語句里面說明呢?o 為什么信號(hào)不能在順序語句里面說明呢? 并發(fā)語句并發(fā)語句信號(hào)是全局的,變量是信號(hào)是全局的,變量是局部的局部的 hwadee2022-7-439賦值方式一:信號(hào)名賦值方式一:信號(hào)名=表達(dá)式表達(dá)式賦值方式二賦值方式二 (條件信號(hào)賦值):目標(biāo)信號(hào)=

26、表達(dá)式1 WHEN 條件1 ELSE表達(dá)式2 WHEN 條件2 ELSE表達(dá)式3 WHEN 條件3 ELSE表達(dá)式4注意:用條件信號(hào)賦值,只有當(dāng)用進(jìn)程、注意:用條件信號(hào)賦值,只有當(dāng)用進(jìn)程、IF和和CASE難以對(duì)電路進(jìn)行描述時(shí)難以對(duì)電路進(jìn)行描述時(shí)才用;條件信號(hào)賦值語句才用;條件信號(hào)賦值語句ELSE是必須的、不能進(jìn)行嵌套是必須的、不能進(jìn)行嵌套 且必須用在結(jié)且必須用在結(jié)構(gòu)體中的進(jìn)程之外構(gòu)體中的進(jìn)程之外 賦值方式三(選擇信號(hào)賦值):WITH 選擇條件表達(dá)式 SELECT目標(biāo)信號(hào)=信號(hào)表達(dá)式1 WITH 選擇條件1信號(hào)表達(dá)式2 WITH 選擇條件2信號(hào)表達(dá)式3 WITH 選擇條件3信號(hào)表達(dá)式4 WITH

27、 OTHERS注意:選擇信號(hào)賦值語句必須用在結(jié)構(gòu)體中的進(jìn)程之外注意:選擇信號(hào)賦值語句必須用在結(jié)構(gòu)體中的進(jìn)程之外 并發(fā)信號(hào)賦值語句的三種形式并發(fā)信號(hào)賦值語句的三種形式并發(fā)語句并發(fā)語句hwadee2022-7-440 塊語句在VHDL語言設(shè)計(jì)中,塊語句常常用來對(duì)比較復(fù)雜的結(jié)構(gòu)體作結(jié)構(gòu)化描述,格式如下塊標(biāo)號(hào): BLOCK 衛(wèi)式表達(dá)式類屬子句;端口子句;塊說明部分;BEGINEND BLOCK塊標(biāo)號(hào);衛(wèi)式表達(dá)式:是一個(gè)布爾條件表達(dá)式,只有當(dāng)這個(gè)表達(dá)式為TURE時(shí),BLOCK語句才被執(zhí)行;類屬子句:塊的屬性說明塊說明部分:用于定義USE、子程序、數(shù)據(jù)類型、子類型、常量、信號(hào)和元件塊語句說明部分:用于描述

28、塊的具體功能,可以包含結(jié)構(gòu)塊中的任何并行語句結(jié)構(gòu)。注:塊語句的作用就是將一個(gè)大的結(jié)構(gòu)劃成一塊一塊小的結(jié)構(gòu) ,現(xiàn)比較流行原現(xiàn)比較流行原理圖和元件的方式,這樣更為簡潔直觀理圖和元件的方式,這樣更為簡潔直觀并發(fā)語句并發(fā)語句hwadee2022-7-441進(jìn)程語句o進(jìn)程語句是一種應(yīng)用廣泛的并行語句,一個(gè)結(jié)構(gòu)體中可以包括一個(gè)或者多個(gè)進(jìn)程語句,結(jié)構(gòu)體中的進(jìn)程語句是并發(fā)關(guān)系,即各個(gè)進(jìn)程是同時(shí)處理的、并行執(zhí)行的;但在每一個(gè)進(jìn)程語句結(jié)構(gòu)中,組成進(jìn)程的各個(gè)語句都是順序執(zhí)行,在進(jìn)程語句中是不能用并行語句的。格式進(jìn)程標(biāo)號(hào):PROCESS 敏感信號(hào)表 IS 進(jìn)程語句說明部分;BEGINEND PROCESS進(jìn)程標(biāo)號(hào);注

29、:1、 敏感信號(hào)表列出了進(jìn)程語句敏感的所有信號(hào),每當(dāng)其中的一個(gè)信號(hào)發(fā)生變化時(shí),就會(huì)引起其他語句的執(zhí)行,如果敏感信號(hào)表不寫,那么在PROCESS里面必須有WAIT語句,由WAIT語句來產(chǎn)生對(duì)信號(hào)的敏感;而當(dāng)敏感信號(hào)表存在時(shí),就不能在PROCESS里再有WAIT語句;2、 IS可有可無,是由93版規(guī)定的3、 進(jìn)程語句說明部分是進(jìn)程語句的一個(gè)說明區(qū),它主要用來定義進(jìn)程語句所需要的局部數(shù)據(jù)環(huán)境,包括數(shù)據(jù)類型說明、子程序說明和變量說明。4、 進(jìn)程語句有兩種存在狀態(tài),一是等待,當(dāng)敏感信號(hào)沒有發(fā)生變化時(shí);一是執(zhí)行,當(dāng)敏感信號(hào)變化時(shí)。 5、時(shí)鐘信號(hào)自動(dòng)進(jìn)入敏感表并發(fā)語句并發(fā)語句hwadee2022-7-442

30、子程序調(diào)用語句o 子程序分為函數(shù)和過程,它們的定義屬于說明語句,均可在順序語句和并行語句里面使用,它們的調(diào)用方法不一樣。函數(shù)只有一個(gè)返回值,用于賦值,可以說在信號(hào)賦值的時(shí)候就是對(duì)函數(shù)的調(diào)用;過程有很多個(gè)返回值,用于進(jìn)行處理,準(zhǔn)確的來說子程序調(diào)用語句就是過程調(diào)用語句。 并發(fā)語句并發(fā)語句hwadee2022-7-443 參數(shù)傳遞語句參數(shù)傳遞語句 o參數(shù)傳遞語句即在實(shí)體中定義的GENERIC,可以描述不由材料和不同工藝構(gòu)成的相同元件或模塊的性能參數(shù)(如延時(shí)),在定義了GENERIC的實(shí)體叫參數(shù)化實(shí)體,由參數(shù)化實(shí)體形成的元件在例化時(shí)具有很大的適應(yīng)性,在不同的環(huán)境下,只須用GENERIC MAP來修改參

31、數(shù)就可以了o使用時(shí),在對(duì)元件例化時(shí)加在里面就可,比如已經(jīng)定義了一個(gè)AND2的實(shí)體,要在EXAMPLE里面使用AND2,要先對(duì)AND2進(jìn)行元件聲明,再將AND2例化,如下:u0: AND2 GENERIC MAP(參數(shù)值1,參數(shù)值2) PORT MAP(參數(shù)表)并發(fā)語句并發(fā)語句hwadee2022-7-444 元件例化語句元件例化語句o一個(gè)實(shí)體就相當(dāng)于元件,元件名就相當(dāng)于實(shí)體名,元件要實(shí)現(xiàn)的功能在實(shí)體里面就已經(jīng)描述好,比如,同一個(gè)文件夾下已經(jīng)有一個(gè)名為A.VHD的文件,如果要在另一個(gè)文件B.VHD里面用到A.VHD里面定義的功能,那么可以在B.VHD文件里面通過元件聲明和元件例化來調(diào)用A這個(gè)元件

32、,總的來說調(diào)用元件過程就是“建立元件-元件聲明-元件例化”,元件調(diào)用時(shí)不用USE語句。o注:元件聲明語句屬說明語句,不是同步語句,以下對(duì)元聲的說明是為了更好地了解元件的調(diào)用,元件的實(shí)例化之前必須要有元件聲明元件聲明語句格式COMPONENT 元件名就是文件名,即是實(shí)體名GENERIC ; 這就是所產(chǎn)的元件參數(shù)PORT;END COMPONENT;元件例化格式:元件符:元件名 GENERIC MAP (參數(shù)表) PORT MAP(端口表)并發(fā)語句并發(fā)語句hwadee2022-7-445元件例化語句實(shí)例元件例化語句實(shí)例并發(fā)語句并發(fā)語句元件聲明元件例化hwadee2022-7-446并行斷言語句o

33、前面已經(jīng)說過順序斷言語句,這里的斷言語句是并行的,可以放在實(shí)體說明、結(jié)構(gòu)體和塊語句中使用,可以放在任何要觀察和調(diào)試的點(diǎn)上,而順序斷言語句只能在進(jìn)程、函數(shù)和過程中使用o 其實(shí)斷言語句的順序使用格式和并行使用格其實(shí)斷言語句的順序使用格式和并行使用格式是一樣的,因此斷言語句是可以應(yīng)用在任式是一樣的,因此斷言語句是可以應(yīng)用在任何場所的,格式請(qǐng)看順序的說明何場所的,格式請(qǐng)看順序的說明 并發(fā)語句并發(fā)語句hwadee2022-7-447思考:是不是所有的思考:是不是所有的VHDL語句都可以歸結(jié)為順序語句語句都可以歸結(jié)為順序語句和并行語句呢?和并行語句呢? o 可以把VHDL語句分為三大類:順序語句、并行語句

34、和說明語句,其中說語句在沒有調(diào)用之前是不會(huì)參與執(zhí)行的,如:元件和函數(shù)說明,在元件實(shí)例化和函數(shù)調(diào)用前是不參與執(zhí)行的o 三類語句的關(guān)系是順語句可以用在并行語句和說明語句當(dāng)中;說明語句可以用在并行語句當(dāng)中;而并行語句是不能用在其他語句當(dāng)中,可以說并行語句屬于一種高級(jí)形態(tài),是語句的最終形態(tài) hwadee2022-7-448過程和函數(shù)有什么區(qū)別?過程和函數(shù)有什么區(qū)別?o 過程可以具有多個(gè)返回值(準(zhǔn)確來說不是返回值,而是這些信號(hào)在過程之中被改變),函數(shù)只有一個(gè)返回值 o 過程通常用來定義一個(gè)算法,而函數(shù)用來產(chǎn)生一個(gè)具有特定意義的值 o 過程中的形式參數(shù)可以有三種通信模式(輸入、輸出、雙向),而函數(shù)中的形參

35、只能是輸入通信模式(因?yàn)楹瘮?shù)是用來產(chǎn)生一個(gè)值的)o 過程中可以使用賦值語句或WAIT語句,而函數(shù)不可(因?yàn)檫^程是用來處理的) hwadee2022-7-449VHDL語言的構(gòu)造體描述方式o 行為描述方式o 數(shù)據(jù)流描述方式(寄存器傳輸描述RTL)o 結(jié)構(gòu)描述方式hwadee2022-7-450行為描述方式o 所謂行為描述,就是對(duì)設(shè)計(jì)實(shí)體的數(shù)學(xué)模型的描述,其抽象程度遠(yuǎn)遠(yuǎn)高于數(shù)據(jù)流描述方式和結(jié)構(gòu)描述方式.o 行為描述類似于高級(jí)編程語言,當(dāng)要描述一個(gè)設(shè)計(jì)實(shí)體的行為時(shí),無須知道具體電路的結(jié)構(gòu),只需要用一組狀態(tài)來描述即可.o 行為描述的優(yōu)點(diǎn)在于只需要描述清楚輸入與輸出的行為,而不需要花費(fèi)更多的精力關(guān)注設(shè)計(jì)

36、功能的門級(jí)實(shí)現(xiàn). hwadee2022-7-451數(shù)據(jù)流描述方式o 數(shù)據(jù)流描述是對(duì)從信號(hào)到信號(hào)的數(shù)據(jù)流的路徑形式進(jìn)行描述,因此很容易進(jìn)行邏輯綜合.o 由于要對(duì)信號(hào)的流動(dòng)路徑進(jìn)行描述,因此要求設(shè)計(jì)人員對(duì)設(shè)計(jì)實(shí)體的功能實(shí)現(xiàn)要有一定的了解,有時(shí)候還需要對(duì)內(nèi)部電路有清楚的認(rèn)識(shí),具有一定的難度.hwadee2022-7-452結(jié)構(gòu)描述方式結(jié)構(gòu)描述方式o 結(jié)構(gòu)描述方式就是在多層次的設(shè)計(jì)中,通過調(diào)用庫中的元件或是已設(shè)計(jì)好的模塊來完成設(shè)計(jì)實(shí)體功能的描述.o 在結(jié)構(gòu)體中,描述只表示元件(或模塊)和元件(或模塊)之間的互連,就像網(wǎng)表一樣.o 當(dāng)引用庫中不存在的元件時(shí),必須首先進(jìn)行元件的創(chuàng)建,然后將其放在工作庫中,

37、通過調(diào)用工作庫來引用元件.在引用元件時(shí),要先在結(jié)構(gòu)體說明部分進(jìn)行元件的說明,然后在使用元件進(jìn)行元件例化.o 基本演變成原理圖+元件的設(shè)計(jì)方式hwadee2022-7-453全加器o 設(shè)有兩個(gè)四位二進(jìn)制數(shù)相加o 1 0 0 1 被加數(shù)Ao 0 1 0 1 加數(shù) Bo 1 1 1 0 和 So 在相加過程中,兩數(shù)相加有時(shí)要產(chǎn)生進(jìn)位,這個(gè)進(jìn)位要送到高位的和中去.所以一個(gè)全加器要求三個(gè)變量(被加數(shù)Ai和加數(shù)Bi以及低位向本位的進(jìn)位Ci-1)的和Si和向高位的進(jìn)位Ci.hwadee2022-7-454全加器真值表AiBiCi-1Si Ci0000 00 011 0 0 101 0 0 110 1 1 0

38、01 0 1 010 1 1 100 1 1 111 1 hwadee2022-7-455一位全加器的邏輯示意圖一位全加器的邏輯示意圖abCinSCohwadee2022-7-456采用行為描述方法設(shè)計(jì)一位全加器采用行為描述方法設(shè)計(jì)一位全加器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full_adder IS PORT(a,b,Cin:IN STD_LOGIC; Co,S:OUT STD_LOGIC);END full_adder;ARCHITECTURE behav OF full_adder ISBEGIN PROCESS(a,b,Ci

39、n) VARIABLE ai,bi,ci,si:INTEGER; BEGIN IF (a=0) THEN ai := 0; ELSE ai := 1; END IF; IF (b=0) THEN bi := 0; ELSE bi := 1; END IF; IF (Cin=0) THEN ci := 0; ELSE ci := 1; END IF; si := ai + bi +ci; CASE si IS WHEN 0= S =0;Co=0; WHEN 1= S =1;Co=0; WHEN 2= S =0;Co=1; WHEN 3= S =1;Co=1; WHEN OTHERS=S=X;Co

40、=0; END CASE; END PROCESS; END behav;hwadee2022-7-457一位全加器實(shí)現(xiàn)的邏輯電路圖一位全加器實(shí)現(xiàn)的邏輯電路圖hwadee2022-7-458采用數(shù)據(jù)流描述方法設(shè)計(jì)一位全加器采用數(shù)據(jù)流描述方法設(shè)計(jì)一位全加器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full_adder IS PORT(a,b,Cin:IN STD_LOGIC; Co,S:OUT STD_LOGIC);END full_adder;ARCHITECTURE dataflow OF full_adder IS SIGNAL tem

41、p1,temp2:STD_LOGIC;BEGIN temp1 = a XOR b; temp2 = temp1 AND Cin; S = temp1 XOR Cin; Co = temp2 OR (a AND b);END dataflow;hwadee2022-7-459采用半加器設(shè)計(jì)全加器采用半加器設(shè)計(jì)全加器1位半加器1位全加器H_ADDERa cob soH_ADDERa cob soH_ADDERa cob soF_ADDERain coutbin sumcinainbinain a c bu1u2u3sumcoutdefhwadee2022-7-460LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2 IS PORT(A,B:IN STD_LOGIC;

溫馨提示

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