EAD課程-第3章VHDL基本結(jié)構(gòu)_第1頁(yè)
EAD課程-第3章VHDL基本結(jié)構(gòu)_第2頁(yè)
EAD課程-第3章VHDL基本結(jié)構(gòu)_第3頁(yè)
EAD課程-第3章VHDL基本結(jié)構(gòu)_第4頁(yè)
EAD課程-第3章VHDL基本結(jié)構(gòu)_第5頁(yè)
已閱讀5頁(yè),還剩98頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章VHDL基本結(jié)構(gòu)

3.1概述

3.2

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

3.3

VHDL語(yǔ)言結(jié)構(gòu)體的描述方式3.4VHDL語(yǔ)言的庫(kù)、程序包及配置3.5VHDL語(yǔ)言的語(yǔ)言要素3.6VHDL語(yǔ)言的描述語(yǔ)句1EDA技術(shù)

3.1概述

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

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

第3章VHDL硬件描述語(yǔ)言

2EDA技術(shù)

3.1.1VHDL語(yǔ)言簡(jiǎn)介

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

第3章VHDL硬件描述語(yǔ)言

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

3EDA技術(shù)

3.1.1VHDL語(yǔ)言簡(jiǎn)介

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

第3章VHDL硬件描述語(yǔ)言

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

4EDA技術(shù)

3.1.1VHDL語(yǔ)言簡(jiǎn)介

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

第3章VHDL硬件描述語(yǔ)言

5EDA技術(shù)

3.1.2VHDL語(yǔ)言特點(diǎn)

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

作為高級(jí)硬件描述語(yǔ)言,VHDL有如下特點(diǎn):①

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

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

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

⑦具有豐富的仿真語(yǔ)句和庫(kù)函數(shù);6EDA技術(shù)

3.1.2VHDL語(yǔ)言特點(diǎn)

第3章VHDL硬件描述語(yǔ)言

作為高級(jí)硬件描述語(yǔ)言,VHDL有如下特點(diǎn):

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

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

⑩數(shù)據(jù)類型豐富、安全性好。7EDA技術(shù)1)2輸入與非門NAND2的邏輯描述

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--IEEE庫(kù)及其中程序包的使用說(shuō)明

ENTITYMYNAND2ISPORT(A,B:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDMYNAND2;--實(shí)體NAND2的說(shuō)明

ARCHITECTUREART1OFMYNAND2IS--實(shí)體NAND2的結(jié)構(gòu)ART1的說(shuō)明

BEGINY<=ANANDB;ENDART1;第3章VHDL硬件描述語(yǔ)言

8EDA技術(shù)2)MY74LS00的描述

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--IEEE庫(kù)及其中程序包的使用說(shuō)明ENTITYMY74LS00ISPORT(A1,B1,A2,B2,A3,B3,A4,B4:INSTD_LOGIC;Y1,Y2,Y3,Y4:OUTSTD_LOGIC);ENDMY74LS00;--實(shí)體MY74LS00的說(shuō)明ARCHITECTUREART2OFMY74LS00IS--實(shí)體MY74LS00的結(jié)構(gòu)體ART2的說(shuō)明

第3章VHDL硬件描述語(yǔ)言

9EDA技術(shù)

COMPONENTNAND2IS--元件調(diào)用說(shuō)明

PORT(A,B:INSTD_LOGIC;Y:OUTSTD_LOGIC);ENDCOMPONENTNAND2;BEGINU1:NAND2PORTMAP(A=>A1,B=>B1,Y=>Y1);--元件連接說(shuō)明U2:NAND2PORTMAP(A=>A2,B=>B2,Y=>Y2);U3:NAND2PORTMAP(A3,B3,Y3);U4:NAND2PORTMAP(A4,B4,Y4);ENDART2;第3章VHDL硬件描述語(yǔ)言

10EDA技術(shù)

3.2VHDL語(yǔ)言設(shè)計(jì)實(shí)體的基本結(jié)構(gòu)

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

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

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

第3章VHDL硬件描述語(yǔ)言

11EDA技術(shù)

3.2.1VHDL語(yǔ)言設(shè)計(jì)實(shí)體的組成

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

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

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

第3章VHDL硬件描述語(yǔ)言

12EDA技術(shù)

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

第3章VHDL硬件描述語(yǔ)言

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

實(shí)體說(shuō)明(Entity)

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

配置(Configuration)

庫(kù)(Library)和程序包(Package)

13EDA技術(shù)

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

第3章VHDL硬件描述語(yǔ)言

庫(kù)、程序包配置

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

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

14EDA技術(shù)

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

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

第3章VHDL硬件描述語(yǔ)言

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

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

選擇控制:S1S0

15EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

VHDL程序如下:

LIBRARYIEEE;--IEEE庫(kù)

USEIEEE.STD_LOGIC_1164.ALL;--程序包

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYmux41IS--定義實(shí)體名

PORT(S1,S0:INSTD_LOGIC;--定義輸入信號(hào)

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

ENDmux41;

ARCHITECTURE

behaveior

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

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

END

behaveior;

庫(kù)

程序包

實(shí)體說(shuō)明

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

16EDA技術(shù)

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

庫(kù):是用來(lái)存放已設(shè)計(jì)好的程序包、數(shù)據(jù)集合體、元件的倉(cāng)庫(kù),供用戶進(jìn)行VHDL設(shè)計(jì)時(shí)調(diào)用。第3章VHDL硬件描述語(yǔ)言

程序包:用VHDL語(yǔ)言編寫的共享文件,定義了將要使用的常數(shù)、數(shù)據(jù)類型、子程序和設(shè)計(jì)好的電路單元等。實(shí)體說(shuō)明:定義電路單元的輸入、輸出引腳信號(hào)。以標(biāo)識(shí)符ENTITY開始,以END結(jié)束。結(jié)構(gòu)體:用來(lái)描述電路內(nèi)部結(jié)構(gòu)和邏輯功能。并以標(biāo)識(shí)符ARCHITECTURE開頭,以END結(jié)尾。

17EDA技術(shù)

3.2.2VHDL語(yǔ)言的實(shí)體說(shuō)明

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

第3章VHDL硬件描述語(yǔ)言

實(shí)體說(shuō)明語(yǔ)句的格式如下:ENTITY

實(shí)體名

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

END[ENTITY]實(shí)體名;實(shí)體說(shuō)明語(yǔ)句類屬說(shuō)明語(yǔ)句端口說(shuō)明語(yǔ)句結(jié)束語(yǔ)句

規(guī)則:①

實(shí)體聲明語(yǔ)句必須以“ENTITY

實(shí)體名

IS”開始,以“ENDENTITY

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

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

方括號(hào)內(nèi)的語(yǔ)言描述可任選。18EDA技術(shù)

1.實(shí)體說(shuō)明語(yǔ)句ENTITY

該語(yǔ)句是實(shí)體說(shuō)明的引導(dǎo)語(yǔ)句,用來(lái)指明實(shí)體說(shuō)明部分的開始,并定義實(shí)體名。第3章VHDL硬件描述語(yǔ)言

關(guān)鍵字:ENTITY

格式:ENTITY

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

19EDA技術(shù)

2.

類屬說(shuō)明語(yǔ)句GENERIC

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

第3章VHDL硬件描述語(yǔ)言

關(guān)鍵字:GENERIC

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

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

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

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

設(shè)定值:為常數(shù)名所代表的數(shù)值。20EDA技術(shù)

2.

類屬說(shuō)明語(yǔ)句GENERIC

例如:第3章VHDL硬件描述語(yǔ)言

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

ENTITYbodyIS

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

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

21EDA技術(shù)

3.

端口說(shuō)明語(yǔ)句PORT

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

第3章VHDL硬件描述語(yǔ)言

關(guān)鍵字:PORT

格式:PORE

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

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

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

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

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

端口模式:即端口方向,用來(lái)定義外部引腳的信號(hào)方向,共有五種模式。

數(shù)據(jù)類型:用來(lái)指定每個(gè)端口信號(hào)的取值類型,共有10種。

22EDA技術(shù)

3.

端口說(shuō)明語(yǔ)句PORT

端口模式說(shuō)明:

第3章VHDL硬件描述語(yǔ)言

23EDA技術(shù)

3.

端口說(shuō)明語(yǔ)句PORT

端口模式的符號(hào)

第3章VHDL硬件描述語(yǔ)言

IN端口模式

OUT端口模式:INOUT端口模式:BUFFER端口模式:24EDA技術(shù)

3.

端口說(shuō)明語(yǔ)句PORT

【例3.2.2】編寫2輸入與非門的實(shí)體說(shuō)明。第3章VHDL硬件描述語(yǔ)言

設(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為邏輯位25EDA技術(shù)73頁(yè)

VHDL源程序如下。libraryIEEE;--庫(kù)useIEEE.std_logic_1164.all;entitych0isport(d0:instd_logic;d1:instd_logic;--實(shí)體

sel:in

std_logic;

q:out

std_logic);endch0;第3章VHDL硬件描述語(yǔ)言

26EDA技術(shù)architectureconnectofch0isbeginprocess(d0,dl,sel)variabletempl,temp2,temp3:std_logic;--結(jié)構(gòu)體begintemp1:=d0andsel;temp2:=d1and(notsel);temp3:=temp1ortemp2;q<=temp3;endprocess;endconnect;第3章VHDL硬件描述語(yǔ)言

27EDA技術(shù)

3.3VHDL語(yǔ)言的結(jié)構(gòu)體

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

第3章VHDL硬件描述語(yǔ)言

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

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

②通過(guò)VHDL提供的語(yǔ)句來(lái)描述設(shè)計(jì)實(shí)體所要求的具體行為和功能;③描述各元件之間的連接。28EDA技術(shù)

3.3VHDL語(yǔ)言的結(jié)構(gòu)體

結(jié)構(gòu)體內(nèi)部構(gòu)造的描述層次和描述內(nèi)容:第3章VHDL硬件描述語(yǔ)言

結(jié)構(gòu)體結(jié)構(gòu)體說(shuō)明結(jié)構(gòu)體功能描述常數(shù)說(shuō)明數(shù)據(jù)類型說(shuō)明信號(hào)說(shuō)明例化元件說(shuō)明子程序說(shuō)明塊語(yǔ)句進(jìn)程語(yǔ)句信號(hào)賦值語(yǔ)句子程序調(diào)用語(yǔ)句元件例化語(yǔ)句29EDA技術(shù)

3.3VHDL語(yǔ)言的結(jié)構(gòu)體

第3章VHDL硬件描述語(yǔ)言

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

結(jié)構(gòu)體說(shuō)明,用來(lái)對(duì)數(shù)據(jù)類型、常數(shù)、信號(hào)、子程序和元件等進(jìn)行說(shuō)明。②結(jié)構(gòu)體功能描述,用來(lái)描述設(shè)計(jì)實(shí)體的邏輯行為,可以用不同的描述風(fēng)格來(lái)表達(dá)設(shè)計(jì)實(shí)體的邏輯功能。30EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

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

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

ARCHITECTURE

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

實(shí)體名IS[結(jié)構(gòu)體說(shuō)明語(yǔ)句;]

BEGIN[功能描述語(yǔ)句;]

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

31EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

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

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

格式:ARCHITECTURE

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

實(shí)體名IS

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

32EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

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

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

●信號(hào)(SIGNAL)

●類型(TYPE)

●常數(shù)(CONSTANT)

●元件(COMPONENT)

●函數(shù)(FUNCTION)

●過(guò)程(PROCEDURE)

33EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

4.功能描述語(yǔ)句

用于描述實(shí)體的邏輯功能。

功能描述語(yǔ)句結(jié)構(gòu)可以含有五種不同類型。結(jié)構(gòu)體功能描述塊語(yǔ)句進(jìn)程語(yǔ)句信號(hào)賦值語(yǔ)句子程序調(diào)用語(yǔ)句元件例化語(yǔ)句34EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

4.功能描述語(yǔ)句

①塊語(yǔ)句(BLOCK)

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

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

③信號(hào)賦值語(yǔ)句(SIGNAL)

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

35EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

4.功能描述語(yǔ)句

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

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

⑤元件例化語(yǔ)句(COMPONENT)

元件例化語(yǔ)句用來(lái)調(diào)用另一個(gè)設(shè)計(jì)實(shí)體所描述的電路。調(diào)用時(shí),元件例化語(yǔ)句對(duì)其他的設(shè)計(jì)實(shí)體做元件調(diào)用說(shuō)明,并將元件的端口與其他元件、信號(hào)或高層設(shè)計(jì)實(shí)體的界面端口進(jìn)行連接。

36EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

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

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

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

BEGINCO<=‘1’

WHEN(Q=“1111”AND

EN=‘1’AND

Rd=‘1’)

ELSE

‘0’;

--條件賦值語(yǔ)句

PROCESS(CLK,Rd)--進(jìn)程語(yǔ)句

BEGIN

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

ELSIF(CLK’EVENT

ANDCLK=‘1’)THEN

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

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

ENDIF;

ENDIF;

ENDPROCESS;

ENDbehavior;37EDA技術(shù)VHDL語(yǔ)言結(jié)構(gòu)體的描述方式

VHDL語(yǔ)言的結(jié)構(gòu)體可以用不同的語(yǔ)句類型和描述方式來(lái)表達(dá)電路所期望的邏輯行為,而對(duì)于相同的邏輯行為,可以有不同的語(yǔ)句表達(dá)方式。第3章VHDL硬件描述語(yǔ)言

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

常用的描述方式主要有:

行為描述

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

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

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

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

第3章VHDL硬件描述語(yǔ)言

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

39EDA技術(shù)【例3.3.1】試用行為描述完成二選一數(shù)據(jù)選擇器的設(shè)計(jì)。第3章VHDL硬件描述語(yǔ)言

設(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;40EDA技術(shù)

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

第3章VHDL硬件描述語(yǔ)言

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

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

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

結(jié)構(gòu)體中的過(guò)程語(yǔ)句屬于典型的行為描述。41EDA技術(shù)

即邏輯描述,它利用VHDL語(yǔ)言中的賦值符和邏輯運(yùn)算符進(jìn)行描述,既包含邏輯單元的結(jié)構(gòu)信息,又隱含地表示某種行為。第3章VHDL硬件描述語(yǔ)言

2結(jié)構(gòu)體的數(shù)據(jù)流描述

例如:

y<=aNORb;

z<=NOT(aXORb);//y等于a與b的或非運(yùn)算//z等于a與b的同或運(yùn)算這種方式主要采用非結(jié)構(gòu)化的并行語(yǔ)句描述。42EDA技術(shù)【例3.3.2】將例3.3.1中的數(shù)據(jù)選擇器采用數(shù)據(jù)流描述。第3章VHDL硬件描述語(yǔ)言

邏輯表達(dá)式: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;43EDA技術(shù)

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

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

第3章VHDL硬件描述語(yǔ)言

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

44EDA技術(shù)

結(jié)構(gòu)描述建模的步驟如下:第3章VHDL硬件描述語(yǔ)言

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

①元件說(shuō)明:描述局部接口。

②元件例化:相對(duì)于其他元件放置元件。

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

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

45EDA技術(shù)【例3.3.3】將例3.3.1中的數(shù)據(jù)選擇器采用結(jié)構(gòu)描述。

第3章VHDL硬件描述語(yǔ)言

程序清單:

ENTITYmux21IS

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

ENDmux21;

ARCHITECTUREstructureOFmux21IS

COMPONENTand2--2輸入與門器件調(diào)用聲明并定義其端口

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

END

COMPONENT;

COMPONENT

or2--2輸入或門器件調(diào)用聲明并定義其端口

PORT(a,b:INSTD_LOGIC;c:OUT

STD_LOGIC);

END

COMPONENT;&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

U446EDA技術(shù)【例3.3.3】將例3.3.1中的數(shù)據(jù)選擇器采用結(jié)構(gòu)描述。

第3章VHDL硬件描述語(yǔ)言

程序清單:&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

U4COMPONENTnot1--1輸入非門器件調(diào)用聲明并定義其端口

PORT

(a:INSTD_LOGIC;c:OUTSTD_LOGIC);

END

COMPONENT;

SIGNAL

aa,ab,ns:STD_LOGIC;

BEGINU1:not1PORTMAP(s,ns);--元件連接說(shuō)明U2:and2PORTMAP

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

ENDstructure;47EDA技術(shù)

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

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

第3章VHDL硬件描述語(yǔ)言

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

48EDA技術(shù)【例3.3.4】用混合描述完成半加器的設(shè)計(jì)。

第3章VHDL硬件描述語(yǔ)言

表達(dá)式: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;49EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

塊(BLOCK)語(yǔ)句可以將一些實(shí)現(xiàn)某一特定功能的并行語(yǔ)句組合在一起,其主要目的是利用多個(gè)塊語(yǔ)句結(jié)構(gòu)將一個(gè)復(fù)雜的結(jié)構(gòu)體劃分成幾個(gè)不同功能的模塊,使復(fù)雜的結(jié)構(gòu)體結(jié)構(gòu)分明、功能明確,使程序的編排更加清晰、更有層次,改善并行語(yǔ)句的結(jié)構(gòu)和可讀性,便于程序的編寫、調(diào)試和查錯(cuò)。

3.4.1.塊語(yǔ)句

3.4VHDL結(jié)構(gòu)體的子結(jié)構(gòu)50EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(1)塊語(yǔ)句的格式

塊語(yǔ)句是將結(jié)構(gòu)體中并行語(yǔ)句進(jìn)行組合的一種方法。

塊標(biāo)號(hào):BLOCK

說(shuō)明語(yǔ)句

BEGIN

并行語(yǔ)句

ENDBLOCK

塊標(biāo)號(hào);

格式:

說(shuō)明語(yǔ)句:主要包括接口說(shuō)明和類屬說(shuō)明等,用來(lái)定義塊內(nèi)局部信號(hào)、數(shù)據(jù)類型、元件和子程序。

并行語(yǔ)句:可以使用所有的并行語(yǔ)句。

51EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)塊語(yǔ)句的應(yīng)用

利用塊語(yǔ)句可以將結(jié)構(gòu)體中的并行語(yǔ)句劃分成多個(gè)并行方式的子塊,每一個(gè)子塊都是一個(gè)獨(dú)立的設(shè)計(jì)實(shí)體,具有自己的類屬參數(shù)和界面端口,以及與外部環(huán)境的銜接描述。

塊語(yǔ)句還可以實(shí)現(xiàn)嵌套,內(nèi)層的塊語(yǔ)句可以使用外層塊語(yǔ)句所定義的信號(hào),但外層塊語(yǔ)句不能使用內(nèi)層塊語(yǔ)句定義的信號(hào)。52EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

運(yùn)算電路的輸入為A和B,輸出為SUM(八位和)、SUB(八位差),以及進(jìn)位CO和借位BO。

【例3.4.1】試用塊語(yǔ)句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。

LIBRARYIEEE;

USEIEEE.STD

LOGIC

1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY

add_sub

IS

PORT(A,B:INSTD

LOGIC_VECTOR(7DOWNTO0);

SUM,SUB:

OUTSTD

LOGIC_VECTOR(7DOWNTO0);

CO,BO:OUTSTD

LOGIC);

END

add_sub;53EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.4.1】試用塊語(yǔ)句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。

ARCHITECTUREexample12OF

add_sub

IS

SIGNALAA,BB,SM,SB:STD_LOGIC_VECTOR(1DOWNTO0);

BEGINAA<=‘0’&A;BB<=‘0’&B;

WITHsSELECTADDER:BLOCK

BEGINSM<=AA

+

BB;SUM<=SM(

7DOWNTO0

);CO<=SM(

8

);

ENDBLOCKADDER;--ADDER塊行為描述語(yǔ)句--運(yùn)算結(jié)果送入SUM--進(jìn)位送入CO54EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.4.1】試用塊語(yǔ)句設(shè)計(jì)一個(gè)運(yùn)算電路,包括一個(gè)八位加法器和一個(gè)八位減法器。

SUBTRACTER:

BLOCK

BEGINSB<=AA

-

BB;SUB<=SB(

7DOWNTO0

);BO<=SB(

8

);

ENDBLOCKSUBTRACTER;ENDexample12;--SUBTRACTER塊行為描述語(yǔ)句--運(yùn)算結(jié)果送入SUB--進(jìn)位送入BO55EDA技術(shù)塊語(yǔ)句的結(jié)果78頁(yè)libraryieee;Useieee.std_logic_1164.all;entitych4isport(do,d1:instd_logic_vector(3downto0);s:in

std_logic;y:outstd_logic_vector(3downto0);endch4;architecturedatofch4issignaltemp1,temp2,temp3:std_logic_vector(3downto0);begin第3章VHDL硬件描述語(yǔ)言

56EDA技術(shù)ladel:blockbegintemp1(3)<=d0(3)ands;temp1(2)<=d0(2)ands;temp1(1)<=d0(1)ands;temp1(0)<=d0(0)ands;temp2(3)<=d1(3)and(nots);temp2(2)<=d1(2)and(nots);temp2(1)<=d1(1)and(nots);temp2(0)<=d1(0)and(nots);temp3<=temp1ortemp2;y<=temp3;endblocklabel;enddat;第3章VHDL硬件描述語(yǔ)言

57EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

衛(wèi)式塊語(yǔ)句79頁(yè)libraryieee;useieee.std_logic_1164.all;entitych4_isport(d:in

std_logic;

clk:in

std_logic;

q,qb:out

std_logic);endch4_1;architecturedatofch4_1isbeginlabel:block(clk='1')beginq<=guardeddafter3ns;qb<=guarded(notd)after3ns;endblocklabel;enddat;58EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

進(jìn)程(PROCESS)語(yǔ)句是在結(jié)構(gòu)體中用來(lái)描述特定電路功能的程序模塊,它提供了一種用順序語(yǔ)句描述電路邏輯功能的方法。

3.4.2

進(jìn)程語(yǔ)句

一個(gè)結(jié)構(gòu)體中可以有多個(gè)并行運(yùn)行的進(jìn)程結(jié)構(gòu),而每個(gè)進(jìn)程結(jié)構(gòu)的內(nèi)部由一組順序語(yǔ)句組成。

進(jìn)程語(yǔ)句結(jié)構(gòu)具有并行執(zhí)行和順序處理的雙重特性。

59EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(1)進(jìn)程語(yǔ)句的結(jié)構(gòu)

[進(jìn)程標(biāo)號(hào):]PROCESS[(敏感信號(hào)參數(shù)表)][IS][進(jìn)程說(shuō)明部分]BEGIN順序描述語(yǔ)句

ENDPROCESS[進(jìn)程標(biāo)號(hào)];

格式:

當(dāng)敏感信號(hào)表中的某個(gè)信號(hào)發(fā)生變化時(shí),立即啟動(dòng)進(jìn)程語(yǔ)句,將進(jìn)程中的順序語(yǔ)句按順序循環(huán)執(zhí)行,直到敏感信號(hào)穩(wěn)定不變?yōu)橹埂?/p>

60EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)進(jìn)程語(yǔ)句的組成

①進(jìn)程說(shuō)明部分進(jìn)程語(yǔ)句的結(jié)構(gòu)由三部分組成,即進(jìn)程說(shuō)明部分、順序描述語(yǔ)句部分和敏感信號(hào)參數(shù)表。

用于定義該進(jìn)程所需要的局部數(shù)據(jù)環(huán)境。如:數(shù)據(jù)類型、常數(shù)、屬性、子程序等。

注意:不能在進(jìn)程內(nèi)部定義信號(hào)和共享變量,信號(hào)只能在結(jié)構(gòu)體說(shuō)明中定義。

61EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)進(jìn)程語(yǔ)句的組成

順序描述語(yǔ)句部分

是一段順序執(zhí)行語(yǔ)句,用于描述該進(jìn)程的行為。

信號(hào)賦值語(yǔ)句:在進(jìn)程中將計(jì)算或處理的結(jié)果賦值給信號(hào)?!?/p>

變量賦值語(yǔ)句:在進(jìn)程中以變量的形式存儲(chǔ)計(jì)算的中間值。●

子程序調(diào)用語(yǔ)句:對(duì)已定義的過(guò)程和函數(shù)進(jìn)行調(diào)用,并參與計(jì)算。62EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)進(jìn)程語(yǔ)句的組成

順序描述語(yǔ)句部分

進(jìn)程啟動(dòng)語(yǔ)句:當(dāng)PROCESS語(yǔ)句未列出任何敏感信號(hào)時(shí),進(jìn)程的啟動(dòng)可通過(guò)WAIT語(yǔ)句來(lái)實(shí)現(xiàn)?!?/p>

順序描述語(yǔ)句:包括IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句和NULL語(yǔ)句。●

進(jìn)程跳出語(yǔ)句:包括NEXT語(yǔ)句和EXIT語(yǔ)句。③敏感信號(hào)參數(shù)表

用于啟動(dòng)本進(jìn)程可讀入的信號(hào)名。63EDA技術(shù)進(jìn)程語(yǔ)句結(jié)構(gòu)80頁(yè)libraryieee;useieee.std_logic_1164.all;entitych5isport(d0,d1,d2,d3:instd_logic_Vector(7downto0);

s1,s0:instd_logic;

q:outstd_logic_Vector(7downto0);endch5;architecturebehofch5isbeginprocess(d0,d1,d2,d2,s0,s1)variabletmp:integerrange0to4;begintmp:=0;if(s0='1')thentmp:=tmp+1;endif;if(s1='1')thentmp:=tmp+2;endif;casetmpiswhen0=>q<=d0;when1=>q<=d1;when2=>q<=d2;when3=>q<=d3;whenothers=>null;endcase;endprocess;endbeh;第3章VHDL硬件描述語(yǔ)言

64EDA技術(shù)

81頁(yè)libraryieee;useieee.std_logic_1164.all;entitych6isport(d,clk:in

std_logic;q1,q2:outstd_logic);endch6;architecturebehofch6isbegin

processbeginWaitUntilclk='1';Q1<=d;endprocess;processbeginWaitUntilclk='0';Q2<=notd;endprocess;endbeh;第3章VHDL硬件描述語(yǔ)言

65EDA技術(shù)82頁(yè)libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitych7isport(clk:in

Std_logic;

irq:out

Std_logic);endch7;architecturebehofch7issignalcou:std_logic_vector(3downto0);beginprocessbeginWaitUntilClk='1';cou<=cou+'1';endprocess;processbeginWaitUntilClk='1';If(cou="1111")then

Irq<='0';Else

Irq<='1';Endif;endprocess;endbeh;66EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.4.2】用進(jìn)程語(yǔ)句描述異步清零計(jì)數(shù)器。

異步清零方式與時(shí)鐘信號(hào)clk無(wú)關(guān),當(dāng)清零端clr=0時(shí),計(jì)數(shù)狀態(tài)Q=0;當(dāng)clr=1時(shí),計(jì)數(shù)器為計(jì)數(shù)狀態(tài)。

PROCESS(

clk,clr

)

BEGIN

IF

clr=‘0’THEN

Q<=X“00”;

ELSIF(

clk=‘1’AND

clk’EVENT

)THEN

Q<=Q

+

1;

ENDIF;

ENDPROCESS;67EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.4.2】用進(jìn)程語(yǔ)句描述異步清零計(jì)數(shù)器。

若計(jì)數(shù)器采用同步清零,則敏感表中可無(wú)clr信號(hào),此時(shí)進(jìn)程如下:

PROCESS(

clk)

BEGIN

IF(

clk=‘1’AND

clk’EVENT

)THEN

IFclr=‘0’THENQ<=X“00”;ELSE

Q<=Q

+

1;

ENDIF;ENDIF;

ENDPROCESS;68EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

3.5VHDL語(yǔ)言的子程序

子程序是一個(gè)VHDL程序模塊,它是利用順序語(yǔ)句來(lái)定義和完成算法的。

子程序的應(yīng)用包括“子程序定義”和“子程序調(diào)用”兩個(gè)內(nèi)容。

子程序的定義可以在程序包、結(jié)構(gòu)體和進(jìn)程中進(jìn)行,并且定義后才能被主程序調(diào)用。

主程序和子程序之間通過(guò)端口參數(shù)列表,以位置關(guān)聯(lián)的方式進(jìn)行數(shù)據(jù)傳送,子程序可以被多次調(diào)用完成重復(fù)性的工作。

子程序類型:過(guò)程(PROCEDURE)

函數(shù)(FUNCTION)

69EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

過(guò)程的作用是傳遞信息,即通過(guò)參數(shù)進(jìn)行信息的傳遞。這些參數(shù)可以是常量、變量和信號(hào),傳遞方向可以是輸入、輸出和雙向。

過(guò)程語(yǔ)句包括:過(guò)程的定義

過(guò)程的調(diào)用

過(guò)程的定義由過(guò)程首和過(guò)程體兩部分組成。

1.

過(guò)程語(yǔ)句

(1)過(guò)程的定義

過(guò)程首:是過(guò)程的索引,用于快速檢索相應(yīng)過(guò)程體的內(nèi)容。

過(guò)程體:由說(shuō)明部分和順序語(yǔ)句組成。

70EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

過(guò)程首的定義格式:

(1)過(guò)程的定義

參數(shù)表:用于對(duì)常數(shù)、變量和信號(hào)等數(shù)據(jù)對(duì)象做出說(shuō)明,并用關(guān)鍵字IN、OUT和INOUT定義這些參數(shù)的工作模式。

PROCEDURE

過(guò)程名稱(參數(shù)表);

過(guò)程體的定義格式:

PROCEDURE

過(guò)程名稱(參數(shù)表)IS[說(shuō)明部分]BEGIN

順序語(yǔ)句;ENDPROCEDURE

過(guò)程名稱;

71EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)過(guò)程的調(diào)用

過(guò)程的調(diào)用就是執(zhí)行給定名稱和參數(shù)的過(guò)程。

過(guò)程調(diào)用的格式:

過(guò)程名稱(形參數(shù)名稱=>實(shí)參數(shù)表達(dá)式,形參數(shù)名稱=>實(shí)參數(shù)表達(dá)式);

形參數(shù)名稱:是對(duì)被調(diào)用的過(guò)程已做說(shuō)明的參數(shù)名。

實(shí)參數(shù)表達(dá)式:是一個(gè)標(biāo)識(shí)符或具體數(shù)值,是當(dāng)前過(guò)程調(diào)用中形參數(shù)的接受體。

對(duì)應(yīng)關(guān)系:位置關(guān)聯(lián)名稱關(guān)聯(lián)

72EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)過(guò)程的調(diào)用

過(guò)程調(diào)用需完成的內(nèi)容:

將實(shí)參數(shù)值賦給被調(diào)用過(guò)程的形參數(shù);②

執(zhí)行過(guò)程;③

將過(guò)程中的形參數(shù)值返回給對(duì)應(yīng)的實(shí)參數(shù)。

過(guò)程調(diào)用有兩種方式:順序語(yǔ)句方式:并行語(yǔ)句方式:

即在進(jìn)程中的過(guò)程調(diào)用。即在結(jié)構(gòu)體或塊中的過(guò)程調(diào)用。73EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.5.1】試用過(guò)程語(yǔ)句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYaddISPORT(

A,

B,

C:INSTD_LOGIC_VECTOR(

3DOWNTO0

);

CLK,

SET:INSTD_LOGIC;

S:OUTSTD_LOGIC_VECTOR(

3DOWNTO0

));

ENDadd;

ARCHITECTUREexample15OFaddIS

PROCEDUREadd_1(

VARIABLEdata1,data2,data3:INSTD_LOGIC_VECTOR;

VARIABLE

dataout:OUTSTD_LOGIC_VECTOR)ISBEGIN

dataout:=data1+data2+data3;

ENDadd_1;

--過(guò)程體定義74EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.5.1】試用過(guò)程語(yǔ)句編寫實(shí)現(xiàn)數(shù)據(jù)求和的運(yùn)算程序。

BEGIN

PROCESS(CLK)

VARIABLE

tmp:STD_LOGIC_VECTOR(

3DOWNTO0

);

BEGIN

IF

(CLK=‘1’ANDCLK’EVENT)THEN

IFSET=‘1’THEN

tmp:=“0000”;

ELSEadd_1(A,B,C,tmp);

ENDIF;

ENDIF;

S<=tmp;

ENDPROCESS;

ENDexample15;--過(guò)程調(diào)用75EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

函數(shù)的作用是將輸入的若干個(gè)參數(shù),通過(guò)函數(shù)進(jìn)行運(yùn)算,并直接返回函數(shù)值。

函數(shù)語(yǔ)句包括函數(shù)定義語(yǔ)句和函數(shù)調(diào)用語(yǔ)句。

函數(shù)的定義與過(guò)程的定義一樣,由函數(shù)首和函數(shù)體兩部分組成。

2.

函數(shù)語(yǔ)句

(1)函數(shù)首定義

函數(shù)首是函數(shù)的索引,由函數(shù)名稱、參數(shù)表和返回值的數(shù)據(jù)類型三部分組成。

函數(shù)首的定義格式:

FUNCTION

函數(shù)名稱(參數(shù)表)RETURN

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

函數(shù)名:可以是普通的標(biāo)識(shí)符,也可以是運(yùn)算符;

參數(shù)表:是對(duì)參與函數(shù)運(yùn)算的數(shù)據(jù)類型進(jìn)行說(shuō)明,可以是常量、變量和信號(hào)三類數(shù)據(jù)對(duì)象;

數(shù)據(jù)類型:用來(lái)定義返回值的數(shù)據(jù)類型。76EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(2)函數(shù)體定義

函數(shù)體由說(shuō)明部分、順序語(yǔ)句和返回語(yǔ)句組成。

函數(shù)首的定義格式:

FUNCTION

函數(shù)名(參數(shù)表)RETURN

數(shù)據(jù)類型IS [說(shuō)明部分];

BEGIN

順序語(yǔ)句;

RETURN[返回變量名];

ENDFUNCTION[函數(shù)名];

說(shuō)明部分:用來(lái)對(duì)數(shù)據(jù)類型、常數(shù)、變量等進(jìn)行局部說(shuō)明。

順序語(yǔ)句:用以完成規(guī)定算法或轉(zhuǎn)換。

77EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

(3)函數(shù)的調(diào)用

是用來(lái)完成某些數(shù)據(jù)的運(yùn)算和轉(zhuǎn)換的。與過(guò)程的調(diào)用十分類似,所不同的是,函數(shù)的調(diào)用將返回一個(gè)指定數(shù)據(jù)類型的值,函數(shù)的參數(shù)只能是輸入值。

函數(shù)首的定義格式:

函數(shù)名稱(形參數(shù)名稱=>實(shí)參數(shù)表達(dá)式,形參數(shù)名稱=>實(shí)參數(shù)表達(dá)式);78EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.5.2】使用函數(shù)定義FUNCTION語(yǔ)句描述求最小數(shù)電路。

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYminIS

PORT(

A,

B:INSTD_LOGIC_VECTOR(

7DOWNTO0

);

Y:

OUTSTD_LOGIC_VECTOR(

7DOWNTO0

));

ENDmin;

79EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

【例3.5.2】使用函數(shù)定義FUNCTION語(yǔ)句描述求最小數(shù)電路。

ARCHITECTUREexample16OFminIS

FUNCTIONmin(

a,

b:INSTD_LOGIC_VECTOR)

RETURNSTD_LOGIC_VECTOR;

FUNCTIONmin(

a,

b:INSTD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORIS

BEGIN

IF(

a<b)THEN

RETURNa;

ELSE

RETURNb;

ENDIF;

ENDmin;

BEGINY<=min(A,B);

ENDexample16;

--定義函數(shù)首--定義函數(shù)體80EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

用來(lái)結(jié)束子程序的執(zhí)行,無(wú)條件跳轉(zhuǎn)到子程序的結(jié)束處。

子程序返回語(yǔ)句只能用于子程序體中,有兩種格式。

3.

子程序返回語(yǔ)句

該語(yǔ)句為無(wú)條件返回,只能用于過(guò)程。

格式1:

RETURN;

該語(yǔ)句只能用于函數(shù),返回時(shí)給出一個(gè)函數(shù)返回值。

格式2:

RETURN表達(dá)式

;

81EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

3.6VHDL語(yǔ)言的庫(kù)、程序包及配置

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

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

82EDA技術(shù)

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

第3章VHDL硬件描述語(yǔ)言

3.6.1VHDL庫(kù)

1.常用的庫(kù)

VHDL語(yǔ)言中常用的五種庫(kù):

IEEE庫(kù)②

STD庫(kù)③

WORK庫(kù)④

VITAL庫(kù)⑤

用戶自定義庫(kù)

——VHDL語(yǔ)言設(shè)計(jì)中最常見(jiàn)的庫(kù)。

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

——用戶的VHDL語(yǔ)言工作庫(kù)。

——VHDL語(yǔ)言的時(shí)序仿真庫(kù)。

——用戶自定義的資源庫(kù)。

83EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

84EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

2.資源庫(kù)和設(shè)計(jì)庫(kù)

VHDL語(yǔ)言所使用的庫(kù)可以分成兩類:

●資源庫(kù)

●設(shè)計(jì)庫(kù)

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

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

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

85EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

3.庫(kù)的使用

關(guān)鍵字:LIBRARY

格式:LIBRARY

庫(kù)名稱

庫(kù)說(shuō)明語(yǔ)句:

說(shuō)明:用來(lái)指明所使用的庫(kù),庫(kù)名稱為一系列由逗號(hào)分隔的庫(kù)名。

庫(kù)說(shuō)明語(yǔ)句總是位于設(shè)計(jì)實(shí)體的最前面,通常與USE語(yǔ)句一起使用。

86EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

3.庫(kù)的使用

格式1:USE

庫(kù)名.程序包名.項(xiàng)目名;

USE語(yǔ)句用來(lái)指明庫(kù)中的程序包,有兩種格式:

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

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.STD_ULOGIC;

USEIEEE.STD_LOGIC_1164.RISING_EDGE;

87EDA技術(shù)第3章VHDL硬件描述語(yǔ)言

3.庫(kù)的使用

格式2:USE

庫(kù)名.程序包名.ALL;

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

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

88EDA技術(shù)在VHDL語(yǔ)言中,用戶可以將已定義的常數(shù)、信號(hào)、函數(shù)、數(shù)據(jù)類型、元件和子程序等收集在一起形成一個(gè)程序包,以便更多的設(shè)計(jì)實(shí)體利用和共享。第3章VHDL硬件描述語(yǔ)言

3.6.2VHDL程序包

定義程序包的一般語(yǔ)句格式:

PACKAGE

程序包IS

程序包首說(shuō)明

END

程序包名;

PACKAGEBODY

程序包IS

程序包體說(shuō)明

END

程序包名;

程序包首程序包體89EDA技術(shù)

程序包首收集了VHDL設(shè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(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)論