版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、 早期FPGA現(xiàn)在 一、一、萊迪思)通用陣列邏輯 二維的邏輯塊陣列,構(gòu)成了二維的邏輯塊陣列,構(gòu)成了PLD器件的邏器件的邏輯組成核心。輯組成核心。輸入輸出塊:輸入輸出塊:連接邏輯塊的互連資源連接邏輯塊的互連資源連線資源:由各種長度的連線線段組成,其中也有連線資源:由各種長度的連線線段組成,其中也有 一一些可編程的連接開關(guān),它們用于邏輯塊之間、邏輯塊些可編程的連接開關(guān),它們用于邏輯塊之間、邏輯塊輸入輸出塊之間的連接輸入輸出塊之間的連接 這種這種FPGA的結(jié)構(gòu)可分為三塊:宏單元的結(jié)構(gòu)可分為三塊:宏單元(Macrocell)、可編程連線()、可編程連線(PIA)和)和I/O控制塊??刂茐K。宏單元是器件
2、的基本結(jié)構(gòu),由它來實現(xiàn)基本的邏輯宏單元是器件的基本結(jié)構(gòu),由它來實現(xiàn)基本的邏輯功能;可編程連線負(fù)責(zé)信號傳遞,連接所有的宏單功能;可編程連線負(fù)責(zé)信號傳遞,連接所有的宏單元;元;I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。可以設(shè)定集電極開路輸出,擺率控制,三態(tài)輸出等。 INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2是全局是全局時鐘、清零和輸出使能信號,這時鐘、清零和輸出使能信號,這幾個信號有專用連線與器件中每幾個信號有專用連線與器件中每個宏單元相連,信號到每個宏單個宏單元相連,
3、信號到每個宏單元的延時相同并且延時最短。元的延時相同并且延時最短。 CPLD組合邏輯的功能很強(qiáng),一個宏單元就可以組合邏輯的功能很強(qiáng),一個宏單元就可以分解十幾個甚至分解十幾個甚至2030多個組合邏輯輸入。而多個組合邏輯輸入。而FPGA的一個的一個LUT只能處理只能處理4輸入的組合邏輯,因此,輸入的組合邏輯,因此,CPLD適合用于設(shè)計譯碼等復(fù)雜組合邏輯。適合用于設(shè)計譯碼等復(fù)雜組合邏輯。 但但FPGA的制造工藝確定了的制造工藝確定了FPGA芯片中包含的芯片中包含的LUT和觸發(fā)器和觸發(fā)器的數(shù)量非常多,往往都是幾千上萬,的數(shù)量非常多,往往都是幾千上萬,CPLD一般只能一般只能做到做到512個邏輯單元,而
4、且如果用芯片價格除以邏輯個邏輯單元,而且如果用芯片價格除以邏輯單元數(shù)量,單元數(shù)量,F(xiàn)PGA的平均邏輯單元成本大大低于的平均邏輯單元成本大大低于CPLD。 FPGA的常用設(shè)計方法包括的常用設(shè)計方法包括“自頂向下自頂向下”和和“自下而上自下而上”,目前大規(guī)模目前大規(guī)模FPGA設(shè)計一般選擇設(shè)計一般選擇“自頂向下自頂向下”的設(shè)計方法。的設(shè)計方法。 所謂所謂“自頂向下自頂向下”設(shè)計方法設(shè)計方法, 簡單地說簡單地說,就是采用可完全獨(dú)立于芯片廠商及就是采用可完全獨(dú)立于芯片廠商及其產(chǎn)品結(jié)構(gòu)的描述語言其產(chǎn)品結(jié)構(gòu)的描述語言,在功能級對設(shè)計產(chǎn)品進(jìn)行定義在功能級對設(shè)計產(chǎn)品進(jìn)行定義, 并結(jié)合功能仿真技術(shù)并結(jié)合功能仿真技
5、術(shù),以以確保設(shè)計的正確性確保設(shè)計的正確性,在功能定義完成后在功能定義完成后,利用邏輯綜合技術(shù)利用邏輯綜合技術(shù),把功能描述轉(zhuǎn)換成某把功能描述轉(zhuǎn)換成某一具體結(jié)構(gòu)芯片的網(wǎng)表文件一具體結(jié)構(gòu)芯片的網(wǎng)表文件,輸出給廠商的布局布線器進(jìn)行布局布線。布局布輸出給廠商的布局布線器進(jìn)行布局布線。布局布線結(jié)果還可反標(biāo)回同一仿真器線結(jié)果還可反標(biāo)回同一仿真器, 進(jìn)行包括功能和時序的后驗證進(jìn)行包括功能和時序的后驗證,以保證布局布線以保證布局布線所帶來的門延時和線延時不會影響設(shè)計的性能。所帶來的門延時和線延時不會影響設(shè)計的性能。RTL代碼邏輯綜合器調(diào)用模塊的黑盒子接口設(shè)置綜合目標(biāo)和約束條件EDIF網(wǎng)表(netlist)HDL
6、網(wǎng)表(netlist)RTL代碼代碼邏輯仿真器邏輯仿真器(modelsim)調(diào)用模塊的行為仿真模型測試數(shù)據(jù)測試數(shù)據(jù)測試程序測試程序(test bench)(1)設(shè)計定義)設(shè)計定義(2)設(shè)計輸入)設(shè)計輸入(3)功能仿真)功能仿真RTL代碼中引用的由代碼中引用的由廠家提供的宏模塊廠家提供的宏模塊/IP(4)邏輯綜合)邏輯綜合(5)前仿真)前仿真HDL網(wǎng)表(netlist)邏輯仿真器測試數(shù)據(jù)調(diào)用模塊的行為仿真模型測試程序(test bench)(6)布局布線)布局布線EDIF網(wǎng)表(netlist)FPGA廠家工具調(diào)用模塊的綜合模型設(shè)置布局布線約束條件HDL網(wǎng)表(netlist)SDF文件(標(biāo)準(zhǔn)延時格
7、式)下載/編程文件(7)后仿真)后仿真HDL網(wǎng)表(netlist)SDF文件(標(biāo)準(zhǔn)延時格式)邏輯仿真器測試數(shù)據(jù)FPGA基本單元仿真模型測試程序(test bench)(8)靜態(tài)時序分析)靜態(tài)時序分析(9)在系統(tǒng)測試)在系統(tǒng)測試 設(shè)計的行為特性、設(shè)計的數(shù)據(jù)流特性、設(shè)計的結(jié)構(gòu)組成以及 包含響應(yīng) 監(jiān)控和設(shè)計驗證方面的時延和波形產(chǎn)生機(jī)制。提供 了編程語言接口,通過該接口可以在模擬、驗證期間從設(shè)計 外部訪問設(shè)計,包括模擬的具體控制和運(yùn)行。u主要功能主要功能 基本邏輯門,例如and 、or 和nand 等都內(nèi)置在語言中 開關(guān)級基本結(jié)構(gòu)模型,例如pmos 和nmos 等也被內(nèi)置在語言中 可采用三種不同方式或
8、混合方式對設(shè)計建模 兩類數(shù)據(jù)類型 能夠描述層次設(shè)計,可使用模塊實例結(jié)構(gòu)描述任何層次 能夠使用門和模塊實例化語句在結(jié)構(gòu)級進(jìn)行結(jié)構(gòu)描述 Verilog HDL程序設(shè)計由模塊(module)構(gòu)成的, 設(shè)計模塊的基本結(jié)構(gòu)如圖,一個完整的Verilog HDL設(shè)計模塊包括端口定義、I/O聲明、信號類型聲明和功能描述4個部分。 模塊端口的定義模塊端口的定義 模塊端口定義用來聲明電路設(shè)計模塊 的輸入/輸出端口,端口定義格式如下: module 模塊名模塊名 (端口(端口1,端口,端口2,端口,端口3,);); 在端口定義的括號中,是設(shè)計電路模塊與外界聯(lián)系的全部輸入/輸出端口信號或引腳,是設(shè)計實體對外的一個通
9、信界面,是外界可以看到的部分(不包含電源和接地端),多個端口之間用“,”分隔。例如1位全加器adder模塊的端口定義為module adder (S, CO, A, B, CI); 模塊名adder 2 信號類型聲明信號類型聲明 信號類型聲明是聲明設(shè)計電路的功能描述中所用的信號的數(shù)據(jù)類型和函數(shù)。信號的數(shù)據(jù)類型主要有連線(wire)、寄存器(reg)、整型(integer)、實型(real)、和時間(time)等。 信號聲明格式如下: wire msb:lsb 端口1,端口2,端口3,; reg msb:lsb 端口1,端口2,端口3,; 3 功能描述功能描述 功能描述是Verilog HDL程
10、序設(shè)計中最主要的部分,用來描述設(shè)計模塊的內(nèi)部結(jié)構(gòu)和模塊端口間的邏輯關(guān)系,在電路上相當(dāng)于器件的內(nèi)部電路結(jié)構(gòu)。功能描述可以用assign語句、元件例化(instantiate)方式、always塊語句、initial塊語句等方法來實現(xiàn),通常將設(shè)計模塊描述的方法稱為建模。 用用assign語句建模語句建模 用assign語句建模的方法很簡單,只需要在“assign”后面再加一個表達(dá)式。assign語句一般適合對組合邏輯進(jìn)行賦值,稱為連續(xù)賦值方式。 例1 一位全加器的設(shè)計 1位全加器的邏輯符號:S是全加器的和輸出端,CO是進(jìn)位輸出端,A和B是兩個加數(shù)輸入端,CI是低位進(jìn)位輸入端。 全加器的Verilo
11、g HDL源程序如下: module adder1 (S, CO, A, B, CI); input A, B, CI; output S, CO; wire S, CO, A, B, CI; assign CO, S = A+B+CI; endmodule “assign CO, S = A+B+CI;”語句實現(xiàn)1位全加器的進(jìn)位輸出CO與和輸出S的建模。 在語句表達(dá)式中,用拼接運(yùn)算符“”將CO、S這兩個1位操作數(shù)拼接為一個2位操作數(shù)。 用元件例化(用元件例化(instantiate)方式建模)方式建模 元件例化方式建模是利用Verilog HDL提供的元件庫實現(xiàn)的。例如,用與門例化元件定義一
12、個三輸入端與門可以寫為 and myand3(y,a,b,c); and是Verilog HDL元件庫中與門元件名,myand3是例化出的三輸入端與門名,y是與門輸出端,a、b、c是輸入端。 用用always塊語句建模塊語句建模 always塊語句可以產(chǎn)生各種邏輯,常用于時序邏輯的功能描述。一個程序設(shè)計模塊中,可以包含一個或多個always語句。程序運(yùn)行中,在某種條件滿足時,就重復(fù)執(zhí)行一遍always結(jié)構(gòu)中的語句。 例2 8位二進(jìn)制加法計數(shù)器的設(shè)計 8位二進(jìn)制加法計數(shù)器的邏輯符號如圖。 OUT是8位二進(jìn)制計數(shù)器的輸出端(8位向量); COUT是進(jìn)位輸出端(1位); DATA是并行數(shù)據(jù)輸入端(8
13、位向量); LOAD是計數(shù)器的預(yù)置控制輸入端, 當(dāng)LOAD=1時,OUT=DATA; CLK是時鐘控制輸入端,上升沿為有效邊沿; CLR是同步復(fù)位輸入端,當(dāng)CLK的上升沿到來時且CLR=1,則計數(shù)器被復(fù)位,OUT=00000000。(邏輯符號圖是由計算機(jī)對計數(shù)器電路的(邏輯符號圖是由計算機(jī)對計數(shù)器電路的Verilog HDL源代碼源代碼編譯后產(chǎn)生的元件符號,圖中的輸入編譯后產(chǎn)生的元件符號,圖中的輸入/輸出標(biāo)識符自動被改為大輸出標(biāo)識符自動被改為大寫,而源程序中的標(biāo)識符都是小寫。)寫,而源程序中的標(biāo)識符都是小寫。) 8位二進(jìn)制加法計數(shù)器的Verilog HDL 源程序如下: module cnt8
14、 (out, cout,data,load,cin,clk, clr); input 7:0 data; input load, cin, clk, clr output 7:0 out; output cout; reg 7:0 out; always (posedge clk) begin if (load) out=data; else if(clr) out=b00000000; else out=out+1; end assign cout = &out; endmodule 用always塊語句實現(xiàn)8位二進(jìn)制加法計數(shù)器的建模。(posedge clk)是時間控制敏感函數(shù),表
15、示clk上升沿到來的敏感時刻。每當(dāng)clk的上升沿到來時,always塊語句中的全部語句就執(zhí)行一遍?!癮ssign cout = &out;”語句產(chǎn)生進(jìn)位輸出cout,在語句中“&out”是與的縮減運(yùn)算式,只有out中數(shù)字全為1時,結(jié)果才為1。 用用initial塊語句建模塊語句建模 Initial塊語句與always語句類似,不過在程序中它只執(zhí)行1次就結(jié)束了。 Initial塊語句的使用格式 : Initial Begin 語句語句1; 語句語句2; : end 例3 用Initial過程語句對測試變量賦值 initial begin for(addr=0; addr 大于大于
16、= 大于等于大于等于 右移右移4 結(jié)果結(jié)果A=8b00001101而而A4 結(jié)果結(jié)果A=8b00010000。條件條件操作操作符符 ?: 操作數(shù)操作數(shù)=條件?表達(dá)式條件?表達(dá)式1:表:表達(dá)式達(dá)式2;當(dāng)條件為真(值為當(dāng)條件為真(值為1)時,操)時,操作數(shù)作數(shù)=表達(dá)式表達(dá)式1;為假(值為為假(值為0)時,操作數(shù))時,操作數(shù)=表達(dá)式表達(dá)式2。 三元操作符,即條件操作符有三個操作數(shù)。三元操作符,即條件操作符有三個操作數(shù)。例如例如 a?b:c若條件操作數(shù)若條件操作數(shù)a是邏輯是邏輯1,則算子返回表達(dá)式,則算子返回表達(dá)式1操操作數(shù)作數(shù)b;若若a是邏輯是邏輯0,則算子返回表達(dá)式,則算子返回表達(dá)式2操作數(shù)操作數(shù)
17、c。 并接并接操作操作符符 , 例如例如 a,2a,b 等價于等價于a,a,b,a,b。 將將1位全加器的進(jìn)位位全加器的進(jìn)位cout和和sum并接,表達(dá)式為并接,表達(dá)式為將兩個或兩個以上用逗號分隔的表達(dá)式按位連將兩個或兩個以上用逗號分隔的表達(dá)式按位連接在一起。還可以用常數(shù)來指定重復(fù)的次數(shù)。接在一起。還可以用常數(shù)來指定重復(fù)的次數(shù)。cout,sum=ina+inb+cin; 同其他高級語言類似,各類操作符號之間有優(yōu)先級之分,如下表:同其他高級語言類似,各類操作符號之間有優(yōu)先級之分,如下表:優(yōu)先級序號優(yōu)先級序號操作符操作符操作符名稱操作符名稱! 、 邏輯非、按位取反邏輯非、按位取反*、/、%乘、除、
18、求余乘、除、求余+、-加、減加、減左移、右移左移、右移、 、=小于、小于等于、大于、大于等于小于、小于等于、大于、大于等于=、!=、=、!=等于、不等于、全等、不全等等于、不等于、全等、不全等&、& 縮減與、縮減與非縮減與、縮減與非 、縮減異或、縮減同或縮減異或、縮減同或|、 |縮減或、縮減或非縮減或、縮減或非&邏輯與邏輯與|邏輯或邏輯或?: 條件操作符條件操作符 (3)數(shù)值常量)數(shù)值常量 Verilog HDL中的數(shù)值常量有整型和實型兩大類,分為十進(jìn)制、十六進(jìn)制、八進(jìn)制或二進(jìn)制。若在前面加上一個正“+”或負(fù)“”號就表示有符號數(shù),否則所代表的就是無符號數(shù)。在數(shù)值常量的任
19、意位置可以隨意插入下劃線“_”以提高可讀性。常量定義格式為: parameter 常量名常量名1=表達(dá)式,常量名表達(dá)式,常量名2=表達(dá)式,表達(dá)式,常量名,常量名n=表達(dá)式;表達(dá)式; parameter是常量定義關(guān)鍵字,常量名是用戶定義的標(biāo)識符,表達(dá)式為常量賦值。例如 parameter Vcc=5, fbus=8b11010001;Verilog HDL中的整型數(shù)值常量就是整數(shù),有兩種書寫格式:一種是無位寬的十進(jìn)制表示法,如-132。第二種是定義位寬和進(jìn)制的表示法,這種表示方法通常是無符號數(shù)。常數(shù)書寫格式是: sizebase value 其中size是位寬,定義了數(shù)值常量的位數(shù)(長度);ba
20、se 代表這個數(shù)據(jù)的進(jìn)制,取值范圍和相應(yīng)的進(jìn)制如下表;value是一個數(shù)值常量的值,書寫格式與進(jìn)制base相對應(yīng)。 例如 16h6a8c,表示一個4位十六進(jìn)制數(shù)。 8hf5 等于8b11110101; 8b1111xxxx 等價2hfx; 8b1101zzzz 等價8hdz。base進(jìn)制代碼取值進(jìn)制代碼取值對應(yīng)的進(jìn)制對應(yīng)的進(jìn)制b或或B二進(jìn)制二進(jìn)制o或或O八進(jìn)制八進(jìn)制d或或D十進(jìn)制十進(jìn)制h或或H十六進(jìn)制十六進(jìn)制 Verilog HDL中的實型數(shù)值常量就是浮點(diǎn)數(shù),可以用十進(jìn)制與科學(xué)計數(shù)法兩中的實型數(shù)值常量就是浮點(diǎn)數(shù),可以用十進(jìn)制與科學(xué)計數(shù)法兩種形式書寫。如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字。
21、種形式書寫。如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字。 Verilog HDL的編程最終是與硬件相對應(yīng)的。由于硬件電路中信號的邏輯的編程最終是與硬件相對應(yīng)的。由于硬件電路中信號的邏輯狀態(tài)具有特殊性,即不僅有狀態(tài)具有特殊性,即不僅有0(低電平)和(低電平)和1(高電平),還有可能是(高電平),還有可能是X(未知(未知狀態(tài))和狀態(tài))和Z(高阻態(tài)),因此(高阻態(tài)),因此Verilog HDL數(shù)值集合有四個基本值:數(shù)值集合有四個基本值:0:邏輯:邏輯0或假狀態(tài);或假狀態(tài);1:邏輯:邏輯1或真狀態(tài);或真狀態(tài);X:邏輯不確定;:邏輯不確定;Z:高阻態(tài)。:高阻態(tài)。(4)字符串字符串是雙引號“”括起來的字符
22、序列,必須包含在同 一行中,不能多行書寫。在表達(dá)式或賦值語句中作為操作數(shù)的字符串被看作ASCII值序列,即一個字符串中的每一個字符對應(yīng)一個8位ASCII值。(5)標(biāo)識符標(biāo)識符是模塊、寄存器、端口、連線、示例和begin-end塊等元素的名稱,是賦給對象的唯一的名稱。標(biāo)識符可以是字母、數(shù)字、$符和下劃線“_”字符的任意組合序列。定義標(biāo)識符規(guī)則:首字符不能是數(shù)字,必須以字母或下劃線“_”開頭。字符數(shù)不能多于1024。標(biāo)識符區(qū)分大小寫。不要與關(guān)鍵字同名。例如 ina、inb、adder、adder8、name_adder是正確的,而1a ?b是錯誤的。(6)關(guān)鍵字關(guān)鍵字是Verilog HDL預(yù)先定
23、義的專用詞。在IEEE標(biāo)準(zhǔn)Verilog HDL 1364-1995中規(guī)定了102個關(guān)鍵詞,都采用小寫形式。關(guān)鍵詞有其特定和專有的語法作用,用戶不能再對它們做新的定義。 關(guān)鍵字關(guān)鍵字AlwaysandAssignattributeBeginBufBufif0Bufif1CaseCasexCasezCmosDeassignDefaultdefparamDisableedgeelseendendattributeendcaseendfunctionendmoduleendprimitiveendspecifyendtableendtaskeventforforceforeverforkfuncti
24、onhighz0 highzlifinitialinoutinputintegerjoinlargemacromodulemediummodulenandnegedgenmosnornotnotif0 notifloroutputparameterpmosposedgeprimitivepull0pull1pulldownpulluprcmosrealrealtimeregreleaserepeat rtraniflscalaredsignedsmallspecifyspecpramstrengthstrong0strong1supply0supply1tabletasktimetrantra
25、nif0tranif1 tritri0tri1triandtriortritegunsignedvectoredwaitwandweak0weak1whilewireworxnorxor (7)變量變量是在程序運(yùn)行時其值可以改變的量。在Verilog HDL中,變量分為網(wǎng)絡(luò)型(nets type)和寄存器型(register type)兩種。 網(wǎng)絡(luò)型變量nets型變量是輸出值始終根據(jù)輸入變化而更新的變量,一般用來定義硬件電路中的各種物理連線。Verilog HDL提供了多種nets型變量。常見的nets型變量及說明類型類型功能說明功能說明wire、 tri連線類型(兩者功能完全相同)連線類型(
26、兩者功能完全相同)wor、 trior具有線或特性的連線(兩者功能一致)具有線或特性的連線(兩者功能一致)wand、 triand具有線與特性的連線(兩者功能一致)具有線與特性的連線(兩者功能一致)tri1、 tri0分別為上拉電阻和下拉電阻分別為上拉電阻和下拉電阻supply1、 supply0分別為電源(邏輯分別為電源(邏輯1)和地(邏輯)和地(邏輯0) 寄存器型變量 register型變量是用來描述硬件系統(tǒng)的基本數(shù)據(jù)對象。作為一種數(shù)值容器,可以容納當(dāng)前值,也可以保持歷史值。與寄存器的記憶功能相對應(yīng),可以作為模塊各器件間的信息傳遞通道。 register型變量與wire型變量的區(qū)別在于re
27、gister型變量需要被明確的賦值, 并且在重新賦值前一直保持原值。register型變量是在always、initial等過程語句種定義,并通過過程語句賦值。 常見的register型變量及說明類型類型功能說明功能說明reg常用的寄存器型變量常用的寄存器型變量integer32位帶符號整數(shù)型變量位帶符號整數(shù)型變量real64位帶符號實數(shù)型變量位帶符號實數(shù)型變量time無符號時間型變量無符號時間型變量 Verilog HDL的語句包括賦值語句、條件語句、循環(huán)語句、結(jié)構(gòu)聲明語句和編譯預(yù)處理語句等類型,每一類語句又包括幾種不同的語句。在這些語句中,有些語句屬于順序執(zhí)行語句,有些語句屬于并行執(zhí)行語句
28、。(1)賦值語句 在Verilog HDL中,賦值語句常用于描述硬件設(shè)計電路輸出與輸入之間的信息傳送,改變輸出結(jié)果。Verilog HDL有4種賦值方法:門基元、連續(xù)賦值、過程賦值和非阻塞賦值。門基元賦值語句 門基元賦值語句的格式為: 基本邏輯門關(guān)鍵字基本邏輯門關(guān)鍵字 (門輸出,門輸入(門輸出,門輸入1,門輸入,門輸入2,門,門輸入輸入n);); 例如例如 4輸入與非門的門基元賦值語句為輸入與非門的門基元賦值語句為 nand (y,a,b,c,d); /與語句與語句assign y=(a&b&c&d)等效等效 連續(xù)賦值語句 連續(xù)賦值語句的關(guān)鍵字assign,賦值符號是“
29、=”,賦值語句的格式為 assign 賦值變量賦值變量=表達(dá)式;表達(dá)式; 例如 assign y=(a&b&c&d); 連續(xù)賦值語句的“=”兩邊的變量都應(yīng)該是wire型變量。在執(zhí)行中,輸出y的變化跟隨輸入a、b、c、d的變化而變化,反映了信息傳送的連續(xù)性。連續(xù)賦值語句用于邏輯門和組合邏輯電路的描述。 例1 四輸入端與非門的Verilog HDL源程序 module example1(y,a,b,c,d); output y; input a,b,c,d; assign #1 y=(a&b&c&d); /#1表示輸出與輸入信號之間具有1個單位的時間
30、延遲 endmodule 過程賦值語句 過程賦值語句出現(xiàn)在initial和always塊語句中,賦值符號是“=”,語句格式為: 賦值變量賦值變量=表達(dá)式;表達(dá)式; 過程賦值語句“=”左邊的賦值變量必須是(寄存器)reg型變量,其值在該語句結(jié)束時即可得到。 如果一個塊語句中包含若干條過程賦值語句,按順序一條一條執(zhí)行,前面的語句沒完成,后面的語句就不能執(zhí)行。 因此,過程賦值語句也稱為阻塞賦值語句。 非阻塞賦值語句非阻塞賦值語句也是出現(xiàn)在initial和always塊語句中,賦值符號是“=”,語句格式為: 賦值變量賦值變量=表達(dá)式;表達(dá)式;非阻塞賦值語句“=”左邊的賦值變量必須是(寄存器)reg型變
31、量,其值在塊語句結(jié)束時才可得到,與過程賦值語句不同。例如 下面的塊語句包含4條賦值語句 always (posedge clock) begin m=3; n=75; n=m; r=n; end語句執(zhí)行結(jié)束后,r的值是75,而不是3,因為第3行是非阻塞賦值語句“n=m”,該語句要等到本塊語句結(jié)束時,n的值才能改變。塊語句的“(posedge clock)”是定時控制敏感寒暑,表示時鐘信號clock的上升沿到來的敏感時刻。例2 上升沿觸發(fā)的D觸發(fā)器的Verilog HDL源程序 module D_FF(q,d,clock); input d,clock; /屬于wire型變量 output q;
32、 /屬于reg型變量 reg q; always (posedge clock) q=d; endmodule (2)條件語句條件語句包含if語句和case語句,它們都是順序語句,應(yīng)放在always塊中。 if語句完整的Verilog HDL的if語句結(jié)構(gòu)如下: if(表達(dá)式) begin 語句; end else if(表達(dá)式) begin 語句; end else begin 語句; end在if語句中,“表達(dá)式”是邏輯表達(dá)式或關(guān)系表達(dá)式,也可以是位寬為1位的變量。系統(tǒng)對表達(dá)式的值進(jìn)行判斷, 若為0,x,z按“假”處理;若為1,按“真”處理,執(zhí)行指定的語句。 例3 8線-3線優(yōu)先編碼器的設(shè)
33、計8線-3線優(yōu)先編碼器的功能表 module code(y,a); input7:0 a; output2:0 y; reg2:0 y; always (a) begin if(a7) y=3b111; else if(a6) y=3b110; else if(a5) y=3b101; else if(a4) y=3b100; else if(a3) y=3b011; else if(a2) y=3b010; else if(a1) y=3b001; else y=3b000; end endmodule輸入輸入輸出輸出in0 in1 in2 in3 in4 in5 in6 in7out2 o
34、ut1 out0 x x x x x x x 0 x x x x x x 0 1 x x x x x 0 1 1 x x x x 0 1 1 1 x x x 0 1 1 1 1 x x 0 1 1 1 1 1 x 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 case語句 case語句是一種多分支的條件語句,case語句的格式為: case(表達(dá)式) 選擇值1: 語句1; 選擇值2: 語句2; 選擇值n: 語句n; default: 語句n+1 endcase 執(zhí)行case語句時,首先
35、計算表達(dá)式的值,然后執(zhí)行條件句中相應(yīng)的“選擇值”的語句。當(dāng)所有的條件句的“選擇值”與表達(dá)式的值不同時,則執(zhí)行“default”后的語句。default可以省略。 case語句多用于數(shù)字系統(tǒng)中的譯碼器、數(shù)據(jù)選擇器、狀態(tài)機(jī)及微處理器的指令譯碼器等電路的描述。 例4:用case語句描述4選1數(shù)據(jù)選擇器 控制信號s1,s2有4種組合,控制a,b,c,d中的一個數(shù)據(jù)送到輸出端。 4選1數(shù)據(jù)選擇器Verilog HDL的描述如下: module mux41(z,a,b,c,d,s1,s2); input s1,s2; input a,b,c,d; output z; reg z; always (a,b,
36、c,d,s1,s2) begin case(s1,s2) 2b00: z=a; 2b01: z=b; 2b10: z=c; 2b11: z=d; endcase end endmodule case語句還有兩種變體形式,casez和casex語句。與case語句的區(qū)別是不考慮語句中的高阻z和未知x的那些位,只關(guān)注其他位的比較結(jié)果。s1 s2z0 00 11 01 1abcd (3)循環(huán)語句)循環(huán)語句循環(huán)語句包含for語句、repeat語句、while語句和forever語句4種。 for語句for語句的格式為: for(循環(huán)指針(循環(huán)指針=初值;循環(huán)指針初值;循環(huán)指針 終值;循環(huán)指針終值;循環(huán)
37、指針=循環(huán)指針循環(huán)指針+步長值)步長值) begin 語句; endfor語句可以是一組語句重復(fù)執(zhí)行,語句中的參數(shù)一般屬于整型變量或常量。語句重復(fù)執(zhí)行的次數(shù)由語句中的參數(shù)確定。即 循環(huán)重復(fù)次數(shù)循環(huán)重復(fù)次數(shù)=(終值(終值-初值)初值)/步長值步長值 例5:8位奇偶校驗器的描述用a表示輸入信號,長度為8位的向量。在程序中,用for語句對a的值,逐位進(jìn)行模2加運(yùn)算(即異或XOR),循環(huán)指針變量n控制模2加的次數(shù)。 11100110 奇數(shù)個奇數(shù)個1循環(huán)變量的初值為0,終值為8,因此,控制循環(huán)共執(zhí)行了8次。 例5 用Verilog HDL對8位奇偶校驗器的描述如下: module test8(a,out
38、); input7:0 a; output out; reg out; integer n; always (a) begin out=0; for(n=0;n=b) max=a; else max=b; end endfunction 函數(shù)調(diào)用的格式如下 函數(shù)名函數(shù)名 (關(guān)聯(lián)參數(shù)表);(關(guān)聯(lián)參數(shù)表); 函數(shù)調(diào)用一般是出現(xiàn)在模塊、任務(wù)或函數(shù)語句中。通過函數(shù)的調(diào)用來完成摹寫數(shù)據(jù)的運(yùn)算或轉(zhuǎn)換。例如,調(diào)用上例中求最大值函數(shù)的語句為 z=max(x, y);其中,x和y是與函數(shù)定義的兩個參數(shù)a、b相關(guān)聯(lián)的關(guān)聯(lián)參數(shù)。通過函數(shù)的調(diào)用,求出x和y中的最大值,并用函數(shù)名max返回。 函數(shù)和任務(wù)存在以下幾處區(qū)別
39、:函數(shù)和任務(wù)存在以下幾處區(qū)別:(1)任務(wù)可以有任意不同類型輸入/輸出參數(shù),函數(shù)不能將inout類型作為輸出。(2)任務(wù)只可以在過程語句中調(diào)用,不能在連續(xù)賦值語句assign中調(diào)用;函數(shù)可以作為表達(dá)式中的一個操作數(shù),在過程賦值語句和連續(xù)賦值語句中調(diào)用。 (3)任務(wù)可以調(diào)用其他任務(wù)或函數(shù);函數(shù)可以調(diào)用其他函數(shù),但不能調(diào)用任務(wù)。 (4)任務(wù)不向表達(dá)式返回值,函數(shù)向調(diào)用它的表達(dá)式返回一個值。(5)語句的順序執(zhí)行與并行執(zhí)行Verilog HDL中有順序執(zhí)行語句和并行執(zhí)行語句之分。always塊語句中的語句是順序語句,按照程序書寫的順序執(zhí)行。always塊本身確是并行語句,它與其他always語句及ass
40、ign語句、元件例化語句的執(zhí)行都是同時(即并行)的。例9 同步清除十進(jìn)制加法計數(shù)器的描述同步清0是在時鐘信號作用下,計數(shù)器的狀態(tài)被clr清0,清0信號clr高電平有效;時鐘信號clk上升沿觸發(fā)。計數(shù)器計數(shù)狀態(tài)從4b0000到4b1001循環(huán)。module cnt10(clr,clk,q,co); input clr,clk; output3:0 q; output co; reg 3:0 q; reg co; always (posedge clk) begin if(clr) begin co=0; q=4b0000;end else if (q=4b1001) begin q=4b0000
41、; co=1;end else begin co=0; q=q+1;end end endmodule 五、五、 Verilog HDL的描述方式(建模方法)的描述方式(建模方法) 系統(tǒng)級(system): 用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計模塊的外部性能的模型。 算法級(algorithmic): 用高級語言結(jié)構(gòu)實現(xiàn)設(shè)計算法的模型。 RTL級(Register Transfer Level): 描述數(shù)據(jù)在寄存器之間流動和如何處理這些數(shù)據(jù)的模型。 門級(gate-level): 描述邏輯門以及邏輯門之間的連接的模型。 開關(guān)級(switch-level): 描述器件中三極管和儲存節(jié)點(diǎn)以及它們之間連接的模型。
42、 邏輯級 電路級 系統(tǒng)級 算法級 算法級 RTL 級 RTL 級 門級 門級 開關(guān)級 VHDL Verilog HDL 行為級 描述方式: 1、結(jié)構(gòu)描述:描述元器件間連接關(guān)系:例化2、數(shù)據(jù)流描述:描述電路數(shù)據(jù)流行為:assign3、行為描述:描述功能:always4、混合描述:Verilog允許多描述方式共存于同一模塊。751 1 結(jié)構(gòu)描述結(jié)構(gòu)描述1) 基于庫元件的結(jié)構(gòu)描述 門級描述即直接調(diào)用門原語進(jìn)行邏輯的結(jié)構(gòu)描述。 以門級為基礎(chǔ)的結(jié)構(gòu)描述所建立的硬件模型不僅是可仿真的,也是可綜合的;一個邏輯網(wǎng)絡(luò)由許多邏輯門和開關(guān)組成,用邏輯門的模型來描述邏輯網(wǎng)絡(luò)最直觀! 門類型的關(guān)鍵字有26個,常用的有9
43、個: not,and,nand,or,nor,xor,xnor,buf, bufif1,bufif0,notif1,notif0(各種三態(tài)門) 調(diào)用門原語的句法注1:在 端口列表中輸出信號列在最前面;注2:門級描述不適于描述復(fù)雜的系統(tǒng)! 例:采用結(jié)構(gòu)描述方式描述硬件電路module example_4_11(y,a,b,c); input a,b,c; output y; wire s1,s2,s3; not (s1,a); nand (s2,c,s1); nand (s3,a,b); nand (y,s2,s3);endmodule 2)基于設(shè)計模塊的結(jié)構(gòu)描述)基于設(shè)計模塊的結(jié)構(gòu)描述 任何用
44、Verilog HDL描述的電路設(shè)計模塊(module),均可用模塊例化語句,例化一個元件,來實現(xiàn)電路系統(tǒng)的設(shè)計。模塊例化語句格式與邏輯門例化語句格式相同,具體格式: 設(shè)計模塊名設(shè)計模塊名 (端口列表);(端口列表); 其中,“例化電路名”是用戶為系統(tǒng)設(shè)計定義的標(biāo)識符,相當(dāng)于系統(tǒng)電路板上為插入設(shè)計模塊元件的插座,而端口列表相當(dāng)于插座上引腳名表,應(yīng)與設(shè)計模塊的輸入/輸出端口一一對應(yīng)。 用模塊例化方式設(shè)計1位全加器。 在1位全加器設(shè)計中,需要事先設(shè)計一個半加器,然后用例化方式將兩個半加器和一個或門連接成全加器。使用兩個半加器模塊構(gòu)造全加器module HA (A , B , S , C);inpu
45、t A , B;output S, C;assign S = A B;assign C = A & B;endmodulemodule FA (P, Q, Cin, Sum, Cout) ;input P, Q, Cin;output Sum, Cout;wire S1, C1, C2;HA h1 (P, Q, S1, C1); /通過位置關(guān)聯(lián)。HA h2 (.A(Cin), .S(Sum), .B(S1), .C(C2); /通過端口與信號的名字關(guān)聯(lián)。or O1 (Cout, C1, C2) ; /或門實例語句endmodule 位置關(guān)聯(lián)法:位置關(guān)聯(lián)法要求端口列表中的端口列表中的引腳
46、明稱與設(shè)計模塊的輸入、輸出端口一一引腳明稱與設(shè)計模塊的輸入、輸出端口一一對應(yīng)。對應(yīng)。 名稱關(guān)聯(lián)法:名稱名稱關(guān)聯(lián)法的格式如下:(.設(shè)計模塊端口名(連接實體端口名),連接實體端口名),);端口列表端口列表中的位置可以是任意的。中的位置可以是任意的。 例:用模塊例化方式設(shè)計例:用模塊例化方式設(shè)計8位計數(shù)譯碼器電路位計數(shù)譯碼器電路系統(tǒng)。系統(tǒng)。 在8位計數(shù)譯碼系統(tǒng)電路設(shè)計中,需要事先設(shè)計一個4位二進(jìn)制加法計數(shù)器cnt4e模塊和一個七段數(shù)碼顯示器的譯碼器Dec7s模塊,然后用例化方式將這兩種模塊組成計數(shù)譯碼系統(tǒng)電路。 4位二進(jìn)制加法計數(shù)器的設(shè)計4位二進(jìn)制加法計數(shù)器的符號如圖,CLK是時鐘輸入端;CLR復(fù)位
47、控制輸入端,當(dāng)CLR=1時計數(shù)器被復(fù)位,輸出Q3.0=0000;ENA 是使能控制輸入端,當(dāng)ENA=1時,計數(shù)器才能工作;COUT是進(jìn)位輸出端,當(dāng)輸出Q3.0=1111時,COUT=1。module cnt4e(clk,clr,ena,cout,q); input clk ,clr,ena; output 3:0 q; output cout; reg 3:0 q; always (posedge clr or posedge clk) begin if (clr) q= b0000; else if (ena) q=q+1; end assign cout=&q;endmodule七
48、段數(shù)碼顯示器的譯碼器七段數(shù)碼顯示器的譯碼器 Dec7s的元件符號如圖的元件符號如圖A3.0是是4數(shù)據(jù)輸入端,將接至數(shù)據(jù)輸入端,將接至cnt4e的輸出端的輸出端Q3.0;Q7.0是譯碼器的輸出端,提供七是譯碼器的輸出端,提供七段數(shù)碼顯示數(shù)據(jù)。段數(shù)碼顯示數(shù)據(jù)。module Dec7s(a,q); output7:0 q; input3:0 a; reg7:0 q; always (a) begin case(a) 0: q=8b00111111; 1: q=8b00000110; 2: q=8b01011011; 3: q=8b01001111; 4: q=8b01100110; 5: q=8b0
49、1101101; 6: q=8b01111101; 7: q=8b00000111; 8: q=8b01111111; 9: q=8b01101111; 10: q=8b01110111; 11: q=8b01111100; 12: q=8b00111001; 13: q=8b01011110; 14: q=8b01111001; 15: q=8b01110001; endcase endendmodule 計數(shù)譯碼系統(tǒng)電路的設(shè)計計數(shù)譯碼系統(tǒng)電路的設(shè)計 計數(shù)譯碼系統(tǒng)電路是用Quartus II的圖形編輯方式設(shè)計出來的。 用模塊例化方式將用模塊例化方式將cnt4e和和dec7s兩種模塊組成計數(shù)譯
50、碼系統(tǒng)電路兩種模塊組成計數(shù)譯碼系統(tǒng)電路cnt_dec7s的源程序:的源程序: module cnt_Dec_v(clk,clr,ena,cout,q); input clk ,clr,ena; output 15:0 q; output cout; reg 15:0 q; wire 3:0 q1,q2; wire x; cnt4e u1(clk,clr,ena,x,q1); cnt4e u2(clk,clr,x,cout,q2); dec7s u3(q1,q7:0); dec7s u4(q2,q15:8); endmodule2 數(shù)據(jù)流建模例:數(shù)據(jù)流描述的一位全加器module FA_Df (
51、A, B, Cin, Sum, Cout) ;input A, B, Cin;output Sum, Cout ;assign Sum = AB Cin;assign Cout = (A & Cin) | (B & Cin) | (A & B) ;endmodule1)assign語句之間是并發(fā)的,與其書寫的順序無關(guān);2)線網(wǎng)的賦值可以在聲明時賦值,例如wire Sum = AB Cin; 數(shù)據(jù)流建模的時延assign #2 Sum = A B Cin; #2表示右側(cè)表達(dá)式的值延遲兩個時間單位賦給Sum; 時間單位是多少?由誰來決定?timescale 1ns/100p
52、s FPGA設(shè)計中的時延僅在功能仿真時有效,不影響實際電路生成。 數(shù)據(jù)流建模注意事項: 1)wire型變量如果不賦值,默認(rèn)值為z; 2)數(shù)據(jù)流建模沒有存儲功能,不能保存數(shù)據(jù); 3)wire型變量只能在聲明時賦值或者assing語句賦值; 4)assign語句并發(fā)執(zhí)行,實際的延遲又物理芯片的布線結(jié)果決定。 三、三、 Verilog HDL行為描述行為描述 Verilog HDL行為描述方式是通過行為語句來描述電路要實現(xiàn)的功能,表示輸入輸出間轉(zhuǎn)換的行為,不涉及具體結(jié)構(gòu)。 行為建模是一種“高級”的描述方式。行為描述既可以描述簡單的邏輯門,又可以描述復(fù)雜的數(shù)字系統(tǒng),乃至微處理器。既可以描述組合邏輯電路
53、,又可以描述時序邏輯電路。 例11 2選1數(shù)據(jù)選擇器,用Verilog HDL對它做行為描述。 例例 3線線-8線譯碼器的線譯碼器的Verilog HDL設(shè)計設(shè)計module decode3_8 (a, b, c, y, en); /這是一個這是一個3線線-8線譯碼器,名為線譯碼器,名為decode3_8input a, b, c, en; /定義模塊的輸入端口定義模塊的輸入端口output 7:0 y; /定義模塊的輸出端口為定義模塊的輸出端口為outreg7:0 y; always (en or a or b or c) begin if(en) y=8b11111111; else be
54、gin case(c, b, a) 3b000: y=8b11111110; 3b001: y=8b11111101; 3b010: y=8b11111011; 3b011: y=8b11110111; 3b100: y=8b11101111; 3b101: y=8b11011111; 3b110: y=8b10111111; 3b111: yb01001) cout,sum=sum+4b0110; end endmodule 保存的文件名與設(shè)計模塊名相同,擴(kuò)展名為.v。 完成BCD_adder的編譯后,用Quartus II的File 菜單下“Create Default Symbol”命令
55、,對BCD_adder編譯生成元件圖形符號。 圖中細(xì)的輸入/輸出線表示單信號線,粗的輸入/輸出線表示多信號總線。編輯BCD_Dec7源程序如下:module BCD_Dec7(a,q); input 3:0 a; output 7:0 q; reg7:0 q; always (a) begin case(a) 4b0000: q=8b00111111; 4b0001: q=8b00000110; 4b0010: q=8b01011011; 4b0011: q=8b01001111; 4b0100: q=8b01100110; 4b0101: q=8b01101101; 4b0110: q=8b
56、01111101; 4b0111: q=8b00000111; 4b1000: q=8b01111111; 4b1001: q=8b01101111; 4b1010: q=8b01110111; 4b1011: q=8b01111100; 4b1100: q=8b00111001; 4b1101: q=8b01011110; 4b1110: q=8b01111001; 4b1111: q=8b01110001; endcase end endmodule 同樣生成元件圖形符號: (3)設(shè)計電路頂層文件)設(shè)計電路頂層文件頂層設(shè)計文件是調(diào)用功能元件,將他們組裝起來,成為一個完整的設(shè)計。打開一個新文
57、件并進(jìn)入圖形編輯方式(Graphic Editor file)。在圖形編輯框中,調(diào)出BCD_Adder、BCD_Dec元件符號和輸入、輸出元件符號,連線完成,存為top.gdf,如下圖所示: 具體操作步驟如下:具體操作步驟如下: 將輸入元件INPUT與BCD_Adder的CIN連接在一起,輸入元件名稱改為CIN,作為加法器的低位進(jìn)位輸入端。 將輸入元件INPUT與BCD_Adder的加數(shù)輸入連接在一起,輸入元件名稱分別改為A3.0和B3.0,作為加法器4位加數(shù)輸入端。 將BCD_Adder輸出SUM3.0與BCD_Dec7的輸入A3.0連接在一起,將BCD_Dec7的輸出Q7.0與輸出元件連接
58、在一起,并將輸出元件的名稱改為Q7.0,作為8譯碼輸出端。 將輸出元件OUTPUT與BCD_Adder的COUT連接,并將輸出元件的名稱改為COUT,作為加法器的進(jìn)位輸出端。 頂層設(shè)計圖形完成后,用TOP.gdf名存入工程目錄中。 (4)編譯頂層設(shè)計文件)編譯頂層設(shè)計文件 執(zhí)行“Quartus II”菜單下的“Compiler”命令,完成對頂層文件TOP.gdf的編譯。 如果要生成TOP.gdf元件符號,還要執(zhí)行“File”菜單下的“Create Default Symbol”命令。 (5)仿真頂層設(shè)計文件)仿真頂層設(shè)計文件 在對頂層文件的編譯過程中,系統(tǒng)為電路的仿真完成了延時網(wǎng)表提取(Tim
59、ing SNF Extractor)操作,支持電路的仿真。 仿真操作:建立TOP.scf波形文件,對輸入波形進(jìn)行賦值編輯,運(yùn)行“File-ProjectSave & Simulate”,即可仿真電路。 輸出波形出現(xiàn)在波形編輯窗口。 (6)下載頂層設(shè)計文件)下載頂層設(shè)計文件 (略)(略)六六 用用Verilog HDLVerilog HDL描述邏輯電路的實例描述邏輯電路的實例(1)用)用Verilog HDL對對4位加法器做邏輯描述位加法器做邏輯描述加法器是常用的組合邏輯電路,串行進(jìn)位方法構(gòu)成的加法器是常用的組合邏輯電路,串行進(jìn)位方法構(gòu)成的4位全加器如圖。位全加器如圖。/對對4位串行進(jìn)位
60、加法器的頂層結(jié)構(gòu)的描述位串行進(jìn)位加法器的頂層結(jié)構(gòu)的描述module Four_bit_fulladd (A, B,CI, S, CO); /4位全加器模塊名稱和端口名位全加器模塊名稱和端口名parameter size=4; /定義參數(shù)定義參數(shù)input size:1 A, B; output size: 1 S;input CI;output CO;wire 1: size-1 Ctemp /定義模塊內(nèi)部的連接線定義模塊內(nèi)部的連接線onebit_fulladd /調(diào)用調(diào)用1位全加器位全加器 add1 (A1, B1, CI, S1, Ctemp1); / 實例化,調(diào)用實例化,調(diào)用1位全加器位全加器 add2 (A2, B2, Ctemp1, S2, Ctemp2 );/ 實例化,調(diào)用實例化,調(diào)用1位全加器位全加器 add3 (A3, B3, Ctemp2, S3, C
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購談判與合同管理規(guī)范(標(biāo)準(zhǔn)版)
- 會議發(fā)言與討論規(guī)范制度
- 公共交通線路規(guī)劃管理制度
- 國際貿(mào)易融資與風(fēng)險管理指南(標(biāo)準(zhǔn)版)
- 車站客運(yùn)服務(wù)監(jiān)督制度
- 辦公室員工薪酬福利制度
- 《JavaScript前端開發(fā)技術(shù)》試卷及答案 卷2
- 2026年西安高新第三中學(xué)公寓樓招聘備考題庫及答案詳解1套
- 養(yǎng)老院消防通道及疏散預(yù)案制度
- 養(yǎng)老院入住老人社會活動參與制度
- 初中寒假計劃課件
- 中西醫(yī)結(jié)合外科學(xué)(副高)2025年考試試題及答案
- 專升本語文教學(xué)課件
- 吞咽功能指南解讀
- 腦卒中吞咽障礙評估護(hù)理
- 別人買房子給我合同范本
- 電力通信培訓(xùn)課件
- 工程項目風(fēng)險評估與控制方案
- 智慧校園背景下高校后勤設(shè)施設(shè)備全生命周期管理研究
- 中建三局2024年項目經(jīng)理思維導(dǎo)圖
- 小區(qū)道閘管理辦法
評論
0/150
提交評論