




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章VHDL設(shè)計初步§3.1
VHDL程序基本結(jié)構(gòu)§3.2
VHDL文字規(guī)則§3.3
VHDL的數(shù)據(jù)類型§3.4
VHDL的數(shù)據(jù)對象§3.5
VHDL的操作符§3.6設(shè)計實例§3.1VHDL程序基本結(jié)構(gòu)庫(Library)、程序包(Package)實體(Entity)結(jié)構(gòu)體(Architecture)配置(Configuration)VHDL程序基本結(jié)構(gòu):庫、程序包實體(Entity)配置(Configuration)結(jié)構(gòu)體(Architecture)進(jìn)程或其它并行結(jié)構(gòu)庫—IEEE庫
IEEE庫是VHDL設(shè)計中最常用的庫,它包含有IEEE標(biāo)準(zhǔn)的程序包和其他一些支持工業(yè)標(biāo)準(zhǔn)的程序包。IEEE庫中的標(biāo)準(zhǔn)程序包主要有:STD_LOGIC_1164、NUMERIC_BIT和NUMERIC_STD程序包。其中STD_LOGIC_1164是最重要且最常用的程序包。此外,還有些程序包雖非IEEE標(biāo)準(zhǔn),但已成為工業(yè)標(biāo)準(zhǔn),從而加入到IEEE庫中。最常用的是Synopsys公司的STD_LOGIC_ARITH、STD_LOGIC_SIGNED、STD_LOGIC_UNSIGNED。一般,基于FPGA/CPLD的開發(fā),IEEE庫中的四個程序包STD_LOGIC_1164、STD_LOGIC_ARITH、STD_LOGIC_SIGNED和STD_LOGIC_UNSIGNED已經(jīng)夠用。庫—STD庫
VHDL定義了兩個標(biāo)準(zhǔn)程序包,即STANDARD和TEXTIO(文件輸入/輸出)程序包,它們都收入在STD庫中,可隨時調(diào)用。由于STD庫符合VHDL語言標(biāo)準(zhǔn),在應(yīng)用中不必用打開庫語句。即
LIBRARY
STD;
USE
STD.STANDARD.ALL是不必要的。庫—WORK庫
WORK庫是用戶的VHDL設(shè)計的現(xiàn)行工作庫,用于存放用戶設(shè)計和定義的一些設(shè)計單元和程序包。WORK庫自動滿足VHDL語言標(biāo)準(zhǔn),在實際調(diào)用中,也不必顯示預(yù)先說明,即不必在VHDL程序中明確打開并指定。基于VHDL所要求的WORK庫的基本概念,利用VHDL進(jìn)行設(shè)計時,不允許在根目錄下進(jìn)行,而是必須為此設(shè)定一個文件夾,用于保存所有此項目的設(shè)計文件,VHDL綜合器將此文件默認(rèn)為WORK庫。還要注意的是,工作庫并不是這個文件夾的名字,而是一個邏輯名。綜合器將指示器指向該文件夾的路徑。庫—VITAL庫
VITAL程序包也已成為IEEE標(biāo)準(zhǔn)。使用VITAL庫,可以提高VHDL門級時序模擬精度,因而只在VHDL仿真器中使用。庫中包含時序程序包VITAL_TIMIGN和VITAL_PRIMITIVES。但在實際中,由于各FPGA/CPLD的生產(chǎn)廠商的適配工具都能為各自的芯片生成帶時序信息的VHDL門級網(wǎng)表,因而一般并不需要VITAL庫中的程序包。庫的用法例:
LIBRARY
IEEE;
USE
IEEE.STD_LOGIC_1164.STD_ULOGIC;
USE
IEEE.STD_LOGIC_1164.RISING_EDGE;表示向當(dāng)前設(shè)計實體開放了IEEE.STD_LOGIC_1164程序包中的RISING_EDGE函數(shù),但由于此函數(shù)要用到IEEE.STD_ULOGIC,所以在其前面加了一條USE語句,開放同一程序包中的這一數(shù)據(jù)類型。定義程序包的一般語句結(jié)構(gòu)如下:
PACKAGE程序包名IS--程序包首程序包首說明部分END程序包名;PACKAGE程序包名IS程序包體說明部分及包體內(nèi)容--程序包體END程序包名;
程序包的結(jié)構(gòu)由程序包的說明部分(即程序包首)和程序包的內(nèi)容(即程序包體)兩部分組成。程序包首可獨立定義和使用。其中的說明有數(shù)據(jù)類型說明、信號說明、子程序說明及元件說明等。在程序包結(jié)構(gòu)中,程序包體并不是必需的;一個完整的程序包中,程序包首名與程序包體名是同一個名字。程序包體將包括在程序包首中已定義的子程序的子程序體中。程序包體說明部分的組成內(nèi)容可以是USE語句(即允許對其他程序包的調(diào)用)、子程序定義、子程序體、數(shù)據(jù)類型說明子類型說明和常數(shù)說明等。常用的預(yù)定義的程序包有:STD_LOGIC_1164程序包:最常用的程序包,是IEEE的標(biāo)準(zhǔn)程序包。其中最常用的兩個數(shù)據(jù)類型是:STD_LOGIC和STD_LOGIC_VECTOR。STD_LOGIC_ARITH程序包:在STD_LOGIC_1164上擴(kuò)展了三個數(shù)據(jù)類型:UNSIGNED、SIGNED和SMALL_INTSTD_LOGIC_UNSIGNED和STD_LOGIC_SIGNED程序包:Synopsys公司的程序包,都預(yù)先編譯在IEEE庫中。這些程序包重載了可用于INTEGER型及STD_LOGIC和STD_LOGIC_VECTOR型混合運算的運算符,并定義了STD_LOGIC_VECTOR型到INTEGER型的轉(zhuǎn)換函數(shù)。 STANDARD和TEXTIO程序包:兩者都是STD庫中的預(yù)編譯程序包。STDNDARD定義了許多基本的數(shù)據(jù)類型、子類型和函數(shù)。TEXTIO程序包定義了文件操作的許多類型和子程序,主要供仿真器使用。在使用前需加語句USESTD.TEXTIO.ALL。實體(Entity)—P62實體由實體聲明部分和結(jié)構(gòu)體組成。實體聲明部分指定了設(shè)計單元的輸入/輸出端口或引腳,它是設(shè)計實體對外的一個通信界面,是外界可以看到的部分;結(jié)構(gòu)體用來描述設(shè)計實體的邏輯結(jié)構(gòu)和邏輯功能,它由VHDL語句構(gòu)成,是外界看不到的部分。一個實體可以多個結(jié)構(gòu)體。實體聲明部分的語句格式為:
ENTITY實體名IS
[GENERIC(類屬表);][PORT(端口表);]END實體名;實體(Entity)—參數(shù)傳遞說明語句(P82)參數(shù)傳遞說明語句(類屬參數(shù)聲明)必須放在端口聲明之前。用于指定矢量位數(shù)、器件延遲時間等參數(shù)。其格式為:
GENERIC([常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]{;常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]});
如:
GENERIC(m:TIME:=1.0ns);聲明m是一個值為1.0ns的時間參數(shù)【例9-1】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYandnISGENERIC(n:INTEGER);--定義類屬參量及其數(shù)據(jù)類型PORT(a:INSTD_LOGIC_VECTOR(n-1DOWNTO0);--用類屬參量限制矢量長度c:OUTSTD_LOGIC);END;ARCHITECTUREbehavOFandnISBEGIN
PROCESS(a)VARIABLEint:STD_LOGIC;BEGINint:='1';FORiINa'LENGTH-1DOWNTO0LOOP--循環(huán)語句IFa(i)='0'THENint:='0';ENDIF;ENDLOOP;c<=int;ENDPROCESS;
END;
u1:andnGENERICMAP(n=>2)--參數(shù)傳遞映射語句,定義類屬變量,n賦值為2PORTMAP(a(0)=>d1,a(1)=>d2,c=>q1);u2:andnGENERICMAP(n=>5)--定義類屬變量,n賦值為5PORTMAP(a(0)=>d3,a(1)=>d4,a(2)=>d5,a(3)=>d6,a(4)=>d7,c=>q2);
END;
實體(Entity)—參數(shù)傳遞映射語句(P227)參數(shù)傳遞映射語句描述相應(yīng)元件類屬參數(shù)間的銜接和傳送方式??捎糜谠O(shè)計從外部端口改變元件內(nèi)部參數(shù)或結(jié)構(gòu)規(guī)模的元件。其語句格式為:
GENERICMAP(類屬表)
【例9-4】LIBRARYIEEE;--頂層設(shè)計USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_arith.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYaddersISGENERIC(msb_operand:INTEGER:=15;msb_sum:INTEGER:=15);PORT(b:INSTD_LOGIC_VECTOR(msb_operandDOWNTO0);result:OUTSTD_LOGIC_VECTOR(msb_sumDOWNTO0));ENDadders;ARCHITECTUREbehaveOFaddersISCOMPONENTaddernPORT(a,b:INSTD_LOGIC_VECTOR;result:OUTSTD_LOGIC_VECTOR);ENDCOMPONENT;SIGNALa:STD_LOGIC_VECTOR(msb_sum/2DOWNTO0);SIGNALtwoa:STD_LOGIC_VECTOR(msb_operandDOWNTO0);BEGINtwoa<=a&a;U1:addernPORTMAP(a=>twoa,b=>b,result=>result);U2:addernPORTMAP(a=>b(msb_operanddowntomsb_operand/2+1),b=>b(msb_operand/2downto0),result=>a);ENDbehave;
實體(Entity)—端口說明語句(P60)端口聲明是描述器件的外部接口信號的聲明,相當(dāng)于器件的引腳聲明,端口聲明語句格式為:
PORT(端口名{,端口名}:端口模式數(shù)據(jù)類型名);
…端口名{,端口名}:端口模式數(shù)據(jù)類型名);端口模式包括:
IN—輸入;
OUT—輸出;
INOUT—雙向,既可以用于輸入出可用于輸出;
BUFFER—具有讀功能的輸出。
BUFFER功能與INOUT類似,區(qū)別在于當(dāng)需要輸入數(shù)據(jù)時,只允許內(nèi)部回讀輸出的信號,即反饋,該信號由內(nèi)部產(chǎn)生。
inout
和
buffer的區(qū)別【例3-1】P58
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;
ENTITY
mux21aIS
PORT(a,b:INBIT;
s:INBIT;
y:OUTBIT);
ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIF(s=‘1’)THENy<=a;ELSEy<=b;
ENDIF;ENDPROCESS;ENDARCHITECTUREone;實體端口實體名端口名端口模式設(shè)計實體
結(jié)構(gòu)體語句格式為:ARCHITECTURE結(jié)構(gòu)體名OF實體名IS[信號聲明語句];BEGIN[功能描述語句]ENDARCHITECTURE結(jié)構(gòu)體名;
信號聲明語句也稱為說明語句,包括在結(jié)構(gòu)體中需要說明和定義的數(shù)據(jù)對象、數(shù)據(jù)類型、元件調(diào)用聲明等等。它并非必須的。
功能描述語句在結(jié)構(gòu)本中必須給出相應(yīng)的電路功能描述語句。
【例3-1】P64
ENTITYmux21aISPORT(a,b:INBIT;s:INBIT;y:OUTBIT);ENDENTITYmux21a;ARCHITECTUREoneOFmux21aISBEGINPROCESS(a,b,s)BEGINIF(s=‘1’)THENy<=a;ELSEy<=b;ENDIF;ENDPROCESS;ENDARCHITECTUREone;結(jié)構(gòu)體結(jié)構(gòu)體名配置
配置是指將特定的結(jié)構(gòu)體與一個確定的實體相關(guān)聯(lián),為一個大型系統(tǒng)的設(shè)計提供管理和工程組織。在VHDL程序中,每個實體可以擁有多個不同的結(jié)構(gòu)體,而每個結(jié)構(gòu)體的地位是相同的,在這種情況下,可以利用配置說明為這個實體指定一個結(jié)構(gòu)體。配置語句的一般格式為:
CONFIGURATION配置名OF實體名IS配置說明
END配置名;文件取名和存盤(P65)在保存文件前,每個VHDL設(shè)計程序都必須賦給一個正確的文件名。一般,程序文件名可以由設(shè)計者任意給定,但具體取名最好與文件實體名相同;文件后綴擴(kuò)展名必須是.VHD?!?.2VHDL的文字規(guī)則數(shù)字字符串標(biāo)識符下標(biāo)名P65、P346數(shù)字(P346)整數(shù):都是十進(jìn)制的數(shù),如:
5,156E2(=15600),45_234_287(=45234287)實數(shù):帶有小數(shù)點的十進(jìn)制數(shù),如:
1.335,88_670.46,44.99E-2(=0.4499)物理量文字
60s(60秒),100m(100米)數(shù)字
以數(shù)制基數(shù)表示的文字:用這種方式表示的數(shù)由五個部分組成。第一部分是用十進(jìn)制數(shù)標(biāo)明數(shù)制進(jìn)位的基數(shù);第二部分是數(shù)制隔離符號“?!保坏谌糠质潜磉_(dá)的數(shù);第四部分是指數(shù)隔離符號“?!保坏谖宀糠质怯檬M(jìn)制表示的指數(shù)部分,此部分?jǐn)?shù)若為0可以省去如:
SIGNL
d1,d2,d3,d4,d5:INTEGERRANGE0TO255
d1<=10#170#;--十進(jìn)制表示,等于170
d2<=16#FE#;--十六進(jìn)制表示,等于254
d3<=2#1111_1110#;--二進(jìn)制表示,等于254
d4<=8#376#;--八進(jìn)制表示,等于254
d5<=16#E#E1;--十六進(jìn)制表示,等于2#1110000#,等于224字符串(P346)
字符是用單引號括起來的ASCⅡ字符,可以是數(shù)值,也可以是符號或字母。如:‘R’,‘z’
字符串是一維的字符數(shù)組,需放在雙引號中。有兩種類型的字符串:文字字符串和數(shù)位字符串。文字字符串是用雙引號括起來的一串文字,如:“ERROR”,“BB&CC”
數(shù)位字符串也稱位矢量,代表各進(jìn)制數(shù)的數(shù)組。數(shù)位字符串的表示首先要有計算基數(shù),然后將該基數(shù)表示的值放在雙引號中,基數(shù)符以“B”,“O”,“X”表示,并放在字符串的前面。其中:B:二進(jìn)制基數(shù)符號,表示二進(jìn)制位0或1,在字符串中的每位表示一個BIT。O:八進(jìn)制基數(shù)符號,在字符串中的每一個數(shù)代表一個八進(jìn)制數(shù),即代表一個3位的二進(jìn)制數(shù)。X:十六進(jìn)制基數(shù)符號(0~F)十六進(jìn)制數(shù),即一個4位的二進(jìn)制數(shù)。
例如:data1<=B“1_1101_1110”--二進(jìn)制數(shù)組,長度是9data2<=O“15”--八進(jìn)制數(shù)組,位矢數(shù)組長度是6data3<=X“AD0”--十六進(jìn)制數(shù)組,位矢數(shù)組長度是12data4<=B“101_010_101_010”--位矢數(shù)組長度是12data5<=“101_010_101_010”--表達(dá)錯誤,缺Bdata6<=“101010”--正確,略去B,不可加下劃線data7<=“0AD0”--表達(dá)錯誤,缺X標(biāo)識符(P347)
標(biāo)識符是最常用的操作符,標(biāo)識符可以是常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。其書寫應(yīng)遵守以下規(guī)則:有效的字符:26包括個大小寫英文字母,數(shù)字0~9及下劃線“_”。任何標(biāo)識符必須以英文字母開頭。必須是單一下劃線“_”,且其前后都必須有英文字母或數(shù)字。標(biāo)識符中的英語字母不分大小寫。允許包含圖形符號(回車符、換行符),也允許包含空格符。
例:
合法的標(biāo)識符:Decoder_1,State0非法的標(biāo)識符:_Decoder_1--起始為非英文字母2FFT--起始為數(shù)字Sig_#N--符號”#”不能成為標(biāo)識符的構(gòu)成Not-Ack--符號”-”不能成為標(biāo)識符的構(gòu)成RyY_RST_--標(biāo)識符的最后不能是下劃線“_”Data__BUS--標(biāo)識符中不能有雙下劃線Return--關(guān)鍵詞下標(biāo)名(P348)
下標(biāo)名用于指示數(shù)組型變量或信號的某一元素。下標(biāo)段名則用于指示數(shù)組型變量或信號的某一段元素。下標(biāo)名的語句格式如下:標(biāo)識符(表達(dá)式)其中,“標(biāo)識符”必須是數(shù)組型的變量或信號的名字;“表達(dá)式”所代表的值必須是數(shù)組標(biāo)范圍中的一個值,這個值將對應(yīng)數(shù)組中的一個元素。如果這個表達(dá)式是一個可計算的值,則此操作數(shù)可很容易的進(jìn)行綜合。如果是不可計算的,則只能在特定的情況下綜合,且耗費資源較大。
例:SIGNALa,b:BIT_VECTOR(0TO3);SIGNALm:INTEGERRANGE0TO3;SIGNALy,z:BIT;y<=a(m);--不可計算型下標(biāo)表示z<=b(3);--可計算型下標(biāo)表示其中下標(biāo)名m不可計算,而下標(biāo)名3是可計算的。§3.3VHDL的數(shù)據(jù)類型(P59、P357)VHDL要求設(shè)計實體中的每一個常數(shù)、信號、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類型。VHDL中的數(shù)據(jù)類型可以分成四大類:標(biāo)量型:包括實數(shù)類型、整數(shù)類型、枚舉類型、時間類型。復(fù)合類型:可以由小的數(shù)據(jù)類型復(fù)合而成。復(fù)合類型主要有數(shù)組型和記錄型。存取類型:為給定的數(shù)據(jù)類型的數(shù)據(jù)提供存取方式文件類型:用于提供多值存取類型這些數(shù)據(jù)類型又可分為預(yù)定義數(shù)據(jù)類型和用戶自定義類型。此處,主要講以下兩種常用的數(shù)據(jù)類型:VHDL的預(yù)定義數(shù)據(jù)類型數(shù)組類型VHDL的預(yù)定義數(shù)據(jù)類型預(yù)定義的VHDL數(shù)據(jù)類型是VHDL最常用、最基本的數(shù)據(jù)類型。這些數(shù)據(jù)類型已在IEEE庫中的標(biāo)準(zhǔn)程序包STANDARD和STD_LOGIC_1164及其它標(biāo)準(zhǔn)程序包中預(yù)先作了定義。INTEGER(整數(shù))數(shù)據(jù)類型NATURAL(自然數(shù))和POSITIVE(正整數(shù))數(shù)據(jù)類型REAL(實數(shù))數(shù)據(jù)類型BOOLEAN(布爾)數(shù)據(jù)類型BIT(位)數(shù)據(jù)類型BIT_VECTOR(位矢量數(shù)據(jù)類型)STD_LOGIC(標(biāo)準(zhǔn)邏輯位)和STD_LOGIC_VECTOR(標(biāo)準(zhǔn)邏輯位矢量)CHARACTER(字符)數(shù)據(jù)類型STRING(字符串)數(shù)據(jù)類型TIME(時間)數(shù)據(jù)類型其它預(yù)定義標(biāo)準(zhǔn)數(shù)據(jù)類型整數(shù)數(shù)據(jù)類型(INTEGER)(P82)整數(shù)包括正整數(shù)、負(fù)整數(shù)和零。整數(shù)是32位的帶符號數(shù),因此它的數(shù)值范圍是-2147483647~+2147483647,即。自然數(shù)和正整數(shù)數(shù)據(jù)類型(NATURAL)自然數(shù)是整數(shù)的一個子集,它包括0和正整數(shù)。正整數(shù)也是整數(shù)的一個子集,它是不包括0的自然數(shù)。實數(shù)數(shù)據(jù)類型(REAL)實數(shù)由正、負(fù)、小數(shù)點和數(shù)字組成。實數(shù)的范圍是:-1.0E+38~+1.0E+38。布爾數(shù)據(jù)類型(BOOLEAN)布爾數(shù)據(jù)類型包括FALSE(假)和TURE(真)。綜合器將其變?yōu)?或1信號值。位數(shù)據(jù)類型(BIT)BIT(位)數(shù)據(jù)類型包括邏輯位’0’和’1’。在VHDL中,邏輯位0和1的表達(dá)必須加單引號,否則VHDL綜合器將0和1解釋為整數(shù)數(shù)據(jù)類型INTEGER位矢量數(shù)據(jù)類型位矢量是用雙引號括起來的數(shù)字序列。位矢量數(shù)據(jù)定義語句:TYPEBIT_VECTORISARRAY(NaturalRange<>)OFBIT;其中,“<>”表示數(shù)據(jù)范圍未定界在使用位矢量時,必須注明位寬,即數(shù)組中元素個數(shù)和排列,如:SIGNALa:BIT_VECTOR(7DOWNTO0);在此句中,聲明a是由a(7)~a(0)構(gòu)成的矢量,權(quán)值最高為a(7),a(0)最低。標(biāo)準(zhǔn)邏輯位和標(biāo)準(zhǔn)邏輯位矢量STD_LOGIC(標(biāo)準(zhǔn)邏輯位)數(shù)據(jù)類型
(P63)在VHDL中,標(biāo)準(zhǔn)邏輯位數(shù)據(jù)有九種邏輯值,它們是’U’(未初始化的)、’X’(強未知的)、’0’(強0)、’1’(強1)、’Z’(高阻態(tài))、’W’(弱未知的)、’L’(弱0)、’H’(弱1)和’-’(忽略)。在STD_LOGIC數(shù)據(jù)類型中的數(shù)據(jù)是用大寫字母定義的,使用中不能用小寫字母代替。STD_LOGIC_VECTOR(標(biāo)準(zhǔn)邏輯位矢量)數(shù)據(jù)類型(P69-70)
標(biāo)準(zhǔn)邏輯矢量數(shù)據(jù)在數(shù)字電路中常用于表示總線。其定義語句為:TYPESTD_LOGIC_VECTORISARRAY(NaturalRang<>)OFSTD_LOGIC字符數(shù)據(jù)類型字符是單引號括起來的ASCⅡ碼字符,如’A’、’a’、’0’等。字符類型區(qū)分大小寫。STRING(字符串)數(shù)據(jù)類型字符串是用雙引號括起來的字符序列,也稱字符矢量或字符串?dāng)?shù)組。如“ABOY”,”10100011”時間數(shù)據(jù)類型時間是物理量數(shù)據(jù),它由整數(shù)數(shù)據(jù)和單位兩部分組成。時間TIME數(shù)據(jù)定義語句為:TYPETIMEISRANGE-2147483647TO-2147483647unitsfs;--飛秒,VHDL中的最小時間單位。ps;--皮秒,等于1000fs
…h(huán)r;--小時ENDunits;其它預(yù)定義標(biāo)準(zhǔn)數(shù)據(jù)類型(P70)
VHDL綜合工具配備的擴(kuò)展程序包中定義了一些有用的類型。如Synopsys公司在IEEE庫中加入的程序包STD_LOGIC_ARITH中定義了如下三種數(shù)據(jù)類型:無符號型(UNSIGNED)、有符號型(SIGNED)、小整型(SMALL_INT)。在使用之前,必須加入以下的語句:
LIBRARY
IEEE;
USE
IEEE.STD_LOGIC_ARITH.ALLUNSIGNED類型和SIGNED類型是用來設(shè)計可綜合的數(shù)學(xué)運算程序的重要類型,UNSIGNED用于無符號數(shù)的運算,SIGNED用于有符號數(shù)的運算。
在IEEE程序包中NUMERIC_STD和NUMEIC_BIT程序包中定義了UNSIGNED型及SIGNED型,NUMERIC_STD是針對于STD_LOGIC型定義的,而NUMERIC_BIT是針對BIT型定義的。在程序包中還定義了相應(yīng)的運算符重載函數(shù)。有些綜合器沒有附帶STD_LOGIC_ARITH程序包,此時只能用NUMERIC_STD和NUMEIC_BIT程序包。
無符號數(shù)據(jù)類型(UNSIGNEDTYPE)
UNSIGNED數(shù)據(jù)類型代表一個無符號的數(shù)值,在綜合器中,這個數(shù)值被解釋為一個二進(jìn)制數(shù),這個二進(jìn)制數(shù)的最左位是其最高位。如,十進(jìn)制的8可以表示為:UNSIGNED’(“1000”)如果要定義一個變量或信號的數(shù)據(jù)類型為UNSIGNED,則其位矢長度越長,所能代表的數(shù)值越大。如一個4位變量的最大值為15,一個8位變量的最大值則為255,0是其最小值,因為不能用UNSIGNED定義負(fù)數(shù)。例:VARIABLEvar:UNSIGNED(0TO10);SIGNALsig:UNSIGNED(5DOWNTO0)其中變量var有11位數(shù)值,最高位是var(0),而非var(10);信號sig有6位數(shù)值,最高位是sig(5)。
有符號數(shù)據(jù)類型(SIGNEDTYPE)
SIGNED數(shù)據(jù)類型表示一個有符號的數(shù)值,綜合器將其解釋為補碼,此數(shù)的最高位是符號位。例如;SIGNED’(“0101”)代表+5,5SIGNED’(“1011”)代表-5若是將上例中的var定義為SIGNED型,則數(shù)值意義就不同了,如:VARIABLEvar:SIGNED(0TO10);其中變量var有11位,最左位var(0)是符號位。數(shù)組類型(P179)數(shù)組類型是復(fù)合類型,是將一組具有相同數(shù)據(jù)類型的元素集合在一起,作為一個數(shù)據(jù)對象來處理的數(shù)據(jù)類型。數(shù)組可以是一維(每個元素只有一個下標(biāo))數(shù)組或多維數(shù)組(每個元素有多個下標(biāo))。VHDL仿真器支持多維數(shù)組,而綜合器只支持一維數(shù)組。數(shù)組的元素可以是任何一種數(shù)據(jù)類型,用以定義數(shù)組元素的下標(biāo)范圍子句決定了數(shù)組中元素的個數(shù),以及元素的排序方向,即下標(biāo)是由低到高(TO),或是由高到低(DOWNTO)。如:
“0TO7”是由低到高排序的8個元素;“15
DOWNTO0”是由高到低排序的16個元素。
VHDL允許定義兩種不同數(shù)組,即限定性數(shù)組和非限定性數(shù)組。它們的區(qū)別是,限定性數(shù)組下標(biāo)的取值范圍在數(shù)組定義時就被確定了,而非限定性數(shù)組下標(biāo)的取值范圍要待隨后確定。限定性數(shù)組
限定性數(shù)組定義語句格式如下:TYPE數(shù)組名ISARRAY(數(shù)組范圍)OF數(shù)據(jù)類型;其中
數(shù)組名——是新定義的限定性數(shù)組類型的名稱,可以是任何標(biāo)識符;數(shù)據(jù)類型與數(shù)組元素的數(shù)據(jù)類型相同
數(shù)組范圍——明確指出數(shù)組元素的定義數(shù)量和排序方式,以整數(shù)來表示其數(shù)組的下標(biāo)數(shù)據(jù)類型—指數(shù)組各元素的數(shù)據(jù)類型
例1:TYPEstbISARRAY(7DOWNTO0)OFSTD_LOGIC; 其中,stb是數(shù)組類型,有8個元素,它的下標(biāo)排序為7~0,各元素的排序是stb(7)~stb(0)。
例2:TYPExIS(low,high);TYPEdata_busISARRAY(0TO7,x)OFBIT;其中,x定義為兩元素的枚舉數(shù)據(jù)類型,然后將data_bus定義為一個有9個元素的數(shù)組類型,其中每一個元素的數(shù)據(jù)類型是BIT。
非限定性數(shù)組非限定性數(shù)組是在定義某數(shù)組時,并不首先說明所定義的數(shù)組下標(biāo)的取值范圍,而是定義某一數(shù)據(jù)對象為此數(shù)組類型時,再確定該數(shù)組下標(biāo)范圍取值。這樣就可以通過不同的定義取值,使相同的數(shù)據(jù)對象具有不同下標(biāo)取值的數(shù)組類型。非限定性數(shù)組的定義語句格式為:TYPE數(shù)組名ISARRAY(數(shù)組下標(biāo)名RANGE<>)OF數(shù)據(jù)類型其中:數(shù)組名-----是定義的非限定性數(shù)組類型的取名數(shù)組下標(biāo)名----是以整數(shù)類型設(shè)定的一個數(shù)組下標(biāo)名稱<>----是下標(biāo)范圍待定符號,用到該數(shù)組類型時,再填入具體的數(shù)值范圍數(shù)據(jù)類型----是數(shù)組中每一個元素的數(shù)據(jù)類型非限定性數(shù)組如:TYPEBIT_VECTORISARRAY(NaturalRange<>)OFBIT;
SIGNALa:BIT_VECTOR(7DOWNTO0);§3.4VHDL的操作符(P359)
VHDL的操作符包括:邏輯操作符(LogicOperator)
關(guān)系操作符(RelationOperator)
算術(shù)操作符(ArithmeticOperator)
符號操作符(SignOperator)。邏輯操作符、關(guān)系操作符類型操作符功能操作數(shù)數(shù)據(jù)類型邏輯操作符AND與BIT、BOOLEAN、STD_LOGICOR或BIT、BOOLEAN、STD_LOGICNOT非BIT、BOOLEAN、STD_LOGICNAND與非BIT、BOOLEAN、STD_LOGICNOR或非BIT、BOOLEAN、STD_LOGICXOR異或BIT、BOOLEAN、STD_LOGICXNOR同或BIT、BOOLEAN、STD_LOGICNXOR異或非BIT、BOOLEAN、STD_LOGIC關(guān)系操作符=等于任何數(shù)據(jù)類型/=不等于任何數(shù)據(jù)類型<小于枚舉與整數(shù)及對應(yīng)的一維數(shù)組>大于枚舉與整數(shù)及對應(yīng)的一維數(shù)組<=小于等于枚舉與整數(shù)及對應(yīng)的一維數(shù)組>=大于等于枚舉與整數(shù)及對應(yīng)的一維數(shù)組算術(shù)操作符、符號操作符類型操作符功能操作數(shù)數(shù)據(jù)類型算術(shù)操作符+加整數(shù)-減整數(shù)&并一維數(shù)組*乘整數(shù)和實數(shù)/除整數(shù)和實數(shù)MOD取模整數(shù)REM求余整數(shù)SLL邏輯左移BIT或布爾型一維數(shù)組SRL邏輯右移BIT或布爾型一維數(shù)組SLA算術(shù)左移BIT或布爾型一維數(shù)組SRA算術(shù)右移BIT或布爾型一維數(shù)組ROL邏輯循環(huán)左移BIT或布爾型一維數(shù)組ROR邏輯循環(huán)右移BIT或布爾型一維數(shù)組**乘方整數(shù)ABS取絕對值整數(shù)符號操作符+正整數(shù)-負(fù)整數(shù)
對于VHDL中的操作符與操作數(shù)間的運算有兩點需要特別注意的規(guī)則:
1、在基本操作符間操作數(shù)的數(shù)據(jù)類型必須相同2、操作數(shù)的數(shù)據(jù)類型必須與操作符所要求的數(shù)據(jù)類型完全一致因此,不僅要了解所用的操作符的操作功能,還要了解此操作符所要求的操作數(shù)的數(shù)據(jù)類型。此外,在進(jìn)行運算時還要注意各操作符之間存在的優(yōu)先級別,優(yōu)先級別越高,越先操作。運算符優(yōu)先級NOT,ABS,**最高優(yōu)先級最低優(yōu)先級*,/,MOD,REM+(正號),-(負(fù)號)+,-,&SLL,SLA,SRL,SRA,ROL,ROR=,/=,<,<=,>,>=AND,OR,NAND,NOR,XOR,XNOR類型操作符功能操作數(shù)數(shù)據(jù)類型邏輯操作符AND與BIT、BOOLEAN、STD_LOGICOR或BIT、BOOLEAN、STD_LOGICNOT非BIT、BOOLEAN、STD_LOGICNAND與非BIT、BOOLEAN、STD_LOGICNOR或非BIT、BOOLEAN、STD_LOGICXOR異或BIT、BOOLEAN、STD_LOGICXNOR同或BIT、BOOLEAN、STD_LOGICNXOR異或非BIT、BOOLEAN、STD_LOGIC邏輯操作符(P64、P359)
在邏輯操作符中,如果邏輯操作符左邊和右邊值的類型為數(shù)組,則這兩個數(shù)組的位寬要相等。在一個表達(dá)式中有兩個以上的運算符時,需要使用括號將這些運算分組。如果運算中的運算符相同,且是AND、OR、XOR中的一種,則不需使用括號;如果一串運算中的運算符不同或有除這三種運算符外的運算符,則必須用括號。如:AandBandCandD(AorB)xorC邏輯操作符
【例】SIGNALa,b,c:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd,e,f,g:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALh,I,j,k:STD_LOGIC;SIGNALl,m,n,o,p:BOOLEAN;
…a<=bANDc;--b、c相與后向a賦值,a、b、c的數(shù)據(jù)類型同屬4位長的位矢量d<=eORfORg;--兩個操作符OR相同,不需括號h<=(iNANDj)NANDk;--NAND不屬上述三種算符中的一種,必須加括號l<=(mXORn)AND(oXORp);--操作符不同,必須加括號h<=iANDjANDk;--兩個操作符都是AND,不用加括號h<=iANDjORk;--兩個操作符不同,未加括號,表達(dá)錯誤a<=bANDe;--操作數(shù)b與e的位矢長度不一致,表達(dá)錯誤h<=iORl;--i的數(shù)據(jù)類型是STD_LOGIC,而l的數(shù)據(jù)類型是布爾量,因而不能相互作用,表達(dá)錯誤
【例3-2】(P61)
LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYh_adderISPORT(a,b:INSTD_LOGIC;co,so:OUTSTD_LOGIC);ENDENTITYh_adder;ARCHITECTUREfh1OFh_adderISBEGINso<=aXORbco<=aANDb;ENDARCHITECTUREfh1;absoco0000011010101101半加器真值表關(guān)系操作符=等于任何數(shù)據(jù)類型/=不等于任何數(shù)據(jù)類型<小于枚舉與整數(shù)及對應(yīng)的一維數(shù)組>大于枚舉與整數(shù)及對應(yīng)的一維數(shù)組<=小于等于枚舉與整數(shù)及對應(yīng)的一維數(shù)組>=大于等于枚舉與整數(shù)及對應(yīng)的一維數(shù)組
關(guān)系操作符的作用是將相同的數(shù)據(jù)類型的數(shù)據(jù)對象進(jìn)行數(shù)值比較或關(guān)系排序判斷,并將結(jié)果用布爾類型的數(shù)據(jù)表示出來,即其運算結(jié)果為TRUE和FALSE兩種。關(guān)系操作符不同長度的數(shù)組也可以進(jìn)行運算,兩個數(shù)組的操作運算是從左至右逐一對各元素進(jìn)行比較來決定的,在比較過程中,并不管原數(shù)組的下標(biāo)定義順序,即不管是用TO還是用DOWNTO。比較過程中,只要有一對元素不等,就可確定兩者的關(guān)系,得出布爾結(jié)果。如:
‘1’=‘1’;“101”=“101”;
“1”>“011”;“101”<“110”;
“1011”>“101011”其結(jié)果均為TRUE。對于這些判斷中出現(xiàn)的錯誤,可以用STD_LOGIC_ARITH程序包中定義的UNSIGNED數(shù)據(jù)類型來解決,即將這些進(jìn)行操作的數(shù)據(jù)的數(shù)據(jù)類型定義為UNSIGNED。如UNSIGNED’(“1”)<UNSIGNED’(“011”)的比較結(jié)果則為TURE。
【例9-22】ENTITYrelational_ops_1ISPORT(a,b:INBIT_VECTOR(0TO3);m:OUTBOOLEAN);ENDrelational_ops_1;ARCHITECTUREexampleOFrelational_ops_1ISBEGINoutput<=(a=b);ENDexample;【例9-23】ENTITYrelational_ops_2ISPORT(a,b:ININTEGERRANGE0TO3;m:OUTBOOLEAN);ENDrelational_ops_2;ARCHITECTUREexampleOFrelational_ops_2ISBEGINoutput<=(a>=b);ENDexample;
簡單的比較運算(=和/=)在實現(xiàn)硬件結(jié)構(gòu)時,比排序操作符構(gòu)成電路芯片資源利用率要高。同樣是對4位二進(jìn)制數(shù)進(jìn)行比較,例1采用了“=”操作符,而例2采用了”>=“操作符,除這兩個操作我們符之外,兩個程序完全一樣。但綜合結(jié)果表明,例9-23所耗用的邏輯門比例9-22多出近3倍算術(shù)操作符分類表類別算術(shù)操作符分類1求和操作符+(加),-(減),&(并置)2求積操作符*,/,MOD,REM3混合操作符**,ABS4移位操作符SLL,SRL,SLA,SRA,ROL,ROR算術(shù)操作符類型操作符功能操作數(shù)數(shù)據(jù)類型算術(shù)操作符+加整數(shù)-減整數(shù)&并一維數(shù)組*乘整數(shù)和實數(shù)/除整數(shù)和實數(shù)MOD取模整數(shù)REM求余整數(shù)SLL邏輯左移BIT或布爾型一維數(shù)組SRL邏輯右移BIT或布爾型一維數(shù)組SLA算術(shù)左移BIT或布爾型一維數(shù)組SRA算術(shù)右移BIT或布爾型一維數(shù)組ROL邏輯循環(huán)左移BIT或布爾型一維數(shù)組ROR邏輯循環(huán)右移BIT或布爾型一維數(shù)組**乘方整數(shù)ABS取絕對值整數(shù)求和操作符
VHDL中的求和操作符包括加減操作符和并置操作符。
加減操作符的運算規(guī)則與常規(guī)的加減法一樣,在VHDL中,規(guī)定它們的操作數(shù)的數(shù)據(jù)類型是整數(shù)。
【例9-24】
VARIABLEa,b,c,d,e,f:INTEGERRANE0TO255;
…
a:=b+c;
d:=e–f;在綜合后,由加減運算符產(chǎn)生的組合邏輯門所耗費的硬件資源的規(guī)模都比較大,例9-26說明了一個3位加法運算的邏輯電路。如果加減運算符中的一個操作數(shù)或兩個操作數(shù)都為整型常數(shù),則只需很少的電路資源?!纠?-26】
PACKAGEexample_arithmeticISTYPEsmall_INTISRANGE0TO7;ENDexample_arithmetic;USEWORK.example_arithmetic.ALL;ENTITYarithmeticISPORT(a,b:INsmall_INT;c:OUTsmall_INT);ENDarithmetic;ARCHITECTUREexampleOFarithmeticISBEGINc<=a+b;ENDexample;
并置操作符“&”(P72)用來完成一維數(shù)組的位擴(kuò)展,即將操作數(shù)或數(shù)組組合并起來形成新的數(shù)組??梢詫⒁粋€元素并置于一個數(shù)組中形成更長的數(shù)組,也可以將兩個數(shù)組并置形成一個新的數(shù)組。并置操作前后的數(shù)組長度應(yīng)一致。如:“VH”&“DL”的結(jié)果為“VHDL”,‘0’&‘1’&‘1’的結(jié)果為“011”
【例】SIGNALa:STD_LOGIC_VECTOR(3DOWNTO0);SIGNALd:STD_LOGIC_VECTOR(1DOWNTO0);
…a<=‘1’&‘0’&d(1)&‘1’;--元素與元素并置,并置后的數(shù)組長度為4
…IFa&d=“101011”THEN--數(shù)組并置,形成更長的數(shù)組,其長度為兩個數(shù)組長度之和。求積操作符:求積操作符包括*(乘),/(除),MOD(取模),REM(取余)。在VHDL中,乘與除的數(shù)據(jù)類型規(guī)定為整數(shù)和實數(shù)。MOD和REM的操作數(shù)的數(shù)據(jù)類型只能是整數(shù),運算結(jié)果也是整數(shù)。取余運算(aREMb)的符號與a相同,其絕對值小于b的絕對值;例:
(-5)REM2=(-1);5REM(-2)=1;
取模運算(aMODb)的符號與b相同,其絕對值小于b的絕對值;例:
(-5)MOD2=1;5MOD(-2)=(-1)
混合操作符混合操作符有**(乘方)和ABS(取絕對值)兩種。它們的操作數(shù)數(shù)據(jù)類型一般為整數(shù)類型。**(乘方)運算的左邊可以是整數(shù)或浮點數(shù),但右邊必須為整數(shù),而且只有在左邊為浮點時,其右邊才可以為負(fù)數(shù)。
【例9-27】
SIGNAL
a,b:INTEGERRANGE-8TO7;SIGNALc:INTEGERRANGE0TO15;SIGNALd:INTEGERRANGE0TO3;a<=ABS(b);c<=2**d;移位操作符
移位操作符有六種:SLL、SRL、SLA、SRA、ROL、ROR。移位操作符是VHDL’93標(biāo)準(zhǔn)新增的運算符。規(guī)定移位操作符作用的操作數(shù)的數(shù)據(jù)類型應(yīng)是一維數(shù)組,并要求數(shù)組中的元素必須是BIT或BOOLEAN的數(shù)據(jù)類型,移位的位數(shù)則是整數(shù)。在EDA工具所附的程序包中重載的移位操作符已支持STD_LOGIC_VECTOR及INTEGER等類型。移位操作符左邊可以是支持的類型,右邊則必定是整數(shù)類型。如果操作符右邊是整數(shù)類型常數(shù),移位操作符實現(xiàn)起來比較節(jié)省硬件資源。
SLL/SRL(邏輯左/右移):將位矢向左/右移,右/左邊跟進(jìn)的位補零。
ROL/ROR(邏輯循環(huán)左/右移):與SLL/SRL相似,只是它們移出的位將用于依次填補移空的位,執(zhí)行的是自循環(huán)式的移位。
SLA/SRA(算術(shù)左/右移):是算術(shù)移位操作符,其移空位用最初的首位來填補。
移位操作符的語句格式為:標(biāo)識符移位操作符移位位數(shù)
例:
“1011”SLL1=“0110”
“1011”SRL1=“0101”
“1011”ROLl=“0111”
“1011”ROR1=“1101”
“1011”SLA1=“0111”
“1011”SRA1=“1101”
00原首位原首位【例3-14】LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdecoder3to8ISPORT(DIN:INSTD_LOGIC_VECTOR(2DOWNTO0)DOU:OUTBIT_VECTOR(7DOWNTO0));ENDENTITY;ARCHITECTUREbehOFdecoder3to8ISBEGINDOUT<=“00000001”SLLCONV_INTEGER(DIN);ENDbeh;符號操作符符號操作符“+”和“-”的操作數(shù)只有一個,操作數(shù)的數(shù)據(jù)類型為整數(shù),操作符“+”對操作數(shù)不作任何改變,操作符“-”作用于操作數(shù)后的返回值是對原操作數(shù)取負(fù),在實際使用中,取負(fù)操作數(shù)需加括號,如:
z:=x*(-y)§3.5VHDL的數(shù)據(jù)對象-P71、第8章VHDL數(shù)據(jù)對象是指用來存放各種類型數(shù)據(jù)的容器。包括:常數(shù)(Constant)變量(Variable)信號(Signal)在VHDL中,被定義的標(biāo)識符必須確定為某類數(shù)據(jù)對象,同時還必須被定義為某種數(shù)據(jù)類型。前者(數(shù)據(jù)對象)規(guī)定了標(biāo)識符的行為方式和功能特點;后者(數(shù)據(jù)類型)限定了標(biāo)識符的取值范圍。常數(shù)(Constant)
常數(shù)的聲明和設(shè)置主要是為了使設(shè)計實體中的常數(shù)更容易閱讀和修改。常數(shù)一般在程序前部聲明,在程序中,常數(shù)是一個恒定不變的值,一旦做了數(shù)據(jù)類型和賦值定義后,在程序中不能再改變,因而具有全局性意義。常數(shù)聲明格式為:
CONSTANT常數(shù)名:數(shù)據(jù)類型:=初值;如:
CONSTANT
delay:TIME:=25ns
DATAIN:INTEGER:=15
FBT:STD_LOGIC_VECTOR:=“010110”VHDL要求所定義的常量數(shù)據(jù)類型必須與表達(dá)式的數(shù)據(jù)類型一致。常量定義語句所允許的設(shè)計單元有實體、結(jié)構(gòu)體、程序包、塊、進(jìn)程和子程序。常量具有可視性,即常量的使用范圍取決于它被定義的位置。變量(Variable)在VHDL語法規(guī)則中,變量是一個局部量,只能在進(jìn)程(PROCESS)、子程序(函數(shù)和過程)中聲明和使用。變量的作用是在進(jìn)程中作為臨時的數(shù)據(jù)存儲單元。變量聲明的語法格式為:
VARIABLE變量名:數(shù)據(jù)類型[:=初始值]變量在聲明時,可以賦初值,也可不賦初值,到使用時才用變量賦值語句賦值。變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何的延時。變量賦值語句的語法格式為:目標(biāo)變量名:=表達(dá)式賦值語句右邊的“表達(dá)式”必須是一個與“目標(biāo)變量名”具有相同數(shù)據(jù)類型的數(shù)值。
例如:VARIABLEa:INTEGER;VARIABLEb:INTEGER:=2;VARIABLEs,t:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLEx,y:INTEGERRANGE15DOWNTO0;a:=“1010101”s:=t;s(0TO5):=t(2TO7);x:=11;y:=2+x;
信號(Signal)
信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它類似于連接線,可作為設(shè)計實體中并行語句模塊間的信息交流通道。它作為一種數(shù)值容器,不僅可以容納當(dāng)前值,也可以保持歷史值,這一屬性與觸發(fā)器的記憶功能有很好的對應(yīng)關(guān)系,只是不必注明信號的數(shù)據(jù)流動的方向。
信號要在結(jié)構(gòu)體中聲明后才能使用。信號聲明語句的語法格式為:SIGNAL信號名:數(shù)據(jù)類型[:=初值]信號初始值的設(shè)置不是必須的。如:SIGNALtemp:STD_LOGIC:=0;--聲明temp為標(biāo)準(zhǔn)邏輯位(STD_LOGIC)信號,賦初值為0SIGNALflaga,flagb:BIT--聲明flaga,flagb為位(BIT)信號,未賦初值
信號的使用和定義范圍是實體、結(jié)構(gòu)體和程序包,在進(jìn)程和子程序的順序中不允許定義信號,在進(jìn)程中只能將信號列入敏感表。信號具有全局特征。當(dāng)信號聲明數(shù)據(jù)類型后,就能對信號賦值了。信號賦值的語句格式為:目標(biāo)信號名<=表達(dá)式AFTER時間量這里的表達(dá)式可以是一個運算表達(dá)式,也可以是數(shù)據(jù)對象(變量、信號或常量)。符號“<=”表示賦值操作,即將信號傳入。信號的傳入不是即時的,即目標(biāo)信號需要一定延遲的時間δ才能接收到源信號的數(shù)據(jù)。因此符號“<=”兩邊的數(shù)值并不總是一致的,這與實際器件的傳播延遲特性是吻合的,這與變量的賦值過程有很大差別。VHDL綜合器在信號賦值時,常用關(guān)鍵詞AFTER設(shè)置延遲量。如:z<=xAFTER5ns賦值符“<=”兩邊的信號的數(shù)據(jù)類型必須一致。
信號的賦值可以出現(xiàn)在一個進(jìn)程中,也可以直接出現(xiàn)在結(jié)構(gòu)體的并行語句結(jié)構(gòu)中。但兩者意義不同:在進(jìn)程中屬順序信號賦值,信號賦值操作要視進(jìn)程
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 1356-2020鮮食糯玉米青穗(棒)早春栽培技術(shù)規(guī)程
- DB31/T 822-2014飼料中棉酚的測定高效液相色譜法
- DB31/T 550-2011市級機關(guān)辦公建筑合理用能指南
- DB31/T 507-2021燃煤凝汽式汽輪發(fā)電機組單位產(chǎn)品能源消耗指標(biāo)
- DB31/T 1391-2022犬傷人事件防疫處置技術(shù)規(guī)范
- DB31/T 1358-2022導(dǎo)盲犬培訓(xùn)機構(gòu)建設(shè)與服務(wù)規(guī)范
- DB31/ 574-2020鋁箔單位產(chǎn)品能源消耗限額
- DB31/ 546-2011地理標(biāo)志產(chǎn)品倉橋水晶梨
- 航海心理學(xué)與人際關(guān)系考核試卷
- 2024年殘疾人用車及其零件項目投資申請報告代可行性研究報告
- 2025-2030中國核電用鋼行業(yè)市場發(fā)展分析及發(fā)展趨勢預(yù)測研究報告
- 口腔外科門診手術(shù)操作規(guī)范
- 綠色施工評價標(biāo)準(zhǔn)【B.0.1 批次評價表】
- 以案釋德、以案釋紀(jì)、以案釋法的教育心得體會
- 《公路橋梁無縫式樹脂彈性體伸縮裝置施工技術(shù)規(guī)程》
- 2025年吉林省中考模擬語文試卷試題及答案詳解
- 呼吸內(nèi)科科普知識
- 體育賽事組織的合理化建議與措施
- 2023年普通高等學(xué)校招生全國統(tǒng)一考試(全國甲卷)物理試題含答案
- 構(gòu)建素養(yǎng)導(dǎo)向的小學(xué)數(shù)學(xué)“套餐式”作業(yè)設(shè)計的實踐與研究
- 華佗古本五禽戲知到智慧樹章節(jié)測試課后答案2024年秋安徽中醫(yī)藥大學(xué)
評論
0/150
提交評論