




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
硬件描述語言VHDL
1.1什么是VHDL(HDL)?
VHDL:
VHSIC(VeryHighSpeedIntegratedCircuit)
Hardware
Description
Language
1概述VHDL設計簡述器件或子系統ENTITYportsportsARCHITECTUREProcessProcessSequentialProcessCombinationalProcesscomponent2選1選擇器的VHDL描述:n
VHDL語言是由保留字編織起來的n
該語言,對絕大多數的部分而言,是大小寫不敏感的n
VHDL語句由一個;結束n
VHDL是空白不敏感的。便于閱讀n
VHDL中,注釋由“--”開頭到行結束而結束n
VHDL模型可以被寫成:–行為的–結構的–混合的1.7VHDL語言的一些基本特點2VHDL程序基本結構基本結構包括:
庫(Library)
程序包(Package)
實體(Entity)結構體(Architecture)配置(Configuration)
庫、程序包
實體(Entity)
結構體
(Architecture)
進程或其它并行結構
配置(Configuration)結構單元說明n
VHDL設計單元
-庫:用來調用電路模型所需共享資源數據–實體?用來定義電路模型的外觀圖,亦即器件的符號–構造體?用來定義電路模型的功能,亦即器件內部電路圖–配置?用來聯系構造體和實體–包?可以由VHDL電路模型引用的信息的匯集,亦即庫?由包聲明和包體兩個部分構成2.2實體聲明實體聲明:定義系統的輸入輸出端口語法:
ENTITY<entity_name>ISGenericDeclarations(類屬表);
PortDeclarations(端口表);END<entity_name>;(1076-1987version)ENDENTITY<entity_name>;(1076-1993version)
1、類屬聲明
類屬聲明:確定實體或組件中定義的局部常數。是一種端口界面常數。常以說明的形式放在實體或結構體前的說明部分。它的值可由實體外部提供。
語法:
Generic(常數名稱:數據類型[:=缺省值]{;常數名稱:數據類型[:=缺省值]}};例:
entitymckisgeneric(width:integer:=16);port(add_bus:inbit_vector(width-1downto0);equal:outboolean);
endmck;2、端口聲明端口聲明:確定系統輸入輸出端口的名稱和類型。語法:其中,端口方式:
in輸入型,此端口為只讀型。
out輸出型,此端口只能在實體內部對其賦值。
inout
(雙向)輸入輸出型,既可讀也可賦值。
buffer(帶反饋)緩沖型,與out相似,但可讀。Port(
端口名稱{,端口名稱}:端口方式數據類型;
…
端口名稱{,端口名稱}:端口方式數據類型);例:
一個a,b輸入,q輸出的二與門的實體定義:
ENTITYand2IS
PORT(a,b:INstd_logic;
q:OUTstd_logic);
ENDand2;2.3結構體作用:定義系統(或模塊)的行為、元件及內部的連接關系,即描述其功能。
3種描述方式:行為描述:數據流描述:結構描述:說明n結構體的關鍵點–相當于:電路–描述模型的功能和時序–必須與一個ENTITY相關聯–ENTITY可以有多個結構體結構體聲明格式ARCHITECTURE<結構體名>
OF<entity名>IS--構造體聲明段(所列并非全部)signaltemp:integer:=1; --信號聲明constantload:boolean
:=true; --常數聲明typestatesis(S1,S2,S3,S4); --類型聲明--元件聲明--子類型聲明,等等BEGIN進程語句并行信號賦值元件例示語句END<構造體名>
;(1076-1987版)ENDARCHITECTURE<構造體_標識符>;(1076-1993版)例:一個完整描述(3bit計數器)
3bit計數器的等效描述(out
與
buffer
的區別):四類語言要素:數據對象(DataObject)
數據類型(DataType)
操作數(Operands)
操作符(Operator)3VHDL語言要素數據對象三種對象:常量(Constant)
變量(Variable)
信號(Signal)三種對象的物理含義:信號代表物理設計中的某一條硬件連接線;變量代表暫存某些值的載體;常量代表數字電路中的電源、地等常數。三種對象的特點及說明場合:信號:全局量,用于architecture、package、entitiy。
變量:局部量,用于process、function、procedure。
常量:全局量,可用于上面兩種場合。1、常量聲明常量聲明:對某一個常量名賦予一個固定的值。格式:例:constantwidth:integer:=8;
constantx:new_bit:=‘x’;
constant常數名:數據類型:=表達式;2、變量聲明格式:例:
variablea,b:bit;variablecount:integerrange0to255:=10;注:
a.變量的初值可用于仿真,但綜合時被忽略。
b.只能在進程、子程序中使用。
c.變量賦值的數據傳輸是立即發生,不存在任何延時。variable變量名:數據類型:初始值;3、信號聲明
信號是電子電路內部硬件連接的接點。與“端口”概念相似。格式:
例:signala,b:bit;
注:a.綜合時初值被忽略。
b.可在結構體、實體、塊中聲明和使用信號,在進程和子程序中只能使用信號,不能聲明信號。
c.信號的賦值存在延時。signal信號名:數據類型:初始值;例:信號與變量的使用Entityexisport(…..);endex;architecturearch_exofexissignala,b:std_logic;beginprocess(a,b)variablec,d:std_logic;beginc:=a+b;d:=a-b;……endprocess;endarch_ex;3VHDL數據類型
VHDL是一種“強”數據類型語言。1)整數(integer)
integer表示所有正的和負的整數。硬件實現時,利用32位的位矢量來表示??蓪崿F的整數范圍為:-(231-1)to(231-1)2)std_logic
類型由ieee
庫中的std_logic_1164程序包定義,為九值邏輯系統,如下:(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)3)std_logic_vector
類型由std_logic
構成的數組。
4VHDL中的表達式
表達式:由操作符和操作數構成,完成算術或邏輯運算。操作符
VHDL操作符的分類:邏輯操作符、關系操作符加減操作符、一元操作符乘除操作符
**abs雜散*/modrem乘除+-符號+-&加減=/=<<=>>=關系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;在設計文件的開頭部分包括這些語句允許對非內建的數據類型進行運算運算符重載的使用4VHDL的常用語句VHDL語句主要分為兩大類:順序(Sequential)描述語句并行(Concurrent)描述語句4.1VHDL順序語句順序語句:語句的執行順序與書寫順序一致,只能出現在進程與子程序中。常用的順序描述語句:賦值語句;if語句;case語句;4.1賦值語句賦值語句所表達的數據對象是:信號和變量語法格式變量:=表達式;--變量賦值信號<=表達式;--信號賦值要求:表達式的值必須與對象的類型、寬度一致。例:一位賦值temp(7)<=‘1’;ortemp(7):=‘1’;
位片賦值temp(7downto4)<=“1010”;
一位:單引號
(‘)
多位:雙引號
(“)變量賦值與信號賦值的差異:1)賦值方式的不同:變量:=表達式;信號<=表達式;2)硬件實現的功能不同:信號代表電路單元、功能模塊間的互聯,代表實際的硬件連線;變量代表電路單元內部的操作,代表暫存的臨時數據。4.2if語句
if語句是一種條件語句,按指定的順序執行所設置的一個或多個條件的值。
1、if語句的門閂控制
if條件then
順序處理語句;endif;例:if(ena=‘1’)thenq<=d;
endif;綜合后生成鎖存器(latch)例:D觸發器:2、if語句的二選擇控制
格式:
用條件來選擇兩條不同程序執行的路徑。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
語句中隱含了優先級別的判斷,最先出現的條件優先級最高,可用于設計具有優先級的電路。如8-3優先級編碼器。
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語句根據滿足的所有條件直接選擇多項順序語句中的一項執行。格式如下:注:除條件句中所有選擇值能完全覆蓋CASE語句中表達式的取值,否則最末一個條件句中的選擇必須用“OTHERS”表示。
case表達式iswhen選擇值=>順序處理語句;
when選擇值=>順序處理語句;。。。
whenothers=>順序處理語句;
endcase;┇例:用case語句描述四選一電路
5VHDL并行語句(Concurrent)
Architecture并行語句在結構體中的執行是同步進行的,執行方式與書寫順序無關。并行語句內部運行有兩種方式:并行執行方式(如快語句)和順序執行方式(如進程語句)并行語句并行語句并行語句信號信號信號
常用的并行描述語句有:并行信號賦值語句;進程(process)語句;元件例化語句;
5.1進程(process)語句
進程:表述了一種進行過程,描述順序事件,內部包含了一個代表實際實體中部分邏輯行為的、獨立的順序語句描述的進程。PROCESS放在結構體中,一個結構體可有多個PROCESS并行運行。特點:
1、進程之間的并行性;
2、進程內部的順序性;
3、進程的啟動;
4、進程之間的通信語法:敏感信號表:進程內要讀取的所有敏感信號(包括端口)的列表。每一個敏感信號的變化,都將啟動進程。進程中所有輸入信號都要列入敏感表中。
[標記:]process[(敏感信號表)]{進程聲明項}begin{順序語句}
endprocess[標記];敏感信號表的特點:1、同步進程的敏感信號表中只有時鐘信號。如:process(clk)beginif(clk’eventandclk=‘1’)then
ifreset=‘1’thendata<=“00”;else
data<=in_data;endif;endif;endprocess;2、異步進程敏感信號表中除時鐘信號外,還有其它信號。例: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、賦值目標必須都是信號。
2、每條賦值語句相當于一條縮寫的進程語句,且語句中的所有輸入信號都被隱性地列入此過程的敏感信號表中。
3、任何輸入信號的變化都將啟動相關并行語句的賦值操作。1、簡單并行信號賦值語句即:信號<=表達式例:以下兩種描述等價一個簡單并行信號賦值語句是一個進程的縮寫。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、條件信號賦值語句格式:賦值目標<=表達式1when條件1else
表達式2when條件2else
表達式3when條件3else┆
表達式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;條件信號賦值語句與進程中的多選擇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、選擇信號賦值語句
選擇信號賦值語句與進程中的
case語句等價。
格式:注:1)不能有重疊的條件分支。
2)最后條件可為others。否則,其它條件必須能包含表達式的所有可能值。with表達式select
賦值目標<=表達式1when選擇值1,表達式2when選擇值2,┆表達式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;選擇信號賦值語句與進程中的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元件聲明與元件例化語句元件聲明與例化語句屬于結構化建模設計。用于VHDL的層次化設計的上層設計。是對上層單元中的元件或模塊進行端口定義,用元件例化語句指名所定義的模塊或元件與該單元中其它相連的器件的連接映射關系。上層中所定義模塊的內部功能由對應的下層單元實現。1.元件聲明格式定義:對所調用的較低層次的實體模塊(元
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 機床考試題目及答案
- 激光光譜分析技術基本原理試題及答案
- 網絡時代的護士資格證復習試題及答案
- 網絡規劃設計師考試的評估與反饋及試題及答案
- 系統架構設計師關鍵技術框架試題及答案
- 醫學人文期末試題及答案
- 激光治療技術的臨床研究試題及答案
- 共青團理論試題及答案
- 系統架構考試深度思考試題及答案
- 藥品安全使用相關法規試題及答案
- 幼兒園《開關門要小心》
- 《運營管理》第2版題庫與參考答案
- 基于PLC的自動配料系統畢業設計論文
- 企業事業單位突發環境事件應急預案備案表范本
- 煙花爆竹工程設計安全規范
- 回旋加速器的五個有關問題
- 四川省中學生學籍卡片
- 夕陽簫鼓-鋼琴譜(共11頁)
- 地面沉降監測技術要求
- 基本建設項目建設成本管理規定解讀
- 金色的魚鉤課本劇
評論
0/150
提交評論