Verilog語法簡易教程ppt課件_第1頁
Verilog語法簡易教程ppt課件_第2頁
Verilog語法簡易教程ppt課件_第3頁
Verilog語法簡易教程ppt課件_第4頁
Verilog語法簡易教程ppt課件_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、電子設(shè)計(jì)大賽 Verilog 與 FPGA,什么是Verilog HDL?,Verilog 是一種用于數(shù)字邏輯設(shè)計(jì)的硬件描述語言。 在設(shè)計(jì)中常用于硬件電路的行為級(jí)描述就是告訴電路,你應(yīng)該做什么,做什么,再做什么!,Verilog與C語言,Verilog的某些語法是與C相似的。但只是形似,神是不同的! Verilog只是Verilog而已,你可以參考C,但不能當(dāng)做C!你必須了解Verilog的本質(zhì)。,記住!,你編寫的Verilog代碼,是會(huì)生成實(shí)際硬件電路的。而電路,一般都不是串行執(zhí)行的,很多時(shí)候都是并行工作的。所以在Verilog中,你一定要對電路的時(shí)序圖與數(shù)據(jù)量圖有深刻的認(rèn)識(shí)!,不是所有的V

2、erilog代碼都能夠轉(zhuǎn)換成實(shí)際電路的,學(xué)習(xí)語法時(shí)要分辨清楚。那些可以轉(zhuǎn)換成實(shí)際電路的,我們稱為“可綜合”!另外,即使你使用的可綜合的代碼去編寫,如果你描述的電路實(shí)際上無法實(shí)現(xiàn),也是無法綜合的!,也許在C語言中,代碼越簡潔越好。但是在Verilog中絕不是這樣!衡量Verilog代碼的唯一標(biāo)準(zhǔn),就是在代碼正確與清晰的前提下,可以生成結(jié)構(gòu)盡可能簡單、功能卻非常強(qiáng)大的電路!,也許有用的Tips,多使用編譯器附帶RTL Viewr看看RTL級(jí)原理圖,看清楚你寫的代碼到底生成了什么樣的電路。多使用SignalTap II Logical Analyzer,看看你寫的模塊的時(shí)序圖,看看你寫的模塊輸出的數(shù)

3、據(jù)的值,盡量忘記C吧,C可以幫助你記住Verilog里面的關(guān)鍵字,但是請不要用C的思想來編寫Verilog。要使用Verilog的思想來編寫Verilog,多寫多練吧,無論學(xué)習(xí)什么練習(xí)都是王道。當(dāng)你初步掌握了Verilog之后,推薦你看看Verilog 那些事兒進(jìn)行進(jìn)一步的學(xué)習(xí)。什么是Verilog的思想?也許你可要在那里找到答案。,語法-符號(hào),標(biāo)識(shí)符:賦給對象的唯一名稱,可以是字母、數(shù)字、下劃線和符號(hào)“$”的組合,且首字符只能是字母或者下劃線。區(qū)分大小寫,如“if”為關(guān)鍵字,而“IF”不是關(guān)鍵字。 注釋:注釋有兩種:1,以“/*”開頭,以“*/”結(jié)束。2,以“/”開頭到本行結(jié)束。 這些和C語

4、言差不多。,語法-數(shù)字量,邏輯數(shù)值:(1)0:邏輯0; (2)1:邏輯1; (3)x:未知,不定 ; (4)z:高阻態(tài)。,整數(shù)常量:基本表達(dá)格式為:長度進(jìn)制 數(shù)值 如: 6b96位二進(jìn)制數(shù) 5o55位八進(jìn)制數(shù) 9d69位十進(jìn)制數(shù) 8h1f8位十六進(jìn)制數(shù) 而沒有“長度進(jìn)制”聲明時(shí),默認(rèn)為32位十進(jìn)制數(shù)。如:40,-50。,參數(shù):參數(shù)是特殊的常量,其語法結(jié)構(gòu)是: parameter para1=const1,para2=const2 paraN=constN; 如:parameter BIT=1,BYTE=8;,語法-變量定義,數(shù)據(jù)類型:數(shù)據(jù)類型用來表示數(shù)字電路硬件中的數(shù)據(jù)存儲(chǔ)和傳送元素,可以理解

5、成變量。Verilog 中總共有兩大類數(shù)據(jù)類型:線網(wǎng)類型和寄存器類型。 數(shù)據(jù)類型的總種類很多,這里只介紹兩種最常用且可綜合的類型:wire與reg。有興趣的同學(xué)可以自行學(xué)習(xí)其他類型。 wire是線網(wǎng)類型,可以理解成電路中的一根導(dǎo)線,在實(shí)際綜合中一般也是生成連接線。 reg是寄存器類型,就是電路中的寄存器、觸發(fā)器或選擇器。,語法-變量聲明,命名規(guī)則:wire與reg變量的通用命名規(guī)則: wire/reg msb:lsb Varia1,Varia2; 例如:reg3:0 Sat;/Sat為4位寄存器 wire7:0 Line; /Line為8位線網(wǎng) 如果沒有位寬聲明,則默認(rèn)為1位位寬。 注意:re

6、g和wire聲明的都是無符號(hào)變量,若要聲明有符號(hào)變量,可以在reg和wire后加上關(guān)鍵字signed。如:reg signed 7:0 Sat;,語法-變量賦值,在Verilog中,變量是不能隨意賦值的,必須使用賦值運(yùn)算符才可以進(jìn)行賦值。其中assign稱為連續(xù)賦值,對應(yīng)于線網(wǎng)類型變量wire;initial或always稱為過程賦值,對應(yīng)于寄存器類型變量reg。下面作具體講解,語法-assign與wire,首先列個(gè)例子: wire a; assign a=1b1; 可以看出,語法格式就是這么簡單,如下: assign 線網(wǎng)型變量名=賦值表達(dá)式; 需要理解的是,assign稱為連續(xù)賦值的意思是

7、,等號(hào)右端賦值表達(dá)式的值會(huì)持續(xù)對被賦值變量產(chǎn)生連續(xù)驅(qū)動(dòng),而且只要等號(hào)右端賦值表達(dá)式的值改變,左端被賦值變量的值就會(huì)立即改變。對應(yīng)到電路中去,就是導(dǎo)線。,語法-assign與wire,下面列舉一些實(shí)際中常用的用法:(1)wire a,b;assign a = b;(2)wire 7:0 a,b;assign a=b;(3)wire 7:0 a,b;assign a3=b1;(4)wire 7:0 a,b;assign a3:0=b3:0;(5)wire a,b;wire 1:0 c;assign c=a,b;,語法-initial/always與reg,首先列舉兩個(gè)例子說明initial與alw

8、ays的區(qū)別,reg a,c; initial begin c=1b0; end,reg a,c; always(a) begin c=c+a; end,initial只會(huì)執(zhí)行一次,即只執(zhí)行一次把C賦零的行為;而always會(huì)不斷執(zhí)行,即每一次a的值改變時(shí),c都會(huì)被重新賦值。,這兩個(gè)例子也非常清楚的說明了initial/always 與reg如何配合使用。要注意的是,其中begin end是必須加入的,而也必須和always一起使用。具體在后面進(jìn)行講解。,語法阻塞與非阻塞,于連續(xù)賦值assign不同的是,過程賦值中的賦值操作符分為兩種,分別是:“=”,稱為阻塞賦值,指的在當(dāng)前的賦值完成前阻塞其

9、他類型的賦值任務(wù);“=”,稱為非阻塞賦值,指的從估計(jì)右端開始并不阻礙執(zhí)行其他的賦值操作。 阻塞與非阻塞賦值的區(qū)別是Verilog中較為重要的一部分,將在后面進(jìn)行詳盡的講解。,語法-算數(shù)運(yùn)算符,算數(shù)運(yùn)算符有5種:+,-,*,/,%,用于整型數(shù)據(jù)的數(shù)學(xué)運(yùn)算。隨著技術(shù)的發(fā)展,上述5種算術(shù)運(yùn)算符都是可以直接綜合的。需要注意的是,在進(jìn)行加法和乘法運(yùn)算時(shí),要注意防止數(shù)據(jù)溢出造成運(yùn)算錯(cuò)誤。,語法-邏輯運(yùn)算符與關(guān)系運(yùn)算符,Verilog中的邏輯運(yùn)算符與關(guān)系運(yùn)算符同C語言中的用法相似,可以參考。 邏輯運(yùn)算符分為3種:邏輯與“邏輯不等!=。如果操作數(shù)直接的關(guān)系成立,則返回值為1;關(guān)系不成立,則返回值為0。,語法-

10、條件運(yùn)算符,條件運(yùn)算符為“?:”,基本表達(dá)式為:y=x?a:b;與C語言一樣,x為真時(shí)返回前一個(gè)操作數(shù)a,否則返回操作數(shù)b。,語法-位運(yùn)算符,Verilog用位運(yùn)算符來描述硬件電路中的邏輯門,共有5種:(1):非;(2) shr15:0=shr14:1,b,c; 重復(fù)操作符為,即雙重花括號(hào),提供復(fù)制一個(gè)常量或變量的簡便記法,如:32b01=6b010101;,語法-移位運(yùn)算符,移位運(yùn)算符只有兩種:(右移),其使用格式為:s1N,N為常數(shù)。 某些情況下移位運(yùn)算符的效果也可以通過拼接運(yùn)算符實(shí)現(xiàn),這個(gè)看個(gè)人喜好與具體電路要求。,語法-一元約簡運(yùn)算符,一元約簡運(yùn)算符是一種特殊的位運(yùn)算符,它對單個(gè)操作數(shù)

11、進(jìn)行運(yùn)算,最后返回一位數(shù),具體運(yùn)算過程為:首先將操作數(shù)的第一位和第二位進(jìn)行位運(yùn)算,然后將結(jié)果與第三位進(jìn)行位運(yùn)算,依次類推到最后一位,輸出運(yùn)算結(jié)果。示例如下:out1= 一元約簡運(yùn)算符主要用于特殊操作中,如與約簡可檢測數(shù)據(jù)中是否包含位1,或約簡課檢測數(shù)據(jù)是否包含0。,語法-begin end,前面已經(jīng)提到過beginend了。beginend在Verilog中是非常基礎(chǔ)但是十分重要的東西。那么什么是beginend?這里可以借助C來理解:“beginend就是C語言中的花括號(hào),只不過在Verilog中有了別的用處了,所以用beginend來表示?!?語法-觸發(fā),“”,前面講到了在過程賦值alwa

12、ys中,必須加上。為什么?過程賦值是什么?就是如果發(fā)生了什么行為,才給你賦值。那發(fā)生的行為就要用“(行為)”來描述,我們稱之為觸發(fā),完整格式為always(觸發(fā)事件)begin end,語法-觸發(fā)事件,觸發(fā)事件有兩種,這是由硬件電路決定的,在數(shù)電中已經(jīng)學(xué)過:電平觸發(fā),邊沿觸發(fā)。,電平觸發(fā)的格式為 always (a) begin end 只要a的電平一改變,內(nèi)部的過程賦值就進(jìn)行一次。 電平觸發(fā)不能直接選擇觸發(fā)的電平是高還是低,如果非要選擇,可以在內(nèi)部加入if語句進(jìn)行判斷:always (a)begin if(a=1b0)begin end end,與電平觸發(fā)不同,邊沿觸發(fā)可以直接選擇觸發(fā)的邊沿

13、:posedge表示上升沿觸發(fā),negedge表示下降沿觸發(fā)。如: always (posedge clk)begin end 需要注意的是,邊沿觸發(fā)不可以選用某個(gè)信號(hào)的兩個(gè)沿,即不能(posedge clk or negedge clk),注意事項(xiàng)! 同一個(gè)always模塊中只能使用一種觸發(fā)方式,不可以邊沿觸發(fā)與電平觸發(fā)混合使用。 不同的觸發(fā)事件中間用“or”隔開,也可以用“,”隔開。,語法-條件語句if,Verilog中的if語句與C語言中十分相似,可以直接進(jìn)行參考。需要注意的是,ifelse中,即使用不到else分支,語句中else分支也最好加上,否則電路有可能生成不穩(wěn)定的電路,造成結(jié)果

14、的錯(cuò)誤。,if(a=1b1) c=1b0; 應(yīng)寫成,if(a=1b1) c=1b0; else c=c;,語法-條件語句case,case與C語言中的switch比較類似,但是具體又有區(qū)別。其語法格式如下:,case(條件表達(dá)式) 分支1:語句塊1; 分支2:語句塊2; default:語句塊n; endcase,reg 2:0 cnt; case(cnt) 3b000:q=q+1; 3b001:q=q+2; default:q=q; endcase,語法-條件語句case,當(dāng)幾個(gè)分支對應(yīng)的操作相同時(shí),可以將這些分支放在一起,如: reg 2:0 cnt; case(cnt) 3b000,3b

15、001,3b010:q=q+1; 3b011,3b100:q=q+2; default:q=q; endcase,另外,同else一樣,default一般不要缺省。,語法-條件語句if與case的區(qū)別,最大的區(qū)別是,if生成的電路是串行,是有優(yōu)先級(jí)的編碼邏輯;而case生成的電路是并行的,各種判定情況的優(yōu)先級(jí)相同。因此,if生成的電路延時(shí)較大,占用硬件資源少;case生成的電路延時(shí)短,但占用硬件資源多。,語法-循環(huán)語句,Verilog中也是有循環(huán)語句的,但是不推薦初學(xué)者使用。與C不同,Verilog的循環(huán)語句是依靠電路的重復(fù)生成實(shí)現(xiàn)的,而且并不是所有的循環(huán)語句都可以綜合。 感興趣的同學(xué)可以在深

16、入了解Verilog后自學(xué)循環(huán)語句。,語法-任務(wù)和函數(shù),Verilog中還有兩種特殊的語句:任務(wù)(task)和函數(shù)(function)。這兩種語句一般用于組合電路的設(shè)計(jì)中,可以簡化代碼結(jié)構(gòu),但在時(shí)序電路的設(shè)計(jì)中無法使用。 感興趣的同學(xué)可以在深入了解Verilog后自行學(xué)習(xí)。,語法-模塊的概念,模塊(module)是Verilog中最基本的概念,也是最常用的基本單元。一個(gè)module就是一整塊電路實(shí)體,一個(gè)系統(tǒng)就是由許多個(gè)module組成的。 需要注意的是,在Quartus中,一個(gè)Verilog HDL文件(*.v)中只能編寫一個(gè)module,而且文件名必須與module的名字相同。,語法-mo

17、dule的結(jié)構(gòu),module的基本結(jié)構(gòu)如下: module 模塊名 (端口列表) 端口聲明 其他聲明 模塊條目 endmodule,端口聲明有3鐘:(1)input:輸入端口,可以理解為輸入腳;(2)output:輸出端口,可以理解成輸出腳;(3)inout:輸入輸出端口,可以理解成雙向管腳。,語法-module實(shí)例:3-8譯碼器,module decoder3to8(din,dout); input 2:0 din; output 7:0 dout; reg 7:0 dout; always(din) begin case(din) 3b000:dout=8b0000_0001; 3b001

18、:dout=8b0000_0010; 3b111:dout=8b1000_0000; endcase end endmodule,語法*-阻塞與非阻塞的深入理解,前面說過,過程賦值有兩種:阻塞賦值“=”和非阻塞賦值“=”。那么它們有什么區(qū)別呢? 說的最簡單的話,阻塞式賦值左邊的變量在被賦予新值前,之后用到該變量的阻塞賦值式都無法執(zhí)行,而非阻塞賦值則不會(huì)。在組合邏輯和時(shí)序邏輯電路中都可以這樣理解。,語法*-阻塞與非阻塞的深入理解,首先看組合邏輯中的區(qū)別,看下面兩個(gè)例子,always(a,b,c,d)begin t1=a end,always(a,b,c,d)begin t1=a end,當(dāng)a,b

19、,c,d都從0變?yōu)?時(shí),左邊out輸出1,右邊out仍為0。 因?yàn)閠1的值由a,b決定,t2的值有c,d決定,在左邊,由于阻塞,t1、t2被賦新值前不能給out賦值,out使用的t1,t2存儲(chǔ)的是新的數(shù)值1;而在右邊,由于 非阻塞,out賦值式立刻執(zhí)行,out使用的t1,t2存儲(chǔ)的是舊的數(shù)值0。,語法*-阻塞與非阻塞的深入理解,再來看時(shí)序邏輯中的區(qū)別,看下面兩個(gè)例子,always(posedge clk) q1=d; q2=q1; q3=q2; end,always(posedge clk) q1=d; q2=q1; q3=q2; end,可以看到,實(shí)際生產(chǎn)的電路是不同的。在左邊,由于阻塞的關(guān)

20、系,q3最后直接等于d,電路便被簡化成左圖了;在右邊,由于非阻塞q2、q3分別對應(yīng)著上一時(shí)鐘沿的q1,q2,因此需要3級(jí)觸發(fā)器來實(shí)現(xiàn)。,語法*-阻塞與非阻塞的深入理解,編碼建議: (1)對組合邏輯建模采用阻塞式賦值; (2)對時(shí)序邏輯建模采用非阻塞式賦值; (3)同一個(gè)module中阻塞與非阻塞賦值放在不同的always塊中。,語法*-模塊調(diào)用,對于一個(gè)復(fù)雜的系統(tǒng),是不可能把所有的功能都放在一個(gè)module中完成的。一般都是按照功能進(jìn)行劃分,分別封裝成多個(gè)module,在需要用到某個(gè)module時(shí)再去調(diào)用。被成為模塊調(diào)用。 下面舉例說明:首先假設(shè)有一個(gè)乘法器,可以實(shí)現(xiàn)8位整型數(shù)乘法,其端口聲明

21、為: module mult8(a0,a1,b); input 7:0 a0,a1; output 15:0 b; endmodule,語法*-模塊調(diào)用,然后在另一個(gè)module中調(diào)用它: module co (c1,c2,c3,c4,result); input 7:0 c1,c2,c3,c4; output reg result; reg15:0 temp1,temp2; mult8 inst_1( .a0(c1), .a1(c2), .b(temp1) );,mult8 inst_2( .a0(c3), .a1(c4), .b(temp2) ); result=(temp1temp2)?

22、1:0; endmodule 這樣就實(shí)現(xiàn)了模塊的調(diào)用,最終實(shí)現(xiàn)了將輸入數(shù)據(jù)相乘后比較大小的結(jié)果輸出。,語法*-模塊調(diào)用,根據(jù)上面例子,可以給出模塊調(diào)用的語法格式: 模塊名 例化后名( .端口1名(連接端口1信號(hào)名), .端口2名(連接端口2信號(hào)名), .端口3名(連接端口3信號(hào)名), ); 其中,掉用時(shí)端口的順便可以改變,只要名字正確即可;例化后名不能為元模塊名或關(guān)鍵字。,語法*-狀態(tài)機(jī),狀態(tài)機(jī)并不是屬于Verilog的范疇,但是通過Verilog實(shí)現(xiàn)狀態(tài)機(jī)可以幫助我們簡化很多設(shè)計(jì),所以狀態(tài)機(jī)一定要掌握! 狀態(tài)機(jī)可分為兩種:Mealy型和Moore型狀態(tài)機(jī)。Mealy型狀態(tài)機(jī)的輸出同時(shí)依賴于當(dāng)

23、前狀態(tài)和輸入信號(hào),輸出可以在輸入發(fā)生改變之后立刻改變,而與時(shí)鐘信號(hào)無關(guān),因此Mealy型狀態(tài)機(jī)具有異步輸出;Moore型狀態(tài)機(jī)的輸出僅僅依賴于當(dāng)前狀態(tài),輸出是通過組合邏輯塊計(jì)算得到的,本質(zhì)上是當(dāng)前狀態(tài)的函數(shù)。,語法*-狀態(tài)機(jī),Mealy型,Mealy型,語法*-狀態(tài)機(jī),狀態(tài)機(jī)設(shè)計(jì)原則: 1,給事件劃分步驟,弄清楚先做什么,再做什么,做了這一步下一步應(yīng)該怎么樣做。 2,狀態(tài)化簡與狀態(tài)分配。檢查下是否有冗余,重復(fù)的步驟。當(dāng)狀態(tài)劃分到最簡后,給每個(gè)狀態(tài)進(jìn)行編碼分配。 3,通過Verilog實(shí)現(xiàn)。這里有很多模板,后面進(jìn)行講解。 4,觀察編譯結(jié)果的狀態(tài)流程圖,檢查狀態(tài)機(jī)功能是否正確。,語法*-狀態(tài)機(jī),編

24、碼分配原則:狀態(tài)的編碼形式一般有三種,普通的二進(jìn)制編碼,格雷碼編碼,One Hot碼編碼(One Hot碼對應(yīng)關(guān)系:0,0000;1,0001;2,0010;3,0100;4,1000)。二進(jìn)制碼占用的數(shù)據(jù)位寬比較簡單,但容易產(chǎn)生毛刺;格雷碼一定程度減少了毛刺的產(chǎn)生;One Hot碼不會(huì)產(chǎn)生毛刺,可以使?fàn)顟B(tài)機(jī)達(dá)到較高的工作頻率,但是會(huì)增加觸發(fā)器的占用。具體選用什么碼根據(jù)實(shí)際需求,一般普通二進(jìn)制編碼即可。,語法*-狀態(tài)機(jī),“一段式”狀態(tài)機(jī)Verilog模板: always(posedge clk) begin if(!rst_n) begin state= out= end else begin

25、 case(state) s0:begin state= out= end,s1:begin state= out= end endcase end end 這種形式輸出向量不會(huì)產(chǎn)生毛刺,但是不能實(shí)現(xiàn)異步Mealy有限狀態(tài)機(jī)。,語法*-狀態(tài)機(jī),“二段式”狀態(tài)機(jī)Verilog模板: /狀態(tài)調(diào)轉(zhuǎn) always(posedge clk)begin if(!rst_n) state= idle; else state =next_state; end /下一狀態(tài)的計(jì)算以及輸出邏輯 always(state)begin case(state) s0:begin next_state = out =,en

26、d s1:begin next_state = out = end endcase end 這種形式具有最優(yōu)的面積和時(shí)序性能,但輸出組合邏輯,有可能產(chǎn)生毛刺。,語法*-狀態(tài)機(jī),飛“三段式”狀態(tài)機(jī)Verilog模板: /狀態(tài)調(diào)轉(zhuǎn) always (posedge clk)begin if(!rst_n) state=idle; else state=next_state; end /下一狀態(tài)的計(jì)算 always(posedge clk) begin case(state) s0:next_state= s1:next_state= endcase,end /輸出的邏輯處理 always(posed

27、ge clk) begin case(state) s0:out= s1:put= endcase end 這種形式的輸出同樣無毛刺,是一些參考書上的推薦寫法。,寫在Verilog的最后,下面是一些我推薦的代碼風(fēng)格,同學(xué)們可以參考一下,希望對同學(xué)們學(xué)習(xí)Verilog有幫助; 模塊聲明:module(/input a, b, /output c, d ); 在聲明時(shí)就用注釋將輸入輸出腳區(qū)別出來。,寫在Verilog的最后,異步復(fù)位的always: always(posedge clk,negedge rst_n)begin if(!rst_n)begin /一堆復(fù)位的行為 end else be

28、gin end end 模塊帶有異步復(fù)位的功能推薦都這樣寫,FPGA的概述,Filed programmable gate array,現(xiàn)場可編程門陣列。 FPGA的引腳分為電源腳,I/O腳,特殊功能腳。能給外設(shè)使用的只有I/O腳。 FPGA的邏輯實(shí)現(xiàn)是通過查找表的方式實(shí)現(xiàn)的,就是通過RAM來實(shí)現(xiàn)邏輯函數(shù)。所以,F(xiàn)PGA內(nèi)部沒有真正的邏輯門。,FPGA使用注意,FPGA內(nèi)部是RAM,RAM掉電丟失數(shù)據(jù),所以與CPLD不同,F(xiàn)PGA普通下載的程序在掉電后是沒有了的。 FPGA內(nèi)部沒有真正的邏輯門,所以不要在內(nèi)部使用帶高阻態(tài)的輸出相連,編譯器不會(huì)報(bào)錯(cuò),但是電路功能是無法實(shí)現(xiàn)的。如果非要把兩個(gè)輸出連一起,可以使用“:?”進(jìn)行二選一。 FPGA的I/O引腳電路是支持雙向高阻態(tài)的。,FPGA內(nèi)部硬件,1.鎖相環(huán)(PLL):可以將輸入的

溫馨提示

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

評(píng)論

0/150

提交評(píng)論