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

下載本文檔

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

文檔簡(jiǎn)介

圖12.1

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

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

VHDL語言的一個(gè)基本設(shè)計(jì)單元,簡(jiǎn)單的可以是一個(gè)與門,復(fù)雜的可以是一個(gè)微處理器或一個(gè)系統(tǒng)。但是,VHDL語言的基本構(gòu)成是一致的,它們都由實(shí)體和構(gòu)造體兩部分組成。圖12.2是作為一個(gè)設(shè)計(jì)單元的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.實(shí)體

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

ENTITY實(shí)體名IS

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

[PORT(端口說明);]

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

為1ns。

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

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

……

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

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

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

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)造體主要用來描述實(shí)體的內(nèi)部邏輯,即描述一個(gè)實(shí)體的功能。構(gòu)造體的一般說明格式為

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

[定義說明];

BEGIN

[語句部分];

END構(gòu)造體名;

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

1.行為描述方式(BehavioralDescriptions)

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

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

為例:LIBRARYIEEE;說明使用IEEE庫

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

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

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

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

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

SIGNALsel:INTEGER;定義信號(hào)sel

BEGIN

WITHselSELECT用選擇信號(hào)代入語句描述電路功能q<=i0WHEN0,例如:當(dāng)ab為00時(shí),sel為0i1WHEN1,此時(shí)輸出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);端口說明,定義輸入和輸出信號(hào)

sel:INSTD_LOGIC_VECTOR(1DOWNTO0);

y:OUTSTD_LOGIC);

ENDmux4;

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

BEGIN

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

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

input(0)

input(3);其余類推

ENDrtl;

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

所謂結(jié)構(gòu)描述,是指描述該設(shè)計(jì)單元的硬件結(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è)計(jì)的各模塊(在這里為u1、u2、u3、u4)的端口聯(lián)系起來,并定義相應(yīng)的信號(hào),以表示所設(shè)計(jì)的各模塊的連接關(guān)系。圖12.3二選一電路12.2.3包集合、庫及配置

1.庫

庫的說明為

LIBRARY庫名;

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

例如:

LIBRARYIEEE

USEIEEE.STD_-LOGIC_1164.ALL;

……

2.包集合

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

USEIEEE.STD_LOGIC_1164.ALL;

3.配置

下面是一個(gè)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ù)對(duì)象、數(shù)據(jù)類型和運(yùn)算操作符

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

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

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

SIGNALenable:BIT∶=′0′;

SIGNALcount:BIT-VECTOR(3DOWNTO0);

2.變量(Variable)

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

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

例如:

VARIABLEx,y:INTEGER;

VARIABLEcount:INTEGERRANGE0TO255∶=10;

3.常數(shù)(Constant)

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

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

例如:

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)浮點(diǎn)類型(floatingtypes):被用于表達(dá)大部分實(shí)數(shù),VHDL規(guī)定其范圍為:-1.0E38~+1.0E38。綜合工具通常不支持浮點(diǎn)類型。

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

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

TYPEcoloris(red,yellow,blue);

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

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

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

例如:

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

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

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

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

……

ENDRECORD;例如:

TYPEbankISRECORD

addr:STD_LOGIC_VECTOR(7DOWNTO0);

ro:INTEGER;

ENDRECORD;12.3.3運(yùn)算操作符

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

12.4仿真和邏輯綜合

12.4.1仿真

1.行為級(jí)仿真

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

2.RTL級(jí)仿真

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

3.門級(jí)電路仿真

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

影響。12.4.2邏輯綜合

1.RTL級(jí)描述

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

2.約束條件

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

3.屬性

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

時(shí)等。

4.工藝庫

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

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

74LS138的3個(gè)二進(jìn)制輸入端為a、b、c,8個(gè)譯碼輸出端為y0~y7。對(duì)輸入端a、b、c的值進(jìn)行譯碼,就可以確定輸出端y0~y7中哪一個(gè)有效(低電平),從而達(dá)到譯碼的目的。源程序如下: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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論