VHDL硬件描述語言_第1頁
VHDL硬件描述語言_第2頁
VHDL硬件描述語言_第3頁
VHDL硬件描述語言_第4頁
VHDL硬件描述語言_第5頁
已閱讀5頁,還剩245頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

概述

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

VHDL語言結(jié)構(gòu)體的描述方式VHDL語言的庫、程序包及配置VHDL語言的語言要素VHDL語言的描述語句1概述

VHDL語言是一種在EDA設(shè)計中廣泛流行的硬件描述語言,主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。

除了含有許多具有硬件特征的語句外,VHDL語言的句法、語言形式和描述風(fēng)格十分類似于一般的計算機高級語言,是目前硬件描述語言中應(yīng)用最為廣泛的一種。

2VHDL語言簡介

VHDL語言全稱是“超高速集成電路硬件描述語言”,它誕生于1982年,由美國國防部于20世紀(jì)七、八十年代組織研制開發(fā),其目的首先是用這種語言描述復(fù)雜電路,其次是希望這種語言能夠成為一種標(biāo)準(zhǔn)語言。

1987年底,VHDL語言被電氣和電子工程師協(xié)會IEEE和美國國防部確認為標(biāo)準(zhǔn)硬件描述語言,版本為IEEE-1076(簡稱87版)。此后在電子產(chǎn)業(yè)界被廣泛地接受,并逐步取代了原有的非標(biāo)準(zhǔn)硬件描述語言(如CUPL、ABEL等)。

概述

3

1993年,IEEE對VHDL進行了修訂,增加了一些功能,并從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了VHDL新的版本,編號為IEEEStd1076-1993(簡稱93版)。

1995年中國國家技術(shù)監(jiān)督局組織編寫并出版了《CAD通用技術(shù)規(guī)范》,推薦VHDL語言作為我國電子自動化硬件描述語言的國家標(biāo)準(zhǔn)。1996年,IEEE1076.3成為VHDL綜合標(biāo)準(zhǔn)。

概述

4目前,VHDL已經(jīng)成為一個數(shù)字電路和硬件系統(tǒng)描述、綜合、優(yōu)化和布線的IEEE工業(yè)標(biāo)準(zhǔn),已得到眾多EDA公司的支持,越來越多的硬件電路設(shè)計工具向VHDL標(biāo)準(zhǔn)靠攏,支持VHDL語言。在電子工程領(lǐng)域中,無論ASIC設(shè)計人員,還是系統(tǒng)設(shè)計人員,都需要學(xué)習(xí)VHDL語言來提高自己的工作效率。有專家認為,在未來的IT行業(yè)中,VHDL語言和VerilogHDL語言將承擔(dān)幾乎全部的數(shù)字系統(tǒng)設(shè)計任務(wù)。

概述

5VHDL語言作為一種標(biāo)準(zhǔn)的硬件描述語言,具有結(jié)構(gòu)嚴(yán)謹、描述能力強的特點,支持從系統(tǒng)級到邏輯門級電路所有層次的設(shè)計,適合于復(fù)雜邏輯電路和系統(tǒng)的設(shè)計。

作為高級硬件描述語言,VHDL有如下特點:①

支持從系統(tǒng)級到邏輯門級電路的描述;②具有很強的硬件描述能力;

③設(shè)計技術(shù)齊全、方法靈活、支持廣泛;④對設(shè)計描述具有相對的獨立性;⑤具有很強的移植能力;

⑥易于共享和復(fù)用;

⑦具有豐富的仿真語句和庫函數(shù);VHDL語言特點

概述

6

作為高級硬件描述語言,VHDL有如下特點:

⑧設(shè)計結(jié)構(gòu)清晰、易讀易懂;

⑨易實現(xiàn)系統(tǒng)的更新和升級;

⑩數(shù)據(jù)類型豐富、安全性好。概述

7從VHDL代碼到電路的轉(zhuǎn)化8從VHDL代碼到電路的轉(zhuǎn)化9從VHDL代碼到電路的轉(zhuǎn)化一位全加器全加器abcinscout功能分析:真值表方法邏輯表達式:S=a⊕b⊕cin電路外部框圖10用VHDL描述一位全加器的功能:(full_adder.vhd)ENTITYfull_adder

ISPORT(a,b,cin:INBIT;s,cout:OUTBIT);ENDfull_adder;ARCHITECTUREdataflowOFfull_adderISBEGINs<=aXORbXORcin;

cout<=(aANDB)OR(aANDcin)OR(bANDcin);ENDdataflow;*文件名、實體名與結(jié)構(gòu)名要一致!11abclkclkacinbcincoutabacinbcincoutabcinsacinbacincout(a)(b)可編程器件實現(xiàn)方式一(d)可編程器件實現(xiàn)方式二(d)一種ASIC的實現(xiàn)方式

不同的編譯器類型、電路優(yōu)化目標(biāo)、實現(xiàn)方式都將影響最終的電路結(jié)構(gòu)。仿真波形見書P6.12VHDL語言設(shè)計實體的基本結(jié)構(gòu)

用VHDL語言設(shè)計的電路無論規(guī)模大小,都要使用一個完整的VHDL程序結(jié)構(gòu),這個完整的程序結(jié)構(gòu)稱為設(shè)計實體或?qū)嶓w。

設(shè)計實體是指能被VHDL語言綜合器所接受,并能作為獨立的設(shè)計單元,以元件的形式存在的VHDL語言程序。

所謂的元件,既可以被高層次的系統(tǒng)調(diào)用,成為系統(tǒng)的一部分,也可以作為一個電路的功能模塊,獨立存在和運行。

13VHDL語言設(shè)計實體的組成

VHDL語言的設(shè)計實體都由實體說明(Entity)和結(jié)構(gòu)體(Architecture)兩個最基本的部分組成。

實體說明部分用來描述該模塊或系統(tǒng)的接口信息,包括端口的數(shù)目、方向和類型,其作用相當(dāng)于傳統(tǒng)設(shè)計方法中所使用的元件符號。結(jié)構(gòu)體部分則描述該模塊的內(nèi)部電路,對應(yīng)于原理圖、邏輯方程和模塊的輸入/輸出特性。

一個設(shè)計實體可以包含一個或多個結(jié)構(gòu)體,用于描述其的邏輯結(jié)構(gòu)和邏輯功能。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

14

1.VHDL設(shè)計實體的結(jié)構(gòu)

一個完整的VHDL設(shè)計實體(設(shè)計文件),通常包括:

實體說明(Entity)

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

配置(Configuration)

庫(Library)和程序包(Package)

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

15

1.VHDL設(shè)計實體的結(jié)構(gòu)

庫、程序包配置

設(shè)計實體實體說明結(jié)構(gòu)體進程或其他并行結(jié)構(gòu)

基本結(jié)構(gòu):

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

16

2.設(shè)計實體舉例

【例】試用VHDL語言設(shè)計一個四選一數(shù)據(jù)選擇器。

數(shù)據(jù)輸入:D3D2D1D0

數(shù)據(jù)輸出:Y

選擇控制:S1S0

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

17

VHDL程序如下:

LIBRARYIEEE;--IEEE庫

USEIEEE.STD_LOGIC_1164.ALL;--程序包

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYmux41IS--定義實體名

PORT(S1,S0:INSTD_LOGIC;--定義輸入信號

D3,D2,D1,D0:INSTD_LOGIC;Y:OUTSTD_LOGIC--定義輸出信號);

ENDmux41;

ARCHITECTURE

behaveior

OFmux41IS--定義結(jié)構(gòu)體名

BEGIN--邏輯功能描述Y<=D0WHENS1=‘0’ANDS0=‘0’ELSED1WHENS1=‘0’ANDS0=‘1’ELSED2WHENS1=‘1’ANDS0=‘0’ELSED3;

END

behaveior;

程序包

實體說明

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

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

18

2.設(shè)計實體舉例

庫:是用來存放已設(shè)計好的程序包、數(shù)據(jù)集合體、元件的倉庫,供用戶進行VHDL設(shè)計時調(diào)用。程序包:用VHDL語言編寫的共享文件,定義了將要使用的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計好的電路單元等。實體說明:定義電路單元的輸入、輸出引腳信號。以標(biāo)識符ENTITY開始,以END結(jié)束。結(jié)構(gòu)體:用來描述電路內(nèi)部結(jié)構(gòu)和邏輯功能。并以標(biāo)識符ARCHITECTURE開頭,以END結(jié)尾。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

19VHDL語言的實體說明

實體說明是VHDL程序設(shè)計中最基本的組成部分,主要用來描述設(shè)計實體的外部接口信號,定義設(shè)計單元的輸入、輸出端口,是設(shè)計實體對外的一個通信界面,但它不描述設(shè)計的具體功能。

實體說明語句的格式如下:ENTITY

實體名

IS[GENERIC(類屬表);][PORT(端口表);]

END[ENTITY]實體名;實體說明語句類屬說明語句端口說明語句結(jié)束語句

規(guī)則:①

實體聲明語句必須以“ENTITY

實體名

IS”開始,以“ENDENTITY

實體名;”結(jié)束;②

實體名是設(shè)計者給設(shè)計實體的命名;③

方括號內(nèi)的語言描述可任選。VHDL語言設(shè)計實體的基本結(jié)構(gòu)

20

1.實體說明語句ENTITY

該語句是實體說明的引導(dǎo)語句,用來指明實體說明部分的開始,并定義實體名。

關(guān)鍵字:ENTITY

格式:ENTITY

實體名IS在設(shè)計編程時,實體名必須與設(shè)計文件名相同,否則無法編譯。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

21

2.

類屬說明語句GENERIC

該語句用來確定設(shè)計實體中定義的局部常數(shù),將外部環(huán)境的信息參數(shù)傳遞到設(shè)計實體,并用類屬表的形式指明器件的一些特征。

關(guān)鍵字:GENERIC

格式:GENERIC(常數(shù)名{,常數(shù)名}:數(shù)據(jù)類型[:設(shè)定值]

{;常數(shù)名{,常數(shù)名}:數(shù)據(jù)類型[:設(shè)定值]})

常數(shù)名:是由設(shè)計者定義的類屬常數(shù)名;

數(shù)據(jù)類型:常取INTEGER或TIME的類型;

設(shè)定值:為常數(shù)名所代表的數(shù)值。VHDL語言設(shè)計實體的基本結(jié)構(gòu)

22

2.

類屬說明語句GENERIC

例如:

類屬表對數(shù)據(jù)總線的類型和寬度做了定義,類屬參數(shù)datawith的數(shù)據(jù)類型為整數(shù),數(shù)據(jù)寬度為8位。

ENTITYbodyIS

GENERIC(datawidth:INTEGER:=8);……

類屬說明必須位于端口說明之前,用于指定設(shè)計實體和外部環(huán)境通信的參數(shù),并以關(guān)鍵字GENERIC引導(dǎo)一個類屬參數(shù)表,在表中提供時間參數(shù)、總線寬度等信息。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

23

3.

端口說明語句PORT

該語句是設(shè)計實體與外界接口的描述,用來指明實體的輸入、輸出信號及其模式,包括端口的名稱、數(shù)據(jù)的類型和數(shù)據(jù)的傳遞方向(端口模式)。

關(guān)鍵字:PORT

格式:PORE

(端口名{,端口名}:端口模式

數(shù)據(jù)類型

{;端口名{,端口名}:端口模式

數(shù)據(jù)類型})

端口名:是賦予每個外部引腳的名稱,通常用一個或幾個英文字母,或者用英文字母加數(shù)字命名。

端口模式:即端口方向,用來定義外部引腳的信號方向,共有五種模式。

數(shù)據(jù)類型:用來指定每個端口信號的取值類型,共有10種。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

24

3.

端口說明語句PORT

端口模式說明:

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

25

3.

端口說明語句PORT

端口模式的符號

IN端口模式

OUT端口模式:INOUT端口模式:BUFFER端口模式:VHDL語言設(shè)計實體的基本結(jié)構(gòu)

26

3.

端口說明語句PORT

【例】編寫2輸入與非門的實體說明。設(shè)與非門的輸入為A和B,輸出為Y。

ENTITYnand2IS

GENERIC

(risew:TIME:=1ns;

fallw:TIME:=1ns);

PORT

(A:INSTD_LOGIC;B:INSTD_LOGIC;Y:OUTSTD_LOGIC);

ENDnand2;--定義risew為上升沿--定義fallw為下降沿--定義A、B和Y為邏輯位VHDL語言設(shè)計實體的基本結(jié)構(gòu)

27VHDL語言的結(jié)構(gòu)體

結(jié)構(gòu)體是設(shè)計實體的核心,它具體指明了設(shè)計實體的行為、元件及內(nèi)部連接關(guān)系。

結(jié)構(gòu)體所承擔(dān)的任務(wù)

①定義結(jié)構(gòu)體內(nèi)部所使用的各項元素;

②通過VHDL提供的語句來描述設(shè)計實體所要求的具體行為和功能;③描述各元件之間的連接。VHDL語言設(shè)計實體的基本結(jié)構(gòu)

28VHDL語言的結(jié)構(gòu)體

結(jié)構(gòu)體內(nèi)部構(gòu)造的描述層次和描述內(nèi)容:結(jié)構(gòu)體結(jié)構(gòu)體說明結(jié)構(gòu)體功能描述常數(shù)說明數(shù)據(jù)類型說明信號說明例化元件說明子程序說明塊語句進程語句信號賦值語句子程序調(diào)用語句元件例化語句VHDL語言設(shè)計實體的基本結(jié)構(gòu)

29VHDL語言的結(jié)構(gòu)體

結(jié)構(gòu)體由兩個基本部分組成:

結(jié)構(gòu)體說明,用來對數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等進行說明。②結(jié)構(gòu)體功能描述,用來描述設(shè)計實體的邏輯行為,可以用不同的描述風(fēng)格來表達設(shè)計實體的邏輯功能。VHDL語言設(shè)計實體的基本結(jié)構(gòu)

30

結(jié)構(gòu)體的格式:

1.結(jié)構(gòu)體的基本格式

ARCHITECTURE

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

實體名IS[結(jié)構(gòu)體說明語句;]

BEGIN[功能描述語句;]

END[ARCHITECTURE][結(jié)構(gòu)體名];

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

31

結(jié)構(gòu)體引導(dǎo)語句用來引導(dǎo)結(jié)構(gòu)體的開始,并定義結(jié)構(gòu)體的名稱。

2.結(jié)構(gòu)體引導(dǎo)語句關(guān)鍵字:ARCHITECTURE

格式:ARCHITECTURE

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

實體名IS

結(jié)構(gòu)體名是給予結(jié)構(gòu)體的名稱,是該結(jié)構(gòu)體唯一的名字,用來表明該結(jié)構(gòu)體所隸屬于哪個實體。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

32用于定義結(jié)構(gòu)體中所用的數(shù)據(jù)對象和子程序,并對所引用的元件加以說明,如:

3.結(jié)構(gòu)體說明語句

●信號(SIGNAL)

●類型(TYPE)

●常數(shù)(CONSTANT)

●元件(COMPONENT)

●函數(shù)(FUNCTION)

●過程(PROCEDURE)

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

33

4.功能描述語句

用于描述實體的邏輯功能。

功能描述語句結(jié)構(gòu)可以含有五種不同類型。結(jié)構(gòu)體功能描述塊語句進程語句信號賦值語句子程序調(diào)用語句元件例化語句VHDL語言設(shè)計實體的基本結(jié)構(gòu)

34

4.功能描述語句

①塊語句(BLOCK)

塊語句結(jié)構(gòu)是由若干個并行執(zhí)行語句構(gòu)成的組合體,其功能是將結(jié)構(gòu)體中的并行語句包裝在一起,組成一個或多個模塊(即子模塊)。②進程語句(PROCESS)

定義順序語句模塊,其內(nèi)部為順序語句,將從外部獲得的信號值,或內(nèi)部的運算數(shù)據(jù)向其他信號進行賦值。

③信號賦值語句(SIGNAL)

用來將設(shè)計實體內(nèi)的處理結(jié)果向所定義的信號或界面端口進行賦值。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

35

4.功能描述語句

④子程序調(diào)用語句

由過程(PROCEDURE)和函數(shù)(FUNCTION)組成,其內(nèi)部是順序語句。用來調(diào)用過程和函數(shù),并將結(jié)果賦值給信號。

⑤元件例化語句(COMPONENT)

元件例化語句用來調(diào)用另一個設(shè)計實體所描述的電路。調(diào)用時,元件例化語句對其他的設(shè)計實體做元件調(diào)用說明,并將元件的端口與其他元件、信號或高層設(shè)計實體的界面端口進行連接。

VHDL語言設(shè)計實體的基本結(jié)構(gòu)

36

【例】編寫一個四位二進制加法計數(shù)器的結(jié)構(gòu)體。

計數(shù)器共有三個輸入和五個輸出。輸入:時鐘輸入端CLK、使能控制端EN和異步清零端Rd。輸出:四位狀態(tài)輸出Q3~Q0和進位輸出CO。

設(shè)計程序的結(jié)構(gòu)體如下:ARCHITECTUREbehaviorOFcounter16IS

BEGINCO<=‘1’

WHEN(Q=“1111”AND

EN=‘1’AND

Rd=‘1’)

ELSE

‘0’;

--條件賦值語句

PROCESS(CLK,Rd)--進程語句

BEGIN

IF(Rd=‘0’)THENQ<=“0000”;--IF語句

ELSIF(CLK’EVENT

ANDCLK=‘1’)THEN

--CLK上升沿計數(shù)

IF(EN=‘1’)THENQ<=Q+1;

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehavior;VHDL語言設(shè)計實體的基本結(jié)構(gòu)

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

VHDL語言的結(jié)構(gòu)體可以用不同的語句類型和描述方式來表達電路所期望的邏輯行為,而對于相同的邏輯行為,可以有不同的語句表達方式。

在VHDL語言中,這些描述方式或建模方式稱為VHDL語言的描述風(fēng)格。

常用的描述方式主要有:

行為描述

●數(shù)據(jù)流描述

●結(jié)構(gòu)描述

●混合描述38行為描述依據(jù)設(shè)計實體的功能或算法對結(jié)構(gòu)體進行描述,不需要給出實現(xiàn)這些行為的硬件結(jié)構(gòu),只強調(diào)電路的行為和功能。

在結(jié)構(gòu)體中,行為描述主要用函數(shù)、過程和進程語句,以功能或算法的形式來描述數(shù)據(jù)的轉(zhuǎn)換和傳送。

結(jié)構(gòu)體的行為描述

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

39【例】試用行為描述完成二選一數(shù)據(jù)選擇器的設(shè)計。

設(shè)數(shù)據(jù)輸入為d0和d1、選擇輸入為s,輸出為y。程序清單:

ENTITYmux21IS

PORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);

ENDmux21;

ARCHITECTUREbehaviorOFmux21IS

BEGINy<=d1WHENs=‘1’ELSEd0;

ENDbehavior;VHDL語言結(jié)構(gòu)體的描述方式

40

行為描述類似于高級編程語言,主要是對設(shè)計實體的功能或數(shù)學(xué)模型進行描述,其抽象程度遠高于數(shù)據(jù)流描述和結(jié)構(gòu)描述,其特點如下:

行為描述具有很高的抽象程度,遠高于數(shù)據(jù)流描述和結(jié)構(gòu)描述;

行為描述只需描述清楚輸入與輸出的行為,而與它們的結(jié)構(gòu)無關(guān);

描述程序大多采用算術(shù)運算、關(guān)系運算、慣性延時、傳輸延時等語句;

結(jié)構(gòu)體中的過程語句屬于典型的行為描述。VHDL語言結(jié)構(gòu)體的描述方式

41

即邏輯描述,它利用VHDL語言中的賦值符和邏輯運算符進行描述,既包含邏輯單元的結(jié)構(gòu)信息,又隱含地表示某種行為。結(jié)構(gòu)體的數(shù)據(jù)流描述

例如:

y<=aNORb;

z<=NOT(aXORb);//y等于a與b的或非運算//z等于a與b的同或運算這種方式主要采用非結(jié)構(gòu)化的并行語句描述。VHDL語言結(jié)構(gòu)體的描述方式

42【例】將數(shù)據(jù)選擇器采用數(shù)據(jù)流描述。

邏輯表達式:y

=

d0·s

+

d1·s

程序清單:

ENTITYmux21IS

PORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);

ENDmux21;

ARCHITECTUREdataflowOFmux21IS

SIGNALtmp1,tmp2,tmp3:STD_LOGIC;

BEGINtmp1<=d1ANDs;tmp2<=d0AND(NOTs);tmp3<=tmp1ORtmp2;y<=tmp3;

ENDdataflow;VHDL語言結(jié)構(gòu)體的描述方式

43

結(jié)構(gòu)描述是從設(shè)計實體的內(nèi)部結(jié)構(gòu)對結(jié)構(gòu)體進行描述的,并給出該實體所包含的模塊或元件的相互連接關(guān)系。

這種方式主要采用元件例化(COMPONENT)的形式對設(shè)計實體進行描述??梢杂貌煌愋偷慕Y(jié)構(gòu)來實現(xiàn)多層次的工程設(shè)計,從簡單的門電路到復(fù)雜的元件來描述整個系統(tǒng),元件之間的連接通過定義的端口界面來實現(xiàn)。

結(jié)構(gòu)體的結(jié)構(gòu)描述

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

44

結(jié)構(gòu)描述建模的步驟如下:

①元件說明:描述局部接口。

②元件例化:相對于其他元件放置元件。

③元件配置:指定元件所有的設(shè)計實體。

結(jié)構(gòu)描述用于層次化設(shè)計,高層次的設(shè)計模塊調(diào)用低層次的設(shè)計模塊,或直接用門電路來構(gòu)成一個復(fù)雜的邏輯電路。

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

45【例】將數(shù)據(jù)選擇器采用結(jié)構(gòu)描述。

程序清單:

ENTITYmux21IS

PORT(d1,d0:INSTD_LOGIC;s:INSTD_LOGIC;y:OUTSTD_LOGIC);

ENDmux21;

ARCHITECTUREstructureOFmux21IS

COMPONENTand2

PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);

END

COMPONENT;

COMPONENT

or2

PORT(a,b:INSTD_LOGIC;c:OUT

STD_LOGIC);

END

COMPONENT;&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

U4VHDL語言結(jié)構(gòu)體的描述方式

46【例】將數(shù)據(jù)選擇器采用結(jié)構(gòu)描述。

程序清單:&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

U4

COMPONENTnot1

PORT

(a:INSTD_LOGIC;c:OUTSTD_LOGIC);

END

COMPONENT;

SIGNAL

aa,ab,ns:STD_LOGIC;

BEGINU1:not1PORTMAP(s,ns);U2:and2PORTMAP

(d1,s,aa);U3:and2PORTMAP(ns,d0,ab);U4:or2PORTMAP(aa,ab,y);

ENDstructure;VHDL語言結(jié)構(gòu)體的描述方式

47

混合描述就是在結(jié)構(gòu)體中同時使用多種不同的描述方式,它可以使描述簡單靈活。

例如,在同一結(jié)構(gòu)體中,分別使用元件例化語句和并行語句,就可以構(gòu)成由兩種描述方式的混合描述。

結(jié)構(gòu)體的混合描述

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

48【例】用混合描述完成半加器的設(shè)計。

表達式:sn=an⊕bn

cn=an·bn

數(shù)據(jù)流描述

結(jié)構(gòu)描述

程序清單:

ENTITYhalf_adderIS

PORT(an,bn:INSTD_LOGIC;

sn,cn:OUTSTD_LOGIC);

ENDhalf_adder;

ARCHITECTUREmix_haOFhalf_adderIS

COMPONENTand2

PORT(a,b:INSTD_LOGIC;c:OUTSTD_LOGIC);

ENDCOMPONENT;

BEGIN

sn

<=anXOR

bn;

U1:and2PORTMAP(an,bn,cn);

ENDmix_ha;VHDL語言結(jié)構(gòu)體的描述方式

49VHDL語言的庫、程序包及配置

在VHDL設(shè)計實體中,除了實體說明和結(jié)構(gòu)體外,還有庫、程序包和配置三個各自獨立的組成部分。依據(jù)VHDL語言的規(guī)則,VHDL程序所使用的文字、數(shù)據(jù)對象、數(shù)據(jù)類型都需要預(yù)先定義。

將預(yù)先定義好的數(shù)據(jù)類型、元件調(diào)用聲明及一些常用子程序收集在一起,形成程序包,供VHDL設(shè)計實體共享和調(diào)用。若干個程序包則形成庫。

50

庫(Library)是用于存放預(yù)先設(shè)計好的程序包和數(shù)據(jù)的集合體。

VHDL庫

1.常用的庫

VHDL語言中常用的五種庫:

IEEE庫②

STD庫③

WORK庫④

VITAL庫⑤

用戶自定義庫

——VHDL語言設(shè)計中最常見的庫。

——VHDL語言的標(biāo)準(zhǔn)庫。

——用戶的VHDL語言工作庫。

——VHDL語言的時序仿真庫。

——用戶自定義的資源庫。

VHDL語言的庫、程序包及配置

51VHDL語言的庫、程序包及配置

52

2.資源庫和設(shè)計庫

VHDL語言所使用的庫可以分成兩類:

●資源庫

●設(shè)計庫

用于存放常規(guī)元件、標(biāo)準(zhǔn)模塊、預(yù)定義數(shù)據(jù)類型等,如:IEEE庫。

是一種符合VHDL標(biāo)準(zhǔn)的預(yù)定義庫。

如:STD庫定義了一些基本的數(shù)據(jù)類型、子類型和函數(shù)等;WORK庫存放用戶設(shè)計和定義的設(shè)計單元及程序包等。

VHDL語言的庫、程序包及配置

53

3.庫的使用

關(guān)鍵字:LIBRARY

格式:LIBRARY

庫名稱

庫說明語句:

說明:用來指明所使用的庫,庫名稱為一系列由逗號分隔的庫名。

庫說明語句總是位于設(shè)計實體的最前面,通常與USE語句一起使用。

VHDL語言的庫、程序包及配置

54

3.庫的使用

格式1:USE

庫名.程序包名.項目名;

USE語句用來指明庫中的程序包,有兩種格式:

作用:為本設(shè)計實體開放指定庫中的特定程序包內(nèi)所選定的項目。

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.STD_ULOGIC;

USEIEEE.STD_LOGIC_1164.RISING_EDGE;

VHDL語言的庫、程序包及配置

55

3.庫的使用

格式2:USE

庫名.程序包名.ALL;

作用:為本設(shè)計實體開放指定庫中的特定程序包內(nèi)所有的內(nèi)容。

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

VHDL語言的庫、程序包及配置

56在VHDL語言中,用戶可以將已定義的常數(shù)、信號、函數(shù)、數(shù)據(jù)類型、元件和子程序等收集在一起形成一個程序包,以便更多的設(shè)計實體利用和共享。VHDL程序包

定義程序包的一般語句格式:

PACKAGE

程序包IS

程序包首說明

END

程序包名;

PACKAGEBODY

程序包IS

程序包體說明

END

程序包名;

程序包首程序包體VHDL語言的庫、程序包及配置

57

程序包首收集了VHDL設(shè)計所需的公共信息,用來定義數(shù)據(jù)類型、元件和子程序等。

1.程序包首

一般格式:

PACKAGE

程序包IS

TYPE語句;

SUBTYPE語句;

CONSTANT語句;

SIGNAL語句;

COMPONENT語句;

FUNCTION語句;

SUBPROGRAM語句;

END

程序包名;

——用來定義數(shù)據(jù)類型——用來定義子類型

——用來定義常數(shù)

——用來定義信號

——用來定義元件

——用來定義函數(shù)

——用來定義子程序

VHDL語言的庫、程序包及配置

58

【例】定義程序包。

PACKAGE

my_pkg

IS

TYPEbyteIS

RANGE0TO255;

SUBTYPE

nibyte

ISbyteRANGE0TO15;

CONSTANTbyte_ff:

bcd:=255;

SIGNALaddend:nibabc;

COMPONENTbyte_adder

PORT(a,b:INbyte;c:OUTbyte;overflow:OUTBOOLEAN);

ENDCOMPONENT;

FUNCTIONmy_fun(a:INbyte)RETURNbyte;

END

my_pkg;

程序清單:--程序包首,程序包名為my_pkg--

定義數(shù)據(jù)類型,byte的范圍0~255--定義子類型nibyte--定義常數(shù)byte_ff--定義信號addend--定義元件byte_adder--定義函數(shù)my_funVHDL語言的庫、程序包及配置

59

用來描述已在程序包首中定義過的元件和子程序的內(nèi)容。

2.程序包體

一般格式:

PACKAGEBODY

程序包IS

程序包體說明

END

程序包名;

程序包體說明可以是USE語句、子程序定義、子程序體、數(shù)據(jù)類型說明、子類型說明和常數(shù)說明等。VHDL語言的庫、程序包及配置

60

常用的預(yù)定義的程序包有:

3.VHDL常用的程序包

STD_LOGIC_1164

STD_LOGIC_ARITH

STD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED

④STANDARD和TEXTIOVHDL語言的庫、程序包及配置

61

配置是將特定的結(jié)構(gòu)體與一個確定的實體相關(guān)聯(lián),為大型系統(tǒng)的設(shè)計提供管理和工程組織。

配置是設(shè)計實體VHDL語言描述的組成部分之一,但不是必不可少的。常用來描述層與層之間、實體與結(jié)構(gòu)體之間的連接關(guān)系。

配置

配置可分為三種類型:

●默認配置

●元件配置

●結(jié)構(gòu)體配置

VHDL語言的庫、程序包及配置

62

默認配置是一種最為簡單的配置,當(dāng)設(shè)計實體中不含有任何其他元件和塊語句時,可以使用默認配置。

1.默認配置

基本格式:

CONFIGURATION

配置名OF

實體名IS

FOR

選配結(jié)構(gòu)體名;

ENDFOR;

END

配置名;

VHDL語言的庫、程序包及配置

63

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYCOUNTERIS

PORT(CLK,CLR:INSTD_LOGIC;

Q:OUTINTEGER);

ENDCOUNTER;【例】設(shè)計兩個計數(shù)位寬分別為4位和8位的計數(shù)器。

設(shè)兩個計數(shù)器具有相同的功能和外部結(jié)構(gòu),只是計數(shù)位寬不同。用一個計數(shù)器實體來實現(xiàn)兩個不同結(jié)構(gòu)體的配置。

程序清單:

計數(shù)器的實體

VHDL語言的庫、程序包及配置

64【例】設(shè)計兩個計數(shù)位寬分別為4位和8位的計數(shù)器。

程序清單:

ARCHITECTURECOUNT4OFCOUNTERIS

BEGIN

PROCESS(CLK)

VARIABLEQQ:INTEGER:=

0;

BEGIN

IFCLR='0'THENQQ:=

0;

ELSIF(CLK'EVENTANDCLK='1')THEN

IFQQ=15THENQQ:=

0;

ELSEQQ:=

QQ+1;

ENDIF;

ENDIF;Q<=

QQ;

ENDPROCESS;

ENDCOUNT4;計數(shù)器COUNT4的結(jié)構(gòu)體

VHDL語言的庫、程序包及配置

65【例】設(shè)計兩個計數(shù)位寬分別為4位和8位的計數(shù)器。

程序清單:

ARCHITECTURECOUNT8OFCOUNTERIS

BEGIN

PROCESS(CLK)

VARIABLEQQ:INTEGER:=

0;

BEGIN

IFCLR='0'THENQQ:=

0;

ELSIF(CLK'EVENTANDCLK='1')THEN

IFQQ=255THENQQ:=

0;

ELSEQQ:=

QQ+1;

ENDIF;

ENDIF;Q<=

QQ;

ENDPROCESS;

ENDCOUNT8;計數(shù)器COUNT8的結(jié)構(gòu)體

VHDL語言的庫、程序包及配置

66【例】設(shè)計兩個計數(shù)位寬分別為4位和8位的計數(shù)器。

程序清單:

CONFIGURATIONCOUNT_4OFCOUNTERIS

FORCOUNT4

ENDFOR;

ENDCOUNT_4;

CONFIGURATIONCOUNT_8OFCOUNTERIS

FORCOUNT8

ENDFOR;

ENDCOUNT_8;計數(shù)器的配置

VHDL語言的庫、程序包及配置

67當(dāng)結(jié)構(gòu)體中含有多個引用元件時,可以采用元件配置,以指明引用元件的具體位置。

2.元件配置

格式:

CONFIGURATION

配置名OF

實體名IS

FOR

選配結(jié)構(gòu)體名FOR

元件例化標(biāo)號:元件名USECONFIGURATION

庫名.元件配置名;或

USEENTITY

庫名.實體名(結(jié)構(gòu)體名);

ENDFOR;

ENDFOR;END

配置名;

VHDL語言的庫、程序包及配置

68

CONFIGURATION

mux_cfg

OFmux21IS

FORstructure

FORU2,U3:and2

USECONFIGURATIONWORK.and2_cfg;

ENDFOR;

FORU4:or2

USECONFIGURATIONWORK.or2_cfg;

ENDFOR;

ENDFOR;

END

mux_cfg;

【例】給二選一數(shù)據(jù)選擇器進行元件配置。

程序清單:

VHDL語言的庫、程序包及配置

69

結(jié)構(gòu)體配置與元件配置具有相同的特征,都是對結(jié)構(gòu)體中所引用的元件進行配置,但它們所處的位置和書寫格式有很大的不同。

結(jié)構(gòu)體配置通常直接放在結(jié)構(gòu)體說明語句的位置,而元件配置則是與元件所在的結(jié)構(gòu)體分開的。

3.結(jié)構(gòu)體配置

格式:

FOR

元件例化標(biāo)號:元件名

USEENTITY

庫名.實體名(結(jié)構(gòu)體名);或FOR

元件例化標(biāo)號:元件名

USE

CONFIGURATION

庫名.元件配置名;

VHDL語言的庫、程序包及配置

70

3.結(jié)構(gòu)體配置

例如,對例4.3.3中的元件可采用結(jié)構(gòu)體配置。

FORU2,U3:and2

USECONFIGURATIONWORK.and2_cfg;

FORU4:or2

USECONFIGURATIONWORK.or2_cfg;VHDL語言的庫、程序包及配置

71語言要素是組成編程語句的基本單元,主要有:

■數(shù)據(jù)對象(Object)

■數(shù)據(jù)類型(Type)

■操作數(shù)(Operands)

■運算操作符(Operator)

VHDL語言的語言要素

72任何一種程序設(shè)計語言都有自己的一套書寫符號和語法規(guī)則,這些符號和語法規(guī)則構(gòu)成了程序設(shè)計語言的文字規(guī)則。

VHDL語言的文字規(guī)則

1.數(shù)字型文字

數(shù)字型文字有多種表達方式,包括:

●整數(shù)型文字

●實數(shù)型文字

●數(shù)制基數(shù)型文字

●物理量型文字

VHDL語言的語言要素

73

1.數(shù)字型文字

(1)整數(shù)型文字整數(shù)型文字都是十進制數(shù),由數(shù)字和下劃線組成。

例如:0,6,876,516E2,23_456_789

156E2=1560023_456_789=23

456

789

VHDL語言的語言要素

74

1.數(shù)字型文字

(2)實數(shù)型文字

也是十進制數(shù),但必須帶小數(shù)點,由數(shù)字、小數(shù)點和下劃線組成。

例如:98.76,12_345_678.986_54,3.055.66E-2,0.0

12_345_678.986_54=12

345

678.986

5455.66E-2=0.5566。

VHDL語言的語言要素

75

1.數(shù)字型文字

(3)數(shù)值基數(shù)型文字

用數(shù)制基數(shù)表示的文字。

格式:數(shù)制

#

數(shù)值

#

E

數(shù)值

由五部分組成:

用十進制數(shù)表明數(shù)制的基數(shù);②

數(shù)制隔離符號“#”;③用數(shù)值表達的文字;④

指數(shù)隔離符號“#”;⑤

用十進制表示的指數(shù)部分。VHDL語言的語言要素

76

1.數(shù)字型文字

(3)數(shù)值基數(shù)型文字

用數(shù)制基數(shù)表示的文字。 例如:

10#234# 2#1101_1110#8#374#16#E#E116#F.01#E+2--十進制數(shù)表示,等于234--二進制數(shù)表示,等于222--八進制表示,等于252--十六進制數(shù)表示,等于224--十六進制數(shù)表示,等于3841.00VHDL語言的語言要素

77

1.數(shù)字型文字

物理量型文字用來表示時間、長度等物理量。

例如:

50s100m1k?100mA

--表示50秒(時間)

--表示100米(長度)

--表示1千歐姆(電阻)

--表示100毫安培(電流)(4)物理量型文字VHDL語言的語言要素

78

2.字符串型文字

字符是用單引號括起來的ASCII字符,可以是數(shù)字,也可以是字母或符號。

例如:‘0’,‘2’,‘A’,‘a(chǎn)’,‘&’等。

字符串是一維的字符數(shù)組,用雙引號括起來。分為文字字符串和數(shù)值字符串。(1)文字字符串用雙引號括起來的一維字符文字。

例如:“ABC”,“ERROR

”,“A#B”VHDL語言的語言要素

79(2)數(shù)值字符串?dāng)?shù)值字符串也稱為矢量,是預(yù)定義的數(shù)據(jù)類型BIT的一位數(shù)組。

格式:數(shù)制基數(shù)符號“數(shù)值字符串”

數(shù)制基數(shù)符號:

B——二進制基數(shù)符號;

O——八進制基數(shù)符號;

X——16進制基數(shù)符號。

例如:

B“111010110”;位矢量數(shù)組,長度為9 O“12”;等效B“001010”,長度為6 X“BC6”;等效B“101111000110”,長度為12

VHDL語言的語言要素

80

3.

標(biāo)識符

標(biāo)識符是設(shè)計人員為書寫程序所規(guī)定的一些詞,用來給常數(shù)、變量、信號、端口、子程序、實體和結(jié)構(gòu)體等定義的名稱。

VHDL語言的標(biāo)準(zhǔn)版本分為VHDL’87版和VHDL’93版。

VHDL’87版的標(biāo)識符稱為短標(biāo)識符或標(biāo)識符。

VHDL’93版的標(biāo)識符是基于VHDL’87標(biāo)準(zhǔn)擴展后形成的,故稱作擴展標(biāo)識符。

VHDL語言的語言要素

81

3.

標(biāo)識符

短標(biāo)識符為VHDL’87版規(guī)定的標(biāo)識符,但VHDL’93版同樣支持短標(biāo)識符。

(1)短標(biāo)識符

規(guī)則:

以字母開頭,后跟若干字母、數(shù)字或下劃線構(gòu)成;②

標(biāo)識符不能以下劃線結(jié)尾;③

標(biāo)識符中的下劃線不能連續(xù)使用;④

標(biāo)識符中的字母不分大小寫;⑤

VHDL的保留字不能用作標(biāo)識符。

例如:h_adder,

mux21,

example

為合法標(biāo)識符

2adder,

_mux21,

ful__adder,

adder_

為非法標(biāo)識符VHDL語言的語言要素

82

3.

標(biāo)識符

滿足VHDL’93版標(biāo)準(zhǔn)的標(biāo)識符。

(2)擴展標(biāo)識符規(guī)則:

擴展標(biāo)識符用反斜杠“\”定界,如:\ABOY.\;②

擴展標(biāo)識符允許以數(shù)字開頭,如:\74LS193\;

擴展標(biāo)識符允許使用空格符、圖形符號及兩個以上的下劃線,如:\SIG__&N\;

擴展標(biāo)識符仍區(qū)分大小寫字母,如:\END\不同于\end\;

擴展標(biāo)識符允許使用保留字,如:\END\;

⑥擴展標(biāo)識符與同名的短標(biāo)識符不同,如:\CAD\不同于CAD。VHDL語言的語言要素

83

3.

標(biāo)識符

(3)下標(biāo)名用于指示數(shù)組型變量或信號的某一元素。格式:標(biāo)識符(表達式)

注意:表達式的數(shù)值必須在數(shù)組元素下標(biāo)號范圍以內(nèi),并且必須是可計算的。

例如:a(2),b(n)

VHDL語言的語言要素

84

3.

標(biāo)識符

(4)段名多個下標(biāo)名的組合,用于指示數(shù)組型變量或信號的某一段元素。格式:標(biāo)識符(表達式方向表達式)

標(biāo)識符:數(shù)組類型信號或變量

方向:TO——數(shù)組下標(biāo)序號由低到高

DOWNTO——數(shù)組下標(biāo)序號由高到低

例如:D(7DOWNTO0);表示數(shù)據(jù)總線D7~D0 D(0TO7);表示數(shù)據(jù)總線D0~D7D(4TO6);表示數(shù)據(jù)總線D4~D6VHDL語言的語言要素

85

3.

標(biāo)識符

(5)保留字保留字又稱關(guān)鍵字,是具有特殊含義的標(biāo)識符,只能作為固定的用途,不能直接作為標(biāo)識符(擴展標(biāo)識符除外)。

ABSACCESSAFTERALIASALLAND

ARCHITECTURE

ARRAY

ASSERT

ATTRIBUTE

BEGIN

BLOCK

BODY

BUFFER

BUS

CASE

COMPONENT

CONFIGURATION

CONSTANT

DISCONNECT

DOWNTOELSEELSIFENDENTITYEXITFILEFORFUNCTIONGENERATEGENERICGROUPGUARDEDIFIMPUREIN

INERTIAL

INOUT

IS

LABEL

LIBRARY

LINKAGELITERALLOOPMAPMODNANDNEWNEXTNORVHDL語言的語言要素

86

3.

標(biāo)識符

(5)保留字NOTNULLOFONOPENOROTHERSOUTPACKAGEPORTPOSTPONEDPROCEDUREPROCESSPURERANGERECOREGISTERRDREJECTREMREPORTRETURNROLRORSELECTSEVERITYSIGNALSHAREDSLASLLSRASRLSUBTYPETHENTOTRANSPORTTYPEUNAFFECTEDUNITSUNTILUSEVARIABLEWAITWHENWHILEWITHXNORXORVHDL語言的語言要素

87

4.

注釋

VHDL語言與其他程序設(shè)計語言一樣,為了便于理解和閱讀,常在編寫的程序中加上注釋。VHDL語言的注釋符用雙減號“--”表示。

注釋語句以注釋符引導(dǎo),到行尾結(jié)束。

注釋可以加在程序語句結(jié)束符“;”之后,也可以加在空行處。VHDL語言的語言要素

88

VHDL語言除了具有一定的語法規(guī)則外,還定義了可以接受不同數(shù)據(jù)類型賦值的數(shù)據(jù)對象。VHDL語言的數(shù)據(jù)對象

常量(CONSTANT)

變量(VARIABLE)

信號(SIGNAL)

文件(FILE)

數(shù)據(jù)對象主要有四種類型:VHDL語言的語言要素

89常量為全局量,是指在設(shè)計描述過程中保持某一規(guī)定類型特定值不變的量。

1.

常量(CONSTANT)

定義格式:

規(guī)則:①

常量的定義應(yīng)在程序開始前進行;②

常量一旦被賦值就不能再改變;③

常量所賦的值應(yīng)和定義的數(shù)據(jù)類型一致;④

定義在程序包中的常量,可在調(diào)用此程序包的所有設(shè)計實體中使用;

定義在設(shè)計實體內(nèi)的常量,僅在該實體內(nèi)使用;

⑥定義在某結(jié)構(gòu)體中的常量,只能在該結(jié)構(gòu)體使用;⑦定義在結(jié)構(gòu)體中某單元的常量,只能用于該單元。

CONSTANT

常量名:數(shù)據(jù)類型:=表達式;

VHDL語言的語言要素

90

1.

常量(CONSTANT)

例如:CONSTANTwidth:INTEGER:=16;

CONSTANTdelay:TIME:=20ns;

CONSTANT

fbus:BIT_VECTOR:=“11010111”;CONSTANT

Vcc:REAL:=5.0;

--width是整數(shù)類型常量,值為16--delay是時間型常量,值為20ns--fbus是位矢量型常數(shù)

其值為11010111

--Vcc是實數(shù)型常量,其值為5.0

VHDL語言的語言要素

91變量為局部量,常用來存儲中間數(shù)據(jù),以便實現(xiàn)程序的算法。它只能在進程語句、函數(shù)語句和過程語句的結(jié)構(gòu)中使用。

變量的賦值是一種理想化的數(shù)據(jù)傳輸,即賦值是立即生效的,不存在任何延時的行為。

2.變量(VARIABLE)

定義格式:VARIABLE

變量名1[,變量名2,…]:數(shù)據(jù)類型[:=初始值]

例如:VARIABLE

b:INTEGER;

VARIABLE

a:INTEGER:=2

;--

定義b為整數(shù)型變量--

定義a為整數(shù)型變量,初值為2

VHDL語言的語言要素

92

2.變量(VARIABLE)

變量的使用規(guī)則:

變量不能用于硬件連線和存儲元件;②

變量賦值和初始化賦值都用“:=”表示;③

變量的初值不是預(yù)設(shè)的,某一時刻只能有一個值;④

變量不能用于在進程間傳遞數(shù)據(jù);⑤

仿真時,變量用于建模;⑥

綜合時,變量充當(dāng)數(shù)據(jù)的暫存。VHDL語言的語言要素

93

2.變量(VARIABLE)

變量數(shù)值的改變是通過變量賦值來實現(xiàn)。

變量賦值語句的格式:

目標(biāo)變量名:=表達式;例如:VARIABLEx,y:REAL;

VARIABLEa,b:BIT

VECTOR(7DOWNTO0

);

x:=100.0;

y:=1.5+x;

a:=“1011101” a(4TO7):=(‘1’,‘0’,‘1’,‘0’);b(0TO5):=a(2TO7);VHDL語言的語言要素

94信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它是電子電路內(nèi)部硬件連接的抽象,可以作為設(shè)計實體中并行語句模塊間的信息交流通道。信號是一個全局量,只有定義后才能使用,通常用于在結(jié)構(gòu)體、程序包和實體說明中。

3.信號(SIGNAL)

信號定義格式:

SIGNAL

信號名:數(shù)據(jù)類型[:=初值];

例如:SIGNALS0:

STD

LOGIC:=‘0’;

SIGNALFA,F(xiàn)B:

BIT;

SIGNALD:

STD

LOOGIC

VECTOR(0

TO

15);

--定義一個標(biāo)準(zhǔn)邏輯位信號S0,初值為0

--定義兩個BIT位信號FA和FB

--定義標(biāo)準(zhǔn)邏輯16位矢量信號DVHDL語言的語言要素

95

3.信號(SIGNAL)

信號賦值語句:

目標(biāo)信號名<=表達式;

例如:

x<=9;

y<=x;

z<=xAFTER5ns;VHDL語言的語言要素

96

3.信號(SIGNAL)

信號與變量的區(qū)別:

①使用場合不同

變量在進程、函數(shù)和過程中說明;信號在結(jié)構(gòu)體中說明。

②賦值符號不同

變量用“:=”號賦值,其值被立即使用(無時間延時);信號用“<=”賦值,其值可以附加延時。VHDL語言的語言要素

97

VHDL是一種強類型語言,編程時非常注重數(shù)據(jù)類型的匹配問題,要求設(shè)計實體中的數(shù)據(jù)對象必須具有確定的數(shù)據(jù)類型,并且相同數(shù)據(jù)類型的量才能進行相互傳遞或賦值。

VHDL語言的數(shù)據(jù)類型

標(biāo)量型(ScalarType)

復(fù)合型(CompositeType)

存取型(AccessType)

文件型(FilesType)

1.

數(shù)據(jù)類型的分類

VHDL語言與其他硬件描述語言相比有較多的數(shù)據(jù)類型,因此它能夠創(chuàng)建高層次的系統(tǒng)和算法模型。根據(jù)數(shù)據(jù)用途的不同,VHDL中的數(shù)據(jù)類型可分為四大類:

VHDL語言的語言要素

98

標(biāo)量型

1.

數(shù)據(jù)類型的分類

是單元素的最基本數(shù)據(jù)類型,通常用于描述一個單值數(shù)據(jù)對象。包括:

①實數(shù)類型

②整數(shù)類型

③枚舉類型

④時間類型VHDL語言的語言要素

99

復(fù)合型

1.

數(shù)據(jù)類型的分類

可以由最基本的數(shù)據(jù)類型復(fù)合而成,如可由標(biāo)量復(fù)合而成。分為:

①數(shù)組型(Array)

②記錄型(Record)

存取型

為給定的數(shù)據(jù)對象提供存取方式。

文件型

用于提供多值存取類型。

VHDL語言的語言要素

100

1.

數(shù)據(jù)類型的分類

上述的四種數(shù)據(jù)類型又可分為兩大類:●

預(yù)定義數(shù)據(jù)類型●

用戶自定義數(shù)據(jù)類型

是VHDL中最常用、最基本的數(shù)據(jù)類型,這些數(shù)據(jù)類型都已在VHDL的標(biāo)準(zhǔn)庫中作了定義,用戶可在設(shè)計中隨時調(diào)用。由用戶根據(jù)需要而自定義的數(shù)據(jù)類型。VHDL語言的語言要素

101是一種已在標(biāo)準(zhǔn)程序包(STANDARD)中預(yù)先定義的數(shù)據(jù)類型,在實際使用中能自動包含在VHDL的源文件中。

2.VHDL的預(yù)定義數(shù)據(jù)類型

分為:布爾數(shù)據(jù)類型位數(shù)據(jù)類型位矢量數(shù)據(jù)類型

字符數(shù)據(jù)類型整數(shù)數(shù)據(jù)類型自然數(shù)數(shù)據(jù)類型正整數(shù)數(shù)據(jù)類型實數(shù)數(shù)據(jù)類型字符串?dāng)?shù)據(jù)類型時間數(shù)據(jù)類型錯誤等級數(shù)據(jù)類型VHDL語言的語言要素

102(1)布爾(BOOLEAN)數(shù)據(jù)類型

是一個二值枚舉型數(shù)據(jù)類型,常用于

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論