第三講可綜合VerilogHDL_第1頁
第三講可綜合VerilogHDL_第2頁
第三講可綜合VerilogHDL_第3頁
第三講可綜合VerilogHDL_第4頁
第三講可綜合VerilogHDL_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Spring 2010,可綜合VerilogHDL設計,Slide 1,基于FPGA的嵌入式系統(tǒng)設計電工電子工程基礎,loy.,Spring 2010,可綜合VerilogHDL設計,Slide 2,3 可綜合VerilogHDL設計,3.1 FPGA中邏輯設計的一些概念和原則 3.2 組合邏輯的建模 3.3 時序邏輯的建模 3.4 存儲器的建模與使用 3.5 有限狀態(tài)機的建模 3.6 課堂操作實驗,Spring 2010,可綜合VerilogHDL設計,Slide 3,3.1 FPGA中邏輯設計的一些概念和原則,3.1.1 一些基本概念 3.1.2 同步設計 3.1.3 串并操作 3.1.4

2、 流水線 3.1.5 異步時鐘域處理,Spring 2010,可綜合VerilogHDL設計,Slide 4,3.1.1 一些基本概念,3.1.1.1 面積和速度,面積:是指一個設計所消耗FPGA,可理解為一個設計在FPGA中占用的“面積”。主要由LE衡量,還包括RAM和DSP塊等。 速度:是指一個設計在FPGA芯片上能穩(wěn)定運行的最高頻率。 “面積”和“速度”是一對對立統(tǒng)一的矛盾體??梢杂酶嗟倪壿嬞Y源實現(xiàn)更快速的處理,也可以犧牲速度用較少的邏輯資源“面積”和“速度”互換??茖W的設計目標是:在滿足設計時序要求的前提下,占用最小的芯片面積;或者在所規(guī)定的面積下,使設計的時序余量更大,頻率更高。,

3、Spring 2010,可綜合VerilogHDL設計,Slide 5,3.1.1 一些基本概念,3.1.1.1 Verilog描述的邏輯的并行性,Verilog很多語法規(guī)則和C語言相似,但兩者有本質區(qū)別! 在編寫Verilog代碼時,要始終記?。骸拔以诿枋鲆粋€硬件電路的連接,而不是順序執(zhí)行的代碼。”,對于一個硬件電路,在Verilog描述中各部分語句的“執(zhí)行”是并發(fā)的。 一個HDL代碼的優(yōu)劣的最終評價標準是其描述實現(xiàn)的硬件電路的性能(包括面積和速度兩個方面),而不能只是片面地追求代碼的簡潔。 在編寫Verilog代碼前,應先對系統(tǒng)要實現(xiàn)的硬件電路的連接在大體上和關鍵點上有一個明確地規(guī)劃。硬件

4、描述語言是描述硬件的,要實現(xiàn)對硬件實現(xiàn)“胸有成竹”,才能描述得好。,Spring 2010,可綜合VerilogHDL設計,Slide 6,3.1.1 一些基本概念,3.1.1.1 合理分配模塊,在設計一個較大的系統(tǒng)時,往往需要將系統(tǒng)分為多個模塊。模塊的劃分是需要合理考慮的。 按實際功能劃分模塊。 劃分出來的模塊的端口意義盡量簡明。 一個模塊自成一體,調用模塊者絕對不需要知道模塊內部原理,絕對不需要干涉內部工作過程。 模塊規(guī)模合理。,Spring 2010,可綜合VerilogHDL設計,Slide 7,3.1.1 一些基本概念,3.1.1.1 合理利用資源,在設計一個電子系統(tǒng)時,要了解,什么

5、樣的功能適合用LE實現(xiàn),什么樣的功能時候由DSP、CPU實現(xiàn)(包括FPGA內部的DSP、CPU)。實時性要求高、頻率高、大量并行的功能模塊適合使用傳統(tǒng)的FPGA邏輯實現(xiàn)。 在FPGA內部設計時,要對的FPGA全局有宏觀上的合理安排,比如時鐘、模塊組織結構、RAM的利用、面積和速度等問題。 善于利用片內RAM、乘法器。,Spring 2010,可綜合VerilogHDL設計,Slide 8,3.1.2 同步設計,3.1.2.1 同步和異步設計,異步數(shù)字電路: 電路的核心邏輯用組合電路實現(xiàn); 電路的主要信號并不依賴任何一個時鐘性信號; 容易產(chǎn)生毛刺,出現(xiàn)競爭冒險; 不利于器件移植、不利于時序分析與

6、驗證。 同步數(shù)字電路: 電路核心邏輯用各種觸發(fā)器實現(xiàn); 電路的主要信號都是由某個時鐘沿驅動產(chǎn)生的; 可以很好地避免毛刺; 有利于器件移植和時序分析及驗證。 可編程器件成本越來越低,綜合效果越來越強,現(xiàn)代PLD設計首選同步時序設計方式!,Spring 2010,可綜合VerilogHDL設計,Slide 9,3.1.2 同步設計,3.1.2.2 同步設計的原則,所有信號均由時鐘驅動,并且在同一個設計內,最好只由同一個時鐘驅動。 在同步設計中,一切邏輯均可簡化為由下面的結構羅列而成,Spring 2010,可綜合VerilogHDL設計,Slide 10,3.1.2 同步設計,3.1.2.3 建立

7、時間和保持時間,建立時間(TSU):在時鐘有效沿之前數(shù)據(jù)必須保持穩(wěn)定的最小時間 保持時間(TH):在時鐘有效沿之后數(shù)據(jù)必須保持穩(wěn)定的最小時間 建立時間和保持時間形成一個時間窗,在此窗之內,數(shù)據(jù)必須保持穩(wěn)定。 同步設計的速度限制,根本上源于建立時間和保持時間的要求,Spring 2010,可綜合VerilogHDL設計,Slide 11,3.1.2 同步設計,3.1.2.4 統(tǒng)一時鐘和時鐘使能!,在同一個設計中,盡量讓所有的模塊使用同一時鐘,讓所有的“always(xxxedge clk)”中的clk是同一個clk。 系統(tǒng)中不同部分的信號速率可能不一樣,使用時鐘使能控制處理速率。,例如:要讓一個

8、模塊以1/8時鐘工作:,Spring 2010,可綜合VerilogHDL設計,Slide 12,3.1.2 同步設計,3.1.2.4 統(tǒng)一時鐘和數(shù)據(jù)使能!,數(shù)據(jù)流處理模塊的端口建議,使用于一切對單個數(shù)據(jù)處理需要數(shù)個、甚至不確定數(shù)目的時鐘周期的情況。,Clk:工作時鐘 ARst:異步復位 DataIn:數(shù)據(jù)輸入 DataEn:輸入數(shù)據(jù)有效 DataOut:數(shù)據(jù)輸出 DataValid:輸出數(shù)據(jù)有效指示 每一級的DataValid接至后級的DataEn。 DataEn有效時,采入數(shù)據(jù)進行處理。 處理完數(shù)據(jù)輸出的同時讓DataValid有效,通知下級。,Spring 2010,可綜合Verilog

9、HDL設計,Slide 13,3.1.3 串并操作,“串并操作”是面積速度互換原則的直接體現(xiàn)。 將串行轉換為并行,一般旨在通過復制邏輯,提高整個設計的設計吞吐量,其本質是通過面積的消耗提高系統(tǒng)的工作速率。 將并行轉換為串行,一般旨在節(jié)約資源,因為設計速度有足夠的余量,通過提高串行通道的工作速率而節(jié)約了面積,其本質是通過速度的提高節(jié)約芯片面積。如串行加法器,乘法器,除法器等。,Spring 2010,可綜合VerilogHDL設計,Slide 14,3.1.4 流水線,流水線處理是高速設計中的常用設計手段,是面積換取速度原則的又一具體體現(xiàn)。 時序邏輯處理數(shù)據(jù)流就是天然的流水線結構。 流水線的結構

10、示例:,Spring 2010,可綜合VerilogHDL設計,Slide 15,3.1.4 流水線,流水線示例:Y=|A|*100-100,Spring 2010,可綜合VerilogHDL設計,Slide 16,3.1.5 異步時鐘域處理,如果連續(xù)兩個數(shù)據(jù)處理模塊需要使用不同的時鐘,前級的數(shù)據(jù)由一個時鐘驅動輸出,而后級的輸入?yún)s有另一個時鐘采入。這時出現(xiàn)時鐘異步。 異步域數(shù)據(jù)同步也是FPGA設計的一個較常見問題,處理不好往往會影響系統(tǒng)穩(wěn)定。 異步時鐘域同步的表現(xiàn)形式: 同頻異相問題,兩個時鐘域頻率相同,但相差不固定。 異頻問題,兩個時鐘域的頻率不同。,Spring 2010,可綜合Veril

11、ogHDL設計,Slide 17,3.1.5 異步時鐘域處理,一般同步方法: 兩級寄存器采樣,即用后級時鐘對前級數(shù)據(jù)采樣兩次。這種做法可以有效地減少亞穩(wěn)態(tài)的傳播,使后級電平都是有效電平值,但不一定是正確電平值。該方法適用于對錯誤不敏感的同頻異相時鐘域數(shù)據(jù)的同步。 使用FIFO,可以可靠解決異步時鐘域數(shù)據(jù)的同步問題,注意數(shù)據(jù)滿和空:前級時鐘大于后級時鐘,注意寫滿;前級時鐘小于后級時鐘,注意讀空。,Spring 2010,可綜合VerilogHDL設計,Slide 18,3.1.5 異步時鐘域處理,特殊情況轉換低頻時鐘為時鐘使能: 如果低頻時鐘頻率遠低于高頻時鐘,建議用高頻時鐘將低頻時鐘同步為單周

12、期使能信號。 典型例子: 用外部處理器(或用NIOS PIO)與FPGA邏輯交互。外部處理器送來的時鐘可能很慢。,Spring 2010,可綜合VerilogHDL設計,Slide 19,3.2 組合邏輯的建模,3.2.1 方法一數(shù)據(jù)流建模 參數(shù)化的奇偶校驗器 3.2.2 方法二行為建模 BCD7段譯碼器 3.2.3 方法三結構建模 雙向信號接口,Spring 2010,可綜合VerilogHDL設計,Slide 20,3.2.1 組合邏輯的數(shù)據(jù)流建模,參數(shù)化的奇偶校驗器的建模 module ParityGenerator(DataIn,OddPar,EvenPar); parameter N

13、BITS=4; input NBITS-1:0 DataIn; output OddPar,EvenPar; assign EvenPar=DataIn; assign OddPar=EvenPar; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 21,3.2.2 組合邏輯的行為建模,BCD7段譯碼器的建模 module bcd2led(a,b,c,d,e,f,g,D3,D2,D1,D0); output a,b,c,d,e,f,g; input D3,D2,D1,D0; reg a,b,c,d,e,f,g; always(D3 or D2 or D1

14、 or D0) begin case(D3,D2,D1,D0) 4d0: a,b,c,d,e,f,g=7b1111110; 4d1: a,b,c,d,e,f,g=7b0110000; 4d2: a,b,c,d,e,f,g=7b1101101; 4d3: a,b,c,d,e,f,g=7b1111001; 4d4: a,b,c,d,e,f,g=7b0110011; 4d5: a,b,c,d,e,f,g=7b1011011; 4d6: a,b,c,d,e,f,g=7b1011111; 4d7: a,b,c,d,e,f,g=7b1110000; 4d8: a,b,c,d,e,f,g=7b1111111

15、; 4d9: a,b,c,d,e,f,g=7b1111011; default: a,b,c,d,e,f,g=7b0000000; endcase end endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 22,3.2.3 組合邏輯的結構建模,雙向信號接口的建模 module EE_SSTL(O,I,IO,E,BI); output O; input I,E,BI; inout IO; wire q1; bufif1 g1(IO,I,E); bufif1 g2(q1,IO,BI); buf g3(O,q1); endmodule,Spring 2010,可

16、綜合VerilogHDL設計,Slide 23,3.3 時序邏輯的建模,3.3.1 觸發(fā)器建模 異步清零或置位 同步清零或置位 3.3.2 鎖存器建模 異步清零或置位 3.3.3 計數(shù)器建模 二進制計數(shù)器 模N計數(shù)器 格雷碼計數(shù)器 3.3.4 移位寄存器建模 3.3.5 一些設計的注意事項,Spring 2010,可綜合VerilogHDL設計,Slide 24,3.3.1 觸發(fā)器建模,3.3.1.1 異步置位清零D觸發(fā)器 module AsyncPreClrDFF(clk,clear,preset,data,q); input clk,clear,data,preset; output q;

17、 reg q; always(posedge clk or posedge clear or posedge preset) if(preset) q=1b1; else if(clear) q=1b0; else q=data; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 25,3.3.1 觸發(fā)器建模,3.3.1.2 同步置位清零D觸發(fā)器 module SyncPreClrDFF(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(negedg

18、e clk) if(preset) q=1b1; else if(clear) q=1b0; else q=data; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 26,3.3.2 鎖存器建模,3.3.2.1 異步置位清零鎖存器 module AsyncPreClrLatch(clk,clear,preset,data,q); input clk,clear,data,preset; output q; reg q; always(clk or clear or preset or data) if(preset) q=1b1; else if(cl

19、ear) q=1b0; else if(clk) q=data; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 27,3.3.3 計數(shù)器建模,3.3.3.1 二進制計數(shù)器 module BinaryCounter(Ck,UpDown,PresetClear,LoadData,DataIn,Q,QN); parameter NBITS=2; input Ck,UpDown,PresetClear,LoadData; input NBITS-1:0 DataIn; output NBITS-1:0 Q,QN; reg NBITS-1:0 Counter;

20、always(posedge Ck) if(PresetClear) Counter=0; else if(LoadData) Counter=DataIn; else if(UpDown) Counter=Counter+1; else Counter=Counter-1; assign Q=Counter; assign QN=Counter; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 28,3.3.3 計數(shù)器建模,3.3.3.2 模N計數(shù)器 module ModuloN_Cntr(Clock,Clear,Q,QBAR); parameter

21、NBITS=2,UPTO=3; input Clock,Clear; output NBITS-1:0 Q,QBAR; reg NBITS-1:0 Counter; always(posedge Clock) if(Clear) Counter=0; else Counter=(Counter+1)%UPTO; assign Q=Counter; assign QBAR=Counter; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 29,3.3.3 計數(shù)器建模,3.3.3.3 格雷碼計數(shù)器 轉換規(guī)則:格雷碼最高位與二進制碼最高位相同;格雷碼的次高位是

22、其二進制碼的最高位和次高位異或的結果;依次類推,直到最低位。 module GrayCounter(ClockG,Clear,Q,QN); parameter NBITS=2; input ClockG,Clear; output 1:NBITS Q,QN; reg 1:NBITS Counter,GrayCount; integer K; always(posedge ClockG) if(Clear) Counter=0; else Counter=Counter+1; always(Counter) begin GrayCount1=Counter1; for(K=2;K=NBITS;K

23、=K+1) GrayCountK=CounterK-1CounterK; end assign Q=GrayCount; assign QN=GrayCount; endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 30,3.3.4 移位寄存器建模,3.3.3.4 3位通用移位寄存器的綜合模型 具備功能:保持、左移、右移、載入。 module UnivShiftRegister(Clock,Clear,LeftIn,RightIn,S0,S1,ParIn,Q); input Clock,Clear,LeftIn,RightIn,S0,S1; input 2:

24、0 ParIn; output 2:0 Q; reg 2:0 Q; always(negedge Clear or posedge Clock) if(!Clear) Q=3b000; else case(S0,S1) 2b00: ; 2b01: Q=Q1:0,RightIn; 2b10: Q=LeftIn,Q2:1; 2b11: Q=ParIn; endcase endmodule,Spring 2010,可綜合VerilogHDL設計,Slide 31,3.3.5 一些設計的注意事項,3.3.5.1 避免組合邏輯反饋環(huán)路 組合邏輯反饋環(huán)路( Combinational Loops)是 PL

25、D設計的大忌!它最容易因振蕩、毛刺、時序違規(guī)等引起整個系統(tǒng)的不穩(wěn)定和不可靠。 處理方法: 牢記任何反饋環(huán)路必須包含寄存器。 檢查綜合、實現(xiàn)報告的Warning信息,發(fā)現(xiàn)Combinational Loops后進行相應修改。,Spring 2010,可綜合VerilogHDL設計,Slide 32,3.3.5 一些設計的注意事項,3.3.5.2 替換延遲鏈 延遲鏈是異步時序設計的常用手段,特別是在早期PLD設計和當代ASIC設計中,經(jīng)常使用Delay Chains實現(xiàn)兩個結點間的延遲調整。當代PLD設計推薦使用同步實現(xiàn)設計方法,一般要避免使用異步的Delay Chains。 在同步時序設計中,取

26、代異步Delay Chains的最常用方法是用分頻或倍頻的時鐘或者同步計數(shù)器完成所需延遲。,Spring 2010,可綜合VerilogHDL設計,Slide 33,3.3.5 一些設計的注意事項,3.3.5.3 替換異步脈沖產(chǎn)生單元:,在異步設計中,常用Delay Chains完成脈沖產(chǎn)生:,常用的同步脈沖產(chǎn)生方法:,Spring 2010,可綜合VerilogHDL設計,Slide 34,3.3.5 一些設計的注意事項,3.3.5.4 慎用鎖存器 同步邏輯設計要避免使用Latch。 綜合出與設計意圖不吻合的Latch結構的主要原因有: 在設計組合邏輯時,使用不完全的條件判斷語句,如if沒有

27、else,或不完整的case語句; 設計中存在組合邏輯的反饋環(huán)路。 防止產(chǎn)生非目的性Latch的方法: 使用完備的ifelse語句; 檢查設計中是否含有組合邏輯反饋環(huán)路; 為每個輸入條件設計輸出操作,對case語句設置默認操作; 使用case語句時,特別是在設計狀態(tài)機時,盡量附加綜合約束屬性,綜合為完全條件case語句(full case)。,Spring 2010,可綜合VerilogHDL設計,Slide 35,3.3.5 一些設計的注意事項,3.3.5.5 同步時序電路推薦的時鐘設計方法 時鐘經(jīng)全局時鐘輸入引腳輸入,通過FPGA內部專用PLL進行分頻/倍頻(一般可實現(xiàn)小數(shù)分頻倍頻)、移相

28、等調整與運算,然后經(jīng)FPGA內部全局時鐘布線資源(一般為全銅工藝)驅動到達芯片內所有寄存器和其它模塊的時鐘輸入端。,Spring 2010,可綜合VerilogHDL設計,Slide 36,3.3.5 一些設計的注意事項,3.3.5.6 內部邏輯產(chǎn)生的時鐘 如果需要使用內部邏輯產(chǎn)生時鐘,必須要在組合邏輯產(chǎn)生的時鐘后插入寄存器。,Spring 2010,可綜合VerilogHDL設計,Slide 37,3.3.5 一些設計的注意事項,3.3.5.7 門控時鐘的使用問題 門控時鐘即Gated Clock,是IC設計的一種常用減少功耗的手段。但是Gated Clock不是同步時序電路,其門控邏輯會污

29、染Clock的質量。 門控時鐘改進電路:,Spring 2010,可綜合VerilogHDL設計,Slide 38,3.4 存儲器的建模與使用,最好把存儲器建模成一個元件。通常,綜合工具不能有效地設計出存儲器。一般采用更傳統(tǒng)的技術來建立存儲器。一旦建立了存儲器模塊,就可以在綜合模型中使用模塊實例化語句來實例化該模塊。 層次設計方法和圖文混合設計的概念 實例:查找表乘法器,Spring 2010,可綜合VerilogHDL設計,Slide 39,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 40,3.4.1 存儲器的使用步驟,Spring 20

30、10,可綜合VerilogHDL設計,Slide 41,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 42,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 43,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 44,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 45,3.4.1 存儲器的使用步驟,Spring 2010,可綜合VerilogHDL設計,Slide 46,3.4.2 圖形輸入,S

31、pring 2010,可綜合VerilogHDL設計,Slide 47,3.4.3 建立存儲器初始化文件,Spring 2010,可綜合VerilogHDL設計,Slide 48,3.4.4 設定存儲器初始化數(shù)據(jù),Spring 2010,可綜合VerilogHDL設計,Slide 49,3.4.5 仿真結果,Spring 2010,可綜合VerilogHDL設計,Slide 50,3.5 有限狀態(tài)機的建模,3.5.1 有限狀態(tài)機的概念 3.5.2 有限狀態(tài)機的設計步驟 3.5.3 有限狀態(tài)機的狀態(tài)編碼 3.5.4 有限狀態(tài)機的設計方法 3.5.5 有限狀態(tài)機的建模實例序列檢測器,Spring

32、2010,可綜合VerilogHDL設計,Slide 51,3.5.1 有限狀態(tài)機的概念,Spring 2010,可綜合VerilogHDL設計,Slide 52,3.5.2 有限狀態(tài)機的設計步驟,1、邏輯抽象,得出狀態(tài)轉換圖 2、狀態(tài)化簡 3、狀態(tài)分配 4、選定觸發(fā)器類型,求出狀態(tài)方程,驅動方程,輸出方程 5、按照方程得出邏輯圖 用Verilog語言描述,大部分工作都由計算機自動完成,Spring 2010,可綜合VerilogHDL設計,Slide 53,3.5.3 有限狀態(tài)機的狀態(tài)編碼,二進制編碼或格雷碼 獨熱碼 CPLD格雷碼 FPGA獨熱碼,Spring 2010,可綜合Verilo

33、gHDL設計,Slide 54,3.5.4 有限狀態(tài)機的設計方法,三段式狀態(tài)機的設計方法 狀態(tài)轉移塊(時序) 狀態(tài)驅動塊(組合) 狀態(tài)輸出塊(組合),Spring 2010,可綜合VerilogHDL設計,Slide 55,3.5.5 序列檢測器,檢測到序列110,輸出1,否則0 狀態(tài)轉換圖: (S0:輸入一個0;S1:收到一個1;S2:連續(xù)收到兩個1;S3:連續(xù)收到110),Spring 2010,可綜合VerilogHDL設計,Slide 56,3.5.5 序列檢測器,狀態(tài)轉移塊 parameter 3:0 s0=4b0001,s1=4b0010,s2=4b0100,s3=4b1000;

34、/獨熱碼 reg 3:0 current_state,next_state; always (posedge clk) /狀態(tài)轉移塊 begin if(!nclr) current_state=s0; else current_state=next_state; end,Spring 2010,可綜合VerilogHDL設計,Slide 57,3.5.5 序列檢測器,狀態(tài)驅動塊 always (current_state or data) / 狀態(tài)驅動塊 begin case(current_state) s0: next_state=(data=1)?s1:s0); s1: next_state=(data=1)?s2:s0); s2: next_state=(data=1)?s2:s3); s3: next_st

溫馨提示

  • 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

提交評論