數(shù)字電子技術(shù)基礎(chǔ)課件:第三章 硬件描述語(yǔ)言VHDL基礎(chǔ)_第1頁(yè)
數(shù)字電子技術(shù)基礎(chǔ)課件:第三章 硬件描述語(yǔ)言VHDL基礎(chǔ)_第2頁(yè)
數(shù)字電子技術(shù)基礎(chǔ)課件:第三章 硬件描述語(yǔ)言VHDL基礎(chǔ)_第3頁(yè)
數(shù)字電子技術(shù)基礎(chǔ)課件:第三章 硬件描述語(yǔ)言VHDL基礎(chǔ)_第4頁(yè)
數(shù)字電子技術(shù)基礎(chǔ)課件:第三章 硬件描述語(yǔ)言VHDL基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩156頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章硬件描述語(yǔ)言VHDL基礎(chǔ)1章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.3 VHDL常用語(yǔ)句3.4 VHDL語(yǔ)法基礎(chǔ)3.5 組合電路的VHDL描述3.6 時(shí)序電路的VHDL描述調(diào)換23.1 硬件描述語(yǔ)言概述可編程邏輯器件、電子設(shè)計(jì)自動(dòng)化(EDA)與硬件描述語(yǔ)言可編程邏輯器件是一種功能可變的集成器件可通過(guò)編程的方法設(shè)計(jì)其完成不同的邏輯功能設(shè)計(jì)需借助軟件工具,即采用電子設(shè)計(jì)自動(dòng)化的方式設(shè)計(jì)形式有原理圖和硬件描述語(yǔ)言?xún)煞N硬件描述語(yǔ)言是用來(lái)描述數(shù)字電路系統(tǒng)的一種語(yǔ)言3目前常用的硬件描述語(yǔ)言有兩種VHDLVerilog HDLVery High Speed Integrated

2、Circuit Hardware Description Language超高速集成電路硬件描述語(yǔ)言Verilog Hardware Description LanguageVerilog硬件描述語(yǔ)言VHDL語(yǔ)言發(fā)展較早,從使用者數(shù)量來(lái)看,目前兩種語(yǔ)言平分秋色,VHDL語(yǔ)言更嚴(yán)謹(jǐn)、更適合設(shè)計(jì)大型數(shù)字系統(tǒng)。兩種語(yǔ)言相似的地方很多,學(xué)會(huì)一種可自學(xué)另一種。4VHDL語(yǔ)言的IEEE標(biāo)準(zhǔn) VHDL IEEE 1076-1987 VHDL IEEE 1076-1993 早在1980年,因?yàn)槊绹?guó)軍事工業(yè)需要描述電子系統(tǒng)的方法,美國(guó)國(guó)防部開(kāi)始進(jìn)行VHDL的開(kāi)發(fā) 1987年,由IEEE(Institute of

3、 Electrical and Electronics Engineers,電氣和電子工程師協(xié)會(huì) )將VHDL制定為標(biāo)準(zhǔn),稱(chēng)為IEEE1076-1987 1993年制定了第二個(gè)IEEE標(biāo)準(zhǔn)版本,稱(chēng)為IEEE1076-1993,增加了一些新的命令和屬性5章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.4 VHDL語(yǔ)法基礎(chǔ)3.3 VHDL常用語(yǔ)句3.5 組合電路的VHDL描述3.6 時(shí)序電路的VHDL描述63.2 VHDL語(yǔ)言程序結(jié)構(gòu)五個(gè)基本組成部分庫(kù)(Library)程序包(Package)實(shí)體說(shuō)明(Entity Declaration)結(jié)構(gòu)體(Archiecture)配置(Co

4、nfiguration)主要部分注意:程序擴(kuò)展名為.vhd7【例3-1】2選1數(shù)據(jù)選擇器的VHDL語(yǔ)言描述d0d1selftemp3temp1temp2功能:2選1數(shù)據(jù)選擇器Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;8- 2 to 1 mux VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;庫(kù)程序包實(shí)體說(shuō)明VHDL語(yǔ)言程序注釋d0d1selfmux9ARCHITECTURE structure OF mu

5、x ISSIGNAL temp: STD_LOGIC; -內(nèi)部信號(hào)BEGINp0:PROCESS(d0,d1,sel) -進(jìn)程 VARIABLE temp1,temp2,temp3: STD_LOGIC; BEGIN -進(jìn)程內(nèi)的局部變量 temp1:=d0 AND(NOT sel);-變量間的邏輯關(guān)系 temp2:=d1 AND sel; temp3:=temp1 OR temp2; temp=temp3; f=temp;END PROCESS p0; -進(jìn)程結(jié)束END structure; -結(jié)構(gòu)體結(jié)束結(jié)構(gòu)體10EDA工具軟件QuartusII綜合出來(lái)的電路111行是注釋?zhuān)?“-”引頭23

6、行是庫(kù)說(shuō)明部分,打開(kāi)庫(kù)及庫(kù)中的程序包47行是實(shí)體說(shuō)明部分,描述電路的端口信號(hào)8最后是結(jié)構(gòu)體部分,描述電路的邏輯功能VHDL語(yǔ)言不區(qū)分大小寫(xiě),為閱讀方便,關(guān)鍵字用大寫(xiě),用戶(hù)自定義部分用小寫(xiě)。說(shuō)明12三方面內(nèi)容3.2.1 實(shí)體說(shuō)明3.2.2 結(jié)構(gòu)體3.2.3 包集合、庫(kù)及配置133.2.1 實(shí)體說(shuō)明【格式】ENTITY ISGENERIC (類(lèi)屬說(shuō)明);PORT (端口說(shuō)明);實(shí)體語(yǔ)句部分;END ENTITY ; 主要部分表示必選項(xiàng), 表示可選項(xiàng)【主要功能】說(shuō)明電路的名字、輸入輸出信號(hào)。14【例】4位紋波加法器的實(shí)體說(shuō)明。ENTITY adder_ripple ISGENERIC (m: TIM

7、E :=5ns);PORT (a, b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: OUT STD_LOGIC);END adder_ripple;abqcoutadder_ripple15實(shí)體名由用戶(hù)自定義,必須和主文件名一致必須以ENTITY IS開(kāi)始,以END 結(jié)束在端口說(shuō)明部分說(shuō)明輸入輸出信號(hào)的情況在類(lèi)屬說(shuō)明部分說(shuō)明類(lèi)屬常數(shù)的情況通常電路中的常數(shù)可在設(shè)計(jì)實(shí)體的內(nèi)部進(jìn)行賦值,且一旦賦值就不能再改變。如果電路中某個(gè)常數(shù)值需要在實(shí)體外部進(jìn)行修改,則在實(shí)體說(shuō)明部分的類(lèi)屬說(shuō)明中加以說(shuō)明,

8、這樣的常數(shù)可稱(chēng)為類(lèi)屬常數(shù),以與普通常數(shù)區(qū)別。VHDL語(yǔ)言程序的擴(kuò)展名是vhd,即*.vhd。說(shuō)明:161.類(lèi)屬說(shuō)明語(yǔ)句GENERIC (m: TIME :=5ns);【格式】GENERIC (常數(shù)名: 數(shù)據(jù)類(lèi)型 :=設(shè)定值; 常數(shù)名: 數(shù)據(jù)類(lèi)型 :=設(shè)定值);【功能】說(shuō)明類(lèi)屬常數(shù)的名字,數(shù)據(jù)類(lèi)型,設(shè)定值。【例】172.端口說(shuō)明語(yǔ)句【格式】PORT (端口名,端口名: 模式 數(shù)據(jù)類(lèi)型; 端口名,端口名: 模式 數(shù)據(jù)類(lèi)型);PORT (a,b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); cout: O

9、UT STD_LOGIC);【功能】 說(shuō)明輸入輸出信號(hào)的名字,輸入輸出模式,數(shù)據(jù)類(lèi)型?!纠?8端口名是輸入輸出信號(hào)的名字。模式是指輸入輸出信號(hào)的方向。數(shù)據(jù)類(lèi)型是指輸入輸出信號(hào)的取值類(lèi)型。表3-1端口方向說(shuō)明方向定義含義IN輸入OUT輸出INOUT雙向BUFFER輸出(可反饋使用)LINKAGE不指定方向BITBIT_VECTORSTD_LOGICINTEGERBOOLEANSTD_LOGIC_VECTOR常用數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型在3.4節(jié)詳細(xì)介紹說(shuō)明:193.2.2 結(jié)構(gòu)體【格式】ARCHITECTURE OF IS 定義語(yǔ)句;BEGIN END ;【功能】描述電路的具體結(jié)構(gòu)、功能。主要部分20

10、ARCHITECTURE是關(guān)鍵字。結(jié)構(gòu)體名可隨意起,實(shí)體名必須和實(shí)體說(shuō)明中的實(shí)體名一致。定義語(yǔ)句是指對(duì)內(nèi)部信號(hào)、變量等的說(shuō)明。并行處理語(yǔ)句部分是結(jié)構(gòu)體的主要部分,描述電路的結(jié)構(gòu)、功能等。BEGIN后開(kāi)始結(jié)構(gòu)和功能的描述。說(shuō)明:21【例3-2】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(數(shù)據(jù)流描述方式)resetsetqqb該電路中并行語(yǔ)句部分使用的是并行信號(hào)賦值語(yǔ)句,描述了兩個(gè)與非門(mén)的連接關(guān)系。22【例3-3】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(結(jié)構(gòu)描述方式)本例是RS觸發(fā)器的另一種描述方式,并行處理語(yǔ)句采用的是元件例化語(yǔ)句,后面3.3.1介紹。23【例3-4】一個(gè)全加器的VHDL程序(數(shù)據(jù)流描述方式)本例結(jié)構(gòu)體中的并行處理

11、部分采用的也是并發(fā)信號(hào)賦值語(yǔ)句。描述了兩個(gè)異或門(mén)和一個(gè)與或門(mén)。本例中的類(lèi)屬說(shuō)明語(yǔ)句說(shuō)明了一個(gè)時(shí)間常數(shù)tpd是5ns,后面的賦值語(yǔ)句使用了該延時(shí)參數(shù)。243種常用的子結(jié)構(gòu)描述方式進(jìn)程語(yǔ)句結(jié)構(gòu)塊語(yǔ)句結(jié)構(gòu)子程序語(yǔ)句結(jié)構(gòu)主要講解25進(jìn)程(PROCESS)語(yǔ)句結(jié)構(gòu)【格式】進(jìn)程標(biāo)號(hào): PROCESS 敏感信號(hào)表 IS進(jìn)程語(yǔ)句說(shuō)明部分;BEGINEND PROCESS 進(jìn)程標(biāo)號(hào);26【例3-7】帶敏感信號(hào)表的進(jìn)程語(yǔ)句實(shí)例。273.2.3 包集合、庫(kù)及配置1. 包集合(Package)包集合中存放供多個(gè)實(shí)體公用的數(shù)據(jù)類(lèi)型、常量、子程序。包集合又存放在庫(kù)中。一般情況下,要使用某個(gè)包集合中的資源時(shí),必須對(duì)該包集合

12、進(jìn)行使用說(shuō)明。一般情況下,要使用某個(gè)庫(kù)中的包集合時(shí),也必須對(duì)該庫(kù)進(jìn)行說(shuō)明?!靖袷健縇IBRARY ;USE LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL【例】28VHDL提供的標(biāo)準(zhǔn)包集合:STANDARDSTD_LOGIC_1164STANDARD包中定義了若干數(shù)據(jù)類(lèi)型、子類(lèi)型、函數(shù);該包已預(yù)先在STD庫(kù)中編譯好,并且自動(dòng)與所有模型連接,使用時(shí)無(wú)須說(shuō)明;STD_LOGIC_1164包中也定義了若干數(shù)據(jù)類(lèi)型和函數(shù); 該包已預(yù)先在IEEE庫(kù)中編譯好,但是在使用時(shí)須加以使用說(shuō)明;LIBRARYIEEE;USE IEEE.STD_LOGIC_1164.ALL;在ST

13、D 庫(kù)中在IEEE庫(kù)中用時(shí)不須說(shuō)明用時(shí)須說(shuō)明29常用的數(shù)據(jù)類(lèi)型(整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、字符、字符串、物理型、錯(cuò)誤等級(jí)、自然數(shù)和正整數(shù))均在STANDARD程序包中常用的數(shù)據(jù)類(lèi)型(STD_LOGIC、STD_LOGIC_VECTOR)在STD_LOGIC_1164程序包中30【包集合結(jié)構(gòu)格式】PACKAGE IS說(shuō)明語(yǔ)句;END 包集合名;PACKAGE BODY IS說(shuō)明語(yǔ)句;END 包集合名;包首包體用戶(hù)可自定義包集合。31【例3-10】自定義包集合的例子。-包集合說(shuō)明(包首)PACKAGE example ISTYPE alu_op IS (add,sub,mu

14、l,div,eq,gt,lt);CONSTANT pi: REAL :=3.1415926; delay1:TIME;COMPONENT nand2PORT (a,b: IN BIT; c:OUT BIT);END COMPONENT;FUNCTION mean(a,b,c:REAL) RETURN REAL;END example;說(shuō)明了一個(gè)枚舉類(lèi)型的數(shù)據(jù)alu_op兩個(gè)常數(shù)pi、delay1一個(gè)元件nand2一個(gè)函數(shù)mean32-包集合體PACKAGE BODY example ISCONSTANT delay1:TIME=15ns; FUNCTION mean(a,b,c:REAL) R

15、ETURN REAL;BEGINRETURN(a+b+c)/3.0;END mean; END example; 包集合體中具體說(shuō)明了時(shí)間常數(shù)delay1的值、函數(shù)mean的功能33USE WORK. example. ALL;自定義的包集合存放在WORK庫(kù)中。自定義的包集合在使用時(shí)也必須進(jìn)行使用說(shuō)明?!纠?42. 庫(kù)(Library)【格式】庫(kù)中存放已編譯過(guò)的設(shè)計(jì)單元(如實(shí)體、程序包等);庫(kù)中內(nèi)容可以用作其它VHDL描述的資源。使用庫(kù)時(shí)需要說(shuō)明。LIBRARY ;5種庫(kù)IEEESTDASICWORK用戶(hù)定義庫(kù)LIBRARYIEEE;【例】35IEEESTD_LOGIC_1164NUMERI

16、C_BITNUMERIC_STDSTD_LOGIC_ARITHSTD_LOGIC_SIGNEDSTD_LOGIC_UNSIGNEDSTDSTANDARDTEXTIOVATIL(面向ASIC的庫(kù))VATIL_TIMINGVATIL_PRIMITIVEWORK(現(xiàn)行工作庫(kù))用戶(hù)定義庫(kù)無(wú)須說(shuō)明不但要說(shuō)明庫(kù),還要說(shuō)明庫(kù)中的程序包。例:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL最常用例:LIBRARY STD;USE STD._STANDARD.ALL;363. 配置語(yǔ)句(Configration)【格式】CONFIGURATION OF 實(shí)體名 IS說(shuō)明語(yǔ)句;EN

17、D 配置名;配置語(yǔ)句描述層與層之間的連接關(guān)系,以及實(shí)體與結(jié)構(gòu)體之間的連接關(guān)系;可利用配置語(yǔ)句來(lái)選擇不同的結(jié)構(gòu)體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)?!纠緾ONFIGURATION confr OF rsff ISFOR rs_behav;END FOR;END confr ;37章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.4 VHDL語(yǔ)法基礎(chǔ)3.3 VHDL常用語(yǔ)句3.5 組合電路的VHDL描述3.6 時(shí)序電路的VHDL描述383.4 VHDL語(yǔ)法基礎(chǔ)3.4.1 標(biāo)識(shí)符和保留字3.4.2 數(shù)據(jù)對(duì)象3.4.3 數(shù)據(jù)類(lèi)型3.4.4 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換3.4.5 運(yùn)算操作符五方面內(nèi)容393.

18、4.1 標(biāo)識(shí)符和保留字規(guī)則:由字母數(shù)字下劃線組成必須以英文字母開(kāi)頭最后一個(gè)字符不能是下劃線不允許出現(xiàn)連續(xù)兩個(gè)下劃線保留字不能作一般的標(biāo)識(shí)符不區(qū)別大小寫(xiě)1. 標(biāo)識(shí)符即由用戶(hù)起的實(shí)體名、結(jié)構(gòu)體名、信號(hào)名、變量名.402. 保留字表3-3 常用保留字見(jiàn)P.109保留字即VHDL語(yǔ)言中已使用的關(guān)鍵字。保留字不能用作標(biāo)識(shí)符。413.4.2 數(shù)據(jù)對(duì)象對(duì)象有四種類(lèi)型:常數(shù)信號(hào)變量文件最常用VHDL93標(biāo)準(zhǔn)新加的421. 常數(shù)CONSTANT 常數(shù)名 : 數(shù)據(jù)類(lèi)型 := 表達(dá)式 ;【常數(shù)聲明格式】使用前必須聲明CONSTANT toler : DISTANCE := 1.5 nm;CONSTANT pi :

19、REAL := 3.141592 ;CONSTANT cycle_time : TIME := 100 ns;CONSTANT Propagation_Delay : DELAY_LENGTH;【例】常數(shù)值432. 變量VARIABLE 變量名 : 數(shù)據(jù)類(lèi)型 約束條件 := 表達(dá)式 ;【變量聲明格式】使用前必須聲明【例】VARIABLE result:STD_LOGIC :=0;VARIABLE x, y, z:INTEGER;VARIABLE count:INTEGER RANGE 0 TO 255 :=10;初始值聲明時(shí)可帶初始值約束條件44【變量賦值格式】變量名 :=表達(dá)式;【例】res

20、ult := 1;x :=y+3;注意賦值符號(hào) :=表達(dá)式的數(shù)據(jù)類(lèi)型和變量的類(lèi)型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。453. 信號(hào)SIGNAL 信號(hào)名 :數(shù)據(jù)類(lèi)型 約束條件 := 表達(dá)式 ;【信號(hào)聲明格式】使用前必須聲明【例】SIGNAL first_sig: INTEGER;SIGNAL sys_clk:BIT :=0;SIGNAL second_fig, third_sig:INTEGER :=10; SIGNAL s:INTEGER RANGE 0 TO 20 :=15; 初始值聲明時(shí)可帶初始值約束條件46【信號(hào)賦值格式】信號(hào)名 =表達(dá)式;【例】a = b AFTER 10

21、ns;a = expression_b;a = expression_b AFTER 10ns;注意信號(hào)說(shuō)明中的賦初值符號(hào)是 :=,而信號(hào)賦值語(yǔ)句中的賦值符號(hào)為=。表達(dá)式的數(shù)據(jù)類(lèi)型和信號(hào)的類(lèi)型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號(hào)賦值可以添加延時(shí)信息。47變量是局部的,信號(hào)是全局的;變量只能用在進(jìn)程內(nèi),信號(hào)沒(méi)有此限制。若變量用于進(jìn)程之外,必須將該變量先賦給一個(gè)相同類(lèi)型的信號(hào),用信號(hào)在進(jìn)程之間傳遞數(shù)據(jù)。信號(hào)可以延遲,變量不能。變量不能用于硬件連線,常用在高層次建模的計(jì)算中。信號(hào)可視為實(shí)際硬件系統(tǒng)中連線的抽象。進(jìn)程對(duì)信號(hào)敏感而對(duì)變量不敏感。賦值符號(hào)不一樣;信號(hào)和變量的區(qū)別483.4

22、.3 數(shù)據(jù)類(lèi)型Scalar types 標(biāo)量型Composite 復(fù)合型 Access 存取型 File 文件型 Protected 保護(hù)型5種類(lèi)型每一種中又有若干子類(lèi)型和具體數(shù)據(jù)類(lèi)型。49已經(jīng)在標(biāo)準(zhǔn)數(shù)據(jù)包STANDARD和STD_LOGIC_1164中定義好的常用的數(shù)據(jù)類(lèi)型如下:整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、 字符、字符串、物理型、錯(cuò)誤等級(jí)、自然數(shù)和正整數(shù)本節(jié)介紹以上數(shù)據(jù)類(lèi)型的特點(diǎn)。STD_LOGIC、 STD_LOGIC_VECTORSTANDARDSTD_LOGIC_116450整數(shù)(INTEGER)(屬于:標(biāo)量型整數(shù)型,在STANDARD程序包中 )整數(shù)的表示范圍為

23、- (231-1) (231-1)。【例】VARIABLE a:INTEGER :=15; SIGNAL s:INTEGER RANGE 0 TO 20 :=15; INTEGER型數(shù)據(jù)值不用引號(hào)括起來(lái)512. 實(shí)數(shù)(REAL)(屬于:標(biāo)量型浮點(diǎn)型, 在STANDARD程序包中 )實(shí)數(shù)的表示范圍為- 1.0E38 +1.0E38。實(shí)數(shù)的書(shū)寫(xiě)方式舉例:1.0666.66636.5e-4某些數(shù)即可以用整數(shù)表示,也可以用實(shí)數(shù)表示,如1.0是實(shí)數(shù),1是整數(shù),兩者數(shù)值相同但類(lèi)型不同。REAL型數(shù)據(jù)值不用引號(hào)括起來(lái)523. BIT(屬于:標(biāo)量型枚舉型)和 BIT_VECTOR(屬于:復(fù)合型數(shù)組型)在STA

24、NDARD程序包中BIT又稱(chēng)位型,其值僅有2個(gè),0 和1;BIT_VECTOR又稱(chēng)位矢量,是BIT的數(shù)組。例:BIT型數(shù)值要用單引號(hào)括起來(lái), BIT_VECTOR型數(shù)值要用雙引號(hào)括起來(lái)。SIGNAL a : BIT;SIGNAL Low_byte : BIT_VECTOR (0 to 7) ; a = 1; Low_byte = “00000101”;534. 布爾型(BOOLEAN)(屬于:標(biāo)量型枚舉型,在STANDARD程序包中)BOOLEAN的值僅有2個(gè),TRUE 和FALSE。545. STD_LOGIC和 STD_LOGIC_VECTOR在STD_LOGIC_1164程序包中STD_

25、LOGIC又稱(chēng)標(biāo)準(zhǔn)邏輯變量,其值有9個(gè),U,X,0,1,Z,W,L,H,-。常用的是0,1,Z。STD_LOGIC_VECTOR稱(chēng)標(biāo)準(zhǔn)邏輯向量,是STD_LOGIC的數(shù)組。STD_LOGIC型數(shù)值要用單引號(hào)括起來(lái), STD_LOGIC_VECTOR型數(shù)值要用雙引號(hào)括起來(lái)。例:SIGNAL a : STD_LOGIC;a = 1; 556. 字符(CHARACTER)(屬于:標(biāo)量型枚舉型)和 字符串(STRING)(屬于:復(fù)合型數(shù)組型)在STANDARD程序包中CHARACTER型數(shù)值要用單引號(hào)括起來(lái)。STRING型數(shù)值要用雙引號(hào)括起來(lái)。例:A,a,1,2 ?!癆BC”,“HELLO”。567.

26、 時(shí)間型(TIME)(屬于:標(biāo)量型物理型,在STANDARD程序包中 )GENERIC (m: TIME :=5ns);【例】578. 錯(cuò)誤等級(jí)(SEVERITY_LEVEL)(屬于:標(biāo)量型枚舉型,在STANDARD程序包中 )SEVERITY_LEVEL的值有4個(gè),NOTE, WARNING, ERROR, FAILURE。注意,警告,錯(cuò)誤,失敗。589. 自然數(shù)(NATURAL)(標(biāo)量型整數(shù)型整數(shù))和 正整數(shù)(POSITIVE)(標(biāo)量型整數(shù)型整數(shù))在STANDARD程序包中NATURAL 和POSITIVE是INTEGER 的子類(lèi)型。59以上是已經(jīng)在標(biāo)準(zhǔn)數(shù)據(jù)包STANDARD和STD_LO

27、GIC_1164中定義好的常用的數(shù)據(jù)類(lèi)型。除此之外,還可以由用戶(hù)自定義數(shù)據(jù)類(lèi)型。可以由用戶(hù)自定義的數(shù)據(jù)類(lèi)型:枚舉類(lèi)型 整數(shù)類(lèi)型 數(shù)組類(lèi)型 記錄類(lèi)型 存取類(lèi)型 文件類(lèi)型 時(shí)間類(lèi)型 實(shí)數(shù)類(lèi)型TYPE 數(shù)據(jù)類(lèi)型名 IS 數(shù)據(jù)類(lèi)型定義 OF 基本數(shù)據(jù)類(lèi)型 ;TYPE 數(shù)據(jù)類(lèi)型名 IS 數(shù)據(jù)類(lèi)型定義;【格式】60TYPE alu_op IS (add,sub,mul,div,eq,gt,lt);TYPE BIT is (0, 1);TYPE BIT_VECTOR is array (NATURAL range ) of BIT;SUBTYPE POSITIVE is INTEGER range 1 to

28、 INTEGERHIGH;定義一個(gè)數(shù)據(jù)類(lèi)型alu_op,是枚舉型,取值為add,sub,mul,div,eq,gt,lt中的一個(gè)聲明變量a是alu_op型的。VARIABLE a : alu_op【例】下例為標(biāo)準(zhǔn)程序包中的某些數(shù)據(jù)類(lèi)型定義:613.4.4 數(shù)據(jù)類(lèi)型的轉(zhuǎn)換自學(xué)(見(jiàn)P.114)623.4.5 運(yùn)算操作符5類(lèi)運(yùn)算操作符邏輯運(yùn)算關(guān)系運(yùn)算算術(shù)運(yùn)算并置運(yùn)算移位運(yùn)算63可以對(duì) BIT, BOOLEAN,STD_LOGIC,STD_LOGIC_VECTOR等類(lèi)型數(shù)據(jù)進(jìn)行邏輯運(yùn)算。1. 邏輯運(yùn)算符andornandnorxorxnornot與或與非或非異或同或非642. 算術(shù)運(yùn)算符+*/modr

29、emabs*加減正號(hào)負(fù)號(hào)乘除取模取余取絕對(duì)值乘方653. 關(guān)系運(yùn)算符=/=等于不等于小于小于等于大于大于等于664. 并置運(yùn)算符& 并置sel=b & a;例:若b=1,a=0,則sel=“10”Y =H & e & l & l & oY =“Hello”若b=“1010,a=0011,則sel=“10100011”675. 移位運(yùn)算符sllsrlslasrarolror邏輯左移邏輯右移算術(shù)左移算術(shù)右移循環(huán)左移循環(huán)右移68運(yùn)算符的優(yōu)先級(jí)見(jiàn)P.11569章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.4 VHDL語(yǔ)法基礎(chǔ)3.3 VHDL常用語(yǔ)句3.5 組合電路的VHDL描述3.6

30、 時(shí)序電路的VHDL描述703.3 VHDL常用語(yǔ)句仿真時(shí):兩大類(lèi):并行語(yǔ)句順序語(yǔ)句并行語(yǔ)句同時(shí)并行執(zhí)行,順序語(yǔ)句按書(shū)寫(xiě)先后次序執(zhí)行。713.3.1 并行語(yǔ)句ARCHITECTURE OF IS 定義語(yǔ)句;BEGIN END ;并行語(yǔ)句用在結(jié)構(gòu)體的并行處理語(yǔ)句部分72進(jìn)程語(yǔ)句并行信號(hào)賦值語(yǔ)句元件例化語(yǔ)句塊語(yǔ)句過(guò)程調(diào)用語(yǔ)句參數(shù)傳遞語(yǔ)句生成語(yǔ)句并行斷言語(yǔ)句常用731. 進(jìn)程語(yǔ)句【格式】進(jìn)程標(biāo)號(hào): PROCESS 敏感信號(hào)表 IS進(jìn)程語(yǔ)句說(shuō)明部分;BEGINEND PROCESS 進(jìn)程標(biāo)號(hào);進(jìn)程語(yǔ)句是最主要的并行語(yǔ)句,它在VDHL程序設(shè)計(jì)中使用頻率最高,也是最能體現(xiàn)硬件描述語(yǔ)言的一條語(yǔ)句。74【例3

31、-7】帶異步復(fù)位功能的D觸發(fā)器的VHDL描述。75當(dāng)敏感信號(hào)發(fā)生變化時(shí),執(zhí)行進(jìn)程。當(dāng)執(zhí)行完最后一個(gè)語(yǔ)句時(shí),回到第一個(gè)語(yǔ)句,等待下一次敏感信號(hào)變化。一個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程,進(jìn)程之間是并行的。進(jìn)程內(nèi)部各條語(yǔ)句是順序執(zhí)行的。進(jìn)程語(yǔ)句說(shuō)明部分可以說(shuō)明需要的局部變量?!菊f(shuō)明】762. 并行信號(hào)賦值語(yǔ)句并發(fā)信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句并發(fā)信號(hào)賦值語(yǔ)句例:q1=a+b;q2=a*b;當(dāng)a或b有變化時(shí),兩條語(yǔ)句同時(shí)執(zhí)行。模擬了兩個(gè)加法器和乘法器電路。+*abq1q2注意前提是信號(hào)賦值語(yǔ)句放在進(jìn)程外;若放在進(jìn)程中,則變成了順序執(zhí)行的語(yǔ)句。當(dāng)信號(hào)賦值語(yǔ)句放在進(jìn)程外時(shí),就是并發(fā)信號(hào)賦值語(yǔ)句。77

32、條件信號(hào)賦值語(yǔ)句【格式】目標(biāo)信號(hào)=表達(dá)式1 WHEN 條件1 ELSE 表達(dá)式2 WHEN 條件2 ELSE 表達(dá)式3 WHEN 條件3 ELSE 表達(dá)式n-1 WHEN 條件n-1 ELSE 表達(dá)式n;當(dāng)條件1滿(mǎn)足時(shí),目標(biāo)信號(hào)=表達(dá)式1當(dāng)條件2滿(mǎn)足時(shí),目標(biāo)信號(hào)=表達(dá)式2【功能】條件判斷是并行的,不是先判斷條件1滿(mǎn)足否,再判斷條件2滿(mǎn)足否,而是同時(shí)判斷。78【例3-11】用條件信號(hào)賦值語(yǔ)句設(shè)計(jì)4選1數(shù)據(jù)選擇器。語(yǔ)句之間是并行的79選擇信號(hào)賦值語(yǔ)句【格式】WITH 選擇條件表達(dá)式 SELECT目標(biāo)信號(hào)=表達(dá)式1 WHEN 選擇條件1 表達(dá)式2 WHEN 選擇條件2 表達(dá)式3 WHEN 選擇條件3

33、 表達(dá)式n WHEN 選擇條件n;當(dāng)選擇條件符合條件1時(shí),目標(biāo)信號(hào)=表達(dá)式1當(dāng)選擇條件符合條件2時(shí),目標(biāo)信號(hào)=表達(dá)式2【功能】80【例3-12】用選擇信號(hào)賦值語(yǔ)句設(shè)計(jì)4選1數(shù)據(jù)選擇器。語(yǔ)句之間是并行的該例既使用了條件信號(hào)賦值語(yǔ)句也使用了選擇信號(hào)賦值語(yǔ)句813. 元件例化語(yǔ)句元件例化語(yǔ)句是最能體現(xiàn)層次化設(shè)計(jì)思想的語(yǔ)句。例如設(shè)計(jì)由D觸發(fā)器構(gòu)成的移位寄存器,可以將設(shè)計(jì)分成2層,底層描述D觸發(fā)器,頂層調(diào)用底層描述的D觸發(fā)器。在頂層中調(diào)用底層設(shè)計(jì)時(shí),就要用到元件例化語(yǔ)句。層次化設(shè)計(jì)簡(jiǎn)單說(shuō)即將整個(gè)系統(tǒng)分成不同的層次,頂層設(shè)計(jì)可以調(diào)用底層設(shè)計(jì)。82【格式】COMPONENT GENERIC 類(lèi)屬說(shuō)明; PO

34、RT ;END COMPONENT; GENERIC MAP(參數(shù)映射) PORT MAP (端口映射);定義元件:底層設(shè)計(jì)定義成一個(gè)元件元件例化:調(diào)用定義好的元件,并說(shuō)明該元件與其他信號(hào)的連接關(guān)系。83【例3-14】用元件例化語(yǔ)句描述由D觸發(fā)器構(gòu)成的移位寄存器。dff是另一個(gè)程序?qū)?yīng)的電路,這里將其定義成一個(gè)元件,并用其構(gòu)成一個(gè)移位寄存器。dffdqclk語(yǔ)句之間是并行的84dffs0s1clkdff1dffs1s2clkdff2dffs2s3clkdff3dffs3s4clkdff4dff as1dffs2dffs3dffbclks0s485元件名必須與底層文件的實(shí)體名一致。端口映射部分要

35、指明元件內(nèi)部信號(hào)與外部信號(hào)的連接關(guān)系,其順序必須與端口說(shuō)明部分的順序一致。一個(gè)元件定義部分可以對(duì)應(yīng)多個(gè)元件例化部分,相當(dāng)于調(diào)用了多個(gè)元件而已。元件標(biāo)號(hào)名可以幫助標(biāo)識(shí)不同的元件。【說(shuō)明】864. 生成語(yǔ)句非重點(diǎn)不講87ARCHITECTURE COMPONENT END COMPONENT;BEGIN PROCESS END PROCESS dff1: dff PORT MAP(S(0),clk,S(1); q1=a+b; q2=a*b; q=d0 WHEN sel=00 ELSE d1 WHEN sel=01 ELSE Z;WITH sel SELECTq=d0 WHEN 0, d1 WHEN

36、 1, Z WHEN OTHERS;END ;各部分之間是并行的883.3.2 順序語(yǔ)句順序語(yǔ)句是相對(duì)于并行語(yǔ)句而言的。順序語(yǔ)句的特點(diǎn)是:每一條順序語(yǔ)句的執(zhí)行順序是與它們的書(shū)寫(xiě)順序相一致的。順序語(yǔ)句只能出現(xiàn)在進(jìn)程和子程序中。進(jìn)程標(biāo)號(hào): PROCESS 敏感信號(hào)表 IS進(jìn)程語(yǔ)句說(shuō)明部分;BEGINEND PROCESS 進(jìn)程標(biāo)號(hào);89順序賦值語(yǔ)句WAIT語(yǔ)句IF語(yǔ)句CASE語(yǔ)句LOOP語(yǔ)句EXIT語(yǔ)句RETURN語(yǔ)句N(xiāo)ULL語(yǔ)句REPORT語(yǔ)句斷言語(yǔ)句常用901.順序賦值語(yǔ)句變量賦值語(yǔ)句信號(hào)賦值語(yǔ)句變量賦值語(yǔ)句【格式】目標(biāo)變量 := 表達(dá)式注意賦值符號(hào) :=表達(dá)式的數(shù)據(jù)類(lèi)型和變量的類(lèi)型必須一致。

37、表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。變量賦值限定在進(jìn)程、函數(shù)、過(guò)程等順序區(qū)域內(nèi)。變量賦值無(wú)時(shí)間特性。變量值具有局部性。只在進(jìn)程內(nèi)有效。count :=count+1;【例】91 信號(hào)賦值語(yǔ)句【格式】目標(biāo)信號(hào) = 表達(dá)式信號(hào)賦值語(yǔ)句中的賦值符號(hào)為=。表達(dá)式的數(shù)據(jù)類(lèi)型和信號(hào)的類(lèi)型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號(hào)賦值可以添加延時(shí)信息。用在進(jìn)程中才是順序語(yǔ)句s=a XOR b XOR c;【例】當(dāng)信號(hào)賦值語(yǔ)句放在進(jìn)程內(nèi)時(shí),就是順序語(yǔ)句。放在進(jìn)程外時(shí)就是并行語(yǔ)句。922.WAIT語(yǔ)句【格式】WAIT-無(wú)限等待WAIT ON-敏感信號(hào)變化WAIT UNTIL-條件滿(mǎn)足WAIT F

38、OR-時(shí)間到 進(jìn)程在仿真運(yùn)行時(shí)總是處于兩種狀態(tài)之一:執(zhí)行或掛起。進(jìn)程狀態(tài)的變化可受WAIT語(yǔ)句控制。933.IF語(yǔ)句IF語(yǔ)句是一種條件控制語(yǔ)句,是常用語(yǔ)句之一。IF語(yǔ)句只能用在進(jìn)程中。三種形式IF THEN 語(yǔ)句IF THEN ELSE語(yǔ)句IF THEN ELSIFELSE語(yǔ)句網(wǎng)上有一句話:IF、CASE打天下94【格式】IF THEN;END IF; IF THEN 語(yǔ)句當(dāng)條件滿(mǎn)足時(shí),執(zhí)行THEN后的語(yǔ)句,否則,不執(zhí)行【功能】條件滿(mǎn)足?順序處理語(yǔ)句YN95順序處理語(yǔ)句dClkq當(dāng)條件滿(mǎn)足時(shí),d的值賦給q,否則,q值不變【例3-17】用IF THEN語(yǔ)句描述D觸發(fā)器功能。96【格式】IF TH

39、EN;ELSE;END IF;兩分支 IF THEN ELSE語(yǔ)句當(dāng)條件滿(mǎn)足時(shí),執(zhí)行THEN后的語(yǔ)句,否則,執(zhí)行ELSE后的語(yǔ)句?!竟δ堋織l件滿(mǎn)足?順序處理語(yǔ)句2順序處理語(yǔ)句1YN97【例】用IF THEN ELSE語(yǔ)句描述二選一數(shù)據(jù)選擇器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;98ARCHITECTURE beha OF mux ISBEGINPROCESS(d0,d1,sel) BEGIN IF (sel=

40、0) THEN f=d0; ELSE f=d1; END IF;END PROCESS; END beha; sel=0時(shí),f=d0;sel=1時(shí),f=d1;99【格式】IF THEN;ELSIF THEN;ELSE;END IF;多分支 IF THEN ELSIFELSE語(yǔ)句當(dāng)條件1滿(mǎn)足時(shí),執(zhí)行THEN后的順序語(yǔ)句1,否則,當(dāng)條件2滿(mǎn)足時(shí),執(zhí)行THEN后的順序語(yǔ)句2,否則執(zhí)行ELSE后的順序語(yǔ)句3【功能】100條件1優(yōu)先級(jí)高條件2優(yōu)先級(jí)低還可以再分支條件1滿(mǎn)足?順序處理語(yǔ)句2順序處理語(yǔ)句1YN條件2滿(mǎn)足?順序處理語(yǔ)句3YN101【例】4選1數(shù)據(jù)選擇器的VHDL程序。(P137)注意: 條件要

41、完整,最后必須加ELSE f 順序處理語(yǔ)句1;WHEN 表達(dá)式的取值2 = 順序處理語(yǔ)句2;.WHEN OTHERS = 順序處理語(yǔ)句n;ENDCASE;CASE語(yǔ)句也是常用語(yǔ)句之一,具有條件控制功能。也只能用在進(jìn)程中。104順序處理語(yǔ)句1 滿(mǎn)足條件1順序處理語(yǔ)句2滿(mǎn)足條件2順序處理語(yǔ)句4都不滿(mǎn)足滿(mǎn)足條件3順序處理語(yǔ)句3順序處理語(yǔ)句1幾個(gè)條件是同等級(jí)的105【例3-19】用CASE語(yǔ)句實(shí)現(xiàn)3-8線譯碼器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3to8 IS PORT (a,b,c,g1,g2,g3: IN STD_LOG

42、IC; y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END decoder_3to8;ARCHITECTURE beha OF decoder_3to8 ISSIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINindata y y y y y y y y y= “XXXXXXXX”; END CASE; ELSE y=“11111111”; END IF;END PROCESS; END beha; 107CASE語(yǔ)句的各條件表達(dá)式是同時(shí)執(zhí)行的。條件表達(dá)式的所有情況都要列舉到。可用WHEN OTHERS 描述?!菊f(shuō)明】

43、1085.LOOP語(yǔ)句【格式】LOOP標(biāo)號(hào):FOR 循環(huán)變量 IN 取值范圍 LOOP;END LOOP LOOP標(biāo)號(hào) ;LOOP是循環(huán)語(yǔ)句,有兩種FORLOOPWHILELOOPFORLOOP若循環(huán)變量在取值范圍內(nèi)則執(zhí)行循環(huán),否則結(jié)束循環(huán)?!竟δ堋?09【例3-20 】用FORLOOP語(yǔ)句描述的偶校驗(yàn)發(fā)生器。設(shè)a=11001110,則tmp=1,奇數(shù)個(gè)1;設(shè)a=11001100,則tmp=0,偶數(shù)個(gè)1。110【格式】LOOP標(biāo)號(hào): WHILE 條件 LOOP;END LOOP LOOP標(biāo)號(hào): ;若條件為真則執(zhí)行循環(huán),若為假則結(jié)束循環(huán)。WHILELOOP【功能】111【例3-21】用WHILE

44、LOOP語(yǔ)句描述的偶校驗(yàn)發(fā)生器。功能和例3-20相同112歸納一下:前面介紹的IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句,有一個(gè)共同的特點(diǎn),即不是對(duì)電路的具體結(jié)構(gòu)進(jìn)行描述,而是對(duì)電路的功能和行為進(jìn)行了描述,采用的是類(lèi)似C語(yǔ)言的高級(jí)描述語(yǔ)言,我們把這種描述方式稱(chēng)為行為描述方式。VHDL語(yǔ)言的三種描述方式數(shù)據(jù)流描述方式結(jié)構(gòu)描述方式行為描述方式后面介紹1136.EXIT語(yǔ)句【格式】EXIT LOOP標(biāo)號(hào);EXIT LOOP標(biāo)號(hào) WHEN 條件;程序執(zhí)行到該語(yǔ)句處,無(wú)條件跳出。程序執(zhí)行到LOOP標(biāo)號(hào)處,無(wú)條件跳出。條件滿(mǎn)足時(shí),執(zhí)行到該語(yǔ)句處跳出。條件滿(mǎn)足時(shí),執(zhí)行到LOOP標(biāo)號(hào)處跳出。除正常結(jié)束循環(huán)外,還可利

45、用EXIT語(yǔ)句退出循環(huán)。1147.斷言語(yǔ)句(ASSERT)【格式】ASSERT REPORT SEVERITY 斷言語(yǔ)句主要用于程序仿真、調(diào)試中的人機(jī)會(huì)話,它可以給出一個(gè)文字串作為警告和錯(cuò)誤的信息?!竟δ堋咳绻麛嘌詶l件為假,則順序執(zhí)行REPORT語(yǔ)句,輸出用雙引號(hào)括起來(lái)的以文字串表示的錯(cuò)誤信息,同時(shí)還要報(bào)告錯(cuò)誤信息的嚴(yán)重級(jí)別。115【例3-22】使用ASSERT語(yǔ)句的RS觸發(fā)器的VHDL程序。注意在RS觸發(fā)器中,不允許兩個(gè)輸入都為1。該程序使用斷言語(yǔ)句,一旦出現(xiàn)兩個(gè)輸入r、s都為1的情況,則發(fā)出錯(cuò)誤提示。116VHDL語(yǔ)言的三種描述方式數(shù)據(jù)流描述方式(RTL級(jí)描述方式)結(jié)構(gòu)描述方式行為描述方式

46、主要采用邏輯關(guān)系式的描述方式,說(shuō)明了數(shù)據(jù)的流向主要采用元件例化語(yǔ)句,說(shuō)明元件之間的連接關(guān)系主要采用IF、CASE、WAIT、LOOP等高級(jí)語(yǔ)言,說(shuō)明電路的功能和行為117數(shù)據(jù)流描述方式的2選1數(shù)據(jù)選擇器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;ARCHITECTURE mux_1 OF mux ISBEGINp0:PROCESS(d0,d1,sel) VARIABLE temp1,temp2: STD_LOGIC

47、; BEGIN temp1:=d0 AND(NOT sel); temp2:=d1 AND sel; f=temp1 OR temp2;END PROCESS p0; END mux_1; 主要采用邏輯關(guān)系式的描述方式,說(shuō)明了數(shù)據(jù)的流向118結(jié)構(gòu)描述方式的2選1數(shù)據(jù)選擇器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;ARCHITECTURE mux_2 OF mux ISSIGNAL y1,y2,y3 :STD_LO

48、GICCOMPONENT NOT1 PORT(a:IN STD_LOGIC, y:OUT STD_LOGIC);END COMPONENT;119主要采用元件例化語(yǔ)句,說(shuō)明元件之間的連接關(guān)系COMPONENT AND2 PORT(a,b:IN STD_LOGIC, y:OUT STD_LOGIC);END COMPONENT;COMPONENT OR2PORT(a,b:IN STD_LOGIC, y:OUT STD_LOGIC);END COMPONENT;BEGINu1: NOT1 PORT MAP (sel,y1)u2: AND2 PORT MAP (d0,y1,y2)u3: AND2 P

49、ORT MAP (d1,sel,y3)u4: OR2 PORT MAP (y2,y3,y)END mux_2; 120LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;ARCHITECTURE beha OF mux ISBEGINPROCESS(d0,d1,sel) BEGIN IF (sel=0) THEN f=d0; ELSE f=d1; END IF;END PROCESS; END beha; 行為描述方式的2

50、選1數(shù)據(jù)選擇器主要采用IF、CASE、WAIT、LOOP等高級(jí)語(yǔ)言,說(shuō)明電路的功能和行為121三種描述方式的比較描述方式優(yōu)點(diǎn)缺點(diǎn)適用場(chǎng)合結(jié)構(gòu)化描述連接關(guān)系清晰,電路模塊化清晰繁瑣、復(fù)雜層次化設(shè)計(jì)數(shù)據(jù)流描述布爾函數(shù)定義明白邏輯方程難以獲得小門(mén)數(shù)設(shè)計(jì)行為描述邏輯關(guān)系描述清晰不一定能綜合系統(tǒng)建模、復(fù)雜的電路122實(shí)際程序中往往幾種描述方式混合使用,初學(xué)階段不必過(guò)于在意所采用的描述方式,知道有這種說(shuō)法即可。123VHDL語(yǔ)言的可綜合性 一部分語(yǔ)句可綜合出電路另一部分語(yǔ)句不能綜合出電路例如延時(shí)語(yǔ)句、對(duì)文件的操作語(yǔ)句、斷言語(yǔ)句、測(cè)試程序等都不能綜合出電路通俗地講綜合即將VHDL語(yǔ)言程序轉(zhuǎn)換成電路,由EDA

51、軟件完成124章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.4 VHDL語(yǔ)法基礎(chǔ)3.3 VHDL常用語(yǔ)句3.5 組合電路的VHDL描述3.6 時(shí)序電路的VHDL描述1253.5組合電路的VHDL描述1. 【例4-3】判定電路的VHDL程序。(P123)本例使用了條件賦值語(yǔ)句同學(xué)們可以嘗試用CASE語(yǔ)句實(shí)現(xiàn)126綜合結(jié)果1272. 【例】4-2線優(yōu)先編碼器的VHDL程序。(P126)本例使用了 IFTHENELSIFTHEN語(yǔ)句利用IF條件的優(yōu)先級(jí)很方便地實(shí)現(xiàn)了優(yōu)先編碼的功能。如果用CASE語(yǔ)句則只能實(shí)現(xiàn)普通編碼器的功能。THEN后面的順序語(yǔ)句用分號(hào)隔開(kāi);1283. 【例】74

52、138的VHDL程序。 (P130)使用IFTHENELSE、CASE 語(yǔ)句)1294. 【例】7448的VHDL程序。 (P135)(if then elsif then else語(yǔ)句)130條件不完整,缺少最后一條ELSE 綜合時(shí)會(huì)綜合出寄存器,RTL圖說(shuō)明了這一點(diǎn)?!境绦虼嬖诘膯?wèn)題】131綜合電路局部寄存器【修改】在END IF前加一句:ELSE segout = 0000000; rbo = 1;就不會(huì)產(chǎn)生寄存器1325. 【例】1-4數(shù)據(jù)分配器的VHDL程序。 (P136)(if then elsif then else語(yǔ)句)該程序仍然出現(xiàn)條件不完整的情況,結(jié)果會(huì)綜合出寄存器。修改程

53、序,在END IF前加ELSE w(0) = 0; w(1)= 0; w(2)= 0; w(3)=0;則寄存器消失。1336. 【例】4選1數(shù)據(jù)選擇器的VHDL程序。 (P137)(if then elsif then else語(yǔ)句)和上例同樣的問(wèn)題,綜合出了寄存器,加ELSE f=0語(yǔ)句修改。1347. 【例】全加器的VHDL程序。 (P143)(并行賦值語(yǔ)句)該程序沒(méi)有使用進(jìn)程。1358. 【例4-10】ALU的VHDL程序。(if then elsif then else 、case語(yǔ)句)該程序用到了IEEE庫(kù)中的STD_LOGIC_ARITH和STD_LOGIC_UNSIGNED程序包

54、。實(shí)際上可以不用1369. 【例】偶發(fā)生器的VHDL程序。P151(進(jìn)程+并行賦值語(yǔ)句)此程序可以把進(jìn)程去掉。13710. 【例】偶校驗(yàn)器的VHDL程序。 P152(并行賦值語(yǔ)句)138章節(jié)目錄3.1 硬件描述語(yǔ)言概述3.2 VHDL語(yǔ)言程序結(jié)構(gòu)3.3 VHDL語(yǔ)法基礎(chǔ)3.4 VHDL常用語(yǔ)句3.5 組合電路的VHDL描述3.6 時(shí)序電路的VHDL描述139復(fù)習(xí) VHDL語(yǔ)言程序結(jié)構(gòu)五個(gè)基本組成部分庫(kù)(Library)程序包(Package)實(shí)體說(shuō)明(Entity Declaration)結(jié)構(gòu)體(Archiecture)配置(Configuration)主要部分1403.2 VHDL語(yǔ)言程序結(jié)

55、構(gòu)【例3-1】2選1數(shù)據(jù)選擇器的VHDL語(yǔ)言描述d0d1selftemp3temp1temp2功能:2選1數(shù)據(jù)選擇器Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;141- 2 to 1 mux VHDLLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux IS PORT (d0,d1,sel: IN STD_LOGIC; f: OUT STD_LOGIC); END mux;庫(kù)程序包實(shí)體說(shuō)明VHDL語(yǔ)言程序注釋d0d1selfmux142ARCHITECTURE structure OF mux ISSIGNAL temp: STD_LOGIC; -內(nèi)部信號(hào)BEGINp0:PROC

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論