![VHDL(電子科技大學(xué))_第1頁](http://file4.renrendoc.com/view/9e7015dec425b17922a72096ef7c4631/9e7015dec425b17922a72096ef7c46311.gif)
![VHDL(電子科技大學(xué))_第2頁](http://file4.renrendoc.com/view/9e7015dec425b17922a72096ef7c4631/9e7015dec425b17922a72096ef7c46312.gif)
![VHDL(電子科技大學(xué))_第3頁](http://file4.renrendoc.com/view/9e7015dec425b17922a72096ef7c4631/9e7015dec425b17922a72096ef7c46313.gif)
![VHDL(電子科技大學(xué))_第4頁](http://file4.renrendoc.com/view/9e7015dec425b17922a72096ef7c4631/9e7015dec425b17922a72096ef7c46314.gif)
![VHDL(電子科技大學(xué))_第5頁](http://file4.renrendoc.com/view/9e7015dec425b17922a72096ef7c4631/9e7015dec425b17922a72096ef7c46315.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
硬件描述語言VHDL
1.1什么是VHDL(HDL)?
VHDL:
VHSIC(VeryHighSpeedIntegratedCircuit)
Hardware
Description
Language
1概述VHDL設(shè)計簡述器件或子系統(tǒng)ENTITYportsportsARCHITECTUREProcessProcessSequentialProcessCombinationalProcesscomponent2選1選擇器的VHDL描述:n
VHDL語言是由保留字編織起來的n
該語言,對絕大多數(shù)的部分而言,是大小寫不敏感的n
VHDL語句由一個;結(jié)束n
VHDL是空白不敏感的。便于閱讀n
VHDL中,注釋由“--”開頭到行結(jié)束而結(jié)束n
VHDL模型可以被寫成:–行為的–結(jié)構(gòu)的–混合的1.7VHDL語言的一些基本特點2VHDL程序基本結(jié)構(gòu)基本結(jié)構(gòu)包括:
庫(Library)
程序包(Package)
實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)
庫、程序包
實體(Entity)
結(jié)構(gòu)體
(Architecture)
進(jìn)程或其它并行結(jié)構(gòu)
配置(Configuration)結(jié)構(gòu)單元說明n
VHDL設(shè)計單元
-庫:用來調(diào)用電路模型所需共享資源數(shù)據(jù)–實體?用來定義電路模型的外觀圖,亦即器件的符號–構(gòu)造體?用來定義電路模型的功能,亦即器件內(nèi)部電路圖–配置?用來聯(lián)系構(gòu)造體和實體–包?可以由VHDL電路模型引用的信息的匯集,亦即庫?由包聲明和包體兩個部分構(gòu)成2.2實體聲明實體聲明:定義系統(tǒng)的輸入輸出端口語法:
ENTITY<entity_name>ISGenericDeclarations(類屬表);
PortDeclarations(端口表);END<entity_name>;(1076-1987version)ENDENTITY<entity_name>;(1076-1993version)
1、類屬聲明
類屬聲明:確定實體或組件中定義的局部常數(shù)。是一種端口界面常數(shù)。常以說明的形式放在實體或結(jié)構(gòu)體前的說明部分。它的值可由實體外部提供。
語法:
Generic(常數(shù)名稱:數(shù)據(jù)類型[:=缺省值]{;常數(shù)名稱:數(shù)據(jù)類型[:=缺省值]}};例:
entitymckisgeneric(width:integer:=16);port(add_bus:inbit_vector(width-1downto0);equal:outboolean);
endmck;2、端口聲明端口聲明:確定系統(tǒng)輸入輸出端口的名稱和類型。語法:其中,端口方式:
in輸入型,此端口為只讀型。
out輸出型,此端口只能在實體內(nèi)部對其賦值。
inout
(雙向)輸入輸出型,既可讀也可賦值。
buffer(帶反饋)緩沖型,與out相似,但可讀。Port(
端口名稱{,端口名稱}:端口方式數(shù)據(jù)類型;
…
端口名稱{,端口名稱}:端口方式數(shù)據(jù)類型);例:
一個a,b輸入,q輸出的二與門的實體定義:
ENTITYand2IS
PORT(a,b:INstd_logic;
q:OUTstd_logic);
ENDand2;2.3結(jié)構(gòu)體作用:定義系統(tǒng)(或模塊)的行為、元件及內(nèi)部的連接關(guān)系,即描述其功能。
3種描述方式:行為描述:數(shù)據(jù)流描述:結(jié)構(gòu)描述:說明n結(jié)構(gòu)體的關(guān)鍵點–相當(dāng)于:電路–描述模型的功能和時序–必須與一個ENTITY相關(guān)聯(lián)–ENTITY可以有多個結(jié)構(gòu)體結(jié)構(gòu)體聲明格式ARCHITECTURE<結(jié)構(gòu)體名>
OF<entity名>IS--構(gòu)造體聲明段(所列并非全部)signaltemp:integer:=1; --信號聲明constantload:boolean
:=true; --常數(shù)聲明typestatesis(S1,S2,S3,S4); --類型聲明--元件聲明--子類型聲明,等等BEGIN進(jìn)程語句并行信號賦值元件例示語句END<構(gòu)造體名>
;(1076-1987版)ENDARCHITECTURE<構(gòu)造體_標(biāo)識符>;(1076-1993版)例:一個完整描述(3bit計數(shù)器)
3bit計數(shù)器的等效描述(out
與
buffer
的區(qū)別):四類語言要素:數(shù)據(jù)對象(DataObject)
數(shù)據(jù)類型(DataType)
操作數(shù)(Operands)
操作符(Operator)3VHDL語言要素數(shù)據(jù)對象三種對象:常量(Constant)
變量(Variable)
信號(Signal)三種對象的物理含義:信號代表物理設(shè)計中的某一條硬件連接線;變量代表暫存某些值的載體;常量代表數(shù)字電路中的電源、地等常數(shù)。三種對象的特點及說明場合:信號:全局量,用于architecture、package、entitiy。
變量:局部量,用于process、function、procedure。
常量:全局量,可用于上面兩種場合。1、常量聲明常量聲明:對某一個常量名賦予一個固定的值。格式:例:constantwidth:integer:=8;
constantx:new_bit:=‘x’;
constant常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;2、變量聲明格式:例:
variablea,b:bit;variablecount:integerrange0to255:=10;注:
a.變量的初值可用于仿真,但綜合時被忽略。
b.只能在進(jìn)程、子程序中使用。
c.變量賦值的數(shù)據(jù)傳輸是立即發(fā)生,不存在任何延時。variable變量名:數(shù)據(jù)類型:初始值;3、信號聲明
信號是電子電路內(nèi)部硬件連接的接點。與“端口”概念相似。格式:
例:signala,b:bit;
注:a.綜合時初值被忽略。
b.可在結(jié)構(gòu)體、實體、塊中聲明和使用信號,在進(jìn)程和子程序中只能使用信號,不能聲明信號。
c.信號的賦值存在延時。signal信號名:數(shù)據(jù)類型:初始值;例:信號與變量的使用Entityexisport(…..);endex;architecturearch_exofexissignala,b:std_logic;beginprocess(a,b)variablec,d:std_logic;beginc:=a+b;d:=a-b;……endprocess;endarch_ex;3VHDL數(shù)據(jù)類型
VHDL是一種“強”數(shù)據(jù)類型語言。1)整數(shù)(integer)
integer表示所有正的和負(fù)的整數(shù)。硬件實現(xiàn)時,利用32位的位矢量來表示??蓪崿F(xiàn)的整數(shù)范圍為:-(231-1)to(231-1)2)std_logic
類型由ieee
庫中的std_logic_1164程序包定義,為九值邏輯系統(tǒng),如下:(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)3)std_logic_vector
類型由std_logic
構(gòu)成的數(shù)組。
4VHDL中的表達(dá)式
表達(dá)式:由操作符和操作數(shù)構(gòu)成,完成算術(shù)或邏輯運算。操作符
VHDL操作符的分類:邏輯操作符、關(guān)系操作符加減操作符、一元操作符乘除操作符
**abs雜散*/modrem乘除+-符號+-&加減=/=<<=>>=關(guān)系Notandornandnorxorxnor(1)邏輯運算符
名/符號運算符類型VHDL
運算符ENTITYoverloadISENDoverload;ARCHITECTUREexampleOFoverloadISBEGIN adder_body:PROCESS(a,b) BEGIN
ENDPROCESSadder_body;ENDexample;LIBRARYieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;PORT(a:INSTD_LOGIC_VECTOR(3downto0); b:INSTD_LOGIC_VECTOR(3downto0); sum:OUTSTD_LOGIC_VECTOR(4downto0));
sum<=a+b;在設(shè)計文件的開頭部分包括這些語句允許對非內(nèi)建的數(shù)據(jù)類型進(jìn)行運算運算符重載的使用4VHDL的常用語句VHDL語句主要分為兩大類:順序(Sequential)描述語句并行(Concurrent)描述語句4.1VHDL順序語句順序語句:語句的執(zhí)行順序與書寫順序一致,只能出現(xiàn)在進(jìn)程與子程序中。常用的順序描述語句:賦值語句;if語句;case語句;4.1賦值語句賦值語句所表達(dá)的數(shù)據(jù)對象是:信號和變量語法格式變量:=表達(dá)式;--變量賦值信號<=表達(dá)式;--信號賦值要求:表達(dá)式的值必須與對象的類型、寬度一致。例:一位賦值temp(7)<=‘1’;ortemp(7):=‘1’;
位片賦值temp(7downto4)<=“1010”;
一位:單引號
(‘)
多位:雙引號
(“)變量賦值與信號賦值的差異:1)賦值方式的不同:變量:=表達(dá)式;信號<=表達(dá)式;2)硬件實現(xiàn)的功能不同:信號代表電路單元、功能模塊間的互聯(lián),代表實際的硬件連線;變量代表電路單元內(nèi)部的操作,代表暫存的臨時數(shù)據(jù)。4.2if語句
if語句是一種條件語句,按指定的順序執(zhí)行所設(shè)置的一個或多個條件的值。
1、if語句的門閂控制
if條件then
順序處理語句;endif;例:if(ena=‘1’)thenq<=d;
endif;綜合后生成鎖存器(latch)例:D觸發(fā)器:2、if語句的二選擇控制
格式:
用條件來選擇兩條不同程序執(zhí)行的路徑。if條件then
順序處理語句;else
順序處理語句;endif;此描述的典型電路是二選一電路:
architecturertlofmux2isbeginprocess(a,b,sel)beginif(sel=‘1’)theny<=a;elsey<=b;endif;endprocess;endrtl;3、if語句的多選擇控制
if語句的多選擇控制又稱為if語句的嵌套。格式:
if條件then
順序處理語句;elsif
條件then
順序處理語句;┇elsif
條件then
順序處理語句;else
順序處理語句;endif;典型電路是多選一電路。如四選一電路:
if_then_elsif
語句中隱含了優(yōu)先級別的判斷,最先出現(xiàn)的條件優(yōu)先級最高,可用于設(shè)計具有優(yōu)先級的電路。如8-3優(yōu)先級編碼器。
libraryieee;useieee.std_logic_1164.all;entitycoderis
port(input:instd_logic_vector(7downto0);
output:outstd_logic_vector(2downto0));endcoder;
architectureartofcoderisbeginprocess(input)beginifinput(7)=‘0’thenoutput<=“000”;
elsifinput(6)=‘0’thenoutput<=“001”;
elsifinput(5)=‘0’thenoutput<=“010”;
elsifinput(4)=‘0’thenoutput<=“011”;
elsifinput(3)=‘0’thenoutput<=“100”;
elsifinput(2)=‘0’thenoutput<=“101”;
elsifinput(1)=‘0’thenoutput<=“110”’;elseoutput<=“111”;endif;endprocess;endart;4.3case語句
case語句根據(jù)滿足的所有條件直接選擇多項順序語句中的一項執(zhí)行。格式如下:注:除條件句中所有選擇值能完全覆蓋CASE語句中表達(dá)式的取值,否則最末一個條件句中的選擇必須用“OTHERS”表示。
case表達(dá)式iswhen選擇值=>順序處理語句;
when選擇值=>順序處理語句;。。。
whenothers=>順序處理語句;
endcase;┇例:用case語句描述四選一電路
5VHDL并行語句(Concurrent)
Architecture并行語句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的,執(zhí)行方式與書寫順序無關(guān)。并行語句內(nèi)部運行有兩種方式:并行執(zhí)行方式(如快語句)和順序執(zhí)行方式(如進(jìn)程語句)并行語句并行語句并行語句信號信號信號
常用的并行描述語句有:并行信號賦值語句;進(jìn)程(process)語句;元件例化語句;
5.1進(jìn)程(process)語句
進(jìn)程:表述了一種進(jìn)行過程,描述順序事件,內(nèi)部包含了一個代表實際實體中部分邏輯行為的、獨立的順序語句描述的進(jìn)程。PROCESS放在結(jié)構(gòu)體中,一個結(jié)構(gòu)體可有多個PROCESS并行運行。特點:
1、進(jìn)程之間的并行性;
2、進(jìn)程內(nèi)部的順序性;
3、進(jìn)程的啟動;
4、進(jìn)程之間的通信語法:敏感信號表:進(jìn)程內(nèi)要讀取的所有敏感信號(包括端口)的列表。每一個敏感信號的變化,都將啟動進(jìn)程。進(jìn)程中所有輸入信號都要列入敏感表中。
[標(biāo)記:]process[(敏感信號表)]{進(jìn)程聲明項}begin{順序語句}
endprocess[標(biāo)記];敏感信號表的特點:1、同步進(jìn)程的敏感信號表中只有時鐘信號。如:process(clk)beginif(clk’eventandclk=‘1’)then
ifreset=‘1’thendata<=“00”;else
data<=in_data;endif;endif;endprocess;2、異步進(jìn)程敏感信號表中除時鐘信號外,還有其它信號。例:process(clk,reset)begin
ifreset=‘1’thendata<=“00”;
elsif(clk’eventandclk=‘1’)thendata<=in_data;endif;endprocess;
3、如果有wait語句,則不允許有敏感信號表。PROCESS(a,b)BEGIN--sequentialstatementsENDPROCESS;PROCESSBEGIN--sequentialstatementsWAITON(a,b);ENDPROCESS;5.2并行信號賦值語句包括三種形式:簡單信號賦值;條件信號賦值;選擇信號賦值。特點:1、賦值目標(biāo)必須都是信號。
2、每條賦值語句相當(dāng)于一條縮寫的進(jìn)程語句,且語句中的所有輸入信號都被隱性地列入此過程的敏感信號表中。
3、任何輸入信號的變化都將啟動相關(guān)并行語句的賦值操作。1、簡單并行信號賦值語句即:信號<=表達(dá)式例:以下兩種描述等價一個簡單并行信號賦值語句是一個進(jìn)程的縮寫。architecturebehavofa_varisbeginoutput<=a(i);endbehav;architecturebehavofa_varisbeginprocess(a,i)beginoutput<=a(i);endprocess;endbehav;等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYsimp
ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDsimp;ARCHITECTURElogicOFsimp
ISSIGNALc:STD_LOGIC;BEGINc<=aandb;y<=c;ENDlogic;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYsimp_prc
ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDsimp_prc;ARCHITECTURElogicOFsimp_prc
ISSIGNALc:STD_LOGIC;BEGINprocess1:PROCESS(a,b)BEGINc<=aandb;ENDPROCESSprocess1;process2:PROCESS(c)BEGINy<=c;ENDPROCESSprocess2;ENDlogic;不等效:LIBRARYieee;USEieee.std_logic_1164.all;ENTITYsimp
ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDsimp;ARCHITECTURElogicOFsimp
ISSIGNALc:STD_LOGIC;BEGINc<=aandb;y<=c;ENDlogic;LIBRARYieee;USEieee.std_logic_1164.all;ENTITYsimp_prc
ISPORT(a,b:INSTD_LOGIC;y:OUTSTD_LOGIC);ENDsimp_prc;ARCHITECTURElogicOFsimp_prc
ISSIGNALc:STD_LOGIC;BEGINPROCESS(a,b)BEGINc<=aandb;y<=c;ENDPROCESS;ENDlogic;2、條件信號賦值語句格式:賦值目標(biāo)<=表達(dá)式1when條件1else
表達(dá)式2when條件2else
表達(dá)式3when條件3else┆
表達(dá)式n;例:用條件信號賦值語句描述四選一電路
entitymux4isport(i0,i1,i2,i3,a,b:instd_logic;q:outstd_logic);endmux4;architecturertlofmux4issignalsel:std_logic_vector(1downto0);begin
sel<=b&a;q<=i0whensel=“00”elsei1whensel=“01”elsei2whensel=“10”elsei3whensel=“11”;endrtl;條件信號賦值語句與進(jìn)程中的多選擇if語句等價:q<=aWHENsela=‘1’ELSEbWHENselb=‘1’ELSEc;PROCESS(sela,selb,a,b,c)BEGINIFsela=‘1’THENq<=a;ELSIFselb=‘1’THENq<=b;ELSEq<=c;ENDIF;ENDPROCESS;3、選擇信號賦值語句
選擇信號賦值語句與進(jìn)程中的
case語句等價。
格式:注:1)不能有重疊的條件分支。
2)最后條件可為others。否則,其它條件必須能包含表達(dá)式的所有可能值。with表達(dá)式select
賦值目標(biāo)<=表達(dá)式1when選擇值1,表達(dá)式2when選擇值2,┆表達(dá)式nwhen選擇值n;例:用選擇信號賦值語句描述四選一電路
entitymux4isport(i0,i1,i2,i3,a,b:instd_logic;q:outstd_logic);endmux4;architecturertlofmux4issignalsel:std_logic_vector(1downto0);begin
sel<=b&a;withselselectq<=i0whensel=“00”,i1whensel=“01”,i2whensel=“10”,i3whensel=“11”,‘X’whenothers;
endrtl;選擇信號賦值語句與進(jìn)程中的case語句等價:PROCESS(sel,a,b,c,d)BEGIN
CASEsel
ISWHEN“00”=>q<=a;WHEN“01”=>q<=b;WHEN“10”=>q<=c;WHENOTHERS=>q<=d;ENDCASE;ENDPROCESS;WITHsel
SELECTq<=aWHEN“00”,bWHEN“01”,cWHEN“10”,dWHENOTHERS;5.3元件聲明與元件例化語句元件聲明與例化語句屬于結(jié)構(gòu)化建模設(shè)計。用于VHDL的層次化設(shè)計的上層設(shè)計。是對上層單元中的元件或模塊進(jìn)行端口定義,用元件例化語句指名所定義的模塊或元件與該單元中其它相連的器件的連接映射關(guān)系。上層中所定義模塊的內(nèi)部功能由對應(yīng)的下層單元實現(xiàn)。1.元件聲明格式定義:對所調(diào)用的較低層次的實體模塊(元
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球桌面排版系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球醫(yī)療設(shè)備安全解決方案行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國一次性甲狀腺穿刺器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球亞歷山大變石激光器行業(yè)調(diào)研及趨勢分析報告
- 2025廣州市農(nóng)村集體經(jīng)濟承包合同管理規(guī)定
- 勞務(wù)派遣合同協(xié)議模板范本
- 2025地區(qū)展柜、物料定作布展合同
- 個人連帶擔(dān)保合同
- 房屋場地租賃合同
- 砌筑勞務(wù)分包合同范本
- 《中國古代寓言》導(dǎo)讀(課件)2023-2024學(xué)年統(tǒng)編版語文三年級下冊
- 五年級上冊計算題大全1000題帶答案
- 工程建設(shè)行業(yè)標(biāo)準(zhǔn)內(nèi)置保溫現(xiàn)澆混凝土復(fù)合剪力墻技術(shù)規(guī)程
- 液壓動力元件-柱塞泵課件講解
- 人教版五年級上冊數(shù)學(xué)脫式計算100題及答案
- 屋面細(xì)石混凝土保護(hù)層施工方案及方法
- 2024年1月山西省高三年級適應(yīng)性調(diào)研測試(一模)理科綜合試卷(含答案)
- 110kv各類型變壓器的計算單
- 5A+Chapter+1+Changes+at+home+課件(新思維小學(xué)英語)
- 安徽省2023年中考數(shù)學(xué)試卷(附答案)
- 護(hù)工(陪護(hù))培訓(xùn)教材(完整版)資料
評論
0/150
提交評論