VHDL硬件描述語言(入門簡述)_第1頁
VHDL硬件描述語言(入門簡述)_第2頁
VHDL硬件描述語言(入門簡述)_第3頁
VHDL硬件描述語言(入門簡述)_第4頁
VHDL硬件描述語言(入門簡述)_第5頁
已閱讀5頁,還剩153頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

章節(jié)目錄3.1硬件描述語言概述3.2VHDL語言程序結(jié)構(gòu)3.3VHDL語法基礎(chǔ)3.4VHDL常用語句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述調(diào)換11/24/202313.1硬件描述語言概述可編程邏輯器件、電子設(shè)計(jì)自動(dòng)化(EDA)與硬件描述語言可編程邏輯器件是一種功能可變的集成器件可通過編程的方法設(shè)計(jì)其完成不同的邏輯功能設(shè)計(jì)需借助軟件工具,即采用電子設(shè)計(jì)自動(dòng)化的方式設(shè)計(jì)形式有原理圖和硬件描述語言兩種硬件描述語言是用來描述數(shù)字電路系統(tǒng)的一種語言11/24/202323.1硬件描述語言概述目前常用的硬件描述語言有兩種VHDLVerilogHDLVeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage超高速集成電路硬件描述語言Verilog

HardwareDescriptionLanguageVerilog硬件描述語言VHDL語言發(fā)展較早,從使用者數(shù)量來看,目前兩種語言平分秋色,VHDL語言更嚴(yán)謹(jǐn)、更適合設(shè)計(jì)大型數(shù)字系統(tǒng)。兩種語言相似的地方很多,學(xué)會(huì)一種可自學(xué)另一種。11/24/202333.1硬件描述語言概述VHDL語言的IEEE標(biāo)準(zhǔn)

VHDLIEEE1076-1987VHDLIEEE1076-1993早在1980年,因?yàn)槊绹娛鹿I(yè)需要描述電子系統(tǒng)的方法,美國國防部開始進(jìn)行VHDL的開發(fā)

1987年,由IEEE(InstituteofElectricalandElectronicsEngineers,電氣和電子工程師協(xié)會(huì)

)將VHDL制定為標(biāo)準(zhǔn),稱為IEEE1076-19871993年制定了第二個(gè)IEEE標(biāo)準(zhǔn)版本,稱為IEEE1076-1993,增加了一些新的命令和屬性11/24/20234章節(jié)目錄3.1硬件描述語言概述3.2VHDL語言程序結(jié)構(gòu)3.3VHDL語法基礎(chǔ)3.4VHDL常用語句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述11/24/20235五個(gè)基本組成部分庫(Library)程序包(Package)實(shí)體說明(EntityDeclaration)結(jié)構(gòu)體(Archiecture)配置(Configuration)主要部分注意:11/24/20236【例3-1】2選1數(shù)據(jù)選擇器的VHDL語言描述d0d1selftemp3temp1temp2功能:2選1數(shù)據(jù)選擇器Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;11/24/20237--2to1muxVHDLLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;庫程序包實(shí)體說明VHDL語言程序注釋d0d1selfmux11/24/20238ARCHITECTUREstructureOFmuxISSIGNALtemp:STD_LOGIC;--內(nèi)部信號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)體11/24/20239EDA工具軟件QuartusII綜合出來的電路程序中的信號temp被優(yōu)化掉了11/24/2023101行是注釋,用“--”引頭2~3行是庫說明部分,打開庫及庫中的程序包4~7行是實(shí)體說明部分,描述電路的端口信號8~最后是結(jié)構(gòu)體部分,描述電路的邏輯功能VHDL語言不區(qū)分大小寫,為閱讀方便,關(guān)鍵字用大寫,用戶自定義部分用小寫。說明11/24/202311本節(jié)三方面內(nèi)容3.2.1實(shí)體說明3.2.2結(jié)構(gòu)體3.2.3程序包、庫及配置11/24/2023123.2.1實(shí)體說明【格式】ENTITY<實(shí)體名>IS[GENERIC(類屬常數(shù)說明);][PORT(端口說明);][實(shí)體語句部分;]END[ENTITY]<實(shí)體名>;主要部分<>表示必選項(xiàng),[]表示可選項(xiàng)【主要功能】說明電路的名字、輸入輸出信號。d0d1selfmux11/24/202313【例】4位串行進(jìn)位加法器的實(shí)體說明。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é)束在端口說明部分說明輸入輸出信號的情況在類屬常數(shù)說明部分說明類屬常數(shù)的情況11/24/202314類屬常數(shù):若程序中多處用到某個(gè)常數(shù),為方便修改,可將其定義為類屬常數(shù),只需修改類屬常數(shù)的值,則程序中與其有關(guān)的常數(shù)自動(dòng)修改?!竟δ堋空f明類屬常數(shù)的名字,數(shù)據(jù)類型,設(shè)定值。GENERIC(m:TIME:=5ns);【格式】GENERIC(常數(shù)名:數(shù)據(jù)類型[:=設(shè)定值];…常數(shù)名:數(shù)據(jù)類型[:=設(shè)定值]);【例】11/24/202315【格式】PORT(端口名,[端口名]:[模式]數(shù)據(jù)類型;…端口名,[端口名]:[模式]數(shù)據(jù)類型);PORT(a,b:INSTD_LOGIC_VECTOR(3DOWNTO0);q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);cout:OUTSTD_LOGIC);【功能】

說明輸入輸出信號的名字,輸入輸出模式,數(shù)據(jù)類型,位寬?!纠?1/24/202316端口名是輸入輸出信號的名字。模式是指輸入輸出信號的方向。數(shù)據(jù)類型是指輸入輸出信號的取值類型。表3-1端口方向說明方向定義含義IN輸入OUT輸出INOUT雙向BUFFER輸出(可反饋使用)LINKAGE不指定方向BITBIT_VECTORSTD_LOGICINTEGERBOOLEANSTD_LOGIC_VECTOR常用數(shù)據(jù)類型說明:BUFFER是INOUT的子集,做輸入時(shí),信號不是由外部驅(qū)動(dòng),而是從輸出反饋得到。11/24/2023173.2.2結(jié)構(gòu)體【格式】ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[內(nèi)部信號或元件定義語句;]BEGIN<功能描述部分(并行語句);>END<結(jié)構(gòu)體名>;【功能】描述電路的具體結(jié)構(gòu)、功能。主要部分11/24/202318ARCHITECTURE是關(guān)鍵字。結(jié)構(gòu)體名可隨意起,實(shí)體名必須和實(shí)體說明中的實(shí)體名一致。定義語句是指對內(nèi)部信號、元件、常數(shù)等的說明。并行處理語句部分是結(jié)構(gòu)體的主要部分,描述電路的結(jié)構(gòu)、功能等。BEGIN后開始結(jié)構(gòu)和功能的描述。說明:11/24/202319【例3-2】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(數(shù)據(jù)流描述方式)resetsetqqb該電路中并行語句部分使用的是并行信號賦值語句,描述了兩個(gè)與非門的連接關(guān)系。11/24/202320【例3-3】一個(gè)RS觸發(fā)器的結(jié)構(gòu)體(結(jié)構(gòu)描述方式)本例是RS觸發(fā)器的另一種描述方式,并行處理語句采用的是元件例化語句,后面3.4.1介紹。11/24/202321【例3-4】一個(gè)全加器的VHDL程序(數(shù)據(jù)流描述方式)本例結(jié)構(gòu)體中的并行處理部分采用的也是并發(fā)信號賦值語句。描述了兩個(gè)異或門和一個(gè)與或門。本例中的類屬說明語句說明了一個(gè)時(shí)間常數(shù)tpd是5ns,后面的賦值語句使用了該延時(shí)參數(shù)。11/24/202322結(jié)構(gòu)體中并行語句有5種類型信號賦值語句元件例化語句進(jìn)程語句結(jié)構(gòu)塊語句結(jié)構(gòu)子程序語句結(jié)構(gòu)11/24/2023233.2.3包集合、庫及配置1.包集合(Package)包集合中存放供多個(gè)實(shí)體公用的數(shù)據(jù)類型、常量、子程序。包集合又存放在庫中。一般情況下,要使用某個(gè)包集合中的資源時(shí),必須對該包集合進(jìn)行使用說明。一般情況下,要使用某個(gè)庫中的包集合時(shí),也必須對該庫進(jìn)行說明?!靖袷健縇IBRARY<庫名>;USE<庫名.程序包名.項(xiàng)目名>LIBRARYIEEE;【例】類似于C語言中的頭文件11/24/202324VHDL提供的常用的標(biāo)準(zhǔn)包集合: STANDARD STD_LOGIC_1164STANDARD包中定義了若干數(shù)據(jù)類型、子類型、函數(shù);該包已預(yù)先在STD庫中編譯好,并且自動(dòng)與所有模型連接,使用時(shí)無須說明;STD_LOGIC_1164包中也定義了若干數(shù)據(jù)類型和函數(shù);該包已預(yù)先在IEEE庫中編譯好,但是在使用時(shí)須加以使用說明;在STD庫中在IEEE庫中,用時(shí)不須說明,用時(shí)須說明11/24/202325常用的數(shù)據(jù)類型(整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、字符、字符串、物理型、錯(cuò)誤等級、自然數(shù)和正整數(shù))均在STANDARD程序包中常用的數(shù)據(jù)類型(STD_LOGIC、STD_LOGIC_VECTOR)在STD_LOGIC_1164程序包中11/24/202326【包集合結(jié)構(gòu)格式】PACKAGE<包集合名>IS[說明語句;]END[包集合名];PACKAGEBODY<包集合名>IS[說明語句;]END[包集合名];包首包體用戶可自定義包集合。

11/24/202327【例3-10】自定義包集合的例子。--包集合說明(包首)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;說明了一個(gè)枚舉型的數(shù)據(jù)類型alu_op兩個(gè)常數(shù)pi、delay1一個(gè)元件nand2一個(gè)函數(shù)mean11/24/202328--包集合體PACKAGEBODYexampleIS CONSTANTdelay1:TIME=15ns; FUNCTIONmean(a,b,c:REAL)RETURNREAL; BEGIN RETURN(a+b+c)/3.0; ENDmean;ENDexample;包集合體中具體說明了時(shí)間常數(shù)delay1的值、函數(shù)mean的功能11/24/202329USEWORK.example.ALL;自定義的包集合存放在現(xiàn)行工作庫WORK庫中。使用WORK庫時(shí)不需說明。自定義的包集合在使用時(shí)必須進(jìn)行使用說明。【例】說明:11/24/2023302.庫(Library)【格式】庫中存放已編譯過的設(shè)計(jì)單元(如實(shí)體、程序包等);庫中內(nèi)容可以用作其它VHDL描述的資源。使用庫時(shí)一般需要說明。LIBRARY<庫名>;5種庫IEEESTDASICWORK用戶定義庫LIBRARYIEEE;【例】11/24/202331IEEESTD_LOGIC_1164NUMERIC_BITNUMERIC_STDSTD_LOGIC_ARITHSTD_LOGIC_SIGNEDSTD_LOGIC_UNSIGNEDSTDSTANDARDTEXTIOVATIL(面向ASIC的庫)VATIL_TIMINGVATIL_PRIMITIVEWORK(現(xiàn)行工作庫)用戶自定義庫無須說明不但要說明庫,還要說明庫中的程序包。例:LIBRARYIEEE;最常用例:LIBRARYSTD;USESTD.STANDAR.ALL;11/24/2023323.配置語句(Configration)一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體??衫门渲谜Z句來選擇不同的結(jié)構(gòu)體,使其與要設(shè)計(jì)的實(shí)體相對應(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配置名;11/24/202333實(shí)體1結(jié)構(gòu)體1實(shí)體2結(jié)構(gòu)體2應(yīng)用:比如可設(shè)計(jì)兩個(gè)不同風(fēng)格的結(jié)構(gòu)體,比較其性能差異,可以用配置語句選擇其中的一個(gè)結(jié)構(gòu)體。否則,只能設(shè)計(jì)兩個(gè)實(shí)體(程序),分別調(diào)試。實(shí)體結(jié)構(gòu)體1結(jié)構(gòu)體2VS11/24/202334章節(jié)目錄3.1硬件描述語言概述3.2VHDL語言程序結(jié)構(gòu)

VHDL語法基礎(chǔ)3.4VHDL常用語句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述11/24/2023353.3VHDL語法基礎(chǔ)3.3.1標(biāo)識(shí)符和保留字3.2.2數(shù)據(jù)對象3.2.3數(shù)據(jù)類型3.3.4數(shù)據(jù)類型的轉(zhuǎn)換3.3.5運(yùn)算操作符五方面內(nèi)容11/24/2023363.3.1標(biāo)識(shí)符和保留字規(guī)則:由字母數(shù)字下劃線組成必須以英文字母開頭最后一個(gè)字符不能是下劃線不允許出現(xiàn)連續(xù)兩個(gè)下劃線保留字不能作一般的標(biāo)識(shí)符不區(qū)別大小寫1.標(biāo)識(shí)符即由用戶起的實(shí)體名、結(jié)構(gòu)體名、信號名、變量名…..11/24/2023372.保留字表3-3常用保留字保留字即VHDL語言中已使用的關(guān)鍵字。保留字不能用作標(biāo)識(shí)符。11/24/20233811/24/2023393.3.2數(shù)據(jù)對象對象有四種類型:常數(shù)信號變量文件最常用11/24/2023403.3.2數(shù)據(jù)對象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ù)值11/24/2023412.變量variable變量名:數(shù)據(jù)類型[約束條件][:=表達(dá)式];【變量聲明格式】使用前必須聲明【例】VARIABLEresult:STD_LOGIC:=‘0’;VARIABLEx,y,z:INTEGER;VARIABLEcount:INTEGERRANGE0TO255:=10;初始值聲明時(shí)可帶初始值約束條件11/24/202342【變量賦值格式】變量名:=表達(dá)式;【例】result:=‘1’;x:=y+3;注意賦值符號:=表達(dá)式的數(shù)據(jù)類型和變量的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。11/24/2023433.信號SIGNAL信號名:數(shù)據(jù)類型[約束條件][:=表達(dá)式];【信號聲明格式】使用前必須聲明【例】SIGNALfirst_sig:INTEGER;SIGNALsys_clk:BIT:=‘0’;SIGNALsecond_sig,third_sig:INTEGER:=10;SIGNALs:INTEGERRANGE0TO20:=15;初值聲明時(shí)可帶初始值約束條件11/24/202344【信號賦值格式】信號名<=表達(dá)式;【例】a<=bAFTER10ns;a<=expression_b;a<=expression_bAFTER10ns;注意信號說明中的賦初值符號是:=,而信號賦值語句中的賦值符號為<=。表達(dá)式的數(shù)據(jù)類型和信號的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號賦值可以添加延時(shí)信息。11/24/202345變量是局部的,信號是全局的;變量只能用在進(jìn)程內(nèi),信號沒有此限制。若變量用于進(jìn)程之外,必須將該變量先賦給一個(gè)相同類型的信號,用信號在進(jìn)程之間傳遞數(shù)據(jù)。信號可以延遲,變量不能。變量不能用于硬件連線,常用在高層次建模的計(jì)算中。進(jìn)程對信號敏感而對變量不敏感。賦值符號不一樣;信號和變量的區(qū)別11/24/2023463.3.3數(shù)據(jù)類型Scalartypes標(biāo)量型Composite復(fù)合型Access存取型File文件型Protected保護(hù)型5種類型每一種中又有若干子類型和具體數(shù)據(jù)類型。11/24/202347已經(jīng)在標(biāo)準(zhǔn)數(shù)據(jù)包STANDARD和STD_LOGIC_1164中定義好的常用的數(shù)據(jù)類型如下:整數(shù)、實(shí)數(shù)、BIT、BIT_VECTOR、布爾量、字符、字符串、物理型、錯(cuò)誤等級、自然數(shù)和正整數(shù)本節(jié)介紹以上數(shù)據(jù)類型的特點(diǎn)。STD_LOGIC、STD_LOGIC_VECTORSTANDARDSTD_LOGIC_116411/24/2023483.3.3數(shù)據(jù)類型整數(shù)(INTEGER)(屬于:標(biāo)量型→整數(shù)型,在STANDARD程序包中

)整數(shù)的表示范圍為-(231-1)~(231-1)?!纠縑ARIABLEa:INTEGER:=15;SIGNALs:INTEGERRANGE0TO20:=15;INTEGER型數(shù)據(jù)值不用引號括起來11/24/2023492.實(shí)數(shù)(REAL)(屬于:標(biāo)量型→浮點(diǎn)型,在STANDARD程序包中)實(shí)數(shù)的表示范圍為-1.0E38~+1.0E38。實(shí)數(shù)的書寫方式舉例:某些數(shù)即可以用整數(shù)表示,也可以用實(shí)數(shù)表示,如1.0是實(shí)數(shù),1是整數(shù),兩者數(shù)值相同但類型不同。REAL型數(shù)據(jù)值不用引號括起來11/24/2023503.BIT(屬于:標(biāo)量型→枚舉型)和BIT_VECTOR(屬于:復(fù)合型→數(shù)組型)在STANDARD程序包中BIT又稱位型,其值僅有2個(gè),’0’和’1’;BIT_VECTOR又稱位矢量,是BIT的數(shù)組。例:BIT型數(shù)值要用單引號括起來,BIT_VECTOR型數(shù)值要用雙引號括起來。SIGNALa:BIT;SIGNALlow_byte:BIT_VECTOR(0to7);a<=‘1’;Low_byte<=“00000101”;11/24/2023514.布爾型(BOOLEAN)(屬于:標(biāo)量型→枚舉型,在STANDARD程序包中)BOOLEAN的值僅有2個(gè),TRUE和FALSE。11/24/2023525.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ù)值要用單引號括起來,STD_LOGIC_VECTOR型數(shù)值要用雙引號括起來。例:SIGNALa:STD_LOGIC;a<=‘1’;11/24/2023536.字符(CHARACTER)(屬于:標(biāo)量型→枚舉型)和字符串(STRING)(屬于:復(fù)合型→數(shù)組型)在STANDARD程序包中CHARACTER型數(shù)值要用單引號括起來。STRING型數(shù)值要用雙引號括起來。例:’A’,’a’,’1’,’2’。“ABC”,“HELLO”。11/24/2023547.時(shí)間型( TIME)(屬于:標(biāo)量型→物理型,在STANDARD程序包中)GENERIC(m:TIME:=5ns);例:11/24/2023558.錯(cuò)誤等級(SEVERITY_LEVEL)(屬于:標(biāo)量型→枚舉型,在STANDARD程序包中)SEVERITY_LEVEL的值有4個(gè),NOTE,WARNING,ERROR,FAILURE。注意,警告,錯(cuò)誤,失敗。11/24/2023569.自然數(shù)(NATURAL)(標(biāo)量型→整數(shù)型→整數(shù))和正整數(shù)(POSITIVE)(標(biāo)量型→整數(shù)型→整數(shù))在STANDARD程序包中NATURAL和POSITIVE是INTEGER的子類型。11/24/202357以上是已經(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ù)類型定義;【格式】11/24/202358TYPEalu_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ù)類型定義11/24/2023593.3.4數(shù)據(jù)類型的轉(zhuǎn)換自學(xué)11/24/2023603.3.5操作符5類操作符邏輯運(yùn)算關(guān)系運(yùn)算算術(shù)運(yùn)算并置運(yùn)算移位運(yùn)算11/24/202361可以對BIT,BOOLEAN,STD_LOGIC,STD_LOGIC_VECTOR等類型數(shù)據(jù)進(jìn)行邏輯運(yùn)算。1.邏輯運(yùn)算符ANDORNANDNORXORXNORNOT與或與非或非異或同或非11/24/2023622.算術(shù)運(yùn)算符+–+–*/MODREMABS**加減正號負(fù)號乘除取模取余取絕對值平方通常取模運(yùn)算也叫取余運(yùn)算,它們返回結(jié)果都是余數(shù)。rem和mod唯一的區(qū)別在于:當(dāng)x和y的正負(fù)號一樣的時(shí)候,兩個(gè)函數(shù)結(jié)果是等同的;當(dāng)x和y的符號不同時(shí),rem取余函數(shù)結(jié)果的符號和x的一樣,而mod求模和y一樣。11/24/2023633.關(guān)系運(yùn)算符=/=<<=>>=等于不等于小于小于等于大于大于等于11/24/2023644.并置運(yùn)算符&

并置sel<=b&a;例:若b=‘1’,a=‘0’,則sel=“10”Y<=‘H’&’e’&’l’&’l’&’o’Y=“Hello”11/24/2023653.3.5運(yùn)算操作符5.移位運(yùn)算符SLLSRLSLASRAROLROR邏輯左移邏輯右移算術(shù)左移算術(shù)右移循環(huán)左移循環(huán)右移補(bǔ)零補(bǔ)首位例:aSLL311/24/2023663.3.5運(yùn)算操作符運(yùn)算符的優(yōu)先級11/24/202367章節(jié)目錄3.1硬件描述語言概述3.2VHDL語言程序結(jié)構(gòu)3.3VHDL語法基礎(chǔ)3.4VHDL常用語句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述11/24/2023683.4VHDL常用語句仿真時(shí):兩大類:并行語句順序語句并行語句同時(shí)并行執(zhí)行,順序語句按先后次序執(zhí)行。11/24/2023693.4.1并行語句ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[定義語句;]BEGIN

<功能描述語句(并行處理語句);>END<結(jié)構(gòu)體名>;并行語句用在結(jié)構(gòu)體的并行處理語句部分11/24/202370進(jìn)程語句并行信號賦值語句元件例化語句塊語句過程調(diào)用語句參數(shù)傳遞語句生成語句并行斷言語句常用ARCHITECTURE<結(jié)構(gòu)體名>OF<實(shí)體名>IS[定義語句;]BEGIN進(jìn)程語句并行信號賦值語句元件例化語句END<結(jié)構(gòu)體名>;11/24/202371ARCHITECTURECOMPONENTENDCOMPONENT;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)程元件例化并行信號賦值語句并行信號賦值語句并行信號賦值語句11/24/2023721.進(jìn)程語句【格式】[進(jìn)程標(biāo)號:]PROCESS[敏感信號表][IS][進(jìn)程內(nèi)部變量說明部分;]BEGIN<順序語句部分;>ENDPROCESS[進(jìn)程標(biāo)號];進(jìn)程語句是最主要的并行語句,它在VDHL程序設(shè)計(jì)中使用頻率最高,也是最能體現(xiàn)硬件描述語言的一條語句。11/24/202373【例3-7】帶異步復(fù)位功能的D觸發(fā)器的VHDL描述。11/24/202374當(dāng)敏感信號發(fā)生變化時(shí),執(zhí)行進(jìn)程。當(dāng)執(zhí)行完最后一個(gè)語句時(shí),回到第一個(gè)語句,等待下一次敏感信號變化。一個(gè)結(jié)構(gòu)體中可以有多個(gè)進(jìn)程,進(jìn)程之間是并行的。仿真時(shí)進(jìn)程內(nèi)部各條語句是順序執(zhí)行的。進(jìn)程語句說明部分可以說明需要的局部變量。【說明】11/24/2023752.并行信號賦值語句并發(fā)信號賦值語句條件信號賦值語句選擇信號賦值語句①并發(fā)信號賦值語句例:q1<=a+b;q2<=a*b;當(dāng)a或b有變化時(shí),兩條語句同時(shí)執(zhí)行。模擬了兩個(gè)加法器和乘法器電路。+*abq1q2注意前提是信號賦值語句放在進(jìn)程外;若放在進(jìn)程中,則變成了順序執(zhí)行的語句。當(dāng)信號賦值語句放在進(jìn)程外時(shí),就是并發(fā)信號賦值語句。11/24/202376②條件信號賦值語句【格式】目標(biāo)信號<=表達(dá)式1WHEN條件1ELSE 表達(dá)式2WHEN條件2ELSE 表達(dá)式3WHEN條件3ELSE …… 表達(dá)式n-1WHEN條件n-1ELSE 表達(dá)式n;當(dāng)條件1滿足時(shí),目標(biāo)信號=表達(dá)式1當(dāng)條件2滿足時(shí),目標(biāo)信號=表達(dá)式2……【功能】條件判斷是按順序執(zhí)行的,先判斷條件1滿足否,再判斷條件2滿足否。11/24/202377【例3-11】用條件信號賦值語句設(shè)計(jì)4選1數(shù)據(jù)選擇器。語句之間是并行的11/24/202378③選擇信號賦值語句【格式】WITH選擇條件表達(dá)式SELECT目標(biāo)信號<=表達(dá)式1WHEN選擇條件1 表達(dá)式2WHEN選擇條件2 表達(dá)式3WHEN選擇條件3 …… 表達(dá)式nWHEN選擇條件n;表達(dá)式n+1WHENOTHERS;當(dāng)選擇條件表達(dá)式值=條件1時(shí),目標(biāo)信號=表達(dá)式1當(dāng)選擇條件表達(dá)式值=條件2時(shí),目標(biāo)信號=表達(dá)式2……【功能】條件判斷是同時(shí)進(jìn)行的,無優(yōu)先級。11/24/202379【例3-12】用選擇信號賦值語句設(shè)計(jì)4選1數(shù)據(jù)選擇器。該例既使用了條件信號賦值語句也使用了選擇信號賦值語句11/24/2023803.元件例化語句元件例化語句是最能體現(xiàn)層次化設(shè)計(jì)思想的語句。例如設(shè)計(jì)由D觸發(fā)器構(gòu)成的移位寄存器,可以將設(shè)計(jì)分成2層,底層描述D觸發(fā)器,頂層調(diào)用底層描述的D觸發(fā)器。在頂層中調(diào)用底層設(shè)計(jì)時(shí),就要用到元件例化語句。層次化設(shè)計(jì)簡單說即將整個(gè)系統(tǒng)分成不同的層次,頂層設(shè)計(jì)可以調(diào)用底層設(shè)計(jì)。11/24/202381【格式】COMPONENT<元件名>[GENERIC類屬說明;]PORT<端口說明>;ENDCOMPONENT;<標(biāo)號名:><元件名>[GENERICMAP(參數(shù)映射)]PORTMAP(端口映射);定義元件:把底層設(shè)計(jì)定義成一個(gè)元件元件例化:調(diào)用定義好的元件,并說明該元件與其他信號的連接關(guān)系。11/24/202382【例3-14】用元件例化語句描述由D觸發(fā)器構(gòu)成的移位寄存器。dff是另一個(gè)程序?qū)?yīng)的電路,這里將其定義成一個(gè)元件,并用其構(gòu)成一個(gè)移位寄存器。dffdqclk11/24/202383dffs0s1clkdff1dffs1s2clkdff2dffs2s3clkdff3dffs3s4clkdff4dffas1dffs2dffs3dffbclks0s411/24/202384元件名必須與底層文件的實(shí)體名一致。端口映射部分要指明元件內(nèi)部信號與外部信號的連接關(guān)系,其順序必須與端口說明部分的順序一致。一個(gè)元件定義部分可以對應(yīng)多個(gè)元件例化部分,相當(dāng)于調(diào)用了多個(gè)元件而已。元件標(biāo)號名可以幫助標(biāo)示不同的元件?!菊f明】11/24/2023854.生成語句非重點(diǎn)不講11/24/202386ARCHITECTURECOMPONENTENDCOMPONENT;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)體名>;各部分之間是并行的11/24/2023873.4.2順序語句順序語句是相對于并行語句而言的。順序語句的特點(diǎn)是:每一條順序語句的執(zhí)行順序是與它們的書寫順序相一致的。順序語句只能出現(xiàn)在進(jìn)程和子程序中。[進(jìn)程標(biāo)號:]PROCESS[敏感信號表]IS[進(jìn)程語句說明部分;]BEGIN<順序語句部分;>ENDPROCESS[進(jìn)程標(biāo)號];11/24/202388順序賦值語句WAIT語句IF語句CASE語句LOOP語句EXIT語句RETURN語句NULL語句REPORT語句斷言語句常用11/24/202389變量賦值語句信號賦值語句①變量賦值語句【格式】目標(biāo)變量:=表達(dá)式注意賦值符號:=表達(dá)式的數(shù)據(jù)類型和變量的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。變量賦值限定在進(jìn)程、函數(shù)、過程等順序區(qū)域內(nèi)。變量賦值無時(shí)間特性。變量值具有局部性。只在進(jìn)程內(nèi)有效。count:=count+1;【例】11/24/202390②信號賦值語句【格式】目標(biāo)信號<=表達(dá)式信號賦值語句中的賦值符號為<=。表達(dá)式的數(shù)據(jù)類型和信號的類型必須一致。表達(dá)式可以是運(yùn)算表達(dá)式也可以是具體數(shù)值。信號賦值可以添加延時(shí)信息。用在進(jìn)程中才是順序語句S<=aXORbXORc;【例】當(dāng)信號賦值語句放在進(jìn)程內(nèi)時(shí),就是順序語句。放在進(jìn)程外時(shí)就是并行語句。11/24/202391【格式】WAIT --無限等待WAITON --敏感信號變化WAITUNTIL --條件滿足WAITFOR --時(shí)間到【功能】進(jìn)程在仿真運(yùn)行中總是處于兩種狀態(tài)之一:執(zhí)行或掛起。進(jìn)程狀態(tài)的變化可受WAIT語句的控制,當(dāng)進(jìn)程執(zhí)行到WAIT語句時(shí)就將被掛起,并設(shè)置好再次執(zhí)行的條件??梢栽O(shè)置4種條件。11/24/202392IF語句是一種條件控制語句,是常用語句之一。IF語句只能用在進(jìn)程中。三種形式IF…THEN語句IF…THEN…ELSE語句IF…THEN…ELSIF…ELSE語句網(wǎng)上流傳一句話:IF、CASE打天下11/24/202393【格式】IF<條件>THEN<順序處理語句>;ENDIF;①IF…THEN語句當(dāng)條件滿足時(shí),執(zhí)行THEN后的語句,否則,不執(zhí)行【功能】條件滿足?順序處理語句YN條件不完整,常用來實(shí)現(xiàn)時(shí)序電路11/24/202394順序處理語句dClkq當(dāng)條件滿足時(shí),d的值賦給q,否則,q值不變【例3-17】用IF…THEN語句描述D觸發(fā)器功能。11/24/202395【格式】IF<條件>THEN<順序處理語句1>;ELSE<順序處理語句2>;ENDIF;兩分支②IF…THEN…ELSE語句當(dāng)條件滿足時(shí),執(zhí)行THEN后的語句,否則,執(zhí)行ELSE后的語句。條件完整,常用來實(shí)現(xiàn)組合電路?!竟δ堋織l件滿足?順序處理語句2順序處理語句1YN11/24/202396【例】用IF…THEN…ELSE語句描述二選一數(shù)據(jù)選擇器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:INSTD_LOGIC;f:OUTSTD_LOGIC);ENDmux;11/24/202397ARCHITECTUREbehaOFmuxISBEGINPROCESS(d0,d1,sel)BEGINIF(sel=‘0’)THENf<=d0;ELSEf<=d1;ENDIF;ENDPROCESS;ENDbeha;Sel=0時(shí),f=d0;Sel=1時(shí),f=d1;11/24/202398【格式】IF<條件1>THEN<順序處理語句1>;ELSIF<條件2>THEN<順序處理語句2>;ELSE<順序處理語句3>;ENDIF;多分支③IF…THEN…ELSIF…ELSE語句當(dāng)條件1滿足時(shí),執(zhí)行THEN后的順序語句1,否則,當(dāng)條件2滿足時(shí),執(zhí)行THEN后的順序語句2,否則執(zhí)行ELSE后的順序語句3。條件完整,常用來實(shí)現(xiàn)組合電路?!竟δ堋?1/24/202399條件1優(yōu)先級高條件2優(yōu)先級低還可以再分支條件1滿足?順序處理語句2順序處理語句1YN條件2滿足?順序處理語句3YN11/24/2023100【例】數(shù)據(jù)選擇器的VHDL程序。(P137)注意:條件要完整,最后必須加ELSEf<=‘0’,否則會(huì)綜合出寄存器。11/24/20231013.4.2順序語句條件不完整的綜合結(jié)果有寄存器11/24/2023102條件完整的綜合結(jié)果無寄存器11/24/20231034. CASE語句【格式】CASE表達(dá)式ISWHEN取值1=>順序處理語句1;WHEN取值2=>順序處理語句2;…….WHENOTHERS=>順序處理語句n;ENDCASE;CASE語句也是常用語句之一,具有條件控制功能。也只能用在進(jìn)程中。11/24/2023104順序處理語句1滿足條件1順序處理語句2滿足條件2順序處理語句4都不滿足滿足條件3順序處理語句3順序處理語句1滿足條件1幾個(gè)條件是同等級的11/24/2023105【例3-19】用CASE語句實(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;11/24/2023106PROCESS(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;11/24/2023107CASE語句的各條件表達(dá)式是同時(shí)執(zhí)行的。條件表達(dá)式的所有情況都要列舉到??捎肳HENOTHERS描述?!菊f明】11/24/20231085. LOOP語句【格式】FOR循環(huán)變量IN取值范圍LOOP<順序處理語句>;ENDLOOP;LOOP是循環(huán)語句,有兩種①FOR…LOOP②WHILE…LOOP①FOR…LOOP若循環(huán)變量在取值范圍內(nèi)則執(zhí)行循環(huán),否則結(jié)束循環(huán)?!竟δ堋?1/24/2023109【例3-20】用FOR…LOOP語句描述的偶校驗(yàn)發(fā)生器。設(shè)a=11001110,則tmp=1,奇數(shù)個(gè)1;設(shè)a=11001100,則tmp=0,偶數(shù)個(gè)1。11/24/2023110【格式】WHILE條件LOOP<順序處理語句>;ENDLOOP;若條件為真則執(zhí)行循環(huán),若為假則結(jié)束循環(huán)。②WHILE…LOOP【功能】11/24/2023111【例3-21】用WHILE…LOOP語句描述的偶校驗(yàn)發(fā)生器。功能和例3-20相同注意y<=tmp;只能寫在進(jìn)程內(nèi),因?yàn)閠mp是變量,在進(jìn)程內(nèi)局部有效。11/24/2023112歸納一下前面介紹的IF語句、CASE語句、LOOP語句,有一個(gè)共同的特點(diǎn),即不是對電路的具體結(jié)構(gòu)進(jìn)行描述,而是對電路的功能和行為進(jìn)行了描述,采用的是類似C語言的高級描述語言,我們把這種描述方式稱為行為描述方式。VHDL語言的三種描述方式數(shù)據(jù)流描述方式結(jié)構(gòu)描述方式行為描述方式后面介紹11/24/20231136. EXIT語句【格式】EXIT[LOOP標(biāo)號];EXIT[LOOP標(biāo)號][WHEN條件];程序執(zhí)行到該語句處,無條件跳出。程序執(zhí)行到LOOP標(biāo)號處,無條件跳出。條件滿足時(shí),執(zhí)行到該語句處跳出。條件滿足時(shí),執(zhí)行到LOOP標(biāo)號處跳出。除正常結(jié)束循環(huán)外,還可利用EXIT語句退出。11/24/20231147. 斷言語句(ASSERT)【格式】assert條件[REPORT表達(dá)式][SEVERITY表達(dá)式]斷言語句主要用于程序仿真、調(diào)試中的人機(jī)會(huì)話,它可以給出一個(gè)文字串作為警告和錯(cuò)誤的信息。【功能】如果斷言條件不滿足,則順序執(zhí)行REPORT語句,輸出用雙引號括起來的以文字串表示的錯(cuò)誤信息,同時(shí)還要報(bào)告錯(cuò)誤信息的嚴(yán)重級別。11/24/2023115【例3-22】使用ASSERT語句的RS觸發(fā)器的VHDL程序。注意在RS觸發(fā)器中,不允許兩個(gè)輸入都為1。該程序使用斷言語句,一旦出現(xiàn)兩個(gè)輸入r、s都為1的情況,則發(fā)出錯(cuò)誤提示。11/24/2023116VHDL語言的三種描述方式數(shù)據(jù)流描述方式(RTL級描述方式)結(jié)構(gòu)描述方式行為描述方式主要采用邏輯關(guān)系式的描述方式,說明了數(shù)據(jù)的流向主要采用元件例化語句,說明元件之間的連接關(guān)系主要采用IF、CASE、WAIT、LOOP等高級語言,說明電路的功能和行為11/24/2023117數(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)系式的描述方式,說明了數(shù)據(jù)的流向11/24/2023118結(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;11/24/2023119主要采用元件例化語句,說明元件之間的連接關(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;11/24/2023120LIBRARYIEEE;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等高級語言,說明電路的功能和行為11/24/2023121實(shí)際程序中往往幾種描述方式混合使用,初學(xué)階段不必過于在意所采用的描述方式,知道有這種說法即可。11/24/2023122章節(jié)目錄3.1硬件描述語言概述3.2VHDL語言程序結(jié)構(gòu)3.3VHDL語法基礎(chǔ)3.4VHDL常用語句3.5組合電路的VHDL描述3.6時(shí)序電路的VHDL描述11/24/20231231.【例4-3】判定電路的VHDL程序。(P123)本例使用了條件賦值語句同學(xué)們可以嘗試用CASE語句實(shí)現(xiàn)11/24/2023124綜合結(jié)果11/24/20231252.【例】4-2線優(yōu)先編碼器的VHDL程序。(P126)本例使用了ifthenelsifthen語句利用IF條件的優(yōu)先級很方便地實(shí)現(xiàn)了優(yōu)先編碼的功能如果用CASE語句則只能實(shí)現(xiàn)普通編碼器的功能Then后面的順序語句用分號隔開a(3)a(2)a(1)a(0)yeo1XXX11101XX101001X0110001001000000011/24/2023126條件不完整,缺少最后一條ELSE…綜合時(shí)會(huì)綜合出寄存器,RTL圖說明了這一點(diǎn)?!境绦虼嬖诘膯栴}】在ENDIF前加一句:ELSEy<="00";eo<='0';就不會(huì)產(chǎn)生寄存器11/24/20231273.【例】74138的VHDL程序。(P130)使用ifthenelse、case語句)s1s2s3a(2)a(1)a(0)f(0)f(1)f(2)f(3)f(4)f(5)f(6)f(7)10000011111111100001101111111000101101111110001111101111100100111101111001011111101110011011111101100111111111100XXXXX1111111111XXXX111111111X1XXX1111111111/24/20231283.【例】74138的VHDL程序。(P130)使用ifthenelse、case語句)11/24/20231294.【例】7448的VHDL程序。(P135)(ifthenelsifthenelse語句)11/24/2023130條件不完整,缺少最后一條ELSE…綜合時(shí)會(huì)綜合出寄存器,RTL圖說明了這一點(diǎn)?!境绦虼嬖诘膯栴}】11/24/2023131綜合電路局部寄存器【修改】在ENDIF前加一句:ELSEsegout<="0000000";rbo<='1';就不會(huì)產(chǎn)生寄存器11/24/20231325.【例】1-4數(shù)據(jù)分配器的VHDL程序。(P136)(ifthenelsifthenelse語句)該程序仍然出現(xiàn)條件不完整的情況,結(jié)果會(huì)綜合出寄存器。修改程序,在ENDIF前加ELSEw(0)<=‘0’;w(1)<=‘0’;w(2)<=‘0’;w(3)<=‘0’;則寄存器消失。11/24/20231336.【例】4選1數(shù)據(jù)選擇器的VHDL程序。(P137)(ifthenelsifthenelse語句)和上例同樣的問題,綜合出了寄存器,加ELSEf<=‘0’語句修改。11/24/20231347.

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論