版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)翻新懸浮滑板行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 圓電極行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 中國(guó)濕式球磨機(jī)行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 2025年直腳拋光圓盤爐項(xiàng)目投資可行性研究分析報(bào)告
- 2025年破碎機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年交流直流焊機(jī)行業(yè)深度研究分析報(bào)告
- 2025年度建筑施工項(xiàng)目環(huán)保技術(shù)改造與實(shí)施合同
- 2025年度酒店客房窗簾軌道安裝與維修合同
- 2025年度古玩市場(chǎng)交易與買賣合同
- 2025年度活動(dòng)場(chǎng)地布置與環(huán)保材料使用合同
- 二零二五版電力設(shè)施維修保養(yǎng)合同協(xié)議3篇
- 最經(jīng)典凈水廠施工組織設(shè)計(jì)
- VDA6.3過(guò)程審核報(bào)告
- 2024-2030年中國(guó)并購(gòu)基金行業(yè)發(fā)展前景預(yù)測(cè)及投資策略研究報(bào)告
- 2024年湖南商務(wù)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)帶答案
- 骨科手術(shù)中常被忽略的操作課件
- 《湖南師范大學(xué)》課件
- 2024年全國(guó)各地中考試題分類匯編:作文題目
- 2024年高壓電工操作證考試復(fù)習(xí)題庫(kù)及答案(共三套)
- 《糖拌西紅柿 》 教案()
- 彈性力學(xué)數(shù)值方法:解析法:彈性力學(xué)中的變分原理
評(píng)論
0/150
提交評(píng)論