EAD課程-第3章VHDL基本結構_第1頁
EAD課程-第3章VHDL基本結構_第2頁
EAD課程-第3章VHDL基本結構_第3頁
EAD課程-第3章VHDL基本結構_第4頁
EAD課程-第3章VHDL基本結構_第5頁
已閱讀5頁,還剩98頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章VHDL基本結構

3.1概述

3.2

VHDL語言設計實體的基本結構

3.3

VHDL語言結構體的描述方式3.4VHDL語言的庫、程序包及配置3.5VHDL語言的語言要素3.6VHDL語言的描述語句1EDA技術

3.1概述

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

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

第3章VHDL硬件描述語言

2EDA技術

3.1.1VHDL語言簡介

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

第3章VHDL硬件描述語言

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

3EDA技術

3.1.1VHDL語言簡介

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

第3章VHDL硬件描述語言

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

4EDA技術

3.1.1VHDL語言簡介

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

第3章VHDL硬件描述語言

5EDA技術

3.1.2VHDL語言特點

VHDL語言作為一種標準的硬件描述語言,具有結構嚴謹、描述能力強的特點,支持從系統(tǒng)級到邏輯門級電路所有層次的設計,適合于復雜邏輯電路和系統(tǒng)的設計。第3章VHDL硬件描述語言

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

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

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

⑥易于共享和復用;

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

3.1.2VHDL語言特點

第3章VHDL硬件描述語言

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

⑧設計結構清晰、易讀易懂;

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

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

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;--IEEE庫及其中程序包的使用說明

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

ARCHITECTUREART1OFMYNAND2IS--實體NAND2的結構ART1的說明

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

8EDA技術2)MY74LS00的描述

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

第3章VHDL硬件描述語言

9EDA技術

COMPONENTNAND2IS--元件調用說明

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

10EDA技術

3.2VHDL語言設計實體的基本結構

用VHDL語言設計的電路無論規(guī)模大小,都要使用一個完整的VHDL程序結構,這個完整的程序結構稱為設計實體或實體。

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

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

第3章VHDL硬件描述語言

11EDA技術

3.2.1VHDL語言設計實體的組成

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

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

一個設計實體可以包含一個或多個結構體,用于描述其的邏輯結構和邏輯功能。

第3章VHDL硬件描述語言

12EDA技術

1.VHDL設計實體的結構

第3章VHDL硬件描述語言

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

實體說明(Entity)

結構體(Architecture)

配置(Configuration)

庫(Library)和程序包(Package)

13EDA技術

1.VHDL設計實體的結構

第3章VHDL硬件描述語言

庫、程序包配置

設計實體實體說明結構體進程或其他并行結構

基本結構:

14EDA技術

2.設計實體舉例

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

第3章VHDL硬件描述語言

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

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

選擇控制:S1S0

15EDA技術第3章VHDL硬件描述語言

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--定義結構體名

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

END

behaveior;

程序包

實體說明

結構體

16EDA技術

2.設計實體舉例

庫:是用來存放已設計好的程序包、數(shù)據(jù)集合體、元件的倉庫,供用戶進行VHDL設計時調用。第3章VHDL硬件描述語言

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

17EDA技術

3.2.2VHDL語言的實體說明

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

第3章VHDL硬件描述語言

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

實體名

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

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

規(guī)則:①

實體聲明語句必須以“ENTITY

實體名

IS”開始,以“ENDENTITY

實體名;”結束;②

實體名是設計者給設計實體的命名;③

方括號內(nèi)的語言描述可任選。18EDA技術

1.實體說明語句ENTITY

該語句是實體說明的引導語句,用來指明實體說明部分的開始,并定義實體名。第3章VHDL硬件描述語言

關鍵字:ENTITY

格式:ENTITY

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

19EDA技術

2.

類屬說明語句GENERIC

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

第3章VHDL硬件描述語言

關鍵字:GENERIC

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

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

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

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

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

2.

類屬說明語句GENERIC

例如:第3章VHDL硬件描述語言

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

ENTITYbodyIS

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

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

21EDA技術

3.

端口說明語句PORT

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

第3章VHDL硬件描述語言

關鍵字:PORT

格式:PORE

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

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

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

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

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

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

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

22EDA技術

3.

端口說明語句PORT

端口模式說明:

第3章VHDL硬件描述語言

23EDA技術

3.

端口說明語句PORT

端口模式的符號

第3章VHDL硬件描述語言

IN端口模式

OUT端口模式:INOUT端口模式:BUFFER端口模式:24EDA技術

3.

端口說明語句PORT

【例3.2.2】編寫2輸入與非門的實體說明。第3章VHDL硬件描述語言

設與非門的輸入為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技術73頁

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

sel:in

std_logic;

q:out

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

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

27EDA技術

3.3VHDL語言的結構體

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

第3章VHDL硬件描述語言

結構體所承擔的任務

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

②通過VHDL提供的語句來描述設計實體所要求的具體行為和功能;③描述各元件之間的連接。28EDA技術

3.3VHDL語言的結構體

結構體內(nèi)部構造的描述層次和描述內(nèi)容:第3章VHDL硬件描述語言

結構體結構體說明結構體功能描述常數(shù)說明數(shù)據(jù)類型說明信號說明例化元件說明子程序說明塊語句進程語句信號賦值語句子程序調用語句元件例化語句29EDA技術

3.3VHDL語言的結構體

第3章VHDL硬件描述語言

結構體由兩個基本部分組成:

結構體說明,用來對數(shù)據(jù)類型、常數(shù)、信號、子程序和元件等進行說明。②結構體功能描述,用來描述設計實體的邏輯行為,可以用不同的描述風格來表達設計實體的邏輯功能。30EDA技術第3章VHDL硬件描述語言

結構體的格式:

1.結構體的基本格式

ARCHITECTURE

結構體名OF

實體名IS[結構體說明語句;]

BEGIN[功能描述語句;]

END[ARCHITECTURE][結構體名];

31EDA技術第3章VHDL硬件描述語言

結構體引導語句用來引導結構體的開始,并定義結構體的名稱。

2.結構體引導語句關鍵字:ARCHITECTURE

格式:ARCHITECTURE

結構體名OF

實體名IS

結構體名是給予結構體的名稱,是該結構體唯一的名字,用來表明該結構體所隸屬于哪個實體。

32EDA技術第3章VHDL硬件描述語言

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

3.結構體說明語句

●信號(SIGNAL)

●類型(TYPE)

●常數(shù)(CONSTANT)

●元件(COMPONENT)

●函數(shù)(FUNCTION)

●過程(PROCEDURE)

33EDA技術第3章VHDL硬件描述語言

4.功能描述語句

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

功能描述語句結構可以含有五種不同類型。結構體功能描述塊語句進程語句信號賦值語句子程序調用語句元件例化語句34EDA技術第3章VHDL硬件描述語言

4.功能描述語句

①塊語句(BLOCK)

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

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

③信號賦值語句(SIGNAL)

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

35EDA技術第3章VHDL硬件描述語言

4.功能描述語句

④子程序調用語句

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

⑤元件例化語句(COMPONENT)

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

36EDA技術第3章VHDL硬件描述語言

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

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

設計程序的結構體如下: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;37EDA技術VHDL語言結構體的描述方式

VHDL語言的結構體可以用不同的語句類型和描述方式來表達電路所期望的邏輯行為,而對于相同的邏輯行為,可以有不同的語句表達方式。第3章VHDL硬件描述語言

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

常用的描述方式主要有:

行為描述

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

●結構描述

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

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

第3章VHDL硬件描述語言

1結構體的行為描述

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

設數(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ù)學模型進行描述,其抽象程度遠高于數(shù)據(jù)流描述和結構描述,其特點如下:

第3章VHDL硬件描述語言

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

行為描述只需描述清楚輸入與輸出的行為,而與它們的結構無關;

描述程序大多采用算術運算、關系運算、慣性延時、傳輸延時等語句;

結構體中的過程語句屬于典型的行為描述。41EDA技術

即邏輯描述,它利用VHDL語言中的賦值符和邏輯運算符進行描述,既包含邏輯單元的結構信息,又隱含地表示某種行為。第3章VHDL硬件描述語言

2結構體的數(shù)據(jù)流描述

例如:

y<=aNORb;

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

邏輯表達式: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技術

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

這種方式主要采用元件例化(COMPONENT)的形式對設計實體進行描述。可以用不同類型的結構來實現(xiàn)多層次的工程設計,從簡單的門電路到復雜的元件來描述整個系統(tǒng),元件之間的連接通過定義的端口界面來實現(xiàn)。

第3章VHDL硬件描述語言

3結構體的結構描述

44EDA技術

結構描述建模的步驟如下:第3章VHDL硬件描述語言

3結構體的結構描述

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

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

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

結構描述用于層次化設計,高層次的設計模塊調用低層次的設計模塊,或直接用門電路來構成一個復雜的邏輯電路。

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

第3章VHDL硬件描述語言

程序清單:

ENTITYmux21IS

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

ENDmux21;

ARCHITECTUREstructureOFmux21IS

COMPONENTand2--2輸入與門器件調用聲明并定義其端口

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

END

COMPONENT;

COMPONENT

or2--2輸入或門器件調用聲明并定義其端口

PORT(a,b:INSTD_LOGIC;c:OUT

STD_LOGIC);

END

COMPONENT;&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

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

第3章VHDL硬件描述語言

程序清單:&&≥11

d1

d0

s

y

aa

ab

ns

U1

U3

U2

U4COMPONENTnot1--1輸入非門器件調用聲明并定義其端口

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;47EDA技術

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

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

第3章VHDL硬件描述語言

4結構體的混合描述

48EDA技術【例3.3.4】用混合描述完成半加器的設計。

第3章VHDL硬件描述語言

表達式:sn=an⊕bn

cn=an·bn

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

結構描述

程序清單:

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技術第3章VHDL硬件描述語言

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

3.4.1.塊語句

3.4VHDL結構體的子結構50EDA技術第3章VHDL硬件描述語言

(1)塊語句的格式

塊語句是將結構體中并行語句進行組合的一種方法。

塊標號:BLOCK

說明語句

BEGIN

并行語句

ENDBLOCK

塊標號;

格式:

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

并行語句:可以使用所有的并行語句。

51EDA技術第3章VHDL硬件描述語言

(2)塊語句的應用

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

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

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

【例3.4.1】試用塊語句設計一個運算電路,包括一個八位加法器和一個八位減法器。

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技術第3章VHDL硬件描述語言

【例3.4.1】試用塊語句設計一個運算電路,包括一個八位加法器和一個八位減法器。

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塊行為描述語句--運算結果送入SUM--進位送入CO54EDA技術第3章VHDL硬件描述語言

【例3.4.1】試用塊語句設計一個運算電路,包括一個八位加法器和一個八位減法器。

SUBTRACTER:

BLOCK

BEGINSB<=AA

-

BB;SUB<=SB(

7DOWNTO0

);BO<=SB(

8

);

ENDBLOCKSUBTRACTER;ENDexample12;--SUBTRACTER塊行為描述語句--運算結果送入SUB--進位送入BO55EDA技術塊語句的結果78頁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硬件描述語言

56EDA技術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硬件描述語言

57EDA技術第3章VHDL硬件描述語言

衛(wèi)式塊語句79頁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技術第3章VHDL硬件描述語言

進程(PROCESS)語句是在結構體中用來描述特定電路功能的程序模塊,它提供了一種用順序語句描述電路邏輯功能的方法。

3.4.2

進程語句

一個結構體中可以有多個并行運行的進程結構,而每個進程結構的內(nèi)部由一組順序語句組成。

進程語句結構具有并行執(zhí)行和順序處理的雙重特性。

59EDA技術第3章VHDL硬件描述語言

(1)進程語句的結構

[進程標號:]PROCESS[(敏感信號參數(shù)表)][IS][進程說明部分]BEGIN順序描述語句

ENDPROCESS[進程標號];

格式:

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

60EDA技術第3章VHDL硬件描述語言

(2)進程語句的組成

①進程說明部分進程語句的結構由三部分組成,即進程說明部分、順序描述語句部分和敏感信號參數(shù)表。

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

注意:不能在進程內(nèi)部定義信號和共享變量,信號只能在結構體說明中定義。

61EDA技術第3章VHDL硬件描述語言

(2)進程語句的組成

順序描述語句部分

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

信號賦值語句:在進程中將計算或處理的結果賦值給信號。●

變量賦值語句:在進程中以變量的形式存儲計算的中間值?!?/p>

子程序調用語句:對已定義的過程和函數(shù)進行調用,并參與計算。62EDA技術第3章VHDL硬件描述語言

(2)進程語句的組成

順序描述語句部分

進程啟動語句:當PROCESS語句未列出任何敏感信號時,進程的啟動可通過WAIT語句來實現(xiàn)?!?/p>

順序描述語句:包括IF語句、CASE語句、LOOP語句和NULL語句?!?/p>

進程跳出語句:包括NEXT語句和EXIT語句。③敏感信號參數(shù)表

用于啟動本進程可讀入的信號名。63EDA技術進程語句結構80頁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硬件描述語言

64EDA技術

81頁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硬件描述語言

65EDA技術82頁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技術第3章VHDL硬件描述語言

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

異步清零方式與時鐘信號clk無關,當清零端clr=0時,計數(shù)狀態(tài)Q=0;當clr=1時,計數(shù)器為計數(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技術第3章VHDL硬件描述語言

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

若計數(shù)器采用同步清零,則敏感表中可無clr信號,此時進程如下:

PROCESS(

clk)

BEGIN

IF(

clk=‘1’AND

clk’EVENT

)THEN

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

Q<=Q

+

1;

ENDIF;ENDIF;

ENDPROCESS;68EDA技術第3章VHDL硬件描述語言

3.5VHDL語言的子程序

子程序是一個VHDL程序模塊,它是利用順序語句來定義和完成算法的。

子程序的應用包括“子程序定義”和“子程序調用”兩個內(nèi)容。

子程序的定義可以在程序包、結構體和進程中進行,并且定義后才能被主程序調用。

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

子程序類型:過程(PROCEDURE)

函數(shù)(FUNCTION)

69EDA技術第3章VHDL硬件描述語言

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

過程語句包括:過程的定義

過程的調用

過程的定義由過程首和過程體兩部分組成。

1.

過程語句

(1)過程的定義

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

過程體:由說明部分和順序語句組成。

70EDA技術第3章VHDL硬件描述語言

過程首的定義格式:

(1)過程的定義

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

PROCEDURE

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

過程體的定義格式:

PROCEDURE

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

順序語句;ENDPROCEDURE

過程名稱;

71EDA技術第3章VHDL硬件描述語言

(2)過程的調用

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

過程調用的格式:

過程名稱(形參數(shù)名稱=>實參數(shù)表達式,形參數(shù)名稱=>實參數(shù)表達式);

形參數(shù)名稱:是對被調用的過程已做說明的參數(shù)名。

實參數(shù)表達式:是一個標識符或具體數(shù)值,是當前過程調用中形參數(shù)的接受體。

對應關系:位置關聯(lián)名稱關聯(lián)

72EDA技術第3章VHDL硬件描述語言

(2)過程的調用

過程調用需完成的內(nèi)容:

將實參數(shù)值賦給被調用過程的形參數(shù);②

執(zhí)行過程;③

將過程中的形參數(shù)值返回給對應的實參數(shù)。

過程調用有兩種方式:順序語句方式:并行語句方式:

即在進程中的過程調用。即在結構體或塊中的過程調用。73EDA技術第3章VHDL硬件描述語言

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

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;

--過程體定義74EDA技術第3章VHDL硬件描述語言

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

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;--過程調用75EDA技術第3章VHDL硬件描述語言

函數(shù)的作用是將輸入的若干個參數(shù),通過函數(shù)進行運算,并直接返回函數(shù)值。

函數(shù)語句包括函數(shù)定義語句和函數(shù)調用語句。

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

2.

函數(shù)語句

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

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

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

FUNCTION

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

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

函數(shù)名:可以是普通的標識符,也可以是運算符;

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

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

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

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

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

FUNCTION

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

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

BEGIN

順序語句;

RETURN[返回變量名];

ENDFUNCTION[函數(shù)名];

說明部分:用來對數(shù)據(jù)類型、常數(shù)、變量等進行局部說明。

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

77EDA技術第3章VHDL硬件描述語言

(3)函數(shù)的調用

是用來完成某些數(shù)據(jù)的運算和轉換的。與過程的調用十分類似,所不同的是,函數(shù)的調用將返回一個指定數(shù)據(jù)類型的值,函數(shù)的參數(shù)只能是輸入值。

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

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

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

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYminIS

PORT(

A,

B:INSTD_LOGIC_VECTOR(

7DOWNTO0

);

Y:

OUTSTD_LOGIC_VECTOR(

7DOWNTO0

));

ENDmin;

79EDA技術第3章VHDL硬件描述語言

【例3.5.2】使用函數(shù)定義FUNCTION語句描述求最小數(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技術第3章VHDL硬件描述語言

用來結束子程序的執(zhí)行,無條件跳轉到子程序的結束處。

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

3.

子程序返回語句

該語句為無條件返回,只能用于過程。

格式1:

RETURN;

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

格式2:

RETURN表達式

81EDA技術第3章VHDL硬件描述語言

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

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

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

82EDA技術

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

第3章VHDL硬件描述語言

3.6.1VHDL庫

1.常用的庫

VHDL語言中常用的五種庫:

IEEE庫②

STD庫③

WORK庫④

VITAL庫⑤

用戶自定義庫

——VHDL語言設計中最常見的庫。

——VHDL語言的標準庫。

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

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

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

83EDA技術第3章VHDL硬件描述語言

84EDA技術第3章VHDL硬件描述語言

2.資源庫和設計庫

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

●資源庫

●設計庫

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

是一種符合VHDL標準的預定義庫。

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

85EDA技術第3章VHDL硬件描述語言

3.庫的使用

關鍵字:LIBRARY

格式:LIBRARY

庫名稱

庫說明語句:

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

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

86EDA技術第3章VHDL硬件描述語言

3.庫的使用

格式1:USE

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

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

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

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.STD_ULOGIC;

USEIEEE.STD_LOGIC_1164.RISING_EDGE;

87EDA技術第3章VHDL硬件描述語言

3.庫的使用

格式2:USE

庫名.程序包名.ALL;

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

例如:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

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

3.6.2VHDL程序包

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

PACKAGE

程序包IS

程序包首說明

END

程序包名;

PACKAGEBODY

程序包IS

程序包體說明

END

程序包名;

程序包首程序包體89EDA技術

程序包首收集了VHDL設

溫馨提示

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

最新文檔

評論

0/150

提交評論