版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
硬件描述語言VHDL
1.1什么是VHDL(HDL)?
VHDL:
VHSIC(VeryHighSpeedIntegratedCircuit)
Hardware
Description
Language
1概述VHDL設(shè)計(jì)簡述器件或子系統(tǒng)ENTITYportsportsARCHITECTUREProcessProcessSequentialProcessCombinationalProcesscomponent2選1選擇器的VHDL描述:n
VHDL語言是由保留字編織起來的n
該語言,對絕大多數(shù)的部分而言,是大小寫不敏感的n
VHDL語句由一個(gè);結(jié)束n
VHDL是空白不敏感的。便于閱讀n
VHDL中,注釋由“--”開頭到行結(jié)束而結(jié)束n
VHDL模型可以被寫成:–行為的–結(jié)構(gòu)的–混合的1.7VHDL語言的一些基本特點(diǎn)2VHDL程序基本結(jié)構(gòu)基本結(jié)構(gòu)包括:
庫(Library)
程序包(Package)
實(shí)體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)
庫、程序包
實(shí)體(Entity)
結(jié)構(gòu)體
(Architecture)
進(jìn)程或其它并行結(jié)構(gòu)
配置(Configuration)結(jié)構(gòu)單元說明n
VHDL設(shè)計(jì)單元
-庫:用來調(diào)用電路模型所需共享資源數(shù)據(jù)–實(shí)體?用來定義電路模型的外觀圖,亦即器件的符號–構(gòu)造體?用來定義電路模型的功能,亦即器件內(nèi)部電路圖–配置?用來聯(lián)系構(gòu)造體和實(shí)體–包?可以由VHDL電路模型引用的信息的匯集,亦即庫?由包聲明和包體兩個(gè)部分構(gòu)成2.2實(shí)體聲明實(shí)體聲明:定義系統(tǒng)的輸入輸出端口語法:
ENTITY<entity_name>ISGenericDeclarations(類屬表);
PortDeclarations(端口表);END<entity_name>;(1076-1987version)ENDENTITY<entity_name>;(1076-1993version)
1、類屬聲明
類屬聲明:確定實(shí)體或組件中定義的局部常數(shù)。是一種端口界面常數(shù)。常以說明的形式放在實(shí)體或結(jié)構(gòu)體前的說明部分。它的值可由實(shí)體外部提供。
語法:
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輸出型,此端口只能在實(shí)體內(nèi)部對其賦值。
inout
(雙向)輸入輸出型,既可讀也可賦值。
buffer(帶反饋)緩沖型,與out相似,但可讀。Port(
端口名稱{,端口名稱}:端口方式數(shù)據(jù)類型;
…
端口名稱{,端口名稱}:端口方式數(shù)據(jù)類型);例:
一個(gè)a,b輸入,q輸出的二與門的實(shí)體定義:
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)鍵點(diǎn)–相當(dāng)于:電路–描述模型的功能和時(shí)序–必須與一個(gè)ENTITY相關(guān)聯(lián)–ENTITY可以有多個(gè)結(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版)例:一個(gè)完整描述(3bit計(jì)數(shù)器)
3bit計(jì)數(shù)器的等效描述(out
與
buffer
的區(qū)別):四類語言要素:數(shù)據(jù)對象(DataObject)
數(shù)據(jù)類型(DataType)
操作數(shù)(Operands)
操作符(Operator)3VHDL語言要素?cái)?shù)據(jù)對象三種對象:常量(Constant)
變量(Variable)
信號(Signal)三種對象的物理含義:信號代表物理設(shè)計(jì)中的某一條硬件連接線;變量代表暫存某些值的載體;常量代表數(shù)字電路中的電源、地等常數(shù)。三種對象的特點(diǎn)及說明場合:信號:全局量,用于architecture、package、entitiy。
變量:局部量,用于process、function、procedure。
常量:全局量,可用于上面兩種場合。1、常量聲明常量聲明:對某一個(gè)常量名賦予一個(gè)固定的值。格式:例:constantwidth:integer:=8;
constantx:new_bit:=‘x’;
constant常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;2、變量聲明格式:例:
variablea,b:bit;variablecount:integerrange0to255:=10;注:
a.變量的初值可用于仿真,但綜合時(shí)被忽略。
b.只能在進(jìn)程、子程序中使用。
c.變量賦值的數(shù)據(jù)傳輸是立即發(fā)生,不存在任何延時(shí)。variable變量名:數(shù)據(jù)類型:初始值;3、信號聲明
信號是電子電路內(nèi)部硬件連接的接點(diǎn)。與“端口”概念相似。格式:
例:signala,b:bit;
注:a.綜合時(shí)初值被忽略。
b.可在結(jié)構(gòu)體、實(shí)體、塊中聲明和使用信號,在進(jìn)程和子程序中只能使用信號,不能聲明信號。
c.信號的賦值存在延時(shí)。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是一種“強(qiáng)”數(shù)據(jù)類型語言。1)整數(shù)(integer)
integer表示所有正的和負(fù)的整數(shù)。硬件實(shí)現(xiàn)時(shí),利用32位的位矢量來表示??蓪?shí)現(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ù)或邏輯運(yùn)算。操作符
VHDL操作符的分類:邏輯操作符、關(guān)系操作符加減操作符、一元操作符乘除操作符
**abs雜散*/modrem乘除+-符號+-&加減=/=<<=>>=關(guān)系Notandornandnorxorxnor(1)邏輯運(yùn)算符
名/符號運(yùn)算符類型VHDL
運(yùn)算符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è)計(jì)文件的開頭部分包括這些語句允許對非內(nèi)建的數(shù)據(jù)類型進(jìn)行運(yùn)算運(yù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)硬件實(shí)現(xiàn)的功能不同:信號代表電路單元、功能模塊間的互聯(lián),代表實(shí)際的硬件連線;變量代表電路單元內(nèi)部的操作,代表暫存的臨時(shí)數(shù)據(jù)。4.2if語句
if語句是一種條件語句,按指定的順序執(zhí)行所設(shè)置的一個(gè)或多個(gè)條件的值。
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è)計(jì)具有優(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ù)滿足的所有條件直接選擇多項(xiàng)順序語句中的一項(xiàng)執(zhí)行。格式如下:注:除條件句中所有選擇值能完全覆蓋CASE語句中表達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須用“OTHERS”表示。
case表達(dá)式iswhen選擇值=>順序處理語句;
when選擇值=>順序處理語句;。。。
whenothers=>順序處理語句;
endcase;┇例:用case語句描述四選一電路
5VHDL并行語句(Concurrent)
Architecture并行語句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的,執(zhí)行方式與書寫順序無關(guān)。并行語句內(nèi)部運(yùn)行有兩種方式:并行執(zhí)行方式(如快語句)和順序執(zhí)行方式(如進(jìn)程語句)并行語句并行語句并行語句信號信號信號
常用的并行描述語句有:并行信號賦值語句;進(jìn)程(process)語句;元件例化語句;
5.1進(jìn)程(process)語句
進(jìn)程:表述了一種進(jìn)行過程,描述順序事件,內(nèi)部包含了一個(gè)代表實(shí)際實(shí)體中部分邏輯行為的、獨(dú)立的順序語句描述的進(jìn)程。PROCESS放在結(jié)構(gòu)體中,一個(gè)結(jié)構(gòu)體可有多個(gè)PROCESS并行運(yùn)行。特點(diǎn):
1、進(jìn)程之間的并行性;
2、進(jìn)程內(nèi)部的順序性;
3、進(jìn)程的啟動(dòng);
4、進(jìn)程之間的通信語法:敏感信號表:進(jìn)程內(nèi)要讀取的所有敏感信號(包括端口)的列表。每一個(gè)敏感信號的變化,都將啟動(dòng)進(jìn)程。進(jìn)程中所有輸入信號都要列入敏感表中。
[標(biāo)記:]process[(敏感信號表)]{進(jìn)程聲明項(xiàng)}begin{順序語句}
endprocess[標(biāo)記];敏感信號表的特點(diǎn):1、同步進(jìn)程的敏感信號表中只有時(shí)鐘信號。如:process(clk)beginif(clk’eventandclk=‘1’)then
ifreset=‘1’thendata<=“00”;else
data<=in_data;endif;endif;endprocess;2、異步進(jìn)程敏感信號表中除時(shí)鐘信號外,還有其它信號。例: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并行信號賦值語句包括三種形式:簡單信號賦值;條件信號賦值;選擇信號賦值。特點(diǎn):1、賦值目標(biāo)必須都是信號。
2、每條賦值語句相當(dāng)于一條縮寫的進(jìn)程語句,且語句中的所有輸入信號都被隱性地列入此過程的敏感信號表中。
3、任何輸入信號的變化都將啟動(dòng)相關(guān)并行語句的賦值操作。1、簡單并行信號賦值語句即:信號<=表達(dá)式例:以下兩種描述等價(jià)一個(gè)簡單并行信號賦值語句是一個(gè)進(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語句等價(jià):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語句等價(jià)。
格式:注: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語句等價(jià):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è)計(jì)。用于VHDL的層次化設(shè)計(jì)的上層設(shè)計(jì)。是對上層單元中的元件或模塊進(jìn)行端口定義,用元件例化語句指名所定義的模塊或元件與該單元中其它相連的器件的連接映射關(guān)系。上層中所定義模塊的內(nèi)部功能由對應(yīng)的下層單元實(shí)現(xiàn)。1.元件聲明格式定義:對所調(diào)用的較低層次的實(shí)體模塊(元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年體育賽事贊助合同詳細(xì)條款與權(quán)益分配3篇
- 2025年度跨國公司美金貸款合同
- 二零二五年度水稻種植基地建設(shè)合同
- 2025版離婚協(xié)議書范本:房產(chǎn)買賣合同分割及處理細(xì)則4篇
- 2025年度脫硫石膏復(fù)合材料銷售協(xié)議3篇
- 2025年冰箱洗衣機(jī)節(jié)能補(bǔ)貼項(xiàng)目合作協(xié)議3篇
- 2025年度離婚協(xié)議書:陳飛與劉婷離婚財(cái)產(chǎn)分割及子女撫養(yǎng)費(fèi)協(xié)議4篇
- 二零二五年度老舊小區(qū)消防隱患排查與整改承包合同2篇
- 二零二四云存儲(chǔ)服務(wù)與云原生應(yīng)用部署合同3篇
- 貨物運(yùn)輸協(xié)議
- ICU常見藥物課件
- CNAS實(shí)驗(yàn)室評審不符合項(xiàng)整改報(bào)告
- 農(nóng)民工考勤表(模板)
- 承臺混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計(jì)量基礎(chǔ)知識培訓(xùn)教材201309
- 中考英語 短文填詞、選詞填空練習(xí)
- 一汽集團(tuán)及各合資公司組織架構(gòu)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 初一至初三數(shù)學(xué)全部知識點(diǎn)
- 新課程理念下的班主任工作藝術(shù)
評論
0/150
提交評論