基于FPGAad數(shù)據(jù)采集存儲處理報告(含Verilog源代碼)_第1頁
基于FPGAad數(shù)據(jù)采集存儲處理報告(含Verilog源代碼)_第2頁
基于FPGAad數(shù)據(jù)采集存儲處理報告(含Verilog源代碼)_第3頁
基于FPGAad數(shù)據(jù)采集存儲處理報告(含Verilog源代碼)_第4頁
基于FPGAad數(shù)據(jù)采集存儲處理報告(含Verilog源代碼)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、. . . 基于FPGA AD數(shù)據(jù)采集存儲處理項目報告(XILINX ALTEARA 都可用)組員:華、文、杰1、 實驗目的本次實驗利用Basys2開發(fā)板完成一個開發(fā)小項目,即開發(fā)AD數(shù)據(jù)采集存儲處理系統(tǒng),旨在掌握FPGA開發(fā)基本方法以與鍛煉解決開發(fā)過程中出現(xiàn)問題的能力。2、 關鍵詞Basys2、FPGA、AD轉換、RAM、串口通信、MATLAB處理3、 方案設計要實現(xiàn)本次項目,首先確定器件,其次根據(jù)器件時序寫出模塊的使用程序,最后綜合成一個工程,然后進行仿真,上板實驗。本次實驗的器件:32M8位模數(shù)轉換器、Basys2開發(fā)板、串口轉RS232cp2102模塊、基于三極管的電平轉換電路。選擇好

2、器件后,根據(jù)器件的時序完成模塊的代碼書寫。寫好AD模塊、串口通信模塊后,現(xiàn)在就需要處理采樣速率與串口通訊速率不匹配的問題了。根據(jù)香農(nóng)采樣定理,采樣頻率得高于信號頻率的兩倍才能完成信號復現(xiàn),我們這里使用25M的高速采樣頻率,而串口dps9600傳送一個位104us明顯比采樣慢許多。所以這里需要解決速率不匹配的問題。我們想到可以利用FPGA的RAM先存儲采樣來的數(shù)據(jù),然后再提取數(shù)據(jù)經(jīng)過串口通信送至PC經(jīng)由MATLAB處理。本次小項目最為關鍵的是控制好采樣與串口通信的時序問題。關于時序的控制,留到模塊介紹里面說明。方案小結:本次實驗基于片RAM存儲AD采樣過來的數(shù)據(jù),然后待采樣完成后提取數(shù)據(jù)串口通信

3、至PC,最后經(jīng)由matlab處理。4、 模塊介紹1. Verilog開發(fā)程序介紹如下給出基于QuartusII繪制出的Block Diagram圖,涵蓋了所有的模塊以與模塊之間的連線。圖4.1 綜合模塊圖如下給出程序目錄(txt格式):現(xiàn)在分別介紹各個模塊的端口以與功能。AD外設:電路圖、實物圖、接口這個外設提供最大32M采樣速率,包括一個模擬信號輸入和一個采樣時鐘輸入以與八個數(shù)字信號輸出。在每個采樣時鐘的上升沿輸出相應的采樣數(shù)字信號。Basys2開發(fā)板:串口通訊模塊外設:這個模塊旨在把Basys2輸出的LVTTL轉換成RS232的負邏輯高電平,實現(xiàn)串口與PC的通信。它有五個引腳:GND、3.

4、3V、5V、TXD、RXD。在使用中,只使用RXD和GND。需要注意的是,倘若GND不與FPGA串口的GND連接,那么串口輸出的電平,此模塊無法識別,這就是數(shù)字地需要共地的重要性。這里的RXD接Basys的串口輸出C6(這是分配的tx輸出管腳)。接線當然用杜邦線的公母線連接。TOP模塊:TOP模塊命名為TEST是當時自己寫的非最終版程序用來測試正確性,最后測試正確后也沒修改過來,但是對仿真沒影響。clk是系統(tǒng)時鐘輸入,用來作為全局時鐘并且為調用后面四個子模塊提供時鐘基礎,設置為50M。rst_n是系統(tǒng)復位設置,復位到初始狀態(tài),這里大家都熟悉,不用多說。input7:0datain是AD外設的8

5、位數(shù)字信號輸入,這個數(shù)字信號隨著AD采樣時鐘(clk_25M)變化,在后面CLK模塊里面會說明。output clk_25M為調用CLK模塊后輸出的AD采樣時鐘,這個輸出用來接AD外設的時鐘輸入,提供采樣時鐘。output tx為調用uart模塊后,與PC通信的“橋梁”,即攜帶數(shù)據(jù)的信號吧。CLK模塊:這里模塊名字設置為AD_2CLK,旨在表明輸出兩個CLK,用來AD采樣和串口通信。input clk為系統(tǒng)時鐘50Mhz。Input reset_n為系統(tǒng)復位,低電平有效。Output reg clk_25M為AD采樣時鐘,之前做過說明。Output reg dps9600為輸出給uart模塊的

6、時鐘。ENCON模塊:這個模塊是整個程序的控制核心,下面介紹端口說明。Input wr_clk為寫時鐘輸入,這里我們接的當然就是AD寫入的時鐘CLK_25M,這里的寫速率要和采樣速率匹配才可以保證采樣再存儲的正確性。Input rd_clk為讀時鐘輸入,這里接dps9600,符合串口協(xié)議。Input rst_n為系統(tǒng)復位,低電平有效。Output reg wren為寫使能輸出,當wren為高時,寫有效,即表明AD的八位數(shù)字信號寫進RAM。Output reg 8:0wraddress為寫地址,寫地址在寫時鐘下降沿完成加一,保證每次寫完后都是新的地址存儲數(shù)據(jù)保證了ram能夠存儲512個正確數(shù)據(jù)。

7、Output reg rden為讀使能輸出,當rden為高時,讀有效,即表明RAM里面對應地址的信號讀出。Output reg 8:0rdaddress為讀地址,在每個讀信號的下降沿完成加一,保證每次讀完一個數(shù)據(jù)后地址指向新的容,保證讀出的512個數(shù)據(jù)的正確性。Output reg wrsig 為發(fā)送給串口的發(fā)送信號,上升沿有效。每一上升沿使串口開始發(fā)送送到串口的數(shù)據(jù)給PC。RAM模塊:Input wr_clk為RAM的寫時鐘,上升沿有效在相應地址寫入數(shù)據(jù)。Input wren為RAM寫使能信號,高電平有效,有效時配合wraddress和wrclk進行寫操作。Input 8:0wraddres

8、s為寫地址,在每個wr時鐘下降沿完成加一操作,確保每次寫入的地址正確性。Input rd_clk為RAM的讀時鐘,上升沿有效,在相應的地址讀出數(shù)據(jù)。Input 8:0rdaddress為讀地址,同寫地址功能。Input rden,同wren。Output dataout是讀出的數(shù)據(jù),送至UART模塊通信給PC。UART模塊:Input clk為CLK模塊的clk_dps9600,用于配合這個模塊打成波特率為9600的串口輸出。Input rst_n為復位,低電平有效。Input 7:0datain接RAM模塊的數(shù)據(jù)輸出。Input wrsig上升沿有效,開啟串口發(fā)送,接ENCON模塊wrsig

9、。Output reg idle 為串口工作狀態(tài)說明,為高表明正在發(fā)送數(shù)據(jù)。Output tx為發(fā)送的串口信號,接至上面的串口通訊外設模塊RXD。介紹完所有模塊后,現(xiàn)在給出仿真波形以與testbench的設置。TOP程序以與子程序調用:Testbench:對應的仿真波形:可見,CLK25M輸出正確??梢?,tx的輸出也滿足設計的10101010B然后驗證每個位的時間,大概為104us,滿足通信要求仿真通過。2. Matlab處理程序介紹:程序:串口調試小助手軟件以與工作界面:這個程序提取串口通信至PC的數(shù)據(jù)(經(jīng)由串口調試小助手輸出),然后將十六進制轉換成十進制最后繪圖輸出。5、 關鍵問題分析處理

10、我們小組在代碼編寫編譯過程、仿真過程以與上板過程中出了不少錯誤,但最終都與時糾正了。在這個發(fā)現(xiàn)問題與解決問題的兩周里,我們小組對出現(xiàn)的部分問題做了分析與記錄有些還自行設計了實驗驗證。如下列出了一些關鍵問題的分析處理。:模塊的購置問題與電平是否兼容的處理我們的小項目設計到兩個外設,一個是AD轉換模塊一個是串口轉RS232通信模塊。在購置模塊時需要考慮引腳電平是否與FPGA電平(我們這里使用的是LVTTL 3.3V引腳電平)兼容,所需要的引腳空間Basys2是否有足夠的提供,還需要考慮成本以與模塊的時序問題。本實驗過程中,我們購置了兼容LVTTL八位AD轉換模塊和兼容TTL的串口通信模塊。成本很低

11、,串口模塊加上AD模塊在幾十塊以。網(wǎng)購的模塊到了之后,我們開始測試各模塊的電平值。經(jīng)測試,AD輸出高3.34V低0V,符合LVTTL3.3V電平邏輯經(jīng)測試,串口模塊txd輸出高5v,低0V?;谶@里,我們通過串口txd接自己的rxd實現(xiàn)了串口模塊是否損壞的測試,測試通過,串口是好的。由于在測量電平時,我們沒有完成上板工作,所以我們只好假設串口模塊rxd需要接TTL5V邏輯才可正常工作,因此我們組利用兩個三極管搭建了一個電平轉換電路,實現(xiàn)了電平轉換。其實到后面的上板工作之后,發(fā)現(xiàn)3.3V的輸出接到RXD,也能正常工作。:源代碼的借鑒與部分時序代碼設計問題我們程序需要Verilog串口通信模塊,為

12、了節(jié)省時間,我們在網(wǎng)上尋找了若干串口通信例程,在掌握了例程的原理后,我們自行又編寫了自己的串口模塊和分時模塊還有存儲模塊以與時序控制模塊。其中,最為困難的是采集速率和通信速率不匹配怎么解決的問題。我們采取利用ram存儲并且提取數(shù)據(jù)以與設計了合理的存儲提取時序控制模塊解決這個問題。然而其中困難重重,由于網(wǎng)上資源有限,對ISEramip核理解不夠,我們花了很多時間思考怎么實現(xiàn)這個速率匹配。最終利用ram語句構成的模塊實現(xiàn)了ram存取功能。之后時序控制也順利設計出來。:分模塊調試在完成了各個模塊的基本書寫后,分模塊調試是必須的,不然當各個模塊整合到主程序之后除了問題,都不好分析。這里的調試當然還是基

13、于testbench的仿真調試。:子程序直接的銜接在主程序里調用子程序的過程中,我們出現(xiàn)了變量格式不匹配的問題,即上個子程序的輸出需要用wire型去構成下個子程序的輸入。而最開始,缺少經(jīng)驗的我們用的是reg型變量來銜接子程序。仔細想想兩個變量類型就知道,子程序就當作是一個黑盒子,只有輸入輸出,輸出的變量類型就是wire型。在這個變量類型的選擇上,我們組在這里跌了大坑,不過最終還是成功解決。順利完成編譯工作。:主程序里子程序的分塊調試完成編譯工作之后,并不代表仿真就可以通過。我們組就遇到了這樣的問題。我們在testbench里設計了7:0datain的激勵輸入,結果得到的tx輸出既有高阻態(tài)也有紅

14、線不確定值輸出。簡而言之,仿真出錯。所以我們開始在主程序里面執(zhí)行程序的分塊調試??紤]到我們程序的時序邏輯。我們由輸入一個個分塊仿真一直到最后輸出。即先在主程序仿真CLK模塊,注釋掉其他模塊并做做適當修改(比如在主module里面添加時鐘輸出),驗證好CLK模塊之后,再在主程序里面仿真CLK+ENCON模塊,然后再方向很CLK+ENCON+RAM模塊,最后在全部仿真。經(jīng)過上述主程序里的分塊調試,我們成功完成了軟件仿真工作。:串口調試軟件的熟悉我們的項目需要利用到一個軟件,串口調試小助手。這個軟件我們不是很熟悉,我們自己單獨設計了一個串口通信工程,并且利用我們購置的串口通信模塊完成這個熟悉過程。主

15、要是通過修改數(shù)據(jù)長度、校驗選擇、停止位長度,來熟悉他們之間的通信協(xié)議。最終大家都對這個軟件的應用有了深入了解。:上板調試我們組花了兩個下午和三個晚上在南一樓完成調試工作,期間出了諸多問題。但是我們冷靜的分析問題,并且根據(jù)問題的現(xiàn)象給出做出假設,并給出試探性的解決方案。這樣一步一步,大概處理了七八個問題之后,我們上板終于通過了。:最重要的數(shù)字地共地問題這是本次上板實驗過程中,出現(xiàn)的最大的問題!為什么要共地?因為我們需要一個標準去衡量數(shù)字電路中的高電平到底有多高。我們實驗有三個地:BASYS2 FPGA PMOD io地、串口模塊地、AD模塊地(也就是給AD模塊供電的電源地,這里使用的是實驗室的電

16、源)。第一個晚上的調試過程中,PMOD地和串口模塊地沒接,僅僅有一個AD地,結果導致PC上串口調試小助手只能一次接受到512個00數(shù)據(jù)(這里我們設計的一次采集512個數(shù)據(jù)),表明我們的軟件模塊并沒出錯,出錯的是硬件連線。我們冷靜分析,在第二個晚上的實驗中,把PMOD地與AD地共在一起,發(fā)現(xiàn)不能接受到512個數(shù)據(jù)了,只能隨機的不可控的接到諸如FF FE這樣的錯誤數(shù)據(jù),而且只能接收到一兩個數(shù)據(jù)。出了這樣的問題,大家都手足無措。第三天晚上也就是項目提交的前一天晚上,我們把三個地全部接在一起。興奮的發(fā)現(xiàn),通過!可見,共地在數(shù)字電路中是多么重要。6、 結果與分析如下是在實驗室驗收時的一圖:寫在前面:本實

17、驗采樣時鐘25M,AD是八位而且輸出幅度可調,每次采樣512個數(shù)據(jù)。故每次采樣的總時長:512*40ns20000ns=20us,f=50khz也就是說信號為50khz能夠采集一個周期,信號為100KHZ能夠采集兩個周期測量結果:sin50KHZ:squ50KHZ:Tri50KHZ:Sin150KHZ:Squ150KHZ:Tri150KHZ:sin500KHZ:Sin1MHZ:Sin5MHZ:結果分析:信號源VPP都是2.9V,基于上面的AD轉換的算法介紹,我們簡單計算一下每個波形最高點對應的十進制數(shù):(2.9/5+1)/2*255=201而我們采樣出來的一般在180左右。為什么?因為我們說過

18、,這個AD采樣器有控制采樣輸出幅度的功能。如果要實現(xiàn)準確電壓復現(xiàn),可以再通過一個轉換算法即可。根據(jù)上述三種波形以與不同頻率的波形展示,可以看出,我們基本上完成了項目功能。但是在5M赫茲時,輸出波形躁動很大,研究發(fā)現(xiàn),是因為信號發(fā)生器的穩(wěn)定性原因導致。(實驗室信號發(fā)生器在5Mhz時穩(wěn)定性很低)7、 總結經(jīng)過本次小項目,我們大家經(jīng)歷了很多。從立項到方案設計、模塊購置、代碼書寫調試、仿真調試上板測試等等,大家一起在宿舍與南一實驗室直接奔波多次,才完成這個項目,其中的辛苦不易溢于言表。這個項目,網(wǎng)上基本上找不到完整源代碼,所以我們自行設計了除了串口之外的全部代碼,這很好的鍛煉了我們的應用知識的能力。在

19、項目工作中,我們知道了發(fā)現(xiàn)問題的重要性,清楚的認識到如何設計實驗如何設計方案卻解決問題更為重要。我們團結協(xié)作大家一起燒腦思考的奮斗經(jīng)歷更是難忘的。附錄:源代碼/module TEST(input clk,/50Minputrst_n,/復位input 7:0 datain,/AD輸入output clk_25M,output tx/串口);wire clk_dps9600;ad_2clk u1(.clk(clk), /系統(tǒng)時鐘50Mhz.reset_n(rst_n), /復位,低電平有效,復位時時鐘都低.clk_25M(clk_25M),/用于AD采樣的頻率.clk_dps9600(clk_d

20、ps9600) /用于串口通信的頻率);wirewren;wire8:0wraddress;wire8:0rdaddress;wirerden;wirewrsig;ad_encon u2(.wr_clk(clk_25M), /寫時鐘輸入.rd_clk(clk_dps9600), /讀時鐘輸入.rst_n(rst_n), /復位信號,低電平有效.wren(wren), /寫使能 輸出.wraddress(wraddress), /寫地址 輸出.rden(rden), /讀使能 輸出.rdaddress(rdaddress), /讀地址 輸出.wrsig(wrsig) /串口發(fā)送信號 輸出); w

21、ire7:0dataout;ram u3(.wr_clk(clk_25M),/采集時鐘.rd_clk(clk_dps9600),/串口通訊時鐘.wren(wren),/寫使能.rden(rden),/讀使能.datain(datain),/采集數(shù)據(jù)入.wraddress(wraddress),/寫地址.rdaddress(rdaddress),/讀地址.dataout(dataout);ad_uart u4(.clk(clk_dps9600), /UART 時鐘,采用clk_dps9600,調用AD_2CLK模塊.rst_n(rst_n), /復位信號.datain(dataout), /AD

22、送過來的數(shù)字信號.wrsig(wrsig), /發(fā)送命令 ,上升沿有效.idle(), /線路狀態(tài)指示,高忙,低閑.tx(tx) /發(fā)送數(shù)據(jù)信號);endmodule /module ad_2clk(input clk, /系統(tǒng)時鐘50Mhzinput reset_n, /復位,低電平有效,復位時時鐘都低output reg clk_25M,/用于AD采樣的頻率output reg clk_dps9600 /用于串口通信的頻率);reg 1:0t_1;reg 15:0t_2;/2分頻always(posedge clk or negedge reset_n)beginif(!reset_n)b

23、egincnt_1 <= 2'b0;clk_25M <= 1'b0;endelse begin if(cnt_1 = 2'd0) begin clk_25M <= 1'b1;t_1 <=t_1 + 2'd1; end/1-2 1else if(cnt_1 = 2'd1) begin clk_25M <= 1'd0 ;cnt_1 <= 2'b0;end /0 3 -0elsecnt_1 <=t_1 + 1'b1;endendalways(posedge clk or negedge

24、reset_n)beginif(!reset_n)begincnt_2 <= 2'b0;clk_dps9600<= 1'b0;endelse beginif(cnt_2 = 16'd162) begin clk_dps9600 <= 1'b1;t_2 <=t_2 + 16'd1; endelse if(cnt_2 = 16'd325) begin clk_dps9600 <= 1'b0 ;cnt_2 <= 16'd0; end elsecnt_2 <=t_2 + 16'd1;end

25、endendmodule /module ad_encon(input wr_clk, /寫時鐘輸入input rd_clk, /讀時鐘輸入input rst_n, /復位信號,低電平有效output reg wren, /寫使能 輸出output reg 8:0 wraddress, /寫地址 輸出output reg rden, /讀使能 輸出output reg 8:0 rdaddress, /讀地址 輸出output reg wrsig /串口發(fā)送信號 輸出);/計數(shù)器reg 10:0t; /大計數(shù)器reg 10:0 wr_cnt; /分-讀計數(shù)器reg 10:0 rd_cnt; /分

26、-寫計數(shù)器/計數(shù)器寫部分always(posedge wr_clk or negedge rst_n) /這部分先按自然時間累增beginif(!rst_n)wr_cnt <= 11'd0;else if(wr_cnt < 11'd1024)wr_cnt <= wr_cnt + 11'd1;else wr_cnt <=wr_cnt;end/計數(shù)器讀部分 使寫計數(shù)器在讀計數(shù)器533后,完成自加/完成wrsig 需要再來個計數(shù)器reg 7:0 wrsig_cnt;reg flag;always(posedge rd_clk or negedge rs

27、t_n) beginif(!rst_n)beginrd_cnt <= 11'd533;wrsig_cnt <= 8'd0;endelse if(rd_cnt = 11'd1045)rd_cnt <= rd_cnt;else if(wrsig_cnt = 8'd255)begin/等待讀出操作完成后,繼續(xù)下一次讀,255是一個比較合理的數(shù)rd_cnt <= rd_cnt + 11'd1;wrsig_cnt <= 8'd0;flag <= 1'd1;endelse beginflag <= 1'

28、;d0;wrsig_cnt <= wrsig_cnt + 8'd1;endend/計數(shù)器分配always(*)beginif(!rst_n)cnt <= 11'd0;else if(wr_cnt <= 11'd533)cnt <= wr_cnt;elsecnt <= rd_cnt;end /寫使能always(posedge wr_clk or negedge rst_n)beginif(!rst_n)wren <= 1'd0;else if(cnt < 11'd11) /0-10 =0wren <= 1&

29、#39;b0;else if(cnt > 11'd10 &&t < 11'd523) / 11-522 =1wren <= 1'b1;else if(cnt > 11'd522 ) / 523- =0wren <= 1'b0;end/讀使能always(posedge rd_clk or negedge rst_n)beginif(!rst_n)rden <= 1'd0;else if(cnt <= 11'd533) /0-533 =0rden <= 1'b0;els

30、e if(cnt < 11'd1045)/ 534-1045 =1rden <= 1'b1;else / 1046- =0rden <= 1'b0;end/寫地址,在寫信號激發(fā)時,每個時鐘下降沿加一,初始定位0,復位后也為0;always(negedge wr_clk or negedge rst_n)beginif(!rst_n)wraddress <= 9'd0;else if(wren)wraddress <= wraddress + 9'd1;elsewraddress <= wraddress;end/讀地址

31、和串口發(fā)送信號,在讀信號激發(fā)時,而且falg信號出現(xiàn)時,地址加一,信號為1初始定位0,復位后也為0;always(negedge rd_clk or negedge rst_n)beginif(!rst_n)rdaddress <= 9'd0;else if(rden && flag)beginrdaddress <= rdaddress + 9'd1;wrsig <= 1'd1;endelse beginrdaddress <= rdaddress;wrsig <= 1'd0;endendendmodule /mo

32、dule ram(inputwr_clk,/采集時鐘inputrd_clk,/串口通訊時鐘input wren,/寫使能input rden,/讀使能input7:0 datain,/采集數(shù)據(jù)入input8:0wraddress,/寫地址input 8:0rdaddress,/讀地址output 7:0 dataout);reg7:0 RAM 2*9:0;reg 8:0rdaddress_reg;always(posedge wr_clk)beginif(wren)beginRAMwraddress <= datain;endend always(posedge rd_clk)begin

33、if(rden)beginrdaddress_reg <= rdaddress;endend assign dataout = RAMrdaddress_reg;endmodule /module ad_uart(input clk,/時鐘input rst_n,/復位input 7:0 datain,/數(shù)據(jù)入input wrsig,/output reg idle,/是否空閑 高為線路忙,低為線路空閑output tx);reg send;/數(shù)據(jù)發(fā)送什么的,高電平有效reg wrsigbuf,wrsigrise;reg presult;/1代表八個數(shù)據(jù)里面1的個數(shù)為奇數(shù),0代表為偶數(shù)r

34、eg 7:0t;/16時鐘一個二進制,1+8+1+1=168parameter paritymode = 1'b0;/檢測發(fā)送命令的上升沿/always(posedge clk )beginwrsigbuf <= wrsig;/Q(N) 與Q(N+1)wrsigrise <= (wrsigbuf )& wrsig;end/啟動串口發(fā)送程序/always(posedge clk)beginif(wrsigrise & (idle)/如果發(fā)送命令有效,而且線路空閑,那么啟動新的數(shù)據(jù)發(fā)送進程send = 1'd1;else if(cnt = 16'

35、d168)/一幀數(shù)據(jù)發(fā)送完畢,(1+8+1+0.5)x16=168send = 1'd0;end/串口發(fā)送程序,16時鐘1bit數(shù)據(jù)/reg txtx;always(posedge clk or negedge rst_n)beginif(!rst_n)begintxtx <= 1'd0;idle <= 1'd0;cnt <= 8'd0;presult <= 1'b0;endelse if(send = 1'd1)begincase(cnt)8'd0:begintxtx <= 1'b0;idle <= 1'b1;cnt <=t + 8'd1;end8'd16:begintxtx<= datain0;idle <= 1'b1;cnt <=t + 8'd1;presult <= datain0 paritymode;end8'd32:begintxtx<= datain1;idle <= 1'b1;cnt <

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論