版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
硬件描述語言VHDL設(shè)計內(nèi)容綱要
VHDL語法結(jié)構(gòu)組合邏輯電路設(shè)計時序電路設(shè)計有限狀態(tài)機設(shè)計一、VHDL語法結(jié)構(gòu)1.1VHDL概述1.2VHDL程序結(jié)構(gòu)1.3VHDL語言元素1.4VHDL基本邏輯語句1.5VHDL描述方式41.1VHDL概述
常用硬件描述語言:1、ABEL-HDL2、AHDL3、VHDL4、VerilogHDL41.1VHDL概述
常用硬件描述語言:1、ABEL-HDL2、AHDL3、VHDL4、VerilogHDLIEEE標(biāo)準(zhǔn)VHDL:VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage
1.1什么是VHDL(HDL)?
VHDL發(fā)展
nIEEE工業(yè)標(biāo)準(zhǔn)硬件描述語言
n
用于仿真及綜合的高級描述語言
VHDL發(fā)展
nIEEE工業(yè)標(biāo)準(zhǔn)硬件描述語言
n
用于仿真及綜合的高級描述語言
80年代初由美國國防部在實施超高速集成
電路(VHSIC)項目時開發(fā)的。
1987年IEEE協(xié)會批準(zhǔn)為IEEE工業(yè)標(biāo)準(zhǔn)
稱為IEEE1076-1987。
1993年更新為93標(biāo)準(zhǔn),IEEE1076.
93。
1996年IEEE1076.3成為綜合標(biāo)準(zhǔn)VHDL和VerilogHDLVerilogHDL由Verilog公司開發(fā),1995年成為IEEE標(biāo)準(zhǔn)。優(yōu)點:與C語言風(fēng)格類似,簡單易學(xué)缺點:數(shù)據(jù)類型定義模糊化VHDL優(yōu)點:功能強大、通用性強,語法嚴(yán)謹(jǐn)缺點:語法結(jié)構(gòu)復(fù)雜參考文獻(xiàn)
VHDL在線參考/vhdlref/index.htmlVerilog常見問答/verilogfaq/參考書籍1.成為IEEE標(biāo)準(zhǔn)的硬件描述語言是VHDLAHDLABEL-HDLVerilogABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用電子系統(tǒng)的設(shè)計模塊VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用電子系統(tǒng)設(shè)計的描述等級1、行為級2、RTL級(Registertransferlevel)3、邏輯門級4、版圖級用VHDL可以描述以上四個等級VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用行為級VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用寄存器傳輸級VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用邏輯門級VHDL在電子系統(tǒng)設(shè)計中的應(yīng)用版圖級1.2VHDL程序結(jié)構(gòu)
實體(Entity)
結(jié)構(gòu)體(Architecture)
配置(Configuration)
庫(Library)、程序包(Package)VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序VHDL程序基本結(jié)構(gòu)VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序VHDL程序基本結(jié)構(gòu)實體部分描述設(shè)計系統(tǒng)的外部接口信號(即輸入/輸出信號)VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序VHDL程序基本結(jié)構(gòu)實體部分描述設(shè)計系統(tǒng)的外部接口信號(即輸入/輸出信號)結(jié)構(gòu)體用于描述系統(tǒng)的內(nèi)部電路VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序VHDL程序基本結(jié)構(gòu)實體部分描述設(shè)計系統(tǒng)的外部接口信號(即輸入/輸出信號)結(jié)構(gòu)體用于描述系統(tǒng)的內(nèi)部電路配置用于從庫中選取所需元件安裝到設(shè)計單元的實體中VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序VHDL程序基本結(jié)構(gòu)實體部分描述設(shè)計系統(tǒng)的外部接口信號(即輸入/輸出信號)結(jié)構(gòu)體用于描述系統(tǒng)的內(nèi)部電路配置用于從庫中選取所需元件安裝到設(shè)計單元的實體中包集合存放各設(shè)計模塊能共享的數(shù)據(jù)類型、常數(shù)、子程序等VHDL設(shè)計文件的兩個基本組成部分實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)包集合(Package)庫(Library)一個完整的VHDL程序庫用于存放已編譯的實體、結(jié)構(gòu)體、包集合和配置VHDL程序基本結(jié)構(gòu)實體部分描述設(shè)計系統(tǒng)的外部接口信號(即輸入/輸出信號)結(jié)構(gòu)體用于描述系統(tǒng)的內(nèi)部電路配置用于從庫中選取所需元件安裝到設(shè)計單元的實體中包集合存放各設(shè)計模塊能共享的數(shù)據(jù)類型、常數(shù)、子程序等VHDL程序結(jié)構(gòu)例1一個2輸入的與門的邏輯描述LIBRARYieee; --庫說明語句USEieee.std_logic_1164.ALL;--程序包說明語句ENTITYand2IS PORT(a,b :INSTD_LOGIC; y:OUTSTD_LOGIC);ENDand2;ARCHITECTUREand2xOFand2ISBEGIN y<=aANDb;ENDand2x;實體部分結(jié)構(gòu)體部分19
庫、程序包
實體(Entity)
結(jié)構(gòu)體(Architecture)
進(jìn)程或其它并行結(jié)構(gòu)
配置(Configuration)結(jié)構(gòu)關(guān)系20器件或子系統(tǒng)
ARCHITECTUREProcessProcessENTITYSequentialProcessCombinationalProcessportsportscomponentportsports實體結(jié)構(gòu)VHDL結(jié)構(gòu)要點1、ENTITY(實體)格式:
ENTITY實體名IS[類屬參數(shù)說明][端口說明]EndENTITY實體名;其中端口說明格式為:
PORT(端口名1,端口名N:方向:類型)其中方向有:IN,OUT,INOUT,BUFFER,LINKAGE
22
1、ENTITY(實體)----類屬說明
類屬說明:確定實體或組件中定義的局部常數(shù)。模塊化設(shè)計時多用于不同層次模塊之間信息的傳遞。可從外部改變內(nèi)部電路結(jié)構(gòu)和規(guī)模。類屬說明必須放在端口說明之前。Generic(
常數(shù)名稱:類型[:=缺省值]{常數(shù)名稱:類型[:=缺省值]});23類屬常用于定義:實體端口的大小、設(shè)計實體的物理特性、總線寬度、元件例化的數(shù)量等。
entitymckisgeneric(width:integer:=16);port(add_bus:outstd_logic_vector(width-1downto0));
1、ENTITY(實體)----類屬說明24例:2輸入與門的實體描述
entityand2isgeneric(risewidth:time:=1ns;fallwidth:time:=1ns);port(a1:instd_logic;a0:instd_logic;z0:outstd_loigc);endentityand2;
注:數(shù)據(jù)類型time用于仿真模塊的設(shè)計。綜合器僅支持?jǐn)?shù)據(jù)類型為整數(shù)的類屬值。
1、ENTITY(實體)----類屬說明25端口模式:
in:輸入型,此端口為只讀型。
out:
輸出型,只能在實體內(nèi)部對其賦值。
inout:輸入輸出型,既可讀也可賦值。
buffer:緩沖型,與out相似,但可讀。Port(端口名稱{,端口名稱}:端口模式數(shù)據(jù)類型;
…
端口名稱{,端口名稱}:端口模式數(shù)據(jù)類型);端口聲明:確定輸入、輸出端口的數(shù)目和類型。
1、ENTITY(實體)----端口聲明26out和
buffer的區(qū)別:27
指端口上流動的數(shù)據(jù)的表達(dá)格式。為預(yù)先定義好的數(shù)據(jù)類型。
如:bit、bit_vector、integer、
std_logic、std_logic_vector等。
1、ENTITY(實體)----數(shù)據(jù)類型27
指端口上流動的數(shù)據(jù)的表達(dá)格式。為預(yù)先定義好的數(shù)據(jù)類型。
如:bit、bit_vector、integer、
std_logic、std_logic_vector等。例:entitynand2isentitym81isport(port(a,b:inbit;a:inbit_vector(7downto0);z:outbitsel:inbit_vector(2downto0););b:outbit);endentitynand2;endentitym81;
1、ENTITY(實體)----數(shù)據(jù)類型例子(HalfAdd)
其內(nèi)部結(jié)構(gòu)將由Architecture來描述
1、ENTITY(實體)----例程2.通過外部可以改變電路內(nèi)部結(jié)構(gòu)和規(guī)模的是PORTBUFFERGenericSignalABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕格式:
Arcthitecture
構(gòu)造體名of
實體名is
[定義語句]內(nèi)部信號、常數(shù)、元件、數(shù)據(jù)類型、函數(shù)等的定義
begin[并行處理語句:block/process/function
/
procedure]
end構(gòu)造體名;注:同一實體的結(jié)構(gòu)體不能同名。定義語句中的常數(shù)、信號不能與實體中的端口同名。
2、ARCTHITECTURE(構(gòu)造體)30結(jié)構(gòu)體結(jié)構(gòu)體說明結(jié)構(gòu)體功能描述
常數(shù)說明
數(shù)據(jù)類型說明
信號說明
例化元件說明
子程序說明
塊語句
進(jìn)程語句
信號賦值語句子程序調(diào)用語句
元件例化語句例子(HalfAdd)
2、ARCTHITECTURE(構(gòu)造體)例子(FullAdd)(學(xué)習(xí)如何調(diào)用現(xiàn)有模塊)
2、ARCTHITECTURE(構(gòu)造體)實例(FullAdd)-entity
2、ARCTHITECTURE(構(gòu)造體)實例(FullAdd)-architecture
2、ARCTHITECTURE(構(gòu)造體)36實體與結(jié)構(gòu)體的關(guān)系設(shè)計實體結(jié)構(gòu)體1結(jié)構(gòu)體2結(jié)構(gòu)體3結(jié)構(gòu)體n。。。VHDL中的設(shè)計單元VHDL中的設(shè)計單元(可以獨立編譯)3、Library庫STD庫--VHDL的標(biāo)準(zhǔn)庫IEEE庫--VHDL的標(biāo)準(zhǔn)庫的擴展面向ASIC的庫--不同的工藝不同公司自定義的庫普通用戶自己的庫庫:數(shù)據(jù)的集合。內(nèi)含各類包定義、實體、構(gòu)造體等用戶自己的庫當(dāng)您的VHDL文件被編譯后,編譯的結(jié)果儲存在特定的目錄下,這個目錄的邏輯名稱即Library,此目錄下的內(nèi)容亦即是這個Library的內(nèi)容。3、Library庫40VHDL庫可分為5種:
1)IEEE庫定義了四個常用的程序包:
?
std_logic_1164(std_logictypes&relatedfunctions)
?
std_logic_arith(arithmeticfunctions)
3、Library庫—庫的種類40VHDL庫可分為5種:
1)IEEE庫定義了四個常用的程序包:
?
std_logic_1164(std_logictypes&relatedfunctions)
?
std_logic_arith(arithmeticfunctions)
?
std_logic_signed(signedarithmetic
3、Library庫—庫的種類40VHDL庫可分為5種:
1)IEEE庫定義了四個常用的程序包:
?
std_logic_1164(std_logictypes&relatedfunctions)
?
std_logic_arith(arithmeticfunctions)
?
std_logic_signed(signedarithmeticfunctions)
3、Library庫—庫的種類40VHDL庫可分為5種:
1)IEEE庫定義了四個常用的程序包:
?
std_logic_1164(std_logictypes&relatedfunctions)
?
std_logic_arith(arithmeticfunctions)
?
std_logic_signed(signedarithmeticfunctions)
?
std_logic_unsigned(unsigned
3、Library庫—庫的種類40VHDL庫可分為5種:
1)IEEE庫定義了四個常用的程序包:
?
std_logic_1164(std_logictypes&relatedfunctions)
?
std_logic_arith(arithmeticfunctions)
?
std_logic_signed(signedarithmeticfunctions)
?
std_logic_unsigned(unsignedarithmeticfunctions)3、Library庫—庫的種類41TypeSTD_LOGIC:
9logicvaluesystem(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)?‘W’,‘L’,‘H”weakvalues(NotsupportedbySynthesis)?‘X’-(not‘x’)usedforunknown?‘Z’-(not‘z’)usedfortri-state?‘-’Don’tCare
3、Library庫—庫的種類42
2)STD庫(默認(rèn)庫)庫中程序包為:standard,定義最基本的數(shù)據(jù)類型:
Bit,bit_vector,Boolean,
Integer,Real,andTime
注:TypeBit
2logicvaluesystem(‘0’,‘1’)
3、Library庫—庫的種類42
2)STD庫(默認(rèn)庫)庫中程序包為:standard,定義最基本的數(shù)據(jù)類型:
Bit,bit_vector,Boolean,
Integer,Real,andTime
注:TypeBit
2logicvaluesystem(‘0’,‘1’)
3)面向ASIC的庫
4)WORK庫(默認(rèn)庫)
5)用戶定義庫3、Library庫—庫的種類43程序包的使用有兩種常用格式:
例:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.conv_integer;
library庫名;
use庫名.程序包名.項目名
use庫名.程序包名.All;3、Library庫—庫的使用442選1選擇器4、Package包46程序包:已定義的常數(shù)、數(shù)據(jù)類型、元件調(diào)用說明、子程序的一個集合。目的:方便公共信息、資源的訪問和共享。庫:多個程序包構(gòu)成庫。
程序包與庫關(guān)系47程序包說明的內(nèi)容常量說明;
VHDL數(shù)據(jù)類型說明;元件說明;子程序說明;程序包的結(jié)構(gòu)包括程序包說明(包首)程序包主體(包體)4、Package包--結(jié)構(gòu)48包聲明項可由以下語句組成:
use語句(用來包括其它程序包);類型說明;子類型說明;常量說明;信號說明;子程序說明;元件說明。
package程序包名is{包說明項}
end程序包名;1)程序包說明(包首)語法:4、Package包--結(jié)構(gòu)49例:程序包說明50包體說明項可含:
use語句;子程序說明;子程序主體;類型說明;子類型說明;常量說明。
packagebody程序包名is{包體說明項}
end程序包名;2)程序包包體程序包的內(nèi)容:子程序的實現(xiàn)算法。包體語法:4、Package包--結(jié)構(gòu)51packagesevenissubtypesegmentsisbit_vector(0to6);typebcdisrange0to9;endseven;librarywork;usework.seven.all;entitydecoderisport(input:inbcd;drive:outsegments);enddecoder;architectureartofdecoderisbegin52withinputselectdrive<=B“1111110”when0,B“0110000”when1,B“1101101”when2,B“1111001”when3,B“0110011”when4,B“1011011”when5,B“1011111”when6,B“1110000”when7,B“1111111”when8,B“1111011”when9,B“0000000”whenothers;endarchitectureart;abcdefg10mA38124567910edcdpbafg數(shù)碼管1234567891010mAedcdpbafg共陽極共陰極abcdefgdp156102347893.若7段數(shù)碼管的編碼順序為gfedcba,共陽極數(shù)碼管要顯示數(shù)字“3”的編碼是0101010011011001100001010101ABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕535、Configuration配置設(shè)計實體結(jié)構(gòu)體1結(jié)構(gòu)體2結(jié)構(gòu)體3結(jié)構(gòu)體n。。。一個設(shè)計實體的多種實現(xiàn)方式配置:從某個實體的多種結(jié)構(gòu)體描述方式中選擇特定的一個。54configuration配置名of實體名isfor選配結(jié)構(gòu)體名
endfor;end配置名;5、Configuration配置55libraryieee;useieee.std_logic_1164.all;entitynandisport(a:instd_logic;b:instd_logic;c:outstd_logic);endentitynand;architectureart1ofnandisbeginc<=not(aandb);endarchitectureart1;例:一個與非門不同實現(xiàn)方式的配置如下:
56architectureart2ofnandisbeginc<=‘1’when(a=‘0’)and(b=‘0’)else‘1’when(a=‘0’)and(b=‘1’)else‘1’when(a=‘1’)and(b=‘0’)else‘0’when(a=‘1’)and(b=‘1’)else‘0’;endarchitectureart2;57configurationfirstofnandisforart1;endfor;endfirst;configurationsecondofnandisforart2endfor;endsecond;5、Configuration配置VHDL中的結(jié)構(gòu)關(guān)系1.3VHDL語言元素1、VHDL數(shù)據(jù)對象2、VHDL數(shù)據(jù)類型3、VHDL操作符1.3.1VHDL數(shù)據(jù)對象1、Constant(常量)在程序中不可以被賦值
2、Variable(變量)在程序中可以被賦值(用“:=”),賦值后立即變化為新值。3、Signal(信號)在程序中可以被賦值(用“<=”),但不立即更新,當(dāng)進(jìn)程掛起后,才開始更新。4、File(文件)在程序中實現(xiàn)對文件的寫入和讀出操作。
VHDL中的對象使用
variable
x,y:integer;--定義了整數(shù)型的變量對象x,y
constantVcc:real;--定義了實數(shù)型的常量對象Vcc
signalclk,reset:bit;--定義了位類型的信號對象clk,reset1.3.1VHDL數(shù)據(jù)對象變量與信號區(qū)別注意1、variable只能定義在process和subprogram(包括function和procedure)中,不可定以在其外部。
變量與信號區(qū)別注意1、variable只能定義在process和subprogram(包括function和procedure)中,不可定以在其外部。2、signal不能定義在process和subprogram(包括function和procedure)中,只可定以在其外部,即結(jié)構(gòu)體Architecture開始部分。①信號是全局量,可以進(jìn)行進(jìn)程之間的通信;而變量是局部量,只能用于進(jìn)程或子程序(即函數(shù)和過程)中;變量與信號區(qū)別①信號是全局量,可以進(jìn)行進(jìn)程之間的通信;而變量是局部量,只能用于進(jìn)程或子程序(即函數(shù)和過程)中;②對變量的賦值是立即發(fā)生的,對信號的賦值須經(jīng)一段時間延遲才會發(fā)生;變量與信號區(qū)別①信號是全局量,可以進(jìn)行進(jìn)程之間的通信;而變量是局部量,只能用于進(jìn)程或子程序(即函數(shù)和過程)中;②對變量的賦值是立即發(fā)生的,對信號的賦值須經(jīng)一段時間延遲才會發(fā)生;③對變量的賦值用“:=”,對信號的賦值用“<=”;④信號可以比擬為硬件端口之間的連接,而變量則與硬件之間沒有對應(yīng)關(guān)系;變量與信號區(qū)別Signal對象的常用屬性delayed[(時延值)]:使信號產(chǎn)生固定時間的延時并返回stable[(時延值)]:返回boolean,信號在規(guī)定時間內(nèi)沒有變化返回truetransaction:返回bit類型,信號每發(fā)生一次變化,返回值翻轉(zhuǎn)一次1.3.1VHDL數(shù)據(jù)對象Signal對象的常用屬性delayed[(時延值)]:使信號產(chǎn)生固定時間的延時并返回stable[(時延值)]:返回boolean,信號在規(guī)定時間內(nèi)沒有變化返回truetransaction:返回bit類型,信號每發(fā)生一次變化,返回值翻轉(zhuǎn)一次例子:A<=B’delayed(10ns);--B延時10ns后賦給A;
if(B’Stable(10ns));--判斷B在10ns中是否發(fā)生變化1.3.1VHDL數(shù)據(jù)對象信號的event和last_value屬性經(jīng)常用來確定信號的邊沿
屬性應(yīng)用1.3.1VHDL數(shù)據(jù)對象信號的event和last_value屬性經(jīng)常用來確定信號的邊沿
屬性應(yīng)用判斷clk的上升沿if((clk’event)and(clk=‘1’)and(clk’last_value=‘0’))then判斷clk的下降沿if((clk’event)and(clk=‘0’)and(clk’last_value=‘1’))then1.3.1VHDL數(shù)據(jù)對象初始化賦值SIGNALcontrol:BIT:=’0’;SIGNALcount:INTEGERRANGE0TO100;VARIABLEcontrol:BIT:=’0’;對信號、變量賦初值的操作是不可綜合的,僅能用在仿真中。1.3.1VHDL數(shù)據(jù)對象例子1
1.3.1VHDL數(shù)據(jù)對象例子21.3.1VHDL數(shù)據(jù)對象文件(File)通過規(guī)定的過程和函數(shù)可以實現(xiàn)對文件對象的讀出和寫入操作。文件聲明的格式如下:TYPE文件類型名ISFILEOF數(shù)據(jù)類型;TYPEfiletypeISFILEOFSTD_LOGIC_VECTOR;FILEexample:filetypeISIN“C:/T1.dat”;1.3.1VHDL數(shù)據(jù)對象文件(File)
定義文件輸入/輸出對象1.3.1VHDL數(shù)據(jù)對象文件(File)
文件操作按行進(jìn)行處理,需要定義行變量1.3.1VHDL數(shù)據(jù)對象文件(File)
VHDL不能直接處理行變量,需要定義位變量1.3.1VHDL數(shù)據(jù)對象文件(File)
讀寫操作需要將行變量轉(zhuǎn)為位變量1.3.1VHDL數(shù)據(jù)對象4.VHDL的數(shù)據(jù)對象包括信號常量變量文件ABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕標(biāo)準(zhǔn)數(shù)據(jù)類型用戶自定義數(shù)據(jù)類型數(shù)據(jù)類型的轉(zhuǎn)換1.3.2VHDL數(shù)據(jù)類型1)標(biāo)準(zhǔn)數(shù)據(jù)類型STD_LOGIC類型的數(shù)據(jù)可以具有九種取值
‘U’:初始值
‘
X’:不定態(tài)
‘0’:強制0
‘1’:
強制1
‘Z’:
高阻態(tài)
‘W’:弱信號不定態(tài)
‘L’:弱信號0
’H’:弱信號1
’_’:不可能情況(可忽略值)
其中,‘
X’方便了系統(tǒng)仿真,‘Z’方便了雙向總線的描述。
IEEE庫STD_LOGIC_1164STD_LOGIC_VECTOR類型定義如下:
TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE<>)OFSTD_LOGIC;
IEEE庫STD_LOGIC_1164STD_LOGIC_VECTOR類型定義如下:
TYPESTD_LOGIC_VECTORISARRAY(NATURALRANGE<>)OFSTD_LOGIC;libraryieee;useieee.std_logic_1164.all;entitymux4isport(d:instd_logic_vector(1downto0);a0:instd_logic;y:outstd_logic);endmux4;
IEEE庫STD_LOGIC_1164例子3基本類型應(yīng)用基本類型應(yīng)用例子4要點:賦值語句中的方向應(yīng)和聲明中的方向一樣2)用戶自定義數(shù)據(jù)類型通用格式
TYPE
類型名IS數(shù)據(jù)類型定義用戶可以定義的數(shù)據(jù)類型枚舉類型enumberated、整數(shù)型integer、實數(shù)型real、數(shù)組類型array、紀(jì)錄類型record、時間類型time、文件類型file、存取類型access(1)整數(shù)類型(integer)、實數(shù)類型(real)
type<數(shù)據(jù)類型名>is<數(shù)據(jù)類型><約束范圍>;
typedigitisintegerrange0to9;
typemyrealisrealrange–1e3to1e3;
2)用戶自定義數(shù)據(jù)類型(2)枚舉類型(enumeration)
type<數(shù)據(jù)類型名>is(<元素1>,<元素2>,…);
typearith_opis(add,sub,mul,div);typecoloris(red,green,blue);2)用戶自定義數(shù)據(jù)類型(2)枚舉類型(enumeration)
type<數(shù)據(jù)類型名>is(<元素1>,<元素2>,…);
typearith_opis(add,sub,mul,div);typecoloris(red,green,blue);typebitis(‘0’,‘1’);typebooleanis(false,true);typestd_ulogicis(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’);2)用戶自定義數(shù)據(jù)類型(3)數(shù)組類型(array)、記錄類型(record)
typebig_wordisarray(0to63)ofbit;--一維數(shù)組typematrix_1isarray(0to15,0to31)ofbit;--二維數(shù)組typeinstructionisrecordoperator:arith_op;op1:integer;op2:integer;endrecord;2)用戶自定義數(shù)據(jù)類型(4)子類型(subtype)
subtype<標(biāo)識符>is<基類型><范圍限制>;
subtypemy_intisintegerrange0to65535;subtypeiobusisstd_logic_vector(7downto0);2)用戶自定義數(shù)據(jù)類型格式
type
數(shù)據(jù)類型名is
范圍
units基本單位;
單位;
endunits2)用戶自定義數(shù)據(jù)類型(5)時間類型(time)
格式
type
數(shù)據(jù)類型名is
范圍
units基本單位;
單位;
endunits2)用戶自定義數(shù)據(jù)類型(5)時間類型(time)
typetimeisrange-1E18to1E18unitsus;
ms=1000us;sec=1000ms;min=60sec;endunits格式
type
數(shù)據(jù)類型名is
范圍
units基本單位;
單位;
endunits2)用戶自定義數(shù)據(jù)類型(5)時間類型(time)
typetimeisrange-1E18to1E18unitsus;
ms=1000us;sec=1000ms;min=60sec;endunits注意:引用時間時,有的編譯器要求量與單位之間應(yīng)有一個空格如:1ns;不能寫為1ns;(1)類型標(biāo)記法。用類型名稱來實現(xiàn)關(guān)系密切的標(biāo)量類型之間的轉(zhuǎn)換。例如: VARIABLEx:INTEGER;
VARIABLEy:REAL;
3)數(shù)據(jù)類型轉(zhuǎn)換(1)類型標(biāo)記法。用類型名稱來實現(xiàn)關(guān)系密切的標(biāo)量類型之間的轉(zhuǎn)換。例如: VARIABLEx:INTEGER;
VARIABLEy:REAL;使用類型標(biāo)記(即類型名)實現(xiàn)類型轉(zhuǎn)換時,可采用賦值語句:
x:=INTEGER(y);y:=REAL(x)。3)數(shù)據(jù)類型轉(zhuǎn)換★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型?!顲ONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型。
3)數(shù)據(jù)類型轉(zhuǎn)換★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型。★CONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型。★TO_BIT():將STD_LOGIC類型轉(zhuǎn)換成BIT類型?!颰O_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR類型。
3)數(shù)據(jù)類型轉(zhuǎn)換★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型?!顲ONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型。★TO_BIT():將STD_LOGIC類型轉(zhuǎn)換成BIT類型?!颰O_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR類型?!颰O_STD_LOGIC():將BIT類型轉(zhuǎn)換成STD_LOGIC類型?!颰O_STD_LOGIC_VECTOR():
將BIT_VECTOR類型轉(zhuǎn)換成
STD_LOGIC_VECTOR類型。3)數(shù)據(jù)類型轉(zhuǎn)換★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型?!顲ONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型?!颰O_BIT():將STD_LOGIC類型轉(zhuǎn)換成BIT類型?!颰O_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR類型?!颰O_STD_LOGIC():將BIT類型轉(zhuǎn)換成STD_LOGIC類型?!颰O_STD_LOGIC_VECTOR():
將BIT_VECTOR類型轉(zhuǎn)換成
STD_LOGIC_VECTOR類型。3)數(shù)據(jù)類型轉(zhuǎn)換該函數(shù)由STD_LOGIC_UNSIGNED程序包定義★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型。★CONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型?!颰O_BIT():將STD_LOGIC類型轉(zhuǎn)換成BIT類型?!颰O_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR類型。★TO_STD_LOGIC():將BIT類型轉(zhuǎn)換成STD_LOGIC類型。★TO_STD_LOGIC_VECTOR():
將BIT_VECTOR類型轉(zhuǎn)換成
STD_LOGIC_VECTOR類型。3)數(shù)據(jù)類型轉(zhuǎn)換該函數(shù)由STD_LOGIC_UNSIGNED程序包定義該函數(shù)由STD_LOGIC_ARITH程序包定義★CONV_INTEGER():將STD_LOGIC_VECTOR類型轉(zhuǎn)換成
INTEGER類型?!顲ONV_STD_LOGIC_VECTOR():將INTEGER類型、UNSIGNED
類型或SIGNED類型轉(zhuǎn)換成STD_LOGIC_VECTOR類型。★TO_BIT():將STD_LOGIC類型轉(zhuǎn)換成BIT類型。★TO_BIT_VECTOR():將STD_LOGIC_VECTOR類型轉(zhuǎn)換
BIT_VECTOR類型?!颰O_STD_LOGIC():將BIT類型轉(zhuǎn)換成STD_LOGIC類型?!颰O_STD_LOGIC_VECTOR():
將BIT_VECTOR類型轉(zhuǎn)換成
STD_LOGIC_VECTOR類型。注意:引用時必須首先打開庫和相應(yīng)的程序包。3)數(shù)據(jù)類型轉(zhuǎn)換該函數(shù)由STD_LOGIC_UNSIGNED程序包定義該函數(shù)由STD_LOGIC_ARITH程序包定義以下函數(shù)由STD_LOGIC_1164程序包定義分類運算符功能二元算術(shù)運算符+加-減*乘/除mod求模rem求余**乘方一元算術(shù)運算符+正號-負(fù)號abs絕對值關(guān)系運算符=相等/=不相等<小于>大于<=小于等于>=大于等于1.3.3VHDL操作符分類運算符功能二元算術(shù)運算符+加-減*乘/除mod求模rem求余**乘方一元算術(shù)運算符+正號-負(fù)號abs絕對值關(guān)系運算符=相等/=不相等<小于>大于<=小于等于>=大于等于分類運算符功能二元邏輯運算符and與Or或Nand與非Nor或非xor異或一元邏輯運算符not求反并置運算符&連接賦值運算符<=信號賦值:=變量賦值=>結(jié)合1.3.3VHDL操作符運算符優(yōu)先級NOT、ABS、**;REM、MOD、/、*;—(負(fù))、+(正);&、—(減)、+(加);>=、<=、>、<、/=、=;XOR、NOR、NAND、OR、AND。注意:在編寫VHDL程序時,必須保證操作數(shù)的數(shù)據(jù)類型與運算符所要求的數(shù)據(jù)類型一致。1.3.3VHDL操作符5.信號的賦值的符號是<=>=:=::ABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕“<=”賦值符:用于將數(shù)據(jù)傳給信號。“:=”賦值符:用于將數(shù)據(jù)傳給變量。
該賦值符也用于為信號、變量、常量等指定初值。
“=>”符號:在WHEN語句中出現(xiàn),其含義是“THEN(則)”。1.3.3VHDL操作符連接操作符---使用&1.3.3VHDL操作符集合操作---使用()1.3.3VHDL操作符集合操作---采用序號1.3.3VHDL操作符集合操作--采用others1.3.3VHDL操作符邏輯操作符1.3.3VHDL操作符數(shù)學(xué)運算符注意:上述運算符應(yīng)用于integer,real,time類型,不能用于vector(如果希望用于vector,可以使用庫IEEE的std_logic_unsigned包,它對算術(shù)運算符進(jìn)行了擴展)1.3.3VHDL操作符6.連接操作符是|and&&&ABCD提交多選題1分此題未設(shè)置答案,請點擊右側(cè)設(shè)置按鈕1.4VHDL基本邏輯語句1、并行處理(concurrent)語句的執(zhí)行與書寫順序無關(guān),并行塊內(nèi)的語句時同時執(zhí)行。2、順序處理(sequential)語句的執(zhí)行按書寫的先后次序,從前到后順序執(zhí)行。Architecture中的語句及子模塊之間是并行處理的子模塊block中的語句是并行處理的子模塊process中的語句是順序處理的子模塊subprogram中的function和procedure是順序處理的1.4VHDL基本邏輯語句Arcthitecture(構(gòu)造體)格式:(前面已講)
Arcthitecture
構(gòu)造體名of
實體名is
[定義語句]內(nèi)部信號、常數(shù)、元件、數(shù)據(jù)類型、函數(shù)等的定義
begin[并行處理語句和block、process、function、procedure]
end構(gòu)造體名;
1.4VHDL基本邏輯語句1)Block普通Block格式
塊名:
BLOCK[定義語句]
begin[并行處理語句concurrentstatement]
endblock
塊名Architecture中的Block條件Block格式
塊名:
BLOCK
[(布爾表達(dá)式)]
[定義語句]
begin[并行處理語句concurrentstatement[信號]<=
guarded[信號,延時];
endblock
塊名1)BlockBlock例子
myblock1:
block(clk=‘1’)
signal:qin:bit:=‘0’;
beginqout<=guardedqin;
endblockmyblock1
1)BlockBlock例子
myblock1:
block(clk=‘1’)
signal:qin:bit:=‘0’;
beginqout<=guardedqin;
endblockmyblock1
myblock2:
block
beginqout<=qin;
endblock
myblock2用BLOCK語句描述2選1電路的程序。
ENTITYmux2_1IS
PORT(d0,d1,sel :IN STD_LOGIC; q :OUT STD_LOGIC);ENDmux2_1;ARCHITECTUREamuxOFmux2_1IS
SIGNALtmp1,tmp2,tmp3:STD_LOGIC;BEGINcale:BLOCK
BEGIN tmp1<=d0ANDsel; tmp2<=d1AND(notsel); tmp3<=tmp1ORtmp2; q<=tmp3;
ENDBLOCKcale;ENDamux;
上述結(jié)構(gòu)體中只有一個BLOCK塊,若電路復(fù)雜時可由幾個BLOCK塊組成。用BLOCK語句描述2選1電路的程序。
ENTITYmux2_1IS
PORT(d0,d1,sel :IN STD_LOGIC; q :OUT STD_LOGIC);ENDmux2_1;ARCHITECTUREamuxOFmux2_1IS
SIGNALtmp1,tmp2,tmp3:STD_LOGIC;BEGINcale:BLOCK
BEGIN tmp1<=d0ANDsel; tmp2<=d1AND(notsel); tmp3<=tmp1ORtmp2; q<=tmp3;
ENDBLOCKcale;ENDamux;
上述結(jié)構(gòu)體中只有一個BLOCK塊,若電路復(fù)雜時可由幾個BLOCK塊組成。2選1數(shù)據(jù)選擇器d1d0qselu2u1u3tmp1tmp2tmp3用帶保護(hù)條件的BLOCK語句描述一個鎖存器的結(jié)構(gòu)。
ENTITYlatch
IS
PORT(d,clk :IN STD_LOGIC; q,qn :OUT STD_LOGIC);
ENDlatch;
ARCHITECTURElatch_aOFlatchIS
BEGIN g1:BLOCK(clk='1')
BEGIN q<=guardeddafter5ns; qn<=guardednot(d)after7ns;
ENDBLOCKg1;
ENDlatch_a;用帶保護(hù)條件的BLOCK語句描述一個鎖存器的結(jié)構(gòu)。
ENTITYlatch
IS
PORT(d,clk :IN STD_LOGIC; q,qn :OUT STD_LOGIC);
ENDlatch;
ARCHITECTURElatch_aOFlatchIS
BEGIN g1:BLOCK(clk='1')
BEGIN q<=guardeddafter5ns; qn<=guardednot(d)after7ns;
ENDBLOCKg1;
ENDlatch_a;qnqQDCdclk
在BLOCK塊中的兩個信號傳送語句都寫有前衛(wèi)關(guān)鍵詞guarded,表明只有clk=’1’為真時,這兩個語句才能執(zhí)行。
(注意:這里的綜合工具不支持guardedblock
語句和after短語。)2)process格式[進(jìn)程名:]
process[(觸發(fā)信號列表)][定義語句;]
begin[串行處理語句sequentialstatement;]
endprocess2)process格式[進(jìn)程名:]
process[(觸發(fā)信號列表)][定義語句;]
begin[串行
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB51T 1583-2013 大西洋鮭養(yǎng)殖技術(shù)規(guī)范 苗種
- DB51T 1542-2012 甜櫻桃等級規(guī)格
- DB51T 1104-2010 畜禽防疫檔案管理技術(shù)規(guī)范
- DB51T 1003-2010 中小學(xué)體育器材 小鐵旗
- 新建醛類項目可行性研究報告
- 冰淇淋機項目可行性研究報告
- 量熱儀生產(chǎn)加工項目可行性研究報告
- 2024-2030年旋轉(zhuǎn)頭連接線公司技術(shù)改造及擴產(chǎn)項目可行性研究報告
- 2024-2030年新版中國金銻精礦項目可行性研究報告
- 2024-2030年新版中國裝載機泵輪鋁鑄件項目可行性研究報告
- 母嬰保健生化免疫題庫
- 電影音樂欣賞智慧樹知到期末考試答案章節(jié)答案2024年華南農(nóng)業(yè)大學(xué)
- 新舊物業(yè)公司交接管理流程
- 2024年高考物理江蘇卷試卷評析及備考策略(課件)
- 鐵路項目施工組織設(shè)計實例
- 大學(xué)生心理健康與發(fā)展(高等院校心理健康教育)全套教學(xué)課件
- 廣東省佛山市南海區(qū)2023-2024學(xué)年九年級上學(xué)期期末考試模擬卷
- DB43-T 2927-2024 中醫(yī)護(hù)理門診建設(shè)與管理規(guī)范
- 理論力學(xué)(山東科技大學(xué)) 知到智慧樹網(wǎng)課答案
- 保險客服正規(guī)勞動合同范本
- 中國音樂史與名作賞析智慧樹知到期末考試答案章節(jié)答案2024年山東師范大學(xué)
評論
0/150
提交評論