版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、,何賓 2008.09,EDA原理及應(yīng)用,第 3章,本章詳細(xì)介紹了VHDL語言的基本結(jié)構(gòu)VHDL語言要素、VHDL語言語句的原理和設(shè)計(jì)方法。VHDL語言是整個(gè)EDA設(shè)計(jì)中最核心的內(nèi)容之一。讀者必須熟練的掌握VHDL語言,并且通過實(shí)驗(yàn)掌握使用VHDL語言對可編程邏輯器件進(jìn)行編程的方法和技巧。,VHDL語言基礎(chǔ)-本章概述,第三章,VHDL語言基礎(chǔ),一個(gè)完整的VHDL程序包含實(shí)體(entity)、結(jié)構(gòu)體 (architecture)、配置(configuration)、包集合(package)、庫(library)5個(gè)部分。 實(shí)體主要是用于描述和外部設(shè)備的接口信號; 構(gòu)造體用于描述系統(tǒng)的具體邏輯行為
2、功能; 包存放設(shè)計(jì)使用到的公共的數(shù)據(jù)類型、常數(shù)和子程序等; 配置用來從庫中選擇所需單元來組成系統(tǒng)設(shè)計(jì)的不同版本; 庫存放已經(jīng)編譯的實(shí)體、構(gòu)造體、包集合和配置等。, VHDL程序結(jié)構(gòu),第三章,VHDL語言基礎(chǔ),VHDL的基本結(jié)構(gòu)是由實(shí)體和結(jié)構(gòu)體兩部分組成的。 實(shí)體用于描述設(shè)計(jì)系統(tǒng)的外部接口信號,結(jié)構(gòu)體用于 描述系統(tǒng)的行為、系統(tǒng)數(shù)據(jù)的流程或者系統(tǒng)組織結(jié)構(gòu)形式。 設(shè)計(jì)實(shí)體是VHDL程序的基本單元,是電子系統(tǒng)的抽象。根據(jù)所設(shè)計(jì)的數(shù)字系統(tǒng)的復(fù)雜度的不同,其程序規(guī)模也大不相同。 實(shí)體由實(shí)體說明和結(jié)構(gòu)體說明兩部分組成。圖3.1給出 了VHDL的基本結(jié)構(gòu)示意圖。該圖表明了一個(gè)完整的VHDL程序所應(yīng)該包含的部分
3、。, VHDL程序結(jié)構(gòu),第三章,VHDL語言基礎(chǔ), VHDL程序結(jié)構(gòu),第三章,VHDL語言基礎(chǔ), VHDL實(shí)體,實(shí)體由類屬說明和端口說明兩個(gè)部分組成。根據(jù)IEEE標(biāo)準(zhǔn),實(shí)體組織的一般格式為: ENTITY IS Generic Declarations Port Declarations END ; (1076-1987 version) END ENTITY ; ( 1076-1993 version),第三章,VHDL語言基礎(chǔ), VHDL實(shí)體,實(shí)體說明在VHDL程序設(shè)計(jì)中描述一個(gè)元件或一個(gè)模塊與設(shè)計(jì)系統(tǒng)的其余部分(其余元件、模塊)之間的連接關(guān)系,可以看作一個(gè)電路圖的符號。因?yàn)樵谝粡堧娐穲D中
4、,某個(gè)元件在圖中與其他元件的連接關(guān)系是明顯直觀的。,第三章,VHDL語言基礎(chǔ),類屬說明,類屬常用于定義:實(shí)體端口的大小、設(shè)計(jì)實(shí)體的物理特性、總線寬度、元件例化的數(shù)量等。 例: entity mck is generic(width: integer:=16); port(add_bus:out std_logic_vector (width-1 downto 0); ,第三章,VHDL語言基礎(chǔ),端口說明,定義實(shí)體的一組端口稱作端口說明(port declaration)。 端口說明是對設(shè)計(jì)實(shí)體與外部接口的描述,是設(shè)計(jì)實(shí)體和外部環(huán)境動(dòng)態(tài)通信的通道,其功能對應(yīng)于電路圖符號的一個(gè)引腳。 實(shí)體說明中的
5、每一個(gè)I/O信號被稱為一個(gè)端口,一個(gè)端口就是一個(gè)數(shù)據(jù)對象。 端口可以被賦值,也可以當(dāng)作變量用在邏輯表達(dá)式中。,第三章,VHDL語言基礎(chǔ),端口說明,語法格式: Port ( 端口名稱,端口名稱:端口模式 數(shù)據(jù)類型; 端口名稱,端口名稱:端口模式 數(shù)據(jù)類型 ); 其中,端口模式: in: 輸入型,此端口為只讀型。 out: 輸出型,只能在實(shí)體內(nèi)部對其賦值。 inout:輸入輸出型,既可讀也可賦值。 buffer: 緩沖型,與 out 相似,但可讀。,第三章,VHDL語言基礎(chǔ),端口說明,(1)輸入模式(in) 輸入僅允許數(shù)據(jù)流入端口。輸入信號的驅(qū)動(dòng)源由外部向該設(shè)計(jì)實(shí)體內(nèi)進(jìn)行。輸入模式主要用于時(shí)鐘輸入
6、、控制輸入(如Load、Reset、Enable、CLK)和單向的數(shù)據(jù)輸入,如地址信(address)。,第三章,VHDL語言基礎(chǔ),端口說明,(2)輸出模式(out) 輸出僅允許數(shù)據(jù)流從實(shí)體內(nèi)部輸出。如圖3.2(a)所示,端口的驅(qū)動(dòng)源是由被設(shè)計(jì)的實(shí)體內(nèi)部進(jìn)行的。輸出模式不能用于被設(shè)計(jì)實(shí)體的內(nèi)部反饋,因?yàn)檩敵龆丝谠趯?shí)體內(nèi)不能看作可讀的。輸出模式常用于計(jì)數(shù)輸出、單向數(shù)據(jù)輸出、設(shè)計(jì)實(shí)體產(chǎn)生的控制其他實(shí)體的信號等。,第三章,VHDL語言基礎(chǔ),端口說明,(3)緩沖模式(buffer) 緩沖模式的端口與輸出模式的端口類似,只是緩沖模 式允許內(nèi)部引用該端口的信號。緩沖端口既能用于輸出, 也能用于反饋。緩沖端
7、口的驅(qū)動(dòng)源可以是:設(shè)計(jì)實(shí)體的內(nèi) 部信號源;其他實(shí)體的緩沖端口。 緩沖不允許多重驅(qū)動(dòng),不與其他實(shí)體的雙向端口和輸 出端口相連。,第三章,VHDL語言基礎(chǔ),端口說明,第三章,VHDL語言基礎(chǔ),端口說明,(4)雙向模式(inout) 雙向模式可以代替輸入模式、輸出模式和緩沖模式。 在設(shè)計(jì)實(shí)體的數(shù)據(jù)流中,有些數(shù)據(jù)是雙向的,數(shù)據(jù)可 以流入該設(shè)計(jì)實(shí)體,也有數(shù)據(jù)從設(shè)計(jì)實(shí)體流出,這時(shí)需要 將端口模式設(shè)計(jì)為雙向端口。 雙向模式的端口允許引入內(nèi)部反饋,所以雙向模式端 口還可以作為緩沖模式用。由上述分析可見,雙向端口是 一個(gè)完備的端口模式。,第三章,VHDL語言基礎(chǔ),數(shù)據(jù)類型,數(shù)據(jù)類型端口說明除了定義端口標(biāo)識(shí)名稱、
8、端口定義外,還要標(biāo)明出入端口的數(shù)據(jù)類型。 由IEEE std_logic_1164所約定的、由EDA工具支持和提供的數(shù)據(jù)類型為標(biāo)準(zhǔn)邏輯(standard logic)類型。標(biāo)準(zhǔn)邏輯類型也分為布爾型、位型、位矢量型和整數(shù)型。 為了使EDA工具的仿真、綜合軟件能夠處理這些邏輯類型,這些標(biāo)準(zhǔn)庫必須在實(shí)體中聲明或在USE語句中調(diào)用。,第三章,VHDL語言基礎(chǔ),實(shí)體舉例,【例3-1】下面給出一個(gè)關(guān)于8位計(jì)數(shù)器的實(shí)體說明 entity counter is generic (byte : integer:=8); port( clk : in std_logic; rst : in std_logic;
9、counter : out std_logic_vector(byte-1 downto 0) ); end counter;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體,結(jié)構(gòu)體具體指明了該設(shè)計(jì)實(shí)體的行為,定義了該設(shè)計(jì)實(shí)體的邏輯功能和行為,規(guī)定了該設(shè)計(jì)實(shí)體的內(nèi)部模塊及其內(nèi)部模塊的連接關(guān)系。 VHDL對構(gòu)造體的描述通常有三種方式進(jìn)行描述:行為描述、寄存器傳輸描述和結(jié)構(gòu)描述。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體,一個(gè)結(jié)構(gòu)體的VHDL的描述為: architecture of is - declarative_items (signal declarations, component declarations,
10、 etc.) begin - architecture body end ;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體,其中: arch_name為結(jié)構(gòu)體的名字; entity_name為實(shí)體的名字。 結(jié)構(gòu)體的begin開始的前面部分為聲明項(xiàng)(declarative_items),通常是對設(shè)計(jì)內(nèi)部的信號或者元件進(jìn)行聲明;而begin后面一直到結(jié)構(gòu)體的結(jié)束,該部分是對實(shí)體行為和功能的具體的描述。該部分的描述是由順序語句和并發(fā)語句完成的。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體內(nèi)信號定義,由結(jié)構(gòu)體的書寫格式知道,在關(guān)鍵字ARCHITECTURE和BEGIN之間的部分,用于對結(jié)構(gòu)內(nèi)部使用的信號、常數(shù)、數(shù)據(jù)類型、函
11、數(shù)進(jìn)行定義。 特別需要注意的是,這些聲明用于結(jié)構(gòu)體內(nèi)部,而不能用于實(shí)體內(nèi)部,因?yàn)橐粋€(gè)實(shí)體中可能有幾個(gè)結(jié)構(gòu)體相對應(yīng)。另外,實(shí)體說明中定義I/O信號為外部信號,而結(jié)構(gòu)體定義的信號為內(nèi)部信號。 結(jié)構(gòu)體的信號定義和實(shí)體的端口說明一樣,應(yīng)有信號名稱和數(shù)據(jù)類型定義,但不需要定義信號模式(mode),不需要說明信號方向,因?yàn)檫@些結(jié)構(gòu)體的內(nèi)部信號是用來描述結(jié)構(gòu)體內(nèi)部的連接關(guān)系。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體內(nèi)并行語句,并行處理語句是結(jié)構(gòu)體描述的主要語句,并行處理語句在begin和end之間。并行處理語句表明,若一個(gè)結(jié)構(gòu)體的描述用的是結(jié)構(gòu)描述方式,則并行語句表達(dá)了結(jié)構(gòu)體的內(nèi)部元件之間的互連關(guān)系。這些語句是并
12、行的,各個(gè)語句之間沒有順序關(guān)系。 若一個(gè)結(jié)構(gòu)體是用進(jìn)程語句來描述的,并且這個(gè)結(jié)構(gòu)體含有多個(gè)進(jìn)程,則各進(jìn)程之間是并行的。但必須聲明,每個(gè)進(jìn)程內(nèi)部的語句是有順序的,不是并行的。 若一個(gè)結(jié)構(gòu)體用模塊化結(jié)構(gòu)描述,則各模塊間是并行的,而模塊內(nèi)部視描述方式而定。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體內(nèi)并行語句,LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux4 IS PORT (a : in std_logic_vector(3 downto 0); sel : in std_logic_vector(1 downto 0); q : out std_
13、logic); END mux4; ARCHITECTURE rtl OF mux IS BEGIN q=a(0) when sel=”00” else a(1) when sel=”01” else a(2) when sel=”10” else a(3) when sel=”11” else X END rtl;,第三章,VHDL語言基礎(chǔ),描述風(fēng)格,VHDL語言主要有三種描述風(fēng)格: 行為描述; 數(shù)據(jù)流(RTL寄存器傳輸)描述; 結(jié)構(gòu)描述; 這三種描述方式從不同角度對硬件系統(tǒng)進(jìn)行描述。一般情況下,行為描述用于模型仿真和功能仿真;而RTL描述和結(jié)構(gòu)描述可以進(jìn)行邏輯綜合。,第三章,VHDL語言基
14、礎(chǔ),結(jié)構(gòu)體行為描述,行為描述是以算法形式對系統(tǒng)模型、功能的描述,與硬件結(jié)構(gòu)無關(guān)。抽象程度最高。 行為描述中常用語句的語句主要有:進(jìn)程、過程和函數(shù)。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體行為描述,【例3-4】兩輸入或門的行為描述。 ENTITY and2 IS PORT (a, b : in std_logic; c : out std_logic); END and2; ARCHITECTURE behav of and2 is BEGIN c=a or b AFTER 5 ns; END behave;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,數(shù)據(jù)流描述又稱為寄存器傳輸級RTL描述。RTL級
15、描述是以寄存器為特征,在寄存器之間插入組合邏輯電路。即以描述數(shù)據(jù)流的流向?yàn)樘卣鳌?第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,【例3-5】四選一選擇器的數(shù)據(jù)流(RTL)描述。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY mux4 IS port (x : in std_logic_vector(3 downto 0); sel : in std_logic_vector(1 downto 0); y : out std_logic); END mux4; ARCHITECT
16、URE rtl of mux4 IS BEGIN y=x(0) when sel=”00” else x(1) when sel=”01” else x(2) when sel=”10” else x(3); END rtl;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,這種基于RTL級的描述,雖然具體了一些,但仍沒有反映出實(shí)體內(nèi)的具體結(jié)構(gòu)。使用RTL描述時(shí),應(yīng)遵循以下幾個(gè)原則: 1、在一個(gè)進(jìn)程中,不允許存在兩個(gè)寄存器的描述 【例3-6】下面是違反規(guī)則1的描述 PROCESS(clk1,clk2) BEGIN if rising_edge(clk1) then y=a; end if; if
17、rising_edge(clk2) then z=b; end if; END PROCESS;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,2、在描述寄存器時(shí),不允許使用IF語句中的ELSE項(xiàng) 【例3-7】下面是違反規(guī)則2的描述 PROCESS(clk) BEGIN if rising_edge(clk) then y=a; else y=b; end if; END PROCESS;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,3、在描述寄存器時(shí),必須帶入信號值 【例3-8】下面的例子說明了如何帶入信號的方法 PROCESS(clk) VARIABLE tmp : std_logic; B
18、EGIN y=tmp; if rising_edge(clk) then tmp:=a; end if; END PROCESS;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,在多層次的設(shè)計(jì)中,高層次的設(shè)計(jì)模塊調(diào)用低層次的設(shè)計(jì)模塊,構(gòu)成模塊化的設(shè)計(jì)。從上面的例子可以看出來,全加器由兩個(gè)半加器和一個(gè)或門構(gòu)成,元件之間,元件與實(shí)體端口之間通過信號連接。知道了他們的構(gòu)成方式,那么就可以通過元件例化語句進(jìn)行描述。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體數(shù)據(jù)流描述,【例3-9】全加器的結(jié)構(gòu)化的描述。 Architecture structure_view of Full_adder is Component
19、half_adder port(a,b : in std_logic; s,c : out std_logic); end component; component or_gate port(a,b : in std_logic; c: out std_logic); end component; signal a,b,c : std_logic; begin Inst_half_adder1 : port map(x,y,a,b); Inst_half_adder2 : port map(a,cin,sum,c); Inst_or_gate: port map(b,c,cout); End
20、structure_view;,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,結(jié)構(gòu)層次化編碼是模塊化設(shè)計(jì)思想的一種體現(xiàn)。目前大型設(shè)計(jì)中必須采用結(jié)構(gòu)層次化編碼風(fēng)格,以提高代碼的可讀性,易于分工協(xié)作,易于設(shè)計(jì)仿真測試激勵(lì)。最基本的結(jié)構(gòu)化層次是由一個(gè)頂層模塊和若干個(gè)子模塊構(gòu)成,每個(gè)子模塊根據(jù)需要還可以包含自己的子模塊。結(jié)構(gòu)層次化編碼結(jié)構(gòu)如圖3.5所示。 在進(jìn)行結(jié)構(gòu)層次化設(shè)計(jì)過程中,要遵循以下的原則:,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,1、結(jié)構(gòu)的層次不易太深,一般為3到5層即可。 在綜合時(shí),一般綜合工具為了
21、獲得更好的綜合效果,特別是為了使綜合結(jié)果所占用的面積更小,會(huì)默認(rèn)將RTL代碼的層次打平。而有時(shí)為了在綜合后仿真和布局布線后時(shí)序仿真中較方便的找出一些中間信號,比如子模塊之間的接口信號等,可以在綜合工具中設(shè)置保留結(jié)構(gòu)層次,以便于仿真信號的查找和觀察。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,2、頂層模塊最好僅僅包含對所有模塊的組織和調(diào)用,而不應(yīng)該完成比較復(fù)雜的邏輯功能。 較為合理的頂層模塊由:輸入輸出管腳聲明、模塊的調(diào)用與實(shí)例化、全局時(shí)鐘資源、全局置位/復(fù)位、三態(tài)緩沖和一些簡單的組合邏輯等構(gòu)成。,第三章,VHDL語言基礎(chǔ),結(jié)構(gòu)體結(jié)構(gòu)化描述,3、所有的I/O信號,如輸入、輸出、雙向信號等的描述
22、在頂層模塊完成。 4、子模塊之間也可以有接口,但是最好不要建立子模塊間跨層次的接口,例如上圖中模塊A1到模塊B1之間不宜直接連接,兩者需要交換的信號可以通過模塊A,模塊B的接口傳遞。這樣做的好處是增加了設(shè)計(jì)的可讀性和可維護(hù)性。 5、子模塊的合理劃分非常重要,應(yīng)該綜合考慮子模塊的功能、結(jié)構(gòu)、時(shí)序、復(fù)雜度等多方面因素。,第三章,VHDL語言基礎(chǔ),資源共享,除實(shí)體和構(gòu)造體外,包集合、庫及配置是VHDL語言和另外3個(gè)可以各自獨(dú)立進(jìn)行編譯的源設(shè)計(jì)單元。通過使用庫、包和配置,可以實(shí)現(xiàn)設(shè)計(jì)的共享。,第三章,VHDL語言基礎(chǔ),資源共享(庫種類),一個(gè)庫中可以存放集合定義、實(shí)體定義、結(jié)構(gòu)體定義和配置定義。當(dāng)需要
23、引用一個(gè)庫時(shí),首先需要對庫名進(jìn)行說明,其格式為: LIBRARY 其中為庫的名字,這時(shí)就可以使用庫中已經(jīng)編譯好的設(shè)計(jì)。對庫中集合包的訪問必須再經(jīng)由USE語句才能打開。其格式為: USE 其中為程序包的名字。,第三章,VHDL語言基礎(chǔ),資源共享(庫種類),當(dāng)前在VHDL語言中的庫大致可以分為5種:IEEE庫、STD庫、ASIC矢量庫、用戶定義庫和WORK庫。,第三章,VHDL語言基礎(chǔ),資源共享(庫種類),1)IEEE 庫 定義了四個(gè)常用的程序包: std_logic_1164 (std_logic types STANDATD包集合中定義最基本的數(shù)據(jù)類型包括Bit,bit_vector,Bool
24、ean,Integer,Real,and Time等。,第三章,VHDL語言基礎(chǔ),資源共享(庫種類),3、面向ASIC的庫 在VHDL中,為了門級仿真的要求,各公司提供面向ASIC的邏輯門庫。在該庫中存放著與邏輯門一一對應(yīng)的實(shí)體。為了使用它,必須對庫進(jìn)行說明。 4、WORK庫 是存放設(shè)計(jì)數(shù)據(jù)的庫。設(shè)計(jì)所描述的VHDL語句并不需要說明,將存放到WORK中。在使用該庫的時(shí)候無須說明。,第三章,VHDL語言基礎(chǔ),資源共享(庫種類),5、用戶定義庫 用戶定義庫是設(shè)計(jì)人員根據(jù)設(shè)計(jì)的需要所開發(fā)的包集合和實(shí)體等,可以匯集在一起定義成一個(gè)庫。在使用庫時(shí)必須要說明庫名稱,然后才能調(diào)用包內(nèi)的數(shù)據(jù)等。,第三章,VH
25、DL語言基礎(chǔ),資源共享(庫使用),1、庫的說明 除了WORK和STD庫外,其它的庫在使用前都需要進(jìn)行說明,其說明格式為: library ; 其中 LIB_NAME為所需要調(diào)用的庫的名字。,第三章,VHDL語言基礎(chǔ),資源共享(庫使用),2、庫的調(diào)用 此外,還需要設(shè)計(jì)人員指明使用庫中哪個(gè)包集合以及包集合中的項(xiàng)目名(過程名、函數(shù)名等)。 use .all 其中LIB_NAME為所需要調(diào)用的庫的名字, PACKAGE_NAME為所需要調(diào)用的包的名字。,第三章,VHDL語言基礎(chǔ),資源共享(庫使用),3、庫的作用范圍 庫說明語句的作用范圍從一個(gè)實(shí)體說明開始到所屬的構(gòu)造體、配置為止。當(dāng)一個(gè)文件中出現(xiàn)兩個(gè)以
26、上的實(shí)體時(shí),兩條作為使用庫的說明語句應(yīng)在每個(gè)實(shí)體說明語句前重復(fù)書寫。,第三章,VHDL語言基礎(chǔ),資源共享(包集合),包集合(Package)說明像C語言中的include語句一樣,用來單純的羅列VHDL語言中所要用到的信號定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義等。使用包集合時(shí)用USE語句說明。 如USE IEEE.STD_logic_1164.ALL; 程序包的說明包含:常量說明;VHDL數(shù)據(jù)類型說明;元件說明;子程序說明;程序包的結(jié)構(gòu)包括:程序包說明(包首);程序包主體(包體);,第三章,VHDL語言基礎(chǔ),程序包說明語句,包的說明語句格式: package is end ;
27、其中 package_name為包的名字,包的聲明部分以package is開頭,以end結(jié)束。Package declaration為包的具體聲明部分。 從上面的包聲明格式可以知道,包的聲明部分包含:類型說明;子類型說明;常量說明;信號說明;子程序說明;元件說明。,第三章,VHDL語言基礎(chǔ),程序包說明語句,package example is type is record : std_logic_vector( 7 downto 0); : std_logic; end record; - Declare constants constant : time := ns; constant :
28、 integer := ; - Declare functions and procedure function (signal : in ) return ; procedure ( :in ); end example;,第三章,VHDL語言基礎(chǔ),程序包體,程序包的內(nèi)容:子程序的實(shí)現(xiàn)算法。包體的語句格式: package body is end ; 其中 package_name為包的名字,程序包的包體部分以package body is開頭,以end結(jié)束。Package body declaration為包體的具體聲明部分。 包體說明項(xiàng)可含:use 語句;子程序說明;子程序主體;類型說明
29、;子類型說明;常量說明。 程序包首與程序包體的關(guān)系:程序包體并非必須,只有在程序包中要說明子程序時(shí),程序包體才是必須的。程序包首可以獨(dú)立定義和使用。,第三章,VHDL語言基礎(chǔ),程序包體,package body example is function (signal : in ) return is variable : ; begin := xor ; return ; end ; function (signal : in ; signal : in ) return is begin if ( = 1) then return ; else return Z; end if; end ;
30、 procedure ( : in ) is begin end ; end example;,第三章,VHDL語言基礎(chǔ),VHDL中的函數(shù),1、VHDL語言中的函數(shù)的說明部分 function ( : ; : ) return ; 其中FUNC_NAME為函數(shù)的名字;()里為輸入變量的聲明,對變量的聲明包括對變量類型type的說明;在聲明部分還要聲明return后面變量的返回類型。,第三章,VHDL語言基礎(chǔ),VHDL中的函數(shù),2、VHDL語言中的函數(shù)的實(shí)現(xiàn)部分 function ( : ; : ) return is - subprogram_declarative_items (consta
31、nt declarations, variable declarations, etc.) begin - function body end ;,第三章,VHDL語言基礎(chǔ),VHDL中的函數(shù),其中:FUNC_NAME為函數(shù)的名字;()里為輸入變量的聲明,對變量的聲明包括對變量類型type的說明;在聲明部分還要聲明return后面變量的返回類型。在return is之后和begin之前是函數(shù)內(nèi)部使用的一些常數(shù)和變量等的聲明。在begin后到end之間是函數(shù)體部分,函數(shù)體是函數(shù)的具體邏輯行為方式的表示。 return用于函數(shù),并且必須返回一個(gè)值,該值的類型必須和聲明的返回類型一致。,第三章,VHD
32、L語言基礎(chǔ),VHDL中的函數(shù),【例3-12】函數(shù)的聲明和實(shí)現(xiàn)部分 function lut1(a: std_logic_vector) -函數(shù)的聲明部分 return std_logic_vector; function lut1(a: std_logic_vector) -函數(shù)的實(shí)現(xiàn)部分 return std_logic_vector is variable length1 : std_logic_vector(2 downto 0); begin if(a=11111110) then length1:=000; elsif(a=11111101) then length1:=001; e
33、lsif(a=11111011) then length1:=010; elsif(a=11110111) then length1:=011; elsif(a=11101111) then length1:=100; elsif(a=11011111) then length1:=101; elsif(a=10111111) then length1:=110; elsif(a=01111111) then length1:=111; end if; return length1;,第三章,VHDL語言基礎(chǔ),VHDL中的子程序,1、VHDL語言中的子程序的說明部分 procedure ( :
34、 in ; : out ); 其中PROC_NAME為子程序的名字;()里為輸入變量和輸出變量的聲明,對變量的聲明包括對變量輸入(in)/輸出(out)和變量類型type的說明。,第三章,VHDL語言基礎(chǔ),VHDL中的子程序,2、VHDL語言中的子程序的實(shí)現(xiàn)部分 procedure ( : in ; : out ) is - subprogram_declarative_items (constant declarations, variable declarations, etc.) begin - procedure body end ;,第三章,VHDL語言基礎(chǔ),VHDL中的子程序,其中
35、:PROCC_NAME為子程序的名字;()里為輸入和輸出變量的聲明,對變量的聲明包括對變量輸入(in)/輸出(out)和變量類型type的說明。在()is之后和begin之前是子程序內(nèi)部使用的一些常數(shù)和變量等的聲明。在begin后到end之間是子程序體部分,子程序體是子程序的具體邏輯行為方式的表示。 return用于子程序,只是結(jié)束子程序,不返回任何值。,第三章,VHDL語言基礎(chǔ),VHDL中的子程序,【例3-13】子程序的聲明和實(shí)現(xiàn)部分 package PKG is procedure ADD ( A,B, CIN : in BIT; C : out BIT_VECTOR (1 downto
36、0) ); end PKG; package body PKG is procedure ADD ( A,B, CIN : in BIT; C : out BIT_VECTOR (1 downto 0) is variable S, COUT : BIT; begin S := A xor B xor CIN; COUT := (A and B) or (A and CIN) or (B and CIN); C := COUT ,第三章,VHDL語言基礎(chǔ),VHDL中的配置,元件配置就是從某個(gè)實(shí)體的多種結(jié)構(gòu)體描述方式中選擇特定的一個(gè)。配置語句描述層于層之間的連接關(guān)系以及實(shí)體與結(jié)構(gòu)之間的連接關(guān)系。
37、設(shè)計(jì)者可以利用這種配置語句來選擇不同的構(gòu)造體,使其與要設(shè)計(jì)的實(shí)體相對應(yīng)。在進(jìn)行高級仿真時(shí)經(jīng)常會(huì)使用元件配置語句。 配置語句的格式: configuration of is for end ; 其中:configration_identifier為配置名字,entity_name為配置所使用的實(shí)體名字,architecture_name為配置所使用的結(jié)構(gòu)體的名字,component_configuration為元件的配置。,第三章,VHDL語言基礎(chǔ),VHDL中的配置,【例3-14】一個(gè)與非門不同實(shí)現(xiàn)方式的配置如下: library ieee; use ieee.std_logic_1164.al
38、l; entity nand is port(a : in std_logic; b : in std_logic; c : out std_logic ); end entity nand; architecture art1 of nand is begin c=not (a and b); end architecture art1; architecture art2 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
39、(a=1) and (b=1) else 0; end architecture art2;,第三章,VHDL語言基礎(chǔ),VHDL中的配置,configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(數(shù)字型文字),1)整數(shù)文字:十進(jìn)制整數(shù) 如:5,678,156E2(=15600), 45_234_287 (=45234287) 2)實(shí)數(shù)文字:帶小數(shù)的十進(jìn)制數(shù) 如:23
40、.34,2.0,44.99E-2(=0.4499) 8_867_551.23_909(8867551.23909),第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(數(shù)字型文字),3)以數(shù)制基數(shù)表示的文字格式: 基數(shù)#數(shù)字文字#E指數(shù) 如:10#170#(=170) 2#1111_1110#(=254) 16#E#E1(=2#1110_0000# =224) 或:(=1416=224) 16#F.01#E+2 (=(15+1/(1616)1616=3841.00),第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(數(shù)字型文字),3、位矢量(Bit_Vector) 位矢量是用雙引號括起來的一組位數(shù)據(jù),使用位
41、矢量必 須注明位寬。 例如: B“1_1101_1110” :二進(jìn)制數(shù)數(shù)組,長度為9 O“34” :八進(jìn)制數(shù)數(shù)組,長度為6 X“1AB” :十六進(jìn)制數(shù)數(shù)組,長度為12,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(數(shù)字型文字),4、IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量 在IEEE庫的程序包STD_LOGIC1164中,定義了兩個(gè)重要的數(shù)據(jù)類型,即標(biāo)準(zhǔn)邏輯位STD_LOGIC和標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR,使得STD_LOGIC數(shù)據(jù)可以具有如下的9種不同的值: “U”初始值 “0”0 “Z”高阻 “L”弱信號0 “X ”不定 “1”1 “W”弱信號不定 “H”弱信號1 “_”不可能情況,
42、第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(字符型文字),1、字符(Character) 字符也是一種數(shù)據(jù)類型,字符類型通常用單引號引起來,如A。字符類型區(qū)分大小寫,如B不同于b。 2、字符串(String) 字符串是由雙引號括起來的一個(gè)字符序列,也稱字符矢量或字符串?dāng)?shù)組。常用于程序的提示和說明,如“STRING”等。,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(字符型文字),3、時(shí)間(Time) 時(shí)間是一個(gè)物理數(shù)據(jù)。完整的時(shí)間類型包括整數(shù)和單位兩部分;整數(shù)與單位之間至少留一個(gè)空格,如55 ms,2 ns。在包集合STANDARD中給除了時(shí)間的預(yù)定義,其單位為fs,ps,ns,us,ms,se
43、c,min,hr。 在系統(tǒng)仿真時(shí),時(shí)間數(shù)據(jù)很有用,可用它表示信號延時(shí),從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。 4、錯(cuò)誤等級(Severity Level) 在VHDL仿真器中,錯(cuò)誤等級用來指示設(shè)計(jì)系統(tǒng)的工作狀態(tài),它有四種:NOTE(注意)、WARNING(警告)、 ERROR(出錯(cuò))、 FAILURE(失?。?。在仿真過程中,可輸出這四種狀態(tài)以提示系統(tǒng)當(dāng)前的工作狀態(tài)。,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(標(biāo)識(shí)符),定義常數(shù)、變量、信號、端口、子程序或參數(shù)的名字。 基本標(biāo)識(shí)符的要求(87標(biāo)準(zhǔn)): 以英文字母開頭; 不連續(xù)使用下劃線“_”; 不以下劃線“_”結(jié)尾; 由26個(gè)大小寫英文字母
44、、數(shù)字0-9及下劃線“_”組 成的字符串。,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(字符型文字),基本標(biāo)識(shí)符中的英文字母不分大小寫;VHDL的保留字不能作為標(biāo)識(shí)符使用。,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(字符型文字),擴(kuò)展標(biāo)識(shí)符(93標(biāo)準(zhǔn)): 以反斜杠來界定,免去了87標(biāo)準(zhǔn)中基本標(biāo)識(shí)符的一些限制。 可以以數(shù)字打頭, 允許包含圖形符號, 允許使用VHDL保留字, 區(qū)分字母大小寫等。 如:74LS163、 Sig_#N、entity、ENTITY,第三章,VHDL語言基礎(chǔ),VHDL文字規(guī)則(下標(biāo)名及下標(biāo)段名),下標(biāo)名:用于指示數(shù)組型變量或信號的某一個(gè)元素。 格式:標(biāo)識(shí)符(表達(dá)式)。
45、下標(biāo)段名:用于指示數(shù)組型變量或信號的某一段元素。 格式:標(biāo)識(shí)符(表達(dá)式 to/downto 表達(dá)式)。 如:a : std_logic_vector(7 downto 0) a(7), a(6) a(0) a(7 downto 0), a(7 downto 4), a(5 downto 3),第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,1、常量(Constant ) 常量是一個(gè)固定的值,主要是為了使設(shè)計(jì)實(shí)體中的常量更容易閱讀和修改。常量一被賦值就不能在改變。常量所賦得值應(yīng)與定義的數(shù)據(jù)類型一致。 常量聲明的一般格式: CONSTANT 常數(shù)名:數(shù)據(jù)類型:=表達(dá)式; 例:CONSTANT Vcc:
46、 REAL: =5.0; 設(shè)計(jì)實(shí)體的電源電壓指定 常量的使用范圍取決于它被定義的位置。程序包中定義的常量具有最大的全局化特性,可以用在調(diào)用此程序包的所有設(shè)計(jì)實(shí)體中;設(shè)計(jì)實(shí)體中某一結(jié)構(gòu)體中定義的常量只能用于此結(jié)構(gòu)體;結(jié)構(gòu)體中某一單元定義的常量,如一個(gè)進(jìn)程中,這個(gè)常量只能用在這一進(jìn)程中。,第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,2、變量(Variable) 變量是一個(gè)局部變量,它只能在進(jìn)程語句、函數(shù)語句和進(jìn)程語句結(jié)構(gòu)中使用。用作局部數(shù)據(jù)存儲(chǔ)。在仿真過程中。它不像信號那樣,到了規(guī)定的仿真時(shí)間才進(jìn)行賦值,變量的賦值是立即生效的。變量常用在實(shí)現(xiàn)某種算法的賦值語句中。 變量聲明一般格式: VARIAB
47、LE 變量名 數(shù)據(jù)類型 約束條件:=表達(dá)式; 例:VARIABLE x,y:INTEGER; VARIABLE count: INTEGER RANGE0 TO255;,第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,變量的適用范圍僅限于定義了變量的進(jìn)程或子程序中。若將變量用于進(jìn)程之外,必須該值賦給一個(gè)相同的類型的信號,即進(jìn)程之間傳遞數(shù)據(jù)靠的信號。 變量賦值語句的語法格式如下: 目標(biāo)變量:=表達(dá)式; 變量賦值符號是“:=”。賦值語句右方的表達(dá)式必須是一個(gè)與目標(biāo)變量有相同數(shù)據(jù)類型的數(shù)值。 變量不能用于硬件連線和存儲(chǔ)元件。變量只能在進(jìn)程、函數(shù)和過程中使用,一旦賦值立即生效。,第三章,VHDL語言基礎(chǔ),
48、VHDL數(shù)據(jù)對象,3、信號(Signal) 信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象,它類似于連接線,它除了沒有數(shù)據(jù)流動(dòng)方向說明以外,其它性質(zhì)與實(shí)體的端口(Port)概念一致。變量的值可以傳遞給信號,而信號的值不能傳遞給變量。信號通常在構(gòu)造體、包集合和實(shí)體中說明。 信號說明格式為: SIGNAL 信號名: 數(shù)據(jù)類型;,第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,信號初始值的設(shè)置不是必需的,而且初始值僅在VHDL的行為仿真中有效。信號是電子系統(tǒng)內(nèi)部硬件連接和硬件特性的抽象表示。用來描述硬件系統(tǒng)的基本特性。 信號賦值語句的語法格式如下: 目標(biāo)信號 表達(dá)式; 信號除了沒有方向的概念以外幾乎和端口概念一致。端
49、口是一種有方向的信號。即輸出端口不能讀出數(shù)據(jù),只能寫入數(shù)據(jù);輸入端口不能寫入數(shù)據(jù),只能讀出數(shù)據(jù)。 信號本身無方向,可讀可寫。,第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,信號是一個(gè)全局量,可以用來進(jìn)行進(jìn)程之間的通信。下面對信號和變量的一些不同特性進(jìn)行詳細(xì)的說明: 1、信號賦值可以有延遲時(shí)間,變量賦值無時(shí)間延遲; 2、信號除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變量只有當(dāng)前值; 3、進(jìn)程對信號敏感,對變量不敏感; 4、信號可以是多個(gè)進(jìn)程的全局信號,但變量只在定義它之后的順序域可見; 5、信號可以看作硬件的一根連線,但變量無此對應(yīng)關(guān)系。,第三章,VHDL語言基礎(chǔ),VHDL數(shù)據(jù)對象,VHDL是一種強(qiáng)
50、數(shù)據(jù)類型語言。要求設(shè)計(jì)實(shí)體中的每一個(gè)常數(shù)、信號、變量、函數(shù)以及設(shè)定的各種參量都必須具有確定的數(shù)據(jù)類型,并且相同數(shù)據(jù)類型的量才能互相傳遞和作用。 VHDL數(shù)據(jù)類型分為四大類: 標(biāo)量類型(SCALAR TYPE); 復(fù)合類型(COMPOSITE TYPE); 存取類型(ACCESS TYPE); 文件類型(FILES TYPE),第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,1、布爾量(boolean) 布爾量具有兩種狀態(tài):false 和 true。常用于邏輯函數(shù),如相等(=)、比較()等中作邏輯比較。如,bit 值轉(zhuǎn)化成boolean 值: boolean_var := (bit_var =
51、 1); 2、位(bit) bit 表示一位的信號值。放在單引號中,如 0 或 1。 3、位矢量 (bit_vector) bit_vector 是用雙引號括起來的一組位數(shù)據(jù)。 如: “001100” ,X“00B10B”,第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,4、STD_LOGIC -U,X,0,1,Z,W,L,H,- 5、STD_LOGIC_VECTOR -Natural Range of STD_LOGIC 6、字符(character) 用單引號將字符括起來。 variable character_var : character; Character_var : = A;,
52、第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,7、整數(shù)(integer) integer 表示所有正的和負(fù)的整數(shù)。硬件實(shí)現(xiàn)時(shí),利用32位的位矢量來表示。可實(shí)現(xiàn)的整數(shù)范圍為: -(231-1) to (231-1) VHDL綜合器要求對具體的整數(shù)作出范圍限定,否則無法綜合成硬件電路。 如:signal s : integer range 0 to 15; 信號 s 的取值范圍是0-15,可用4位二進(jìn)制數(shù)表示,因此 s 將被綜合成由四條信號線構(gòu)成的信號。,第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,8、自然數(shù)(natural)和正整數(shù)(positive) natural是integer的
53、子類型,表示非負(fù)整數(shù)。 positive是integer的子類型,表示正整數(shù)。 定義如下: subtype natural is integer range 0 to integerhigh; subtype positive is integer range 1 to integerhigh;,第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,9、實(shí)數(shù)或稱浮點(diǎn)數(shù)(real) 取值范圍:-1.0E38 - +1.0E38。實(shí)數(shù)類型僅能用于VHDL仿真器,一般綜合器不支持。 10、字符串(string) string 是 character 類型的一個(gè)非限定數(shù)組。用雙引號將一串字符括起來。如:
54、variable string_var : string(1 to 7); string_var := “Rosebud”;,第三章,VHDL語言基礎(chǔ),VHDL預(yù)定義數(shù)據(jù)類型,11、時(shí)間(TIME) 由整數(shù)和物理單位組成,如:55 ms,20 ns。 12、錯(cuò)誤等級(SEVERITY_LEVEL) 仿真中用來指示系統(tǒng)的工作狀態(tài),共有四種: NOTE(注意); WARNING(警告); ERROR(出錯(cuò)); FAILURE(失?。?。,第三章,VHDL語言基礎(chǔ),標(biāo)準(zhǔn)邏輯位與矢量,1、std_logic 類型 由 ieee 庫中的std_logic_1164 程序包定義,為九值邏輯系統(tǒng),如下: (U
55、,X,0,1,Z,W,L,H,-) U:未初始化的, X:強(qiáng)未知的, 0:強(qiáng)0, 1:強(qiáng)1, Z:高阻態(tài), W:弱未知的, L:弱0, H:弱1, -:忽略 由 std_logic 類型代替 bit 類型可以完成電子系統(tǒng)的精確模擬,并可實(shí)現(xiàn)常見的三態(tài)總線電路。,第三章,VHDL語言基礎(chǔ),標(biāo)準(zhǔn)邏輯位與矢量,2、std_logic_vector 類型 由 std_logic 構(gòu)成的數(shù)組。定義如下: type std_logic_vector is array(natural range) of std_logic; 賦值的原則:相同位寬,相同數(shù)據(jù)類型。,第三章,VHDL語言基礎(chǔ),用戶自定義類型,用
56、戶自定義類型是VHDL語言的一大特色??捎捎脩舳x的數(shù)據(jù)類型有:枚舉類型;整數(shù)和實(shí)數(shù)類型;數(shù)組類型;記錄類型;子類型。,第三章,VHDL語言基礎(chǔ),用戶自定義類型(type類型),1)整數(shù)類型描述 type is array integer range to ; 其中:type_name為類型名字,lower_limit為整數(shù)的下限值, upper_limit為整數(shù)的上限值。 【例3-16】type my_integer is integer range 0 to 9;,第三章,VHDL語言基礎(chǔ),用戶自定義類型(type類型),2)枚舉類型描述 type is (, , .); 其中type_name為類型名字,為字符串的名字。 【例3-17】9值系統(tǒng)的枚舉類型語句 type std_logic is(U,X,0,1,Z,W,L,H,-) 【例3-18】顏色
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年縣醫(yī)保局面試核心考點(diǎn)專項(xiàng)突破練習(xí)題及解答
- 2026年及未來5年中國工業(yè)自動(dòng)化系統(tǒng)行業(yè)發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報(bào)告
- 2026年及未來5年中國汽車再制造行業(yè)發(fā)展趨勢及投資前景預(yù)測報(bào)告
- 2026及未來5年中國5G網(wǎng)絡(luò)切片行業(yè)市場研究分析及發(fā)展前景研判報(bào)告
- 房屋交付質(zhì)量安全承諾函(4篇)
- 卓越團(tuán)隊(duì)構(gòu)建能力強(qiáng)化承諾書8篇
- 規(guī)范小區(qū)停車場管理制度
- 規(guī)范辦公室公章管理制度
- 關(guān)于成人儀式規(guī)范制度
- 酒店雙夜房制度規(guī)范要求
- 小學(xué)信息技術(shù)教學(xué)備課全流程解析
- 腫瘤放射治療的新技術(shù)進(jìn)展
- 退崗修養(yǎng)協(xié)議書范本
- 高考語文二輪復(fù)習(xí)高中語文邏輯推斷測試試題附解析
- 土壤微生物群落結(jié)構(gòu)優(yōu)化研究
- 2024外研版四年級英語上冊Unit 4知識(shí)清單
- 四川省南充市2024-2025學(xué)年部編版七年級上學(xué)期期末歷史試題
- 國有企業(yè)三位一體推進(jìn)內(nèi)控風(fēng)控合規(guī)建設(shè)的問題和分析
- 2025年高二數(shù)學(xué)建模試題及答案
- 儲(chǔ)能集裝箱知識(shí)培訓(xùn)總結(jié)課件
- 幼兒園中班語言《雪房子》課件
評論
0/150
提交評論