VHDL語(yǔ)言入門教程.ppt
《VHDL語(yǔ)言入門教程.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VHDL語(yǔ)言入門教程.ppt(112頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
3 VHDL語(yǔ)言,VHDL: VHSIC Hardware Description Language.,,3.1 VHDL語(yǔ)言基礎(chǔ) 3.2 VHDL基本結(jié)構(gòu) 3.3 VHDL語(yǔ)句 3.4 狀態(tài)機(jī)在VHDL中的實(shí)現(xiàn) 3.5 常用電路VHDL程序 3.6 VHDL仿真 3.7 VHDL綜合,HDL----Hardware Description Language 一種用于描述數(shù)字電路的功能或行為的語(yǔ)言。目的是提為電路設(shè)計(jì)效率,縮短設(shè)計(jì)周期,減小設(shè)計(jì)成本,可在芯片制造前進(jìn)行有效的仿真和錯(cuò)誤檢測(cè)。,優(yōu)點(diǎn): HDL設(shè)計(jì)的電路能獲得非常抽象級(jí)的描述。如基于RTL(Register Transfer Level)描述的IC,可用于不同的工藝。 HDL設(shè)計(jì)的電路,在設(shè)計(jì)的前期,就可以完成電路的功能級(jí)的驗(yàn)證。 HDL設(shè)計(jì)的電路類似于計(jì)算機(jī)編程。,常用的HDL語(yǔ)言:VHDL 、Verilog HDL,VHDL是美國(guó)國(guó)防部在20世紀(jì)80年代初為實(shí)現(xiàn)其高速集成電路硬件VHSIC計(jì)劃提出的描述語(yǔ)言; IEEE從1986年開始致力于VHDL標(biāo)準(zhǔn)化工作,融合了其它ASIC芯片制造商開發(fā)的硬件描述語(yǔ)言的優(yōu)點(diǎn),于93年形成了標(biāo)準(zhǔn)版本(IEEE.std_1164)。 1995年,我國(guó)國(guó)家技術(shù)監(jiān)督局推薦VHDL做為電子設(shè)計(jì)自動(dòng)化硬件描述語(yǔ)言的國(guó)家標(biāo)準(zhǔn)。,,VHDL 概述:,覆蓋面廣,系統(tǒng)硬件描述能力強(qiáng),是一個(gè)多層次的硬件描述語(yǔ)言; VHDL語(yǔ)言具有良好的可讀性,既可以被計(jì)算機(jī)接受,也容易被人們所理解; VHDL語(yǔ)言可以與工藝無(wú)關(guān)編程; VHDL語(yǔ)言已做為一種IEEE的工業(yè)標(biāo)準(zhǔn),便于使用、交流和推廣。,,VHDL優(yōu)點(diǎn):,設(shè)計(jì)的最終實(shí)現(xiàn)取決于針對(duì)目標(biāo)器件的編程器,工具的不同會(huì)導(dǎo)致綜合質(zhì)量不一樣。,3.1.1 標(biāo)識(shí)符(Identifiers),要求: 首字符必須是字母 末字符不能為下劃線 不允許出現(xiàn)兩個(gè)連續(xù)的下劃線 不區(qū)分大小寫 VHDL定義的保留字(關(guān)鍵字),不能用作標(biāo)識(shí)符 標(biāo)識(shí)符字符最長(zhǎng)可以是32個(gè)字符。,注釋由兩個(gè)連續(xù)的虛線(--)引導(dǎo)。,3.1 VHDL語(yǔ)言基礎(chǔ),標(biāo)識(shí)符用來(lái)定義常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字, 由字母(A~Z,a~z)、數(shù)字(0~9)和下劃線(_)字符組成。,例如:ABS, ACCESS,AFTER,ALL,AND,ARCHITECTURE,ARRAY,ATTRIBUTE,BEGIN,BODY,BUFFER,BUS,CASE ,COMPONENT,CONSTANT,DISCONNECT,DOWNTO,ELSE,ELSIF,END,ENTITY,EXIT,F(xiàn)ILE,F(xiàn)OR,F(xiàn)UNCTION,GENERIC,GROUP,IF,INPURE,IN,INOUT,IS,LABEL,LIBRARY,LINKAGE,LOOP,MAP,MOD,NAND,NEW,NEXT,NOR ,NOT,NULL,OF,ON,OPEN ,OR ,OTHERS,OUT,PACKAGE,POUT,PROCEDURE ,PROCESS,PURE,RANGE ,RECODE,REM,REPORT,RETURN,ROL,ROR,SELECT,SHARED,SIGNAL,SLA,SLL,SRA,SUBTYPE,THEN,TRANSPORT,TO,TYPE ,UNAFFECTED,UNITS,UNTIL,USE,VARIABLE,WAIT,WHEN,WHILE,WITH,XOR ,XNOR,關(guān)鍵字(保留字):,關(guān)鍵字(keyword)是VHDL中具有特別含義的單詞,只能做為固定的用途,用戶不能用其做為標(biāo)識(shí)符。,3.1.2 數(shù)據(jù)對(duì)象(Date Objects),常量Constant,Constant bus_width: integer := 8; --定義總線寬度為常數(shù)8,數(shù)據(jù)對(duì)象包括常量、變量、信號(hào)和文件四種類型。,常量是對(duì)某一常量名賦予一個(gè)固定的值,而且只能賦值一次。通常賦值在程序開始前進(jìn)行,該值的數(shù)據(jù)類型則在說(shuō)明語(yǔ)句中指明。,Constant 常數(shù)名:數(shù)據(jù)類型:=表達(dá)式,Constant Vcc:real:=5.0; --定義Vcc的數(shù)據(jù)類型是實(shí)數(shù),賦值為5.0V,常量所賦的值應(yīng)和定義的數(shù)據(jù)類型一致;,常量在程序包、實(shí)體、構(gòu)造體或進(jìn)程的說(shuō)明性區(qū)域內(nèi)必須加以說(shuō)明。定義在程序包內(nèi)的常量可供所含的任何實(shí)體、構(gòu)造體所引用,定義在實(shí)體說(shuō)明內(nèi)的常量只能在該實(shí)體內(nèi)可見,定義在進(jìn)程說(shuō)明性區(qū)域中的常量只能在該進(jìn)程內(nèi)可見。,Variable 變量名:數(shù)據(jù)類型 :=初始值;,Variable count: integer 0 to 255:=20 ; -- 定義count整數(shù)變量,變化 范圍0~255,初始值為20。,變量Variable,變量只能在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句和過(guò)程語(yǔ)句結(jié)構(gòu)中使用。變量的賦值是直接的,非預(yù)設(shè)的,分配給變量的值立即成為當(dāng)前值,變量不能表達(dá)“連線”或存儲(chǔ)元件,不能設(shè)置傳輸延遲量。,變量賦值語(yǔ)句: 目標(biāo)變量名 := 表達(dá)式;,變量定義語(yǔ)句:,x:=10.0; -- 實(shí)數(shù)變量賦值為10.0 Y:=1.5+x; -- 運(yùn)算表達(dá)式賦值,注意表達(dá)式必須與目標(biāo)變量的數(shù)據(jù)類型相同 A(3 to 6):=(“1101”); --位矢量賦值,Signal 信號(hào)名: 數(shù)據(jù)類型 :=初始值,Signal clock:bit :=‘0’; --定義時(shí)鐘信號(hào)類型,初始值為0,信號(hào)Signal,信號(hào)表示邏輯門的輸入或輸出,類似于連接線,也可以表達(dá)存儲(chǔ)元件的狀態(tài)。信號(hào)通常在構(gòu)造體、程序包和實(shí)體中說(shuō)明。,信號(hào)定義語(yǔ)句:,Signal count:BIT_VECTOR(3 DOWNTO 0); --定義count為4位位矢量,信號(hào)賦值語(yǔ)句: 目標(biāo)信號(hào)名 = 表達(dá)式;,x=9; Z=x after 5 ns; -- 在5ns后將x的值賦予z,3.1.2 數(shù)據(jù)類型,布爾:(Boolean),位: ( Bit ) TYPE BIT IS (‘0’,’1’); --取值為0和1,用于邏輯運(yùn)算,位矢量: ( Bit_Vector ) TYPE BIT_VECTOR IS ARRAY (Natural range) OF BIT; -- 基于Bit類型的數(shù) 組,用于邏輯運(yùn)算 SIGNAL a:Bit_Vector(0 TO 7); SIGNAL a:Bit_Vector ( 7 DOWNTO 0),VHDL的預(yù)定義數(shù)據(jù)類型,在VHDL標(biāo)準(zhǔn)程序包STANDARD中定義好,實(shí)際使用過(guò)程中,已自動(dòng)包含進(jìn)VHDL源文件中,不需要通過(guò)USE語(yǔ)句顯式調(diào)用。,TYPE BOOLEAN IS (FALSE, TRUE); -- 取值為FALSE和TRUE,不是數(shù)值,不 能運(yùn)算,一般用于關(guān)系運(yùn)算符,整數(shù):(Integer) 取值范圍 -(231-1) ~(231-1),可用32位有符號(hào)的二進(jìn)制數(shù)表示 variable a:integer range -63 to 63 在實(shí)際應(yīng)用中,VHDL仿真器將Integer做為有符號(hào)數(shù)處理,而VHDL綜合器將Integer做為無(wú)符號(hào)數(shù)處理; 要求用RANGE子句為所定義的數(shù)限定范圍,以便根據(jù)范圍來(lái)決定表示此信號(hào)或變量的二進(jìn)制數(shù)的位數(shù)。,字符:(Character) TYPE CHARACTER IS (NUL, SOH,STX, …, ‘ ’, ‘!’,…); --通常用‘’引起 來(lái),區(qū)分大小寫;,字符串:(String) VARIABLE string_var: STRING (1 TO 7); string_var:=“A B C D” ; -- 通常用“”引起來(lái),區(qū)分大小寫;,實(shí)數(shù):(Real) 取值范圍 -1.0E38 ~+1.0E38,僅用于仿真不可綜合 1.0 --十進(jìn)制浮點(diǎn)數(shù) 8#43.6#e+4 --八進(jìn)制浮點(diǎn)數(shù) 43.6E-4 --十進(jìn)制浮點(diǎn)數(shù),時(shí)間:(Time) 物理量數(shù)據(jù),完整的包括整數(shù)和單位兩個(gè)部分,用至少一個(gè)空格隔開,僅用于仿真不可綜合; fs,ps,ns,us,ms,sec,min,hr,錯(cuò)誤等級(jí)(Severity Level) : 表示系統(tǒng)狀態(tài),僅用于仿真不可綜合; TYPE severity_level IS (NOTE、WARNING、ERROR、FAILURE);,IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量,標(biāo)準(zhǔn)邏輯位(Std_Logic),標(biāo)準(zhǔn)邏輯位矢量( Std_Logic_vector),基于Std_Logic類型的數(shù)組;,使用Std_Logic和 Std_Logic_Vector要調(diào)用IEEE庫(kù)中的Std_Logic_1164 程序包;就綜合而言,能夠在數(shù)字器件中實(shí)現(xiàn)的是“-、0、1、Z”四種狀態(tài)。 在條件語(yǔ)句中,必須要全面考慮Std_Logic的所有可能取值情況,否則綜合器可能會(huì)插入不希望的鎖存器。,U:Uninitialized; X:Forcing Unkown; 0: Forcing 0 1: Forcing 1 Z:High Impedance W:Weak Unknown L: Weak 0 H: Weak 1 —:Don’t care,枚舉:type states is (idle,decision,read,write); type boolean is (false,true); type bit is (‘0’,‘1’);,數(shù)組:type value_type is array (127 downto 0) of integer; type matrix_type is array (0 to 15, 0 to 31) of std_logic;,用戶自定義,TYPE 數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義 OF 基本數(shù)據(jù)類型 或 TYPE 數(shù)據(jù)類型名 IS 數(shù)據(jù)類型定義,SUBTYPE 子類型名 IS 基本數(shù)據(jù)類型定義 RANGE 約束范圍,subtype digit is integer range 0 to 9;,3.1.3 數(shù)據(jù)類型轉(zhuǎn)換,VHDL為強(qiáng)定義類型語(yǔ)言,不同類型的數(shù)據(jù)不能進(jìn)行運(yùn)算和直接賦值。,類型標(biāo)記法,Variable A: integer; Variable B: real; A= integer (B); B=real (A);,函數(shù)法,Conv_interger (A);--由std_logic轉(zhuǎn)換為integer型,在std_logic_unsigned包。,常數(shù)轉(zhuǎn)換法 / 常量轉(zhuǎn)換法,Type conv_table is array(std_logic) of bit; Constant table: conv_table:=(‘0’|’L’=’0’, ‘1’|’H’=’1’, others=’0’); Signal a: bit; signal b: std_logic; A=table(b); -- 將std_logic型轉(zhuǎn)換為bit型,具有轉(zhuǎn)換表性質(zhì)的常數(shù),在“STD_LOGIC_1164”、“STD_LOGIC_ARITH”和 “STD_LOGIC_UNSIGNED”的程序包中提供的數(shù)據(jù)類型變換函數(shù)。,屬性,屬性提供的是關(guān)于信號(hào)、類型等的指定特性。,‘event:若屬性對(duì)象有事件發(fā)生,則生成布爾值“true”,常用來(lái)檢查時(shí)鐘邊沿是否有效。,上升沿:Clock’ EVENT AND Clock=‘1’,’range:生成一個(gè)限制性數(shù)組對(duì)象的范圍,’left:生成數(shù)據(jù)類型或數(shù)據(jù)子類型的左邊界值;,’right , ’high, ’low, ’length,’range: “0 to n” ; ’reverse_range:“n downto 0”,運(yùn)算符,算術(shù)運(yùn)算符:+, -, *, / , MOD, REM ,SLL ,SRL ,SLA, SRA ,ROL ,ROR ,**,ABS,關(guān)系運(yùn)算符:=, /=, , =,邏輯運(yùn)算符:AND,OR,NAND,NOR,XNOR,NOT,XOR,賦值運(yùn)算符:=,:=,關(guān)聯(lián)運(yùn)算符:=,其他運(yùn)算符:+, -,&,并置操作符 ?,SIGNAL a : STD_LOGIC_VECTOR (3 DOWNTO 0) ; SIGNAL d : STD_LOGIC_VECTOR (1 DOWNTO 0) ; . a = '1'?'0'?d(1)?'1' ; -- 元素與元素并置,并置后的數(shù)組長(zhǎng)度為4 . IF a ? d = “101011“ THEN . –- 在IF條件句中可以使用并置符,運(yùn)算符優(yōu)先級(jí)別,邏輯、算術(shù)運(yùn)算符( NOT, **,ABS),乘法運(yùn)算符(/ , MOD, REM, * ),正負(fù)運(yùn)算符:+, -,,加減、并置運(yùn)算符:+, -, &,關(guān)系運(yùn)算符:=, /=, , =,邏輯運(yùn)算符:AND,OR,NAND,NOR,XNOR,NOT,XOR,,移位運(yùn)算符的左邊為一維數(shù)組,其類型必須是BIT或BOOLEAN,右邊必須是整數(shù)移位次數(shù)為整數(shù)的絕對(duì)值。,移位運(yùn)算符操作示意圖,“1100”SLL1 =“1000” “1100”SRL1 =“0110” “1100”SLA1 =“1000” “1100”SRA1 =“1110” “1100”ROL1 =“1001” “1100”ROR1 =“0110”,SLL:將位向量左移,右邊移空位補(bǔ)零; SRL:將位向量右移,左邊移空位補(bǔ)零; SLA:將位向量左移,右邊第一位的數(shù)值保持原值不變; SRA:將位向量右移,左邊第一位的數(shù)值保持原值不變; ROL和ROR:自循環(huán)左右移位。,取余運(yùn)算(a REM b)的符號(hào)與a相同,其絕對(duì)值小于b的絕對(duì)值。 例如:(-5)REM 2=(-1) 5 REM 2=(1),取模運(yùn)算(a MOD b)的符號(hào)與b相同,其絕對(duì)值小于b的絕對(duì)值。 例如:(-5)MOD 2=1 5 MOD (- 2)=(-1),3.2 VHDL基本結(jié)構(gòu),實(shí)體(Entity):描述所設(shè)計(jì)的系統(tǒng)的外部接口信號(hào),定義電路設(shè)計(jì)中所有的輸入和輸出端口; 結(jié)構(gòu)體 (Architecture):描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為; 包集合 (Package):存放各設(shè)計(jì)模塊能共享的數(shù)據(jù)類型、常數(shù)和子程序等; 配置 (Configuration):指定實(shí)體所對(duì)應(yīng)的結(jié)構(gòu)體; 庫(kù) (Library):存放已經(jīng)編譯的實(shí)體、結(jié)構(gòu)體、包集合和配置。,LIBRARY IEEE; -- 庫(kù)、程序包的說(shuō)明調(diào)用 USE IEEE.Std_Logic_1164.ALL; ENTITY FreDevider IS -- 實(shí)體聲明 PORT (Clock: IN Std_logic; Clkout: OUT Std_logic ); END; ARCHITECTURE Behavior OF FreDevider IS -- 結(jié)構(gòu)體定義 SIGNAL Clk:Std_Logic; BEGIN PROCESS(Clock) BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF; END PROCESS; Clkout=Clk; END;,VHDL的基本設(shè)計(jì)單元結(jié)構(gòu):程序包說(shuō)明、實(shí)體說(shuō)明和結(jié)構(gòu)體說(shuō)明三部分。,,,3.2.1 實(shí)體(Entity),ENTITY 實(shí)體名 IS [ GENERIC(常數(shù)名:數(shù)據(jù)類型:設(shè)定值)] PORT ( 端口名1:端口方向 端口類型; 端口名2:端口方向 端口類型; . . 端口名n:端口方向 端口類型 ); END [實(shí)體名];,實(shí)體描述了設(shè)計(jì)單元的輸入輸出接口信號(hào)或引腳,是設(shè)計(jì)實(shí)體經(jīng)封裝后對(duì)外的一個(gè)通信界面。,ENTITY FreDevider IS PORT (Clock: IN Std_logic; Clokout: OUT Std_logic ); END;,實(shí)體名,最后一條端口聲明語(yǔ)句無(wú)分號(hào),端口方向,端口類型,端口名,實(shí)體名由設(shè)計(jì)者自由命名,用來(lái)表示被設(shè)計(jì)電路芯片的名稱,但是必須與VHDL程序的文件名稱相同。要與文件名一致;,例如: GENERIC(wide:integer:=32); --說(shuō)明寬度為32 GENERIC(tmp:integer:=1ns); --說(shuō)明延時(shí)1 ns,類屬說(shuō)明,類屬為設(shè)計(jì)實(shí)體與外界通信的靜態(tài)信息提供通道,用來(lái)規(guī)定端口的大小、實(shí)體中子元件的數(shù)目和實(shí)體的定時(shí)特性等。,格式: GENERIC(常數(shù)名:數(shù)據(jù)類型:設(shè)定值; ∶ 常數(shù)名:數(shù)據(jù)類型:設(shè)定值);,端口方向:IN, OUT,INOUT,BUFFER,,“OUT”和“BUFFER”都可定義輸出端口;,若實(shí)體內(nèi)部需要反饋輸出信號(hào),則輸出端口必須被設(shè)置為“BUFFER”,而不能為“OUT”。,同方向、同類型的端口可放在同一個(gè)說(shuō)明語(yǔ)句中。,ENTITY Full_adder IS PORT( a, b, c: IN BIT; sum, carry: OUT BIT ); END Full_adder;,3.2.2 結(jié)構(gòu)體 (Architecture),ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS [聲明語(yǔ)句] BEGIN 功能描述語(yǔ)句 END [結(jié)構(gòu)體名];,用于聲明該結(jié)構(gòu)體將用到的信號(hào)、數(shù)據(jù)類型、常數(shù)、子程序和元件等。聲明的內(nèi)容是局部的。,具體描述結(jié)構(gòu)體的功能和行為。,結(jié)構(gòu)體定義了設(shè)計(jì)單元具體的功能,描述了該基本設(shè)計(jì)單元的行為、元件和內(nèi)部的連接關(guān)系。,一個(gè)實(shí)體可對(duì)應(yīng)多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體代表該實(shí)體功能的不同實(shí)現(xiàn)方案或不同實(shí)現(xiàn)方式。同一時(shí)刻只有一個(gè)結(jié)構(gòu)體起作用,通過(guò)CONFIGURATION決定用哪個(gè)結(jié)構(gòu)體進(jìn)行仿真或綜合。 在結(jié)構(gòu)體描述中,具體給出了輸入、輸出信號(hào)之間的邏輯關(guān)系。,ARCHITECTURE Behavior OF FreDevider IS -- 結(jié)構(gòu)體定義 SIGNAL Clk:Std_Logic; --信號(hào)聲明 BEGIN PROCESS(Clock) BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF; END PROCESS; Clkout=Clk; END;,3.2.3 庫(kù)、程序包的調(diào)用,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL;,LIBRARY 庫(kù)名;,USE 庫(kù)名.程序包名.項(xiàng)目名;,調(diào)用此程序包中所有的資源,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; USE IEEE.Std_Logic_Arith.ALL; USE IEEE.Std_Logic_Unsigned.ALL;,3.3 VHDL語(yǔ)句,3.3.1 并行語(yǔ)句,在結(jié)構(gòu)體中的執(zhí)行是同時(shí)進(jìn)行,執(zhí)行順序與書寫順序無(wú)關(guān)。,并行信號(hào)賦值語(yǔ)句,簡(jiǎn)單賦值語(yǔ)句,目標(biāo)信號(hào)名 = 表達(dá)式,目標(biāo)信號(hào)的數(shù)據(jù)類型與右邊表達(dá)式一致,ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk:Std_Logic; BEGIN PROCESS(Clock) BEGIN IF rising_edge(Clock) THEN Clk=NOT Clk; END IF; END PROCESS; Clkout=Clk;,選擇信號(hào)賦值語(yǔ)句,WITH 選擇表達(dá)式 SELECT 賦值目標(biāo)信號(hào) = 表達(dá)式1 WHEN 選擇值1, 表達(dá)式2 WHEN 選擇值1, 表達(dá)式n WHEN OTHERS;,選擇值要覆蓋所有可能情況,若不能一一指定,用OTHERS為其他情況找個(gè)出口; 選擇值必須互斥,不能出現(xiàn)條件重復(fù)或重疊的情況。,,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; ENTITY MUX IS PORT ( Data0,Data1,Data2,Data3:IN Std_Logic_VECTOR(7 DOWNTO 0); Sel:IN Std_Logic_Vector(1 DOWNTO 0); DOUT:OUT Std_Logic_Vector(7 DOWNTO 0) ); END; ARCHITECTURE DataFlow OF MUX IS BEGIN WITH Sel SELECT DOUT= Data0 WHEN “00”, Data1 WHEN “01”, Data2 WHEN “10”, Data3 WHEN “11”, “00000000” WHEN OTHERS; END;,4X1多路選擇器,條件信號(hào)賦值語(yǔ)句,賦值目標(biāo)信號(hào) = 表達(dá)式1 WHEN 賦值條件1 ELSE 表達(dá)式2 WHEN 賦值條件2 ELSE 表達(dá)式n WHEN 賦值條件n ELSE 表達(dá)式;,,各賦值語(yǔ)句有優(yōu)先級(jí)的差別,按書寫順序從高到低排列;,各賦值條件可以重疊。,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; ENTITY Priority_Encoder IS PORT ( I:IN Std_Logic_VECTOR(7 DOWNTO 0); A:OUT Std_Logic_Vector(2 DOWNTO 0) ); END; ARCHITECTURE DataFlow OF Priority_Encoder IS BEGIN A=“111” WHEN I(7)=‘1’ ELSE “110” WHEN I(6)=‘1’ ELSE “101” WHEN I(5)=‘1’ ELSE “100” WHEN I(4)=‘1’ ELSE “011” WHEN I(3)=‘1’ ELSE “010” WHEN I(2)=‘1’ ELSE “001” WHEN I(1)=‘1’ ELSE “000” WHEN I(0)=‘1’ ELSE “111”; END;,進(jìn)程語(yǔ)句,進(jìn)程本身是并行語(yǔ)句,但內(nèi)部是順序語(yǔ)句; 進(jìn)程只有在特定的時(shí)刻(敏感信號(hào)發(fā)生變化)才會(huì)被激活。,[進(jìn)程標(biāo)號(hào):] PROCESS (敏感信號(hào)參數(shù)表) [聲明區(qū)]; BEGIN 順序語(yǔ)句 END PROCESS [進(jìn)程標(biāo)號(hào)];,在進(jìn)程中起作用的局部變量,一個(gè)進(jìn)程可以有多個(gè)敏感信號(hào),任一敏感信號(hào)發(fā)生變化都會(huì)激活進(jìn)程,進(jìn)程語(yǔ)句定義順序語(yǔ)句模塊,用于將從外部獲得的信號(hào)值,或內(nèi)部的運(yùn)算數(shù)據(jù)向其他的信號(hào)進(jìn)行賦值。,進(jìn)程的工作原理,當(dāng)某個(gè)敏感信號(hào)的值發(fā)生變化時(shí),每個(gè)進(jìn)程語(yǔ)句立即完成進(jìn)程內(nèi)順序語(yǔ)句所定義的功能行為。,執(zhí)行過(guò)程終止,順序語(yǔ)句所定義的功能行為的結(jié)果可以賦值給信號(hào),并通過(guò)信號(hào)被其他的進(jìn)程讀取或賦值。,進(jìn)程與時(shí)鐘,在每個(gè)上升沿啟動(dòng)一次進(jìn)程(執(zhí)行進(jìn)程內(nèi)所有的語(yǔ)句)。,上升沿描述:Clock’ EVENT AND Clock=‘1’ 下降沿描述:Clock’ EVENT AND Clock=‘0’,上升沿描述: rising_edge (Clock) 下降沿描述: falling_edge (Clock),LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; ENTITY FreDevider IS PORT ( Clock: IN Std_logic; Clkout: OUT Std_logic); END; ARCHITECTURE Behavior OF FreDevider IS SIGNAL Clk: Std_Logic; BEGIN PROCESS (Clock) --將時(shí)鐘作為進(jìn)程的敏感信號(hào) BEGIN IF rising_edge (Clock) THEN Clk=NOT Clk; --在時(shí)鐘上升沿執(zhí)行Clk=NOT Clk END IF; END PROCESS; Clkout=Clk; END;,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; ENTITY Counter IS PORT ( RESET:IN Std_Logic; --異步復(fù)位信號(hào) Clock: IN Std_logic; --時(shí)鐘信號(hào) NUM: BUFFER Integer RANGE 0 TO 3); --計(jì)數(shù)器輸出值 END; ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (RESET, Clock) --將復(fù)位、時(shí)鐘作為進(jìn)程的敏感信號(hào) BEGIN IF RESET=‘1’ THEN Num=0; --復(fù)位時(shí)Num清0 ELSIF rising_edge (Clock) THEN IF Num=3 THEN Num=0; --如果Num=3就清0 ELSE Num=Num+1; -- 否則自加1 END IF; END IF; END PROCESS; END;,仿真波形:,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; USE IEEE.Std_Logic_unsigned.ALL; ENTITY Counter IS PORT ( clr :IN Std_Logic; inl: in std_logic_vector(3 downto 0); outl: out std_logic_vector(3 downto 0) --計(jì)數(shù)器輸出值 ); END; ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS (clr, inl) --進(jìn)程的敏感信號(hào) BEGIN IF (clr=‘1’ or inl=“1001”) THEN outl=“0000”; ELSE outl=inl+1; END IF; END PROCESS; END;,重載符號(hào),在庫(kù)IEEE.Std_Logic_unsigned中預(yù)先聲明,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; USE IEEE.Std_Logic_unsigned.ALL; ENTITY Counter IS PORT ( clr,clk:IN Std_Logic; cnt: buffer std_logic_vector(3 downto 0) --計(jì)數(shù)器輸出值 ); END; ARCHITECTURE Behavior OF Counter IS BEGIN PROCESS BEGIN Wait until clk’event and clk=‘1’; IF (clr=‘1’ or cnt=9) THEN cnt=“0000”; ELSE cnt=cnt+1; END IF; END PROCESS; END;,Wait語(yǔ)句,信號(hào)賦值有寄存功能,引入時(shí)序器件,進(jìn)程的啟動(dòng),當(dāng)process的敏感信號(hào)參數(shù)表重沒(méi)有列出任何敏感信號(hào)時(shí),進(jìn)程通過(guò)wait語(yǔ)句啟動(dòng)。,ARCHITECTURE Behavior OF state IS BEGIN PROCESS --敏感信號(hào)列表為空 BEGIN wait until Clock; --等待clock激活進(jìn)程 IF ( drive=‘1’) THEN CASE output IS WHEN s1 = output output output output = s1; END CASE; END IF; END PROCESS; END;,進(jìn)程注意事項(xiàng):,進(jìn)程本身是并行語(yǔ)句,但內(nèi)部為順序語(yǔ)句; 進(jìn)程在敏感信號(hào)發(fā)生變化時(shí)被激活,在使用了敏感表的進(jìn)程中不能含wait語(yǔ)句; 在同一進(jìn)程中對(duì)同一信號(hào)多次賦值,只有最后一次生效; 在不同進(jìn)程中,不可對(duì)同一信號(hào)進(jìn)行賦值; 一個(gè)進(jìn)程不可同時(shí)對(duì)時(shí)鐘上、下沿敏感。 進(jìn)程中的信號(hào)賦值是在進(jìn)程掛起時(shí)生效的,而變量賦值是即時(shí)生效。 相對(duì)于結(jié)構(gòu)體而言,信號(hào)具有全局性,是進(jìn)程間進(jìn)行并行聯(lián)系的重要途徑。 進(jìn)程為綜合器支持,且其建模方式直接影響仿真和綜合結(jié)果,綜合后對(duì)應(yīng)于進(jìn)程的硬件結(jié)構(gòu)對(duì)進(jìn)程中所有可讀入信號(hào)都是敏感的。,SIGNAL A,B: Integer RANGE 0 TO 7; : PROCESS (Clock) BEGIN IF rising_edge (Clock) THEN : B=A+1; B=B+1; : END IF; END PROCESS;,PROCESS (Clock) BEGIN IF rising_edge (Clock) THEN : ELSIF falling_edge (Clock) THEN; : END IF; END PROCESS;,元件例化語(yǔ)句,元件例化引入一種連接關(guān)系,將預(yù)先設(shè)計(jì)好的實(shí)體定義為元件,并將此元件與當(dāng)前設(shè)計(jì)實(shí)體中的端口相連接,從而為當(dāng)前設(shè)計(jì)實(shí)體引入一個(gè)新的低一級(jí)的設(shè)計(jì)層次。,Component 元件名 port (端口名表); End component 元件名; 例化名:元件名 port map ( [元件端口名=]連接端口名 , …);,要插在電路系統(tǒng)板上的芯片,較大的電路系統(tǒng),電路板上準(zhǔn)備接受芯片的插座,元件例化語(yǔ)句,列出對(duì)外通信的各端口名,當(dāng)前系統(tǒng)與準(zhǔn)備接入的元件對(duì)應(yīng)端口相連的通信端口。,名字關(guān)聯(lián)方式:port map語(yǔ)句中位置可以任意; 位置關(guān)聯(lián)方式:端口名和關(guān)聯(lián)連接符號(hào)可省去,連接端口名的排列方式與所需例化的元件端口定義中的端口名相對(duì)應(yīng)。,1位二進(jìn)制全加器,內(nèi)部端口,外部端口,外部端口,內(nèi)部端口,端口連線,3.3.2 順序語(yǔ)句,順序語(yǔ)句僅出現(xiàn)在進(jìn)程和子程序中。 順序語(yǔ)句綜合后,映射為實(shí)際的門電路,系統(tǒng)一上電,門電路開始工作。電路可實(shí)現(xiàn)邏輯上的順序執(zhí)行,實(shí)際上所有門電路是并行工作的。,賦值語(yǔ)句 流程控制語(yǔ)句 空操作語(yǔ)句 等待語(yǔ)句 子程序調(diào)用語(yǔ)句 返回語(yǔ)句,賦值語(yǔ)句,ENTITY TEST_Signal IS PORT ( Reset, Clock: IN Std_logic; NumA, NumB: OUT Integer RANGE 0 TO 255 ); END; ARCHITECTURE TEST OF TEST_Signal IS SIGNAL A, B: Integer RANGE 0 TO 255; BEGIN PROCESS (RESET,Clock) VARIABLE C: Integer RANGE 0 TO 255;,BEGIN IF RESET=‘1’ THEN A=0; B=2;C:=0; ELSEIF rising_edge(Clock) THEN C:=C+1;A=C+1;B=A+2; END IF; END PROCESS; Num A=A; NumB=B; END;,流程控制語(yǔ)句,IF語(yǔ)句:,IF 條件式 THEN 順序語(yǔ)句 END IF;,IF 條件式 THEN 順序語(yǔ)句 ELSE 順序語(yǔ)句 END IF;,有優(yōu)先級(jí),用IF語(yǔ)句描述組合邏輯電路時(shí),務(wù)必涵蓋所有的情況,否則綜合后將引入鎖存器!,ENTITY Encoder IS PORT ( En: IN Std_logic; I: IN Std_logic_Vetor(7 DOWNTO 0); A: OUT Std_logic_Vetor(2 DOWNTO 0); Idle: OUT Std_logic ); END; ARCHITECTURE Behavior OF Encoder IS BEGIN PROCESS (En, I) BEGIN IF En=‘1’ THEN IF I(7)=‘1’ THEN A=“111”; Idle=‘0’; ELSIF IF I(6)=‘1’ THEN A=“110”; Idle=‘0’; ELSIF IF I(5)=‘1’ THEN A=“101”; Idle=‘0’;,ELSIF IF I(4)=‘1’ THEN A=“100”; Idle=‘0’; ELSIF IF I(3)=‘1’ THEN A=“011”; Idle=‘0’; ELSIF IF I(2)=‘1’ THEN A=“010”; Idle=‘0’; ELSIF IF I(1)=‘1’ THEN A=“001”; Idle=‘0’; ELSIF IF I(0)=‘1’ THEN A=“000”; Idle=‘0’; ELSE A=“000”; Idle=‘1’; END IF; END PROCESS; END;,引入ELSE,否則綜合器將引入鎖存器。,ENTITY COMP_BAD IS PORT( a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_BAD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = '1' ; ELSIF a1 b1 THEN q1 = ‘0’ ; -- 未提及當(dāng)a1=b1時(shí),q1作何操作 END IF; END PROCESS ; END ;,不完整條件語(yǔ)句與時(shí)序電路,綜合結(jié)果:,ENTITY COMP_GOOD IS PORT(a1 : IN BIT; b1 : IN BIT; q1 : OUT BIT ); END ; ARCHITECTURE one OF COMP_GOOD IS BEGIN PROCESS (a1,b1) BEGIN IF a1 b1 THEN q1 = '1' ; ELSE q1 = '0' ; END IF; END PROCESS ; END ;,完整條件語(yǔ)句,CASE語(yǔ)句,選擇值不可重復(fù)或重疊; 當(dāng)CASE語(yǔ)句的選擇值無(wú)法覆蓋所有的情況時(shí),要用OTHERS指定未能列出的其他所有情況的輸出值;,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; ENTITY MUX IS PORT ( Data0,Data1,Data2,Data3:IN Std_Logic_VECTOR(7 DOWNTO 0); Sel:IN Std_Logic_Vector(1 DOWNTO 0); DOUT:OUT Std_Logic_Vector(7 DOWNTO 0) ); END; ARCHITECTURE DataFlow OF MUX IS BEGIN CASE Sel IS WHEN “00”= DOUT DOUT DOUT DOUT DOUT=“00000000” ; END CASE; END PROCESS; END;,LOOP語(yǔ)句,[LOOP 標(biāo)號(hào):] FOR 循環(huán)變量 IN 循環(huán)次數(shù)范圍 LOOP 順序語(yǔ)句 END LOOP [LOOP 標(biāo)號(hào)];,臨時(shí)變量,僅在此LOOP中有效,無(wú)需事先定義。,….TO…. ….DOWNTO… 從初值開始,每執(zhí)行完一次后遞增(遞減),直到終值為止。,Sum:=0; FOR i IN 0 TO 9 LOOP Sum:=Sum+i; END LOOP;,循環(huán)次數(shù)只能用具體數(shù)值表達(dá),否則不可綜合,NEXT語(yǔ)句,NEXT語(yǔ)句主要用在LOOP語(yǔ)句執(zhí)行中有條件或無(wú)條件轉(zhuǎn)向控制,跳向LOOP語(yǔ)句的起點(diǎn)。,NEXT [循環(huán)標(biāo)號(hào)] [WHEN 條件];,NEXT ;--無(wú)條件終止當(dāng)前循環(huán),跳回到本次循環(huán)LOOP語(yǔ)句處,開始下一次循環(huán)。,NEXT LOOP 標(biāo)號(hào);--當(dāng)有多重LOOP語(yǔ)句嵌套時(shí),跳轉(zhuǎn)到指定標(biāo)號(hào)LOOP語(yǔ)句處,重新開始執(zhí)行循環(huán)操作。,NEXT LOOP 標(biāo)號(hào) WHEN 條件表達(dá)式;--條件表達(dá)式為TRUE,執(zhí)行NEXT語(yǔ)句,進(jìn)入跳轉(zhuǎn)操作,否則向下執(zhí)行。,EXIT語(yǔ)句,EXIT語(yǔ)句主要用在LOOP語(yǔ)句執(zhí)行中有條件或無(wú)條件內(nèi)部轉(zhuǎn)向控制,跳向LOOP語(yǔ)句的終點(diǎn),用于退出循環(huán)。當(dāng)程序需要處理保護(hù)、出錯(cuò)和警告狀態(tài)時(shí),語(yǔ)句能提供一個(gè)快捷、簡(jiǎn)便的方法。,EXIT [循環(huán)標(biāo)號(hào)] [WHEN 條件];,EXIT ;--無(wú)條件從當(dāng)前循環(huán)中退出。,EXIT LOOP 標(biāo)號(hào);--程序執(zhí)行退出動(dòng)作無(wú)條件從循環(huán)標(biāo)號(hào)所標(biāo)明的循環(huán)中退出。,EXIT LOOP 標(biāo)號(hào) WHEN 條件表達(dá)式;--條件表達(dá)式為TRUE,程序從當(dāng)前循環(huán)中退出。,NULL語(yǔ)句,NULL為空操作語(yǔ)句,一般用于CASE中,表示在某些情況下對(duì)輸出不作任何改變,隱含鎖存信號(hào)。不能用于純組合邏輯電路。,WAIT語(yǔ)句,在進(jìn)程或過(guò)程中執(zhí)行到WAIT語(yǔ)句時(shí),程序?qū)⒈粧炱?,并設(shè)置好再次執(zhí)行的條件。,WAIT [ON 信號(hào)表][UNTIL 條件表達(dá)式][FOR 時(shí)間表達(dá)式];,WAIT ;--未設(shè)置停止掛起的條件,表示永遠(yuǎn)掛起。,WAIT ON 信號(hào)表;--敏感信號(hào)等待語(yǔ)句,敏感信號(hào)的變化將結(jié)束掛起,再次啟動(dòng)進(jìn)程。,WAIT UNTIL 條件表達(dá)式;--條件表達(dá)式為中所含的信號(hào)發(fā)生變化,且滿足WAIT語(yǔ)句所設(shè)條件,則結(jié)束掛起,再次啟動(dòng)進(jìn)程。,WAIT FOR 時(shí)間表達(dá)式;--超時(shí)等待語(yǔ)句,從執(zhí)行當(dāng)前的WAIT語(yǔ)句開始,在此時(shí)間段內(nèi),進(jìn)程處于掛起狀態(tài),超過(guò)這一時(shí)間段后,程序自動(dòng)恢復(fù)執(zhí)行。,Configuration 配置名 of 實(shí)體名 is 配置說(shuō)明 End 配置名;,3.3.3 配置語(yǔ)句,配置主要為頂層設(shè)計(jì)實(shí)體指定結(jié)構(gòu)體,或?yàn)閰⑴c例化的元件實(shí)體指定所希望的結(jié)構(gòu)體 ,以層次方式來(lái)對(duì)元件例化做結(jié)構(gòu)配置。,Configuration 配置名 of 實(shí)體名 is 配置說(shuō)明 End 配置名;,為頂層設(shè)計(jì)實(shí)體指定結(jié)構(gòu)體,Entity nand is port ( a, b: in std_logic; c: out std_logic ); End entity nand; Architecture one of nand is begin c=not (a and b); End architecture one;,Architecture two of nand is begin c=‘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’; End architecture two;,Configuration second of nand is for two end for; End second; Configuration first of nand is for one end for; End first;,用實(shí)體nand構(gòu)成更高層次設(shè)計(jì)實(shí)體中的元件,由配置語(yǔ)句指定元件實(shí)體nand使用哪個(gè)結(jié)構(gòu)體。,LIBRARY IEEE; USE IEEE.Std_Logic_1164.ALL; Entity rs is port ( r, s: in std_logic; q,qf: out std_logic ); End entity rs; Architecture rsf of rs is Component nand PORT( a, b: IN Std_Logic; c: out std_logic); End Component; BEGIN u1:nand PORT MAP (a=s, b=qf, c=q); u2:nand PORT MAP ( a=q, b=r, c=qf); END rsf;,Configuration sel of rs is for rsf for u1,u2:nand use entity work.nand (two); end for; end for; End sel;,為參與例化的元件實(shí)體指定所希望的結(jié)構(gòu)體 ,以層次方式來(lái)對(duì)元件例化做結(jié)構(gòu)配置。,3.4 狀態(tài)機(jī)在VHDL中的實(shí)現(xiàn),3.4.1 Moore 狀態(tài)機(jī)的VHDL描述,輸出僅取決于其所處的狀態(tài)。,LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL; ENTITY Moore IS PORT ( Reset, Clock, DIN :IN Std_Logic; DOUT:OUT Std_Logic_Vetor(2 DOWNTO 0)); END; ARCHITECTURE Mooremachine OF Moore IS TYPE State_type IS (S0,S1,S2,S3); --定義State_type為枚舉型數(shù)據(jù)類型 SIGNAL State:State_type; BEGIN Change_State: PROCESS (Reset, Clock) --時(shí)序邏輯進(jìn)程 BEGIN IF Reset=‘1’ THEN State=S0;,ELSEIF rising_edge(Clock) THEN CASE State IS WHEN S0=〉IF DIN=‘1’ THEN StateDOUT DOUT DOUT DOUT =“111”; END CASE; END PROCESS; END;,仿真波形圖:,時(shí)鐘同步Moore狀態(tài)機(jī)結(jié)構(gòu)圖:,LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL; ENTITY Moore IS PORT ( Reset,Clock, DIN :in Std_Logic; DOUT:out Std_Logic_Vetor(2 DOWNTO 0) ); END; ARCHITECTURE Mooremachine OF Moore IS TYPE State_type IS (S0,S1,S2,S3); SIGNAL PresentState, NextState :State_type; --定義狀態(tài)轉(zhuǎn)換信號(hào) BEGIN State_Reg: PROCESS (Reset, Clock) --狀態(tài)寄存器 BEGIN IF Reset=‘1’ THEN --異步復(fù)位 PresentState=S0; ELSEIF rising_edge(Clock) THEN PresentState=NextState; --時(shí)鐘上升沿,轉(zhuǎn)換至下一狀態(tài) END IF; END PROCESS;,Change_State:PROCESS (PresentState,DIN) --組合邏輯進(jìn)程 BEGIN CASE Present State IS WHEN S0=〉if DIN=‘1’ then NextState=S1; else NextState=S0; end if; DOUT =“001”; WHEN S1=〉if DIN=‘1’ then NextState=S2; else NextState=S1; end if ; DOUT =“011”; WHEN S2=〉if DIN=‘1’ then NextState=S3; else NextState=S2; end if ; DOUT =“101”; WHEN S3=〉if DIN=‘1’ then NextState=S0; else NextState=S1; end if ; DOUT =“111”; END CASE; END PROCESS; END;,仿真波形圖:,3.4.2 Mealy 狀態(tài)機(jī)的VHDL描述: 輸出由當(dāng)前狀態(tài)與輸入共同決定。,LIBRARY IEEE; USE IEEE.Std_ Logic_1164.ALL; ENTITY MealyMachine IS PORT ( Reset ,Clock,DIN:IN Std_Logic; DOUT:OUT Std_Logic_Vetor(2 DOWNTO 0)); END; ARCHITECTURE Statemachine OF MealyMachine IS TYPE State_type IS (S0,S1,S2,S3); SIGNAL State:State_type; BEGIN Change_State: PROCESS (Reset,Clock) BEGIN IF Reset=‘1’ THEN State=S0;,ELSIF rising_edge(Clock) THEN CASE State IS WHEN S0=〉IF DIN=‘1’ THEN StateIF DIN=‘0’ THEN DOUT IF DIN=‘0’ THEN DOUT IF DIN=‘0’ THEN DOUT IF DIN=‘0’ THEN DOUT =“110”; ELSE DOUT=“111”;END IF; END CASE; END PROCESS; END;,3.4.3 狀態(tài)機(jī)的容錯(cuò)設(shè)計(jì),主要針對(duì)未定義狀態(tài)(剩余狀態(tài)),單獨(dú)設(shè)計(jì)一個(gè)狀態(tài)(ERROR),用以處理狀態(tài)機(jī)出錯(cuò)的情況, 用 WHEN OTHERS=State=Error; 使?fàn)顟B(tài)機(jī)從未定義的狀態(tài)跳轉(zhuǎn)到處理出錯(cuò)情況的狀態(tài);,直接回復(fù)到其他已設(shè)定的狀態(tài)。,3.4.4 狀態(tài)機(jī)設(shè)計(jì)與寄存器,對(duì)于所有可能的輸入條件,當(dāng)進(jìn)程中的輸出信號(hào)如果沒(méi)有被完全地與之對(duì)應(yīng)指定,此信號(hào)將自動(dòng)被指定,即在未列出的條件下保持原值,這意味著引入了寄存器。,在狀態(tài)機(jī)中,如果存在一個(gè)或更多的狀態(tài)沒(méi)有被明確指定轉(zhuǎn)換方式,或者對(duì)于狀態(tài)機(jī)中的狀態(tài)值沒(méi)有規(guī)定所有的輸出值,就可能引入寄存器。,計(jì)數(shù)器:,3.5 常用電路的VHDL程序,比較器:,奇數(shù)倍分頻:,8位奇偶校驗(yàn)電路,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY p_check IS PORT (a: IN STD_LOGIC_VECTOR (7 DOWNTO 0); y: OUT STD_LOGIC); END p_check; ARCHITECTURE opt OF p_check IS SIGNAL tmp: STD_LOGIC; BEGIN PROCESS (a) BEGIN tmp='0'; FOR n IN 0 TO 7 LOOP --此循環(huán)語(yǔ) 句作為進(jìn)程語(yǔ)句中的順序語(yǔ)句使用 tmp = tmp XOR a(n); END LOOP; y = tmp ENDPROCESS;- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VHDL 語(yǔ)言 入門教程
鏈接地址:http://www.hcyjhs8.com/p-1898753.html