




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三章硬件描述語(yǔ)言基礎(chǔ)2023/12/241VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)章節(jié)目錄3.1硬件描述語(yǔ)言概述3.2VHDL語(yǔ)言程序結(jié)構(gòu)3.3VHDL語(yǔ)法基礎(chǔ)3.4VHDL常用語(yǔ)句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述調(diào)換2023/12/242VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.1硬件描述語(yǔ)言概述可編程邏輯器件、電子設(shè)計(jì)自動(dòng)化(EDA)與硬件描述語(yǔ)言可編程邏輯器件是一種功能可變的集成器件可通過(guò)編程的方法設(shè)計(jì)其完成不同的邏輯功能設(shè)計(jì)需借助軟件工具,即采用電子設(shè)計(jì)自動(dòng)化的方式設(shè)計(jì)形式有原理圖和硬件描述語(yǔ)言兩種硬件描述語(yǔ)言是用來(lái)描述數(shù)字電路系統(tǒng)的一種語(yǔ)言2023/12/243VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.1硬件描述語(yǔ)言概述目前常用的硬件描述語(yǔ)言有兩種VHDLVerilogHDLVeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage超高速集成電路硬件描述語(yǔ)言Verilog
HardwareDescriptionLanguageVerilog硬件描述語(yǔ)言VHDL語(yǔ)言發(fā)展較早,從使用者數(shù)量來(lái)看,目前兩種語(yǔ)言平分秋色,VHDL語(yǔ)言更嚴(yán)謹(jǐn)、更適合設(shè)計(jì)大型數(shù)字系統(tǒng)。兩種語(yǔ)言相似的地方很多,學(xué)會(huì)一種可自學(xué)另一種。2023/12/244VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.1硬件描述語(yǔ)言概述VHDL語(yǔ)言的IEEE標(biāo)準(zhǔn)
VHDLIEEE1076-1987VHDLIEEE1076-1993
早在1980年,因?yàn)槊绹?guó)軍事工業(yè)需要描述電子系統(tǒng)的方法,美國(guó)國(guó)防部開始進(jìn)行VHDL的開發(fā)
1987年,由IEEE(InstituteofElectricalandElectronicsEngineers,電氣和電子工程師協(xié)會(huì)
)將VHDL制定為標(biāo)準(zhǔn),稱為IEEE1076-19871993年制定了第二個(gè)IEEE標(biāo)準(zhǔn)版本,稱為IEEE1076-1993,增加了一些新的命令和屬性2023/12/245VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)章節(jié)目錄3.1硬件描述語(yǔ)言概述3.2VHDL語(yǔ)言程序結(jié)構(gòu)3.3VHDL語(yǔ)法基礎(chǔ)3.4VHDL常用語(yǔ)句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述2023/12/246VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)五個(gè)基本組成部分庫(kù)(Library)程序包(Package)實(shí)體說(shuō)明(EntityDeclaration)結(jié)構(gòu)體(Archiecture)配置(Configuration)主要部分注意:程序擴(kuò)展名為.vhd2023/12/247VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-1】2選1數(shù)據(jù)選擇器的VHDL語(yǔ)言描述d0d1selftemp3temp1temp2功能:2選1數(shù)據(jù)選擇器Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;2023/12/248VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)--2to1muxVHDLLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;庫(kù)程序包實(shí)體說(shuō)明VHDL語(yǔ)言程序注釋d0d1selfmux2023/12/249VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)ARCHITECTUREstructureOFmuxISSIGNALtemp:STD_LOGIC;--內(nèi)部信號(hào)BEGINp0:PROCESS(d0,d1,sel)--進(jìn)程
VARIABLEtemp1,temp2,temp3:STD_LOGIC;BEGIN--進(jìn)程內(nèi)的局部變量
temp1:=d0AND(NOTsel);--變量間的邏輯關(guān)系
temp2:=d1ANDsel;temp3:=temp1ORtemp2;temp<=temp3;f<=temp;ENDPROCESSp0;--進(jìn)程結(jié)束ENDstructure;--結(jié)構(gòu)體結(jié)束結(jié)構(gòu)體2023/12/2410VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)EDA工具軟件QuartusII綜合出來(lái)的電路程序中的信號(hào)temp被優(yōu)化掉了2023/12/2411VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)1行是注釋,用“--”引頭2~3行是庫(kù)說(shuō)明部分,打開庫(kù)及庫(kù)中的程序包4~7行是實(shí)體說(shuō)明部分,描述電路的端口信號(hào)8~最后是結(jié)構(gòu)體部分,描述電路的邏輯功能VHDL語(yǔ)言不區(qū)分大小寫,為閱讀方便,關(guān)鍵字用大寫,用戶自定義部分用小寫。說(shuō)明2023/12/2412VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)本節(jié)三方面內(nèi)容3.2.1實(shí)體說(shuō)明3.2.2結(jié)構(gòu)體3.2.3程序包、庫(kù)及配置2023/12/2413VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.2.1實(shí)體說(shuō)明【格式】ENTITY<實(shí)體名>IS[GENERIC(類屬常數(shù)說(shuō)明);][PORT(端口說(shuō)明);][實(shí)體語(yǔ)句部分;]END[ENTITY]<實(shí)體名>;主要部分<>表示必選項(xiàng),[]表示可選項(xiàng)【主要功能】說(shuō)明電路的名字、輸入輸出信號(hào)。d0d1selfmux2023/12/2414VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例】4位串行進(jìn)位加法器的實(shí)體說(shuō)明。ENTITYadder_rippleISGENERIC(m:TIME:=5ns);PORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO0);
q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:OUTSTD_LOGIC);ENDadder_ripple;abqcoutadder_ripple實(shí)體名由用戶自定義,必須和主文件名一致必須以ENTITY<實(shí)體名>IS開始,以END<實(shí)體名>結(jié)束在端口說(shuō)明部分說(shuō)明輸入輸出信號(hào)的情況在類屬常數(shù)說(shuō)明部分說(shuō)明類屬常數(shù)的情況2023/12/2415VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)類屬常數(shù):若程序中多處用到某個(gè)常數(shù),為方便修改,可將其定義為類屬常數(shù),只需修改類屬常數(shù)的值,則程序中與其有關(guān)的常數(shù)自動(dòng)修改。1.類屬常數(shù)說(shuō)明語(yǔ)句【功能】說(shuō)明類屬常數(shù)的名字,數(shù)據(jù)類型,設(shè)定值。GENERIC(m:TIME:=5ns);【格式】GENERIC(常數(shù)名:數(shù)據(jù)類型[:=設(shè)定值];…
常數(shù)名:數(shù)據(jù)類型[:=設(shè)定值]);【例】2023/12/2416VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.端口說(shuō)明語(yǔ)句【格式】PORT(端口名,[端口名]:[模式]數(shù)據(jù)類型;…
端口名,[端口名]:[模式]數(shù)據(jù)類型);PORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO0);
q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);
cout:OUTSTD_LOGIC);【功能】
說(shuō)明輸入輸出信號(hào)的名字,輸入輸出模式,數(shù)據(jù)類型,位寬?!纠?023/12/2417VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)端口名是輸入輸出信號(hào)的名字。模式是指輸入輸出信號(hào)的方向。數(shù)據(jù)類型是指輸入輸出信號(hào)的取值類型。表3-1端口方向說(shuō)明方向定義含義IN輸入OUT輸出INOUT雙向BUFFER輸出(可反饋使用)LINKAGE不指定方向BITBIT_VECTORSTD_LOGICINTEGERBOOLEANSTD_LOGIC_VECTOR常用數(shù)據(jù)類型數(shù)據(jù)類型在3.3節(jié)詳細(xì)介紹說(shuō)明:BUFFER是INOUT的子集,做輸入時(shí),信號(hào)不是由外部驅(qū)動(dòng),而是從輸出反饋得到。2023/12/2418VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.2.2結(jié)構(gòu)體【格式】ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[內(nèi)部信號(hào)或元件定義語(yǔ)句;]BEGIN<功能描述部分(并行語(yǔ)句);>END<結(jié)構(gòu)體名>;【功能】描述電路的具體結(jié)構(gòu)、功能。主要部分2023/12/2419VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)ARCHITECTURE是關(guān)鍵字。結(jié)構(gòu)體名可隨意起,實(shí)體名必須和實(shí)體說(shuō)明中的實(shí)體名一致。定義語(yǔ)句是指對(duì)內(nèi)部信號(hào)、元件、常數(shù)等的說(shuō)明。并行處理語(yǔ)句部分是結(jié)構(gòu)體的主要部分,描述電路的結(jié)構(gòu)、功能等。BEGIN后開始結(jié)構(gòu)和功能的描述。說(shuō)明:2023/12/2420VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-2】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(數(shù)據(jù)流描述方式)resetsetqqb該電路中并行語(yǔ)句部分使用的是并行信號(hào)賦值語(yǔ)句,描述了兩個(gè)與非門的連接關(guān)系。2023/12/2421VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-3】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(結(jié)構(gòu)描述方式)本例是RS觸發(fā)器的另一種描述方式,并行處理語(yǔ)句采用的是元件例化語(yǔ)句,后面3.4.1介紹。2023/12/2422VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-4】一個(gè)全加器的VHDL程序(數(shù)據(jù)流描述方式)本例結(jié)構(gòu)體中的并行處理部分采用的也是并發(fā)信號(hào)賦值語(yǔ)句。描述了兩個(gè)異或門和一個(gè)與或門。本例中的類屬說(shuō)明語(yǔ)句說(shuō)明了一個(gè)時(shí)間常數(shù)tpd是5ns,后面的賦值語(yǔ)句使用了該延時(shí)參數(shù)。2023/12/2423VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)結(jié)構(gòu)體中并行語(yǔ)句有5種類型信號(hào)賦值語(yǔ)句元件例化語(yǔ)句進(jìn)程語(yǔ)句結(jié)構(gòu)塊語(yǔ)句結(jié)構(gòu)子程序語(yǔ)句結(jié)構(gòu)3.4節(jié)詳細(xì)介紹2023/12/2424VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.2.3包集合、庫(kù)及配置1.包集合(Package)包集合中存放供多個(gè)實(shí)體公用的數(shù)據(jù)類型、常量、子程序。包集合又存放在庫(kù)中。一般情況下,要使用某個(gè)包集合中的資源時(shí),必須對(duì)該包集合進(jìn)行使用說(shuō)明。一般情況下,要使用某個(gè)庫(kù)中的包集合時(shí),也必須對(duì)該庫(kù)進(jìn)行說(shuō)明?!靖袷健縇IBRARY<庫(kù)名>;USE<庫(kù)名.程序包名.項(xiàng)目名>LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL【例】類似于C語(yǔ)言中的頭文件2023/12/2425VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)VHDL提供的常用的標(biāo)準(zhǔn)包集合:
STANDARD STD_LOGIC_1164STANDARD包中定義了若干數(shù)據(jù)類型、子類型、函數(shù);該包已預(yù)先在STD庫(kù)中編譯好,并且自動(dòng)與所有模型連接,使用時(shí)無(wú)須說(shuō)明;STD_LOGIC_1164包中也定義了若干數(shù)據(jù)類型和函數(shù);該包已預(yù)先在IEEE庫(kù)中編譯好,但是在使用時(shí)須加以使用說(shuō)明;在STD
庫(kù)中在IEEE庫(kù)中,用時(shí)不須說(shuō)明,用時(shí)須說(shuō)明2023/12/2426VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)常用的數(shù)據(jù)類型(整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、字符、字符串、物理型、錯(cuò)誤等級(jí)、自然數(shù)和正整數(shù))均在STANDARD程序包中常用的數(shù)據(jù)類型(STD_LOGIC、STD_LOGIC_VECTOR)在STD_LOGIC_1164程序包中2023/12/2427VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【包集合結(jié)構(gòu)格式】PACKAGE<包集合名>IS[說(shuō)明語(yǔ)句;]END[包集合名];PACKAGEBODY<包集合名>IS[說(shuō)明語(yǔ)句;]END[包集合名];包首包體用戶可自定義包集合。
2023/12/2428VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-10】自定義包集合的例子。--包集合說(shuō)明(包首)PACKAGEexampleIS TYPEalu_opIS(add,sub,mul,div,eq,gt,lt); CONSTANTpi:REAL:=3.1415926; delay1:TIME; COMPONENTnand2 PORT(a,b:INBIT;c:OUTBIT); ENDCOMPONENT; FUNCTIONmean(a,b,c:REAL)RETURNREAL;ENDexample;說(shuō)明了一個(gè)枚舉型的數(shù)據(jù)類型alu_op兩個(gè)常數(shù)pi、delay1一個(gè)元件nand2一個(gè)函數(shù)mean2023/12/2429VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)--包集合體PACKAGEBODYexampleIS CONSTANTdelay1:TIME=15ns; FUNCTIONmean(a,b,c:REAL)RETURNREAL; BEGIN RETURN(a+b+c)/3.0; ENDmean;ENDexample;包集合體中具體說(shuō)明了時(shí)間常數(shù)delay1的值、函數(shù)mean的功能2023/12/2430VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)USEWORK.example.ALL;自定義的包集合存放在現(xiàn)行工作庫(kù)WORK庫(kù)中。使用WORK庫(kù)時(shí)不需說(shuō)明。自定義的包集合在使用時(shí)必須進(jìn)行使用說(shuō)明?!纠空f(shuō)明:2023/12/2431VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.庫(kù)(Library)【格式】庫(kù)中存放已編譯過(guò)的設(shè)計(jì)單元(如實(shí)體、程序包等);庫(kù)中內(nèi)容可以用作其它VHDL描述的資源。使用庫(kù)時(shí)一般需要說(shuō)明。LIBRARY<庫(kù)名>;5種庫(kù)IEEESTDASICWORK用戶定義庫(kù)LIBRARY
IEEE;【例】2023/12/2432VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)IEEESTD_LOGIC_1164NUMERIC_BITNUMERIC_STDSTD_LOGIC_ARITHSTD_LOGIC_SIGNEDSTD_LOGIC_UNSIGNEDSTDSTANDARDTEXTIOVATIL(面向ASIC的庫(kù))VATIL_TIMINGVATIL_PRIMITIVEWORK(現(xiàn)行工作庫(kù))用戶自定義庫(kù)無(wú)須說(shuō)明不但要說(shuō)明庫(kù),還要說(shuō)明庫(kù)中的程序包。例:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL最常用例:LIBRARYSTD;USESTD.STANDAR.ALL;2023/12/2433VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.配置語(yǔ)句(Configration)一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體??衫门渲谜Z(yǔ)句來(lái)選擇不同的結(jié)構(gòu)體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)。實(shí)體1結(jié)構(gòu)體1結(jié)構(gòu)體2【例】CONFIGURATIONconfrOFrsffISFOR結(jié)構(gòu)體1;ENDFOR;ENDconfr;【格式】CONFIGURATION配置名OF實(shí)體名ISFOR結(jié)構(gòu)體1名;ENDFOR;END配置名;2023/12/2434VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)實(shí)體1結(jié)構(gòu)體1實(shí)體2結(jié)構(gòu)體2應(yīng)用:比如可設(shè)計(jì)兩個(gè)不同風(fēng)格的結(jié)構(gòu)體,比較其性能差異,可以用配置語(yǔ)句選擇其中的一個(gè)結(jié)構(gòu)體。否則,只能設(shè)計(jì)兩個(gè)實(shí)體(程序),分別調(diào)試。實(shí)體結(jié)構(gòu)體1結(jié)構(gòu)體2VS2023/12/2435VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)章節(jié)目錄3.1硬件描述語(yǔ)言概述3.2VHDL語(yǔ)言程序結(jié)構(gòu)3.3
VHDL語(yǔ)法基礎(chǔ)3.4VHDL常用語(yǔ)句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述2023/12/2436VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3VHDL語(yǔ)法基礎(chǔ)3.3.1標(biāo)識(shí)符和保留字3.2.2數(shù)據(jù)對(duì)象3.2.3數(shù)據(jù)類型3.3.4數(shù)據(jù)類型的轉(zhuǎn)換3.3.5運(yùn)算操作符五方面內(nèi)容2023/12/2437VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.1標(biāo)識(shí)符和保留字規(guī)則:由字母數(shù)字下劃線組成必須以英文字母開頭最后一個(gè)字符不能是下劃線不允許出現(xiàn)連續(xù)兩個(gè)下劃線保留字不能作一般的標(biāo)識(shí)符不區(qū)別大小寫1.標(biāo)識(shí)符即由用戶起的實(shí)體名、結(jié)構(gòu)體名、信號(hào)名、變量名…..2023/12/2438VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.保留字表3-3常用保留字保留字即VHDL語(yǔ)言中已使用的關(guān)鍵字。保留字不能用作標(biāo)識(shí)符。2023/12/2439VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2023/12/2440VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.2數(shù)據(jù)對(duì)象對(duì)象有四種類型:常數(shù)信號(hào)變量文件最常用2023/12/2441VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.2數(shù)據(jù)對(duì)象1.常數(shù)CONSTANT常數(shù)名:數(shù)據(jù)類型[:=表達(dá)式];【常數(shù)聲明格式】使用前必須聲明CONSTANTtoler:DISTANCE:=1.5nm;CONSTANTpi:REAL:=3.141592;CONSTANTcycle_time:TIME:=100ns;CONSTANTPropagation_Delay:DELAY_LENGTH;【例】常數(shù)值2023/12/2442VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.變量variable變量名:數(shù)據(jù)類型[約束條件][:=表達(dá)式];【變量聲明格式】使用前必須聲明【例】VARIABLEresult:STD_LOGIC:=‘0’;VARIABLEx,y,z:INTEGER;VARIABLEcount:INTEGERRANGE0TO255:=10;初始值聲明時(shí)可帶初始值約束條件2023/12/2443VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【變量賦值格式】變量名:=表達(dá)式;【例】result:=‘1’;x:=y+3;注意賦值符號(hào):=表達(dá)式的數(shù)據(jù)類型和變量的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。2023/12/2444VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.信號(hào)SIGNAL信號(hào)名:數(shù)據(jù)類型[約束條件][:=表達(dá)式];【信號(hào)聲明格式】使用前必須聲明【例】SIGNALfirst_sig:INTEGER;SIGNALsys_clk:BIT:=‘0’;SIGNALsecond_sig,third_sig:INTEGER:=10;SIGNALs:INTEGERRANGE0TO20:=15;初值聲明時(shí)可帶初始值約束條件2023/12/2445VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【信號(hào)賦值格式】信號(hào)名<=表達(dá)式;【例】a<=bAFTER10ns;a<=expression_b;a<=expression_bAFTER10ns;注意信號(hào)說(shuō)明中的賦初值符號(hào)是:=,而信號(hào)賦值語(yǔ)句中的賦值符號(hào)為<=。表達(dá)式的數(shù)據(jù)類型和信號(hào)的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號(hào)賦值可以添加延時(shí)信息。2023/12/2446VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)變量是局部的,信號(hào)是全局的;變量只能用在進(jìn)程內(nèi),信號(hào)沒(méi)有此限制。若變量用于進(jìn)程之外,必須將該變量先賦給一個(gè)相同類型的信號(hào),用信號(hào)在進(jìn)程之間傳遞數(shù)據(jù)。信號(hào)可以延遲,變量不能。變量不能用于硬件連線,常用在高層次建模的計(jì)算中。進(jìn)程對(duì)信號(hào)敏感而對(duì)變量不敏感。賦值符號(hào)不一樣;信號(hào)和變量的區(qū)別2023/12/2447VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.3數(shù)據(jù)類型Scalartypes標(biāo)量型Composite復(fù)合型Access存取型File文件型Protected保護(hù)型5種類型每一種中又有若干子類型和具體數(shù)據(jù)類型。2023/12/2448VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)已經(jīng)在標(biāo)準(zhǔn)數(shù)據(jù)包STANDARD和STD_LOGIC_1164中定義好的常用的數(shù)據(jù)類型如下:整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、字符、字符串、物理型、錯(cuò)誤等級(jí)、自然數(shù)和正整數(shù)本節(jié)介紹以上數(shù)據(jù)類型的特點(diǎn)。STD_LOGIC、STD_LOGIC_VECTORSTANDARDSTD_LOGIC_11642023/12/2449VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.3數(shù)據(jù)類型整數(shù)(INTEGER)(屬于:標(biāo)量型→整數(shù)型,在STANDARD程序包中)整數(shù)的表示范圍為-(231-1)~(231-1)。【例】VARIABLEa:INTEGER:=15;SIGNALs:INTEGERRANGE0TO20:=15;INTEGER型數(shù)據(jù)值不用引號(hào)括起來(lái)2023/12/2450VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.實(shí)數(shù)(REAL)(屬于:標(biāo)量型→浮點(diǎn)型,在STANDARD程序包中)實(shí)數(shù)的表示范圍為-1.0E38~+1.0E38。實(shí)數(shù)的書寫方式舉例:1.0666.66636.5e-4某些數(shù)即可以用整數(shù)表示,也可以用實(shí)數(shù)表示,如1.0是實(shí)數(shù),1是整數(shù),兩者數(shù)值相同但類型不同。REAL型數(shù)據(jù)值不用引號(hào)括起來(lái)2023/12/2451VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.BIT(屬于:標(biāo)量型→枚舉型)和BIT_VECTOR(屬于:復(fù)合型→數(shù)組型)在STANDARD程序包中BIT又稱位型,其值僅有2個(gè),’0’和’1’;BIT_VECTOR又稱位矢量,是BIT的數(shù)組。例:BIT型數(shù)值要用單引號(hào)括起來(lái),BIT_VECTOR型數(shù)值要用雙引號(hào)括起來(lái)。SIGNALa:BIT;SIGNALlow_byte:BIT_VECTOR(0to7);a<=‘1’;Low_byte<=“00000101”;2023/12/2452VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)4.布爾型(BOOLEAN)(屬于:標(biāo)量型→枚舉型,在STANDARD程序包中)BOOLEAN的值僅有2個(gè),TRUE
和FALSE。2023/12/2453VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)5.STD_LOGIC和STD_LOGIC_VECTOR在STD_LOGIC_1164程序包中STD_LOGIC又稱標(biāo)準(zhǔn)邏輯變量,其值有9個(gè),’U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-’。常用的是’0’,’1’,’Z’。STD_LOGIC_VECTOR稱標(biāo)準(zhǔn)邏輯向量,是STD_LOGIC的數(shù)組。STD_LOGIC型數(shù)值要用單引號(hào)括起來(lái),STD_LOGIC_VECTOR型數(shù)值要用雙引號(hào)括起來(lái)。例:SIGNALa:STD_LOGIC;a<=‘1’;2023/12/2454VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)6.字符(CHARACTER)(屬于:標(biāo)量型→枚舉型)和字符串(STRING)(屬于:復(fù)合型→數(shù)組型)在STANDARD程序包中CHARACTER型數(shù)值要用單引號(hào)括起來(lái)。STRING型數(shù)值要用雙引號(hào)括起來(lái)。例:’A’,’a’,’1’,’2’。“ABC”,“HELLO”。2023/12/2455VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)7.時(shí)間型( TIME)(屬于:標(biāo)量型→物理型,在STANDARD程序包中)GENERIC(m:TIME:=5ns);例:2023/12/2456VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)8.錯(cuò)誤等級(jí)(SEVERITY_LEVEL)(屬于:標(biāo)量型→枚舉型,在STANDARD程序包中)SEVERITY_LEVEL的值有4個(gè),NOTE,WARNING,ERROR,FAILURE。注意,警告,錯(cuò)誤,失敗。2023/12/2457VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)9.自然數(shù)(NATURAL)(標(biāo)量型→整數(shù)型→整數(shù))和正整數(shù)(POSITIVE)(標(biāo)量型→整數(shù)型→整數(shù))在STANDARD程序包中NATURAL和POSITIVE是INTEGER的子類型。2023/12/2458VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)以上是已經(jīng)在標(biāo)準(zhǔn)數(shù)據(jù)包STANDARD和std_logic_1164中定義好的常用的數(shù)據(jù)類型。除此之外,還可以由用戶自定義數(shù)據(jù)類型??梢杂捎脩糇远x的數(shù)據(jù)類型:枚舉類型整數(shù)類型數(shù)組類型記錄類型存取類型文件類型時(shí)間類型實(shí)數(shù)類型TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義OF基本數(shù)據(jù)類型;TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義;【格式】2023/12/2459VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)TYPEalu_opIS(add,sub,mul,div,eq,gt,lt);typeBITis('0','1');typeBIT_VECTORisarray(NATURALrange<>)ofBIT;subtypePOSITIVEisINTEGERrange1toINTEGER'HIGH;定義一個(gè)數(shù)據(jù)類型alu_op,是枚舉型,取值為add,sub,mul,div,eq,gt,lt中的一個(gè)聲明變量a是alu_op型的。Variablea:alu_op例下例為標(biāo)準(zhǔn)程序包中的某些數(shù)據(jù)類型定義2023/12/2460VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.4數(shù)據(jù)類型的轉(zhuǎn)換自學(xué)2023/12/2461VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.5操作符5類操作符邏輯運(yùn)算關(guān)系運(yùn)算算術(shù)運(yùn)算并置運(yùn)算移位運(yùn)算2023/12/2462VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)可以對(duì)BIT,BOOLEAN,STD_LOGIC,STD_LOGIC_VECTOR等類型數(shù)據(jù)進(jìn)行邏輯運(yùn)算。1.邏輯運(yùn)算符ANDORNANDNORXORXNORNOT與或與非或非異或同或非2023/12/2463VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.算術(shù)運(yùn)算符+–+–*/MODREMABS**加減正號(hào)負(fù)號(hào)乘除取模取余取絕對(duì)值平方通常取模運(yùn)算也叫取余運(yùn)算,它們返回結(jié)果都是余數(shù)。rem和mod唯一的區(qū)別在于:當(dāng)x和y的正負(fù)號(hào)一樣的時(shí)候,兩個(gè)函數(shù)結(jié)果是等同的;當(dāng)x和y的符號(hào)不同時(shí),rem取余函數(shù)結(jié)果的符號(hào)和x的一樣,而mod求模和y一樣。2023/12/2464VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.關(guān)系運(yùn)算符=/=<<=>>=等于不等于小于小于等于大于大于等于2023/12/2465VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)4.并置運(yùn)算符&
并置sel<=b&a;例:若b=‘1’,a=‘0’,則sel=“10”Y<=‘H’&’e’&’l’&’l’&’o’Y=“Hello”2023/12/2466VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.5運(yùn)算操作符5.移位運(yùn)算符SLLSRLSLASRAROLROR邏輯左移邏輯右移算術(shù)左移算術(shù)右移循環(huán)左移循環(huán)右移補(bǔ)零補(bǔ)首位例:aSLL3
2023/12/2467VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.3.5運(yùn)算操作符運(yùn)算符的優(yōu)先級(jí)見(jiàn)P.1152023/12/2468VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)章節(jié)目錄3.1硬件描述語(yǔ)言概述3.2VHDL語(yǔ)言程序結(jié)構(gòu)3.3VHDL語(yǔ)法基礎(chǔ)3.4VHDL常用語(yǔ)句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述2023/12/2469VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.4VHDL常用語(yǔ)句仿真時(shí):兩大類:并行語(yǔ)句順序語(yǔ)句并行語(yǔ)句同時(shí)并行執(zhí)行,順序語(yǔ)句按先后次序執(zhí)行。2023/12/2470VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.4.1并行語(yǔ)句ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[定義語(yǔ)句;]BEGIN
<功能描述語(yǔ)句(并行處理語(yǔ)句);>END<結(jié)構(gòu)體名>;并行語(yǔ)句用在結(jié)構(gòu)體的并行處理語(yǔ)句部分2023/12/2471VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)進(jìn)程語(yǔ)句并行信號(hào)賦值語(yǔ)句元件例化語(yǔ)句塊語(yǔ)句過(guò)程調(diào)用語(yǔ)句參數(shù)傳遞語(yǔ)句生成語(yǔ)句并行斷言語(yǔ)句常用ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[定義語(yǔ)句;]BEGIN進(jìn)程語(yǔ)句并行信號(hào)賦值語(yǔ)句元件例化語(yǔ)句END<結(jié)構(gòu)體名>;2023/12/2472VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)ARCHITECTURECOMPONENTENDCOMPONENT;BEGIN
PROCESSENDPROCESS
dff1:dffPORTMAP(S(0),clk,S(1));
q1<=a+b;q2<=a*b;
q<=d0WHENsel="00"ELSEd1WHENsel="01"ELSE'Z';WITHselSELECTq<=d0WHEN0,d1WHEN1,'Z'WHENOTHERS;END<結(jié)構(gòu)體名>;各部分之間是并行的進(jìn)程元件例化并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句并行信號(hào)賦值語(yǔ)句2023/12/2473VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)1.進(jìn)程語(yǔ)句【格式】[進(jìn)程標(biāo)號(hào):]PROCESS[敏感信號(hào)表][IS][進(jìn)程內(nèi)部變量說(shuō)明部分;]BEGIN<順序語(yǔ)句部分;>ENDPROCESS[進(jìn)程標(biāo)號(hào)];進(jìn)程語(yǔ)句是最主要的并行語(yǔ)句,它在VDHL程序設(shè)計(jì)中使用頻率最高,也是最能體現(xiàn)硬件描述語(yǔ)言的一條語(yǔ)句。2023/12/2474VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-7】帶異步復(fù)位功能的D觸發(fā)器的VHDL描述。2023/12/2475VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)當(dāng)敏感信號(hào)發(fā)生變化時(shí),執(zhí)行進(jìn)程。當(dāng)執(zhí)行完最后一個(gè)語(yǔ)句時(shí),回到第一個(gè)語(yǔ)句,等待下一次敏感信號(hào)變化。一個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程,進(jìn)程之間是并行的。仿真時(shí)進(jìn)程內(nèi)部各條語(yǔ)句是順序執(zhí)行的。進(jìn)程語(yǔ)句說(shuō)明部分可以說(shuō)明需要的局部變量?!菊f(shuō)明】2023/12/2476VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.并行信號(hào)賦值語(yǔ)句并發(fā)信號(hào)賦值語(yǔ)句條件信號(hào)賦值語(yǔ)句選擇信號(hào)賦值語(yǔ)句①并發(fā)信號(hào)賦值語(yǔ)句例:q1<=a+b;q2<=a*b;當(dāng)a或b有變化時(shí),兩條語(yǔ)句同時(shí)執(zhí)行。模擬了兩個(gè)加法器和乘法器電路。+*abq1q2注意前提是信號(hào)賦值語(yǔ)句放在進(jìn)程外;若放在進(jìn)程中,則變成了順序執(zhí)行的語(yǔ)句。當(dāng)信號(hào)賦值語(yǔ)句放在進(jìn)程外時(shí),就是并發(fā)信號(hào)賦值語(yǔ)句。2023/12/2477VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)②條件信號(hào)賦值語(yǔ)句【格式】目標(biāo)信號(hào)<=表達(dá)式1WHEN條件1ELSE
表達(dá)式2WHEN條件2ELSE
表達(dá)式3WHEN條件3ELSE ……
表達(dá)式n-1WHEN條件n-1ELSE
表達(dá)式n;當(dāng)條件1滿足時(shí),目標(biāo)信號(hào)=表達(dá)式1當(dāng)條件2滿足時(shí),目標(biāo)信號(hào)=表達(dá)式2……【功能】條件判斷是按順序執(zhí)行的,先判斷條件1滿足否,再判斷條件2滿足否。2023/12/2478VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-11】用條件信號(hào)賦值語(yǔ)句設(shè)計(jì)4選1數(shù)據(jù)選擇器。語(yǔ)句之間是并行的2023/12/2479VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)③選擇信號(hào)賦值語(yǔ)句【格式】WITH選擇條件表達(dá)式SELECT目標(biāo)信號(hào)<=表達(dá)式1WHEN選擇條件1
表達(dá)式2WHEN選擇條件2
表達(dá)式3WHEN選擇條件3 ……
表達(dá)式nWHEN選擇條件n;表達(dá)式n+1WHENOTHERS;當(dāng)選擇條件表達(dá)式值=條件1時(shí),目標(biāo)信號(hào)=表達(dá)式1當(dāng)選擇條件表達(dá)式值=條件2時(shí),目標(biāo)信號(hào)=表達(dá)式2……【功能】條件判斷是同時(shí)進(jìn)行的,無(wú)優(yōu)先級(jí)。2023/12/2480VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-12】用選擇信號(hào)賦值語(yǔ)句設(shè)計(jì)4選1數(shù)據(jù)選擇器。該例既使用了條件信號(hào)賦值語(yǔ)句也使用了選擇信號(hào)賦值語(yǔ)句2023/12/2481VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.元件例化語(yǔ)句元件例化語(yǔ)句是最能體現(xiàn)層次化設(shè)計(jì)思想的語(yǔ)句。例如設(shè)計(jì)由D觸發(fā)器構(gòu)成的移位寄存器,可以將設(shè)計(jì)分成2層,底層描述D觸發(fā)器,頂層調(diào)用底層描述的D觸發(fā)器。在頂層中調(diào)用底層設(shè)計(jì)時(shí),就要用到元件例化語(yǔ)句。層次化設(shè)計(jì)簡(jiǎn)單說(shuō)即將整個(gè)系統(tǒng)分成不同的層次,頂層設(shè)計(jì)可以調(diào)用底層設(shè)計(jì)。2023/12/2482VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【格式】COMPONENT<元件名>[GENERIC類屬說(shuō)明;]PORT<端口說(shuō)明>;ENDCOMPONENT;<標(biāo)號(hào)名:><元件名>[GENERICMAP(參數(shù)映射)]PORTMAP(端口映射);定義元件:把底層設(shè)計(jì)定義成一個(gè)元件元件例化:調(diào)用定義好的元件,并說(shuō)明該元件與其他信號(hào)的連接關(guān)系。2023/12/2483VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-14】用元件例化語(yǔ)句描述由D觸發(fā)器構(gòu)成的移位寄存器。dff是另一個(gè)程序?qū)?yīng)的電路,這里將其定義成一個(gè)元件,并用其構(gòu)成一個(gè)移位寄存器。dffdqclk2023/12/2484VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)dffs0s1clkdff1dffs1s2clkdff2dffs2s3clkdff3dffs3s4clkdff4dffas1dffs2dffs3dffbclks0s42023/12/2485VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)元件名必須與底層文件的實(shí)體名一致。端口映射部分要指明元件內(nèi)部信號(hào)與外部信號(hào)的連接關(guān)系,其順序必須與端口說(shuō)明部分的順序一致。一個(gè)元件定義部分可以對(duì)應(yīng)多個(gè)元件例化部分,相當(dāng)于調(diào)用了多個(gè)元件而已。元件標(biāo)號(hào)名可以幫助標(biāo)示不同的元件?!菊f(shuō)明】2023/12/2486VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)4.生成語(yǔ)句非重點(diǎn)不講2023/12/2487VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)ARCHITECTURECOMPONENTENDCOMPONENT;BEGIN
PROCESSENDPROCESS
dff1:dffPORTMAP(S(0),clk,S(1));
q1<=a+b;q2<=a*b;
q<=d0WHENsel="00"ELSEd1WHENsel="01"ELSE'Z';WITHselSELECTq<=d0WHEN0,d1WHEN1,'Z'WHENOTHERS;END<結(jié)構(gòu)體名>;各部分之間是并行的2023/12/2488VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.4.2順序語(yǔ)句順序語(yǔ)句是相對(duì)于并行語(yǔ)句而言的。順序語(yǔ)句的特點(diǎn)是:每一條順序語(yǔ)句的執(zhí)行順序是與它們的書寫順序相一致的。順序語(yǔ)句只能出現(xiàn)在進(jìn)程和子程序中。[進(jìn)程標(biāo)號(hào):]PROCESS[敏感信號(hào)表]IS[進(jìn)程語(yǔ)句說(shuō)明部分;]BEGIN<順序語(yǔ)句部分;>ENDPROCESS[進(jìn)程標(biāo)號(hào)];2023/12/2489VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)順序賦值語(yǔ)句WAIT語(yǔ)句IF語(yǔ)句CASE語(yǔ)句LOOP語(yǔ)句EXIT語(yǔ)句RETURN語(yǔ)句NULL語(yǔ)句REPORT語(yǔ)句斷言語(yǔ)句常用2023/12/2490VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)1.順序賦值語(yǔ)句變量賦值語(yǔ)句信號(hào)賦值語(yǔ)句①變量賦值語(yǔ)句【格式】目標(biāo)變量:=表達(dá)式注意賦值符號(hào):=表達(dá)式的數(shù)據(jù)類型和變量的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。變量賦值限定在進(jìn)程、函數(shù)、過(guò)程等順序區(qū)域內(nèi)。變量賦值無(wú)時(shí)間特性。變量值具有局部性。只在進(jìn)程內(nèi)有效。count:=count+1;【例】2023/12/2491VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)②信號(hào)賦值語(yǔ)句【格式】目標(biāo)信號(hào)<=表達(dá)式信號(hào)賦值語(yǔ)句中的賦值符號(hào)為<=。表達(dá)式的數(shù)據(jù)類型和信號(hào)的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號(hào)賦值可以添加延時(shí)信息。用在進(jìn)程中才是順序語(yǔ)句S<=aXORbXORc;【例】當(dāng)信號(hào)賦值語(yǔ)句放在進(jìn)程內(nèi)時(shí),就是順序語(yǔ)句。放在進(jìn)程外時(shí)就是并行語(yǔ)句。2023/12/2492VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)2.WAIT語(yǔ)句【格式】WAIT --無(wú)限等待WAITON --敏感信號(hào)變化WAITUNTIL --條件滿足WAITFOR --時(shí)間到【功能】進(jìn)程在仿真運(yùn)行中總是處于兩種狀態(tài)之一:執(zhí)行或掛起。進(jìn)程狀態(tài)的變化可受WAIT語(yǔ)句的控制,當(dāng)進(jìn)程執(zhí)行到WAIT語(yǔ)句時(shí)就將被掛起,并設(shè)置好再次執(zhí)行的條件??梢栽O(shè)置4種條件。2023/12/2493VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.IF語(yǔ)句IF語(yǔ)句是一種條件控制語(yǔ)句,是常用語(yǔ)句之一。IF語(yǔ)句只能用在進(jìn)程中。三種形式IF…THEN語(yǔ)句IF…THEN…ELSE語(yǔ)句IF…THEN…ELSIF…ELSE語(yǔ)句網(wǎng)上流傳一句話:IF、CASE打天下2023/12/2494VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【格式】IF<條件>THEN<順序處理語(yǔ)句>;ENDIF;①IF…THEN語(yǔ)句當(dāng)條件滿足時(shí),執(zhí)行THEN后的語(yǔ)句,否則,不執(zhí)行【功能】條件滿足?順序處理語(yǔ)句YN條件不完整,常用來(lái)實(shí)現(xiàn)時(shí)序電路2023/12/2495VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)順序處理語(yǔ)句dClkq當(dāng)條件滿足時(shí),d的值賦給q,否則,q值不變【例3-17】用IF…THEN語(yǔ)句描述D觸發(fā)器功能。2023/12/2496VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【格式】IF<條件>THEN<順序處理語(yǔ)句1>;ELSE<順序處理語(yǔ)句2>;ENDIF;兩分支②IF…THEN…ELSE語(yǔ)句當(dāng)條件滿足時(shí),執(zhí)行THEN后的語(yǔ)句,否則,執(zhí)行ELSE后的語(yǔ)句。條件完整,常用來(lái)實(shí)現(xiàn)組合電路?!竟δ堋織l件滿足?順序處理語(yǔ)句2順序處理語(yǔ)句1YN2023/12/2497VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例】用IF…THEN…ELSE語(yǔ)句描述二選一數(shù)據(jù)選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;2023/12/2498VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)ARCHITECTUREbehaOFmuxISBEGINPROCESS(d0,d1,sel)BEGINIF(sel=‘0’)THENf<=d0;ELSEf<=d1;ENDIF;ENDPROCESS;ENDbeha;Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;2023/12/2499VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【格式】IF<條件1>THEN<順序處理語(yǔ)句1>;ELSIF<條件2>THEN<順序處理語(yǔ)句2>;ELSE<順序處理語(yǔ)句3>;ENDIF;多分支③IF…THEN…ELSIF…ELSE語(yǔ)句當(dāng)條件1滿足時(shí),執(zhí)行THEN后的順序語(yǔ)句1,否則,當(dāng)條件2滿足時(shí),執(zhí)行THEN后的順序語(yǔ)句2,否則執(zhí)行ELSE后的順序語(yǔ)句3。條件完整,常用來(lái)實(shí)現(xiàn)組合電路?!竟δ堋?023/12/24100VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)條件1優(yōu)先級(jí)高條件2優(yōu)先級(jí)低還可以再分支條件1滿足?順序處理語(yǔ)句2順序處理語(yǔ)句1YN條件2滿足?順序處理語(yǔ)句3YN2023/12/24101VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例】數(shù)據(jù)選擇器的VHDL程序。(P137)注意:條件要完整,最后必須加ELSEf<=‘0’,否則會(huì)綜合出寄存器。2023/12/24102VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.4.2順序語(yǔ)句條件不完整的綜合結(jié)果有寄存器2023/12/24103VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)條件完整的綜合結(jié)果無(wú)寄存器2023/12/24104VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)4. CASE語(yǔ)句【格式】CASE表達(dá)式ISWHEN取值1=>順序處理語(yǔ)句1;WHEN取值2=>順序處理語(yǔ)句2;…….WHENOTHERS=>順序處理語(yǔ)句n;ENDCASE;CASE語(yǔ)句也是常用語(yǔ)句之一,具有條件控制功能。也只能用在進(jìn)程中。2023/12/24105VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)順序處理語(yǔ)句1滿足條件1順序處理語(yǔ)句2滿足條件2順序處理語(yǔ)句4都不滿足滿足條件3順序處理語(yǔ)句3順序處理語(yǔ)句1滿足條件1幾個(gè)條件是同等級(jí)的2023/12/24106VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-19】用CASE語(yǔ)句實(shí)現(xiàn)3-8線譯碼器。LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYdecoder_3to8ISPORT(a,b,c,g1,g2,g3:INSTD_LOGIC;y:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdecoder_3to8;ARCHITECTUREbehaOFdecoder_3to8ISSIGNALindata:STD_LOGIC_VECTOR(2DOWNTO0);BEGINIndata<=c&b&a;2023/12/24107VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)PROCESS(Indata,g1,g2,g3)BEGINIF(g1=‘1’ANDg2=‘0’ANDg3=‘0’)THENCASEindataIS WHEN“000”=>y<=“11111110”; WHEN“001”=>y<=“11111101”; WHEN“010”=>y<=“11111011”; WHEN“011”=>y<=“11110111”; WHEN“100”=>y<=“11101111”; WHEN“101”=>y<=“11011111”; WHEN“110”=>y<=“10111111”; WHEN“111”=>y<=“01111111”; WHENOTHERS=>y<=“XXXXXXXX”;
ENDCASE;ELSEf<="11111111";ENDIF;ENDPROCESS;ENDbeha;2023/12/24108VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)CASE語(yǔ)句的各條件表達(dá)式是同時(shí)執(zhí)行的。條件表達(dá)式的所有情況都要列舉到??捎肳HENOTHERS描述?!菊f(shuō)明】2023/12/24109VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)5. LOOP語(yǔ)句【格式】FOR循環(huán)變量IN取值范圍LOOP<順序處理語(yǔ)句>;ENDLOOP;LOOP是循環(huán)語(yǔ)句,有兩種①FOR…LOOP②WHILE…LOOP①FOR…LOOP若循環(huán)變量在取值范圍內(nèi)則執(zhí)行循環(huán),否則結(jié)束循環(huán)?!竟δ堋?023/12/24110VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-20】用FOR…LOOP語(yǔ)句描述的偶校驗(yàn)發(fā)生器。設(shè)a=11001110,則tmp=1,奇數(shù)個(gè)1;設(shè)a=11001100,則tmp=0,偶數(shù)個(gè)1。2023/12/24111VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【格式】WHILE條件LOOP<順序處理語(yǔ)句>;ENDLOOP;若條件為真則執(zhí)行循環(huán),若為假則結(jié)束循環(huán)。②WHILE…LOOP【功能】2023/12/24112VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-21】用WHILE…LOOP語(yǔ)句描述的偶校驗(yàn)發(fā)生器。功能和例3-20相同注意y<=tmp;只能寫在進(jìn)程內(nèi),因?yàn)閠mp是變量,在進(jìn)程內(nèi)局部有效。2023/12/24113VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)歸納一下前面介紹的IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句,有一個(gè)共同的特點(diǎn),即不是對(duì)電路的具體結(jié)構(gòu)進(jìn)行描述,而是對(duì)電路的功能和行為進(jìn)行了描述,采用的是類似C語(yǔ)言的高級(jí)描述語(yǔ)言,我們把這種描述方式稱為行為描述方式。VHDL語(yǔ)言的三種描述方式數(shù)據(jù)流描述方式結(jié)構(gòu)描述方式行為描述方式后面介紹2023/12/24114VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)6. EXIT語(yǔ)句【格式】EXIT[LOOP標(biāo)號(hào)];EXIT[LOOP標(biāo)號(hào)][WHEN條件];程序執(zhí)行到該語(yǔ)句處,無(wú)條件跳出。程序執(zhí)行到LOOP標(biāo)號(hào)處,無(wú)條件跳出。條件滿足時(shí),執(zhí)行到該語(yǔ)句處跳出。條件滿足時(shí),執(zhí)行到LOOP標(biāo)號(hào)處跳出。除正常結(jié)束循環(huán)外,還可利用EXIT語(yǔ)句退出。2023/12/24115VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)7. 斷言語(yǔ)句(ASSERT)【格式】assert條件[REPORT表達(dá)式][SEVERITY表達(dá)式]斷言語(yǔ)句主要用于程序仿真、調(diào)試中的人機(jī)會(huì)話,它可以給出一個(gè)文字串作為警告和錯(cuò)誤的信息?!竟δ堋咳绻麛嘌詶l件不滿足,則順序執(zhí)行REPORT語(yǔ)句,輸出用雙引號(hào)括起來(lái)的以文字串表示的錯(cuò)誤信息,同時(shí)還要報(bào)告錯(cuò)誤信息的嚴(yán)重級(jí)別。2023/12/24116VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)【例3-22】使用ASSERT語(yǔ)句的RS觸發(fā)器的VHDL程序。注意在RS觸發(fā)器中,不允許兩個(gè)輸入都為1。該程序使用斷言語(yǔ)句,一旦出現(xiàn)兩個(gè)輸入r、s都為1的情況,則發(fā)出錯(cuò)誤提示。2023/12/24117VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)VHDL語(yǔ)言的三種描述方式數(shù)據(jù)流描述方式(RTL級(jí)描述方式)結(jié)構(gòu)描述方式行為描述方式主要采用邏輯關(guān)系式的描述方式,說(shuō)明了數(shù)據(jù)的流向主要采用元件例化語(yǔ)句,說(shuō)明元件之間的連接關(guān)系主要采用IF、CASE、WAIT、LOOP等高級(jí)語(yǔ)言,說(shuō)明電路的功能和行為2023/12/24118VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)數(shù)據(jù)流描述方式的2選1數(shù)據(jù)選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;ARCHITECTUREmux_1OFmuxISBEGINp0:PROCESS(d0,d1,sel)VARIABLEtemp1,temp2:STD_LOGIC;BEGINtemp1:=d0AND(NOTsel);temp2:=d1ANDsel;f<=temp1ORtemp2;ENDPROCESSp0;ENDmux_1;主要采用邏輯關(guān)系式的描述方式,說(shuō)明了數(shù)據(jù)的流向2023/12/24119VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)結(jié)構(gòu)描述方式的2選1數(shù)據(jù)選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;ARCHITECTUREmux_2OFmuxISSIGNALy1,y2,y3:STD_LOGICCOMPONENTNOT1PORT(a:INSTD_LOGIC,y:OUTSTD_LOGIC);ENDCOMPONENT;2023/12/24120VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)主要采用元件例化語(yǔ)句,說(shuō)明元件之間的連接關(guān)系COMPONENTAND2PORT(a,b:INSTD_LOGIC,y:OUTSTD_LOGIC);ENDCOMPONENT;COMPONENTOR2PORT(a,b:INSTD_LOGIC,y:OUTSTD_LOGIC);ENDCOMPONENT;BEGINU1:NOT1PORTMAP(sel,y1)U2:AND2PORTMAP(d0,y1,y2)U3:AND2PORTMAP(d1,sel,y3)U4:OR2PORTMAP(y2,y3,y)ENDmux_2;2023/12/24121VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;ARCHITECTUREbehaOFmuxISBEGINPROCESS(d0,d1,sel)BEGINIF(sel=‘0’)THENf<=d0;ELSEf<=d1;ENDIF;ENDPROCESS;ENDbeha;行為描述方式的2選1數(shù)據(jù)選擇器主要采用IF、CASE、WAIT、LOOP等高級(jí)語(yǔ)言,說(shuō)明電路的功能和行為2023/12/24122VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)實(shí)際程序中往往幾種描述方式混合使用,初學(xué)階段不必過(guò)于在意所采用的描述方式,知道有這種說(shuō)法即可。2023/12/24123VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)章節(jié)目錄3.1硬件描述語(yǔ)言概述3.2VHDL語(yǔ)言程序結(jié)構(gòu)3.3VHDL語(yǔ)法基礎(chǔ)3.4VHDL常用語(yǔ)句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述2023/12/24124VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述1.【例4-3】判定電路的VHDL程序。(P123)本例使用了條件賦值語(yǔ)句同學(xué)們可以嘗試用CASE語(yǔ)句實(shí)現(xiàn)2023/12/24125VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述綜合結(jié)果2023/12/24126VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述2.【例】4-2線優(yōu)先編碼器的VHDL程序。(P126)本例使用了ifthenelsifthen語(yǔ)句利用IF條件的優(yōu)先級(jí)很方便地實(shí)現(xiàn)了優(yōu)先編碼的功能如果用CASE語(yǔ)句則只能實(shí)現(xiàn)普通編碼器的功能Then后面的順序語(yǔ)句用分號(hào)隔開a(3)a(2)a(1)a(0)yeo1XXX11101XX101001X011000100100000002023/12/24127VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)條件不完整,缺少最后一條ELSE…綜合時(shí)會(huì)綜合出寄存器,RTL圖說(shuō)明了這一點(diǎn)。【程序存在的問(wèn)題】在ENDIF前加一句:ELSEy<="00";eo<='0';就不會(huì)產(chǎn)生寄存器2023/12/24128VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述3.【例】74138的VHDL程序。(P130)使用ifthenelse、case語(yǔ)句)s1s2s3a(2)a(1)a(0)f(0)f(1)f(2)f(3)f(4)f(5)f(6)f(7)10000011111111100001101111111000101101111110001111101111100100111101111001011111101110011011111101100111111111100XXXXX1111111111XXXX111111111X1XXX111111112023/12/24129VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述3.【例】74138的VHDL程序。(P130)使用ifthenelse、case語(yǔ)句)2023/12/24130VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述4.【例】7448的VHDL程序。(P135)(ifthenelsifthenelse語(yǔ)句)2023/12/24131VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)條件不完整,缺少最后一條ELSE…綜合時(shí)會(huì)綜合出寄存器,RTL圖說(shuō)明了這一點(diǎn)?!境绦虼嬖诘膯?wèn)題】2023/12/24132VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)綜合電路局部寄存器【修改】在ENDIF前加一句:ELSEsegout<="0000000";rbo<='1';就不會(huì)產(chǎn)生寄存器2023/12/24133VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述5.【例】1-4數(shù)據(jù)分配器的VHDL程序。(P136)(ifthenelsifthenelse語(yǔ)句)該程序仍然出現(xiàn)條件不完整的情況,結(jié)果會(huì)綜合出寄存器。修改程序,在ENDIF前加ELSEw(0)<=‘0’;w(1)<=‘0’;w(2)<=‘0’;w(3)<=‘0’;則寄存器消失。2023/12/24134VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述6.【例】4選1數(shù)據(jù)選擇器的VHDL程序。(P137)(ifthenelsifthenelse語(yǔ)句)和上例同樣的問(wèn)題,綜合出了寄存器,加ELSEf<=‘0’語(yǔ)句修改。2023/12/24135VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述7.【例】全加器的VHDL程序。(P143)(并行賦值語(yǔ)句)該程序沒(méi)有使用進(jìn)程。2023/12/24136VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述8.【例4-10】ALU的VHDL程序。P.147(ifthenelsifthenelse
、case語(yǔ)句)該程序用到了IEEE庫(kù)中的STD_LOGIC_ARITH和STD_LOGIC_UNSIGNED程序包。實(shí)際上可以不用2023/12/24137VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述ms2s1fC_out000a0001a’0010a⊕b0011a⊙b0mcins2s1f1000a1001a’1010a加b1011a’加b1100a加11101a’加11110a加b加11111a’加b加1算術(shù)運(yùn)算邏輯運(yùn)算2023/12/24138VHDL硬件描述語(yǔ)言(入門簡(jiǎn)述)3.5組合電路的VHDL描述9.【例】偶發(fā)生器的VHDL程序。P151(進(jìn)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建筑工程項(xiàng)目施工總承包合同
- 承債式公司股權(quán)轉(zhuǎn)讓協(xié)議
- 站臺(tái)裝修勞務(wù)合同
- 房屋出租合同協(xié)議書
- 債轉(zhuǎn)股投資合同協(xié)議書
- 裝修材料采購(gòu)合同
- 二婚離婚協(xié)議書新
- 電商行業(yè)網(wǎng)絡(luò)購(gòu)物服務(wù)協(xié)議
- 影視內(nèi)容版權(quán)采購(gòu)協(xié)議
- 手房買賣合同官方
- 關(guān)于與旅游發(fā)展集團(tuán)成立合資公司的可行性研究報(bào)告
- 第一部分-氣排球運(yùn)動(dòng)介紹課件
- 世界局勢(shì)與主再來(lái)課件
- 思維游戲(小孩都喜歡玩的游戲)教學(xué)內(nèi)容課件
- 儲(chǔ)能技術(shù)課后參考答案梅生偉
- 過(guò)渡金屬氧化物催化劑及其催化作用
- 溫濕度對(duì)果蔬儲(chǔ)存的影響
- 遺傳性耳聾基因檢測(cè)標(biāo)準(zhǔn)Ppt
- 電是怎么產(chǎn)生的
- 八-十-天-環(huán)-游-地-球(讀書)專題培訓(xùn)課件
- 新概念英語(yǔ)第一冊(cè)課文完整版
評(píng)論
0/150
提交評(píng)論