《數(shù)字電子技術(shù) 》課件第12章_第1頁
《數(shù)字電子技術(shù) 》課件第12章_第2頁
《數(shù)字電子技術(shù) 》課件第12章_第3頁
《數(shù)字電子技術(shù) 》課件第12章_第4頁
《數(shù)字電子技術(shù) 》課件第12章_第5頁
已閱讀5頁,還剩54頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

圖12.1

HDL語言設(shè)計系統(tǒng)硬件過程框圖12.2VHDL語言的基本結(jié)構(gòu)

12.2.1VHDL語言設(shè)計的基本單元及其構(gòu)成

VHDL語言的一個基本設(shè)計單元,簡單的可以是一個與門,復(fù)雜的可以是一個微處理器或一個系統(tǒng)。但是,VHDL語言的基本構(gòu)成是一致的,它們都由實體和構(gòu)造體兩部分組成。圖12.2是作為一個設(shè)計單元的VHDL描述。圖12.2二選一電路及其VHDL描述ENTITYmuxIS

GENERIC(m:TIME∶=1ns);

PORT(d0,d1,sel:INBIT;

Q:OUTBIT);

ENDmux;

ARCHITECTUREconnectOFmuxIS

SIGNALtmp:BIT

BEGIN

cale:PROCESS(d0,d1,sel)

VARIABLEtmp1,tmp2,tmp3:BIT;

BEGIN

tmp1∶=doANDsel;

tmp2∶=d1AND(NOTsel);

tmp1∶=tmp1ORtmp2;

tmp<=tmp3;

q<=tmpAFTERm;

ENDPROCESS;

ENDconnect;

1.實體

實體說明主要規(guī)定了設(shè)計單元的輸入和輸出端口或引腳。實體說明的一般格式為

ENTITY實體名IS

[GENERIC(類屬參數(shù)說明);]

[PORT(端口說明);]

END實體名;類屬參數(shù)說明表示設(shè)計單元的默認(rèn)類屬參數(shù)值,如規(guī)定端口的大小、實體的定時特性等。例如上述程序中的GENERIC(m:TIME∶=1ns)就指定了構(gòu)造體內(nèi)m的值

為1ns。

端口說明是對基本設(shè)計實體與外部接口的描述,即對外部引腳信號的名稱、數(shù)據(jù)類型和輸入輸出方向的描述。其一般格式為

PORT(端口名:方向數(shù)據(jù)類型名;

……

端口名:方向數(shù)據(jù)類型名);

端口方向主要有四種:輸入(IN)、輸出(OUT)、緩沖(BUFFER)和雙向(INOUT)。

數(shù)據(jù)類型主要有布爾型(BOOLEAN)、位(BIT)、位矢量(BIT_VECTOR)、整數(shù)(INTEGER)等。有些VHDL程序中,數(shù)據(jù)類型的說明符號有所不同。例如

LIBRARYIEEE

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYmuIS

PORT(d0,d1,sel:INSTD_LOGIC;

Q:OUTSTD_LOGIC);

ENDmu;

該例中,BIT類型用STD_LOGIC說明。

2.構(gòu)造體

構(gòu)造體主要用來描述實體的內(nèi)部邏輯,即描述一個實體的功能。構(gòu)造體的一般說明格式為

ARCHITECTURE構(gòu)造體名OF實體名IS

[定義說明];

BEGIN

[語句部分];

END構(gòu)造體名;

VHDL可用3種描述格式來完成構(gòu)造體,下面將分別介紹。12.2.2構(gòu)造體的描述方式

1.行為描述方式(BehavioralDescriptions)

所謂行為描述,是指描述該設(shè)計單元的功能,即該硬

件能做什么。這種描述方式主要使用函數(shù)、過程和進程語句,以算法形式描述數(shù)據(jù)的變換和傳送。以四選一電路

為例:LIBRARYIEEE;說明使用IEEE庫

USEIEEE.STD_LOGIC_1164.ALL;[JP2]說明使用IEEE庫中“STD_LOGIC_1164”和[JP]

USEIEEE.STD_LOGIC_UNSIGNED.ALL;“STD_LOGIC_UNSIGNED”包集合

ENTITYmux4IS定義實體mux4,說明端口i0,i1,i2,i3,PORT(i0,i1,i2,i3,a,b:INSTD_LOGIC;a,b為輸入,

q:OUTSTD_LOGIC);q為輸出ENDmux4;實體mux4結(jié)束

ARCHITECTUREbehaveOFmux4IS定義構(gòu)造體behave

SIGNALsel:INTEGER;定義信號sel

BEGIN

WITHselSELECT用選擇信號代入語句描述電路功能q<=i0WHEN0,例如:當(dāng)ab為00時,sel為0i1WHEN1,此時輸出q為i0,其余類推

i2WHEN2,

i3WHEN3,

′X′WHENOTHERS;

sel<=0WHENa=′0′ANDb=′0′ELSE

1WHENa=′1′ANDb=′0′ELSE

2WHENa=′0′ANDb=′1′ELSE

3WHENa=′1′ANDb=′1′ELSE

4;

ENDbehave;構(gòu)造體結(jié)束

2.數(shù)據(jù)流RTL描述方式

例如:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYmux4IS

PORT(input:INSTD_LOGIC_VECTOR(3DOWNTO0);端口說明,定義輸入和輸出信號

sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);

ENDmux4;

ARCHITECTURErtlOFmux4IS定義構(gòu)造體rtl

BEGIN

y<=input(0)WHENsel=′00′ELSE用條件信號代入語句描述電路功能,

input(1)WHENsel=′01′ELSE當(dāng)輸入sel為“00”時input(2)WHENsel=′10′ELSE輸出y為輸入信號

input(0)

input(3);其余類推

ENDrtl;

3.結(jié)構(gòu)描述方式

所謂結(jié)構(gòu)描述,是指描述該設(shè)計單元的硬件結(jié)構(gòu),即該硬件是如何構(gòu)成的。結(jié)構(gòu)描述主要使用配置指定語句及元件例化語句描述元件的類型及元件的互連關(guān)系。例如:ENTITYmux2IS

PORT(d0,d1,sel:INBIT;

q:OUTBIT);

ENDmux2;

ARCHITECTUREstructOFmux2IS

COMPONENTand2

PORT(a,b:INBIT;

c:OUTBIT);

ENDCOMPONENT;COMPONENTor2

PORT(a,b:INBIT;

c:OUTBIT);

ENDCOMPONENT;

COMPONENTinv

PORT(a:INBIT;

c:OUTBIT);

ENDCOMPONENT;SIGNALaa,ab,nsel:BIT;

BEGIN

u1:invPORTMAP(sel,nsel);

u2:and2PORTMAP(nsel,d1,ab);

u3:and2PORTMAP(d0,sel,aa);

u4:or2PORTMAP(aa,ab,q);

ENDstruct;在圖12.3所示的二選一電路的構(gòu)造體中,用COMPONENT語句指明了該電路中所使用的已生成的

模塊(在這里是AND、OR、NOT門電路)供本構(gòu)造體調(diào)用。用PORTMAP()語句將生成模塊的端口與所設(shè)計的各模塊(在這里為u1、u2、u3、u4)的端口聯(lián)系起來,并定義相應(yīng)的信號,以表示所設(shè)計的各模塊的連接關(guān)系。圖12.3二選一電路12.2.3包集合、庫及配置

1.庫

庫的說明為

LIBRARY庫名;

當(dāng)前VHDL的庫主要歸納為5類:IEEE庫、STD庫、ASIC庫、用戶定義的庫和WORK庫。一般地,在使用庫時首先要用兩條語句進行說明。

例如:

LIBRARYIEEE

USEIEEE.STD_-LOGIC_1164.ALL;

……

2.包集合

包集合用來羅列VHDL中要用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句和函數(shù)定義等,它是一個可編譯的設(shè)計單元,也是庫結(jié)構(gòu)中的一個層次。要使用包集合可以使用USE語句,例如:

USEIEEE.STD_LOGIC_1164.ALL;

3.配置

下面是一個RS觸發(fā)器的例子:

ENTITYrsffIS

PORT(set,rest:INbit;

q,qb:BUFFERbit);

ENDrsff;

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

COMPONENTNAND2

PORT(a,b:INbit);

ENDCOMPONENT;

BIGIN

u1:NAND2PORTMAP(a=>set,b=>qb,c=>q);

u2:NAND2PORTMAP(a=>reset,b=>q,c=>qb);

ENDnetlist;

ARCHITECTUREbehaveOFrsffIS行為描述

BEGIN

q<=NOT(qbANDset);

q<=NOT(qANDreset);

ENDbehave;如果選用構(gòu)造體netlist,則用:

CONFIGURATIONrsffconlOFrsffIS

FORnetlist

ENDFOR;

ENDrsffconl;如果選用構(gòu)造體behave,則用:

CONFIGURATIONrsffconlOFrsffIS

FORbehave

ENDFOR;

ENDrsffconl;12.3數(shù)據(jù)對象、數(shù)據(jù)類型和運算操作符

12.3.1數(shù)據(jù)對象

作為連線,信號可以是邏輯門的輸入或輸出,也可以表示存儲元件的狀態(tài)。信號通常在構(gòu)造體、包集合和實體中說明。信號說明的格式為

SIGNAL信號名:數(shù)據(jù)類型約束條件∶=表達式;例如:

SIGNALenable:BIT∶=′0′;

SIGNALcount:BIT-VECTOR(3DOWNTO0);

2.變量(Variable)

變量只能在進程語句、函數(shù)語句和過程語句中使用,它是一個局部量。它和信號是不同的:分配給信號的值必須經(jīng)過一段時間的延遲后才能成為當(dāng)前值,而分配給變量的值則立刻成為當(dāng)前值;信號和硬件的“連線”相對應(yīng),而變量不能表示連線和存儲元件;信號賦值采用“<=”符號,變量的賦值和初始化的符號為“∶=”。變量的說明格式為

VARIABLE變量名:數(shù)據(jù)類型約束條件∶=表達式;

例如:

VARIABLEx,y:INTEGER;

VARIABLEcount:INTEGERRANGE0TO255∶=10;

3.常數(shù)(Constant)

常數(shù)是一個固定的值。所謂常數(shù)說明,就是對某一常數(shù)名賦予一個固定的值。通常賦值在程序開始前進行,該值的數(shù)據(jù)類型則在說明語句中指出,常數(shù)一旦被賦值就不能再改變。數(shù)說明的一般格式如下:

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

例如:

CONSTANTVCC:REL∶=5.0;

CONSTANTDALY:TIME∶=100ns;12.3.2數(shù)據(jù)類型

1.標(biāo)量類型(Scalartypes)

(1)整數(shù)類型(integertypes):

嚴(yán)格地和算術(shù)整數(shù)相似,能夠處理VHDL的軟件必須支持-(231-1)~+(231-1),即-2147483647~+

2147483647范圍內(nèi)的整數(shù)。例如:

VARIABLEa:INTEGERrange-63~+63;(2)浮點類型(floatingtypes):被用于表達大部分實數(shù),VHDL規(guī)定其范圍為:-1.0E38~+1.0E38。綜合工具通常不支持浮點類型。

(3)物理類型(physicaltypes):對于綜合意義不大,主要用于仿真。(4)枚舉類型(enumerationtypes):是一種非常重要的數(shù)據(jù)類型,用于建立抽象的模型。設(shè)計者用枚舉類型嚴(yán)格地表達一個特定操作所需要的值。枚舉類型的所有值由用戶定義,這些值為標(biāo)識符或某個字母的字面值。標(biāo)識符像一個名字,例如,abc、black、clock等。文字字符的字面值是用引號括起來的字符,例如:′X′、′1′等。舉例如下:

TYPETwo-level-logicis(′0′,′1′);

TYPEcoloris(red,yellow,blue);

2.復(fù)合類型(Compositetypes)

(1)數(shù)組類型(arraytypes):一個數(shù)組類型的對象由相同類型的多個元素組成,其定義如下:

TYPE數(shù)據(jù)類型名ISARRAY范圍OF原數(shù)據(jù)類型名;

例如:

TYPEbit_vectorISARRAY(0TO6)OFSTD_LOGIC;(2)記錄類型(recordtypes):一個記錄類型的數(shù)據(jù)對象可具有不同類型的多個元素,其定義如下:

TYPE數(shù)據(jù)類型名ISRECORD

元素名:數(shù)據(jù)類型名;

元素名:數(shù)據(jù)類型名;

……

ENDRECORD;例如:

TYPEbankISRECORD

addr:STD_LOGIC_VECTOR(7DOWNTO0);

ro:INTEGER;

ENDRECORD;12.3.3運算操作符

VHDL定義了豐富的運算操作符,主要有算術(shù)運算符、關(guān)系運算符、邏輯運算符、賦值運算符、關(guān)聯(lián)運算符和其他運算符,如表12.1所示。

12.4仿真和邏輯綜合

12.4.1仿真

1.行為級仿真

行為級仿真的目的是驗證系統(tǒng)的數(shù)學(xué)模型和行為是否正確,因而它對系統(tǒng)的抽象程度較高。對行為級仿真程序模塊的書寫沒有太多限制,凡是VHDL語言中的語句和數(shù)據(jù)類型都可以在程序中使用。

2.RTL級仿真

通過行為級仿真以后,下一步就是將行為級描述的程序改寫為RTL描述的程序模塊。RTL仿真是為了使被仿真模塊符合邏輯工具的要求,以便能生成門級邏輯電路。

3.門級電路仿真

RTL程序模塊經(jīng)邏輯綜合后就生成了門級電路,在門級電路的仿真中,主要考慮門的延時對系統(tǒng)工作情況的

影響。12.4.2邏輯綜合

1.RTL級描述

RTL級描述規(guī)定了設(shè)計中采用的各種寄存器的形式,并在寄存器之間插入組合邏輯。組合邏輯或者由邏輯方程、順序控制語言和子程序描述,或者通過并行語句由寄存器之間的云圖文件來表示。

2.約束條件

在邏輯綜合過程中,出于優(yōu)化輸出和工藝映射的需要,一定要有相應(yīng)的約束條件,以實現(xiàn)設(shè)計結(jié)構(gòu)的控制。也就是說,采用不同的約束條件如面積、延時、功耗和可測性等,對于同一個系統(tǒng),其實現(xiàn)的結(jié)構(gòu)是不同的。

3.屬性

屬性用于規(guī)定設(shè)計進行的環(huán)境,例如規(guī)定輸出器件必須驅(qū)動的負(fù)載數(shù)、驅(qū)動器件的驅(qū)動能力、輸入信號的定

時等。

4.工藝庫

在根據(jù)約束條件建立網(wǎng)表時,工藝庫含有使綜合進程能作出正確選擇的全部信息。它不僅含有ASIC單元的邏輯功能,還有該單元的面積、輸入到輸出的定時關(guān)系、輸出的扇出限制和該單元所需的定時檢查。

12.5VHDL基本邏輯電路設(shè)計舉例

74LS138的3個二進制輸入端為a、b、c,8個譯碼輸出端為y0~y7。對輸入端a、b、c的值進行譯碼,就可以確定輸出端y0~y7中哪一個有效(低電平),從而達到譯碼的目的。源程序如下:LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYdecoder_3_to_8IS

PORT(a,b,c,g1,g2a,g2b:IN

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論