第3章——VerilogHDL硬件描述語(yǔ)言_第1頁(yè)
第3章——VerilogHDL硬件描述語(yǔ)言_第2頁(yè)
第3章——VerilogHDL硬件描述語(yǔ)言_第3頁(yè)
第3章——VerilogHDL硬件描述語(yǔ)言_第4頁(yè)
第3章——VerilogHDL硬件描述語(yǔ)言_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、12提綱提綱v 什么是什么是Verilog HDL?v Verilog HDL vs. VHDLv Verilog HDL語(yǔ)法語(yǔ)法v 設(shè)計(jì)描述層次設(shè)計(jì)描述層次v 設(shè)計(jì)的測(cè)試與驗(yàn)證設(shè)計(jì)的測(cè)試與驗(yàn)證v 可綜合的設(shè)計(jì)可綜合的設(shè)計(jì)v 有限狀態(tài)機(jī)(有限狀態(tài)機(jī)(FSM)v 一個(gè)除法器的設(shè)計(jì)實(shí)例一個(gè)除法器的設(shè)計(jì)實(shí)例v 常用仿真器和綜合軟件常用仿真器和綜合軟件v 網(wǎng)絡(luò)資源網(wǎng)絡(luò)資源3什么是什么是Verilog HDL?Verilog HDL?vVerilog HDL是一種硬件描述語(yǔ)言,用于從算法是一種硬件描述語(yǔ)言,用于從算法級(jí)、結(jié)構(gòu)級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次級(jí)、結(jié)構(gòu)級(jí)、門(mén)級(jí)到開(kāi)關(guān)級(jí)的多種抽象設(shè)計(jì)層次的數(shù)

2、字系統(tǒng)建模。的數(shù)字系統(tǒng)建模。v被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于開(kāi)關(guān)級(jí)被建模的數(shù)字系統(tǒng)對(duì)象的復(fù)雜性可以介于開(kāi)關(guān)級(jí)電路(例如電路(例如pmos/nmos)、簡(jiǎn)單的門(mén)(例如庫(kù))、簡(jiǎn)單的門(mén)(例如庫(kù)單元描述)和完整的復(fù)雜電子數(shù)字系統(tǒng)之間(例單元描述)和完整的復(fù)雜電子數(shù)字系統(tǒng)之間(例如如CPU)4什么是什么是Verilog HDL? (cont.)Verilog HDL? (cont.)vVerilog HDL 語(yǔ)言具有下述描述能力:語(yǔ)言具有下述描述能力: 設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組設(shè)計(jì)的行為特性、設(shè)計(jì)的數(shù)據(jù)流特性、設(shè)計(jì)的結(jié)構(gòu)組成以及包含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)成以及包

3、含響應(yīng)監(jiān)控和設(shè)計(jì)驗(yàn)證方面的時(shí)延和波形產(chǎn)生機(jī)制。生機(jī)制。 提供了編程語(yǔ)言接口(提供了編程語(yǔ)言接口(PLI),通過(guò)該接口可以在模擬、),通過(guò)該接口可以在模擬、驗(yàn)證期間從設(shè)計(jì)外部訪問(wèn)設(shè)計(jì),包括模擬的具體控制驗(yàn)證期間從設(shè)計(jì)外部訪問(wèn)設(shè)計(jì),包括模擬的具體控制和運(yùn)行。和運(yùn)行。 支持多個(gè)設(shè)計(jì)層次的混合層次建模支持多個(gè)設(shè)計(jì)層次的混合層次建模5更重要的是更重要的是.vVerilog HDL語(yǔ)言與語(yǔ)言與C語(yǔ)言很相似,從語(yǔ)言很相似,從C語(yǔ)言中繼語(yǔ)言中繼承了多種操作符和結(jié)構(gòu),其核心子集非常易于學(xué)承了多種操作符和結(jié)構(gòu),其核心子集非常易于學(xué)習(xí)和使用而這對(duì)大多數(shù)建模應(yīng)用來(lái)說(shuō)這已經(jīng)習(xí)和使用而這對(duì)大多數(shù)建模應(yīng)用來(lái)說(shuō)這已經(jīng)足夠。足

4、夠。6Verilog HDLVerilog HDL的歷史的歷史v 最初是于最初是于1 9 8 3年由年由Gateway Design Automation 公司公司(后被(后被Cadence Design Systems公司收購(gòu))為其模擬器產(chǎn)公司收購(gòu))為其模擬器產(chǎn)品開(kāi)發(fā)的硬件建模語(yǔ)言。那時(shí)它只是一種專(zhuān)用語(yǔ)言,由于他品開(kāi)發(fā)的硬件建模語(yǔ)言。那時(shí)它只是一種專(zhuān)用語(yǔ)言,由于他們的模擬、仿真器產(chǎn)品的廣泛使用,們的模擬、仿真器產(chǎn)品的廣泛使用,Verilog HDL 作為一種作為一種便于使用且實(shí)用的語(yǔ)言逐漸為眾多設(shè)計(jì)者所接受。便于使用且實(shí)用的語(yǔ)言逐漸為眾多設(shè)計(jì)者所接受。v Verilog HDL語(yǔ)言于語(yǔ)言于1

5、 9 9 0年被推向公眾領(lǐng)域。年被推向公眾領(lǐng)域。Open Verilog International(O V I)是促進(jìn))是促進(jìn)Ve r i l o g發(fā)展的國(guó)發(fā)展的國(guó)際性組織,際性組織,1 9 9 2年,年, O V I決定致力于推廣決定致力于推廣Verilog OVI標(biāo)標(biāo)準(zhǔn)成為準(zhǔn)成為I E E E標(biāo)準(zhǔn)。這一努力最后獲得成功,標(biāo)準(zhǔn)。這一努力最后獲得成功, Verilog 語(yǔ)言語(yǔ)言于于1 9 9 5年成為年成為I E E E標(biāo)準(zhǔn),稱(chēng)為標(biāo)準(zhǔn),稱(chēng)為IEEE Std1 3 6 41 9 9 5。完整的標(biāo)準(zhǔn)在。完整的標(biāo)準(zhǔn)在Ve r i l o g硬件描述語(yǔ)言參考手冊(cè)中有詳細(xì)硬件描述語(yǔ)言參考手冊(cè)中有詳細(xì)

6、描述。描述。7Verilog HDL vs. VHDLVerilog HDL vs. VHDLv Verilog HDL 和和VHDL 都是用于邏輯設(shè)計(jì)的硬件描述語(yǔ)言并且都是用于邏輯設(shè)計(jì)的硬件描述語(yǔ)言并且都已成為都已成為IEEE 標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。VHDL 是在是在1987 年成為年成為IEEE 標(biāo)準(zhǔn),標(biāo)準(zhǔn),Verilog HDL 則在則在1995 年才正式成為年才正式成為IEEE 標(biāo)準(zhǔn)。標(biāo)準(zhǔn)。v Verilog HDL 和和VHDL 共同的特點(diǎn)共同的特點(diǎn): 能形式化地抽象表示電路的行為和結(jié)構(gòu)能形式化地抽象表示電路的行為和結(jié)構(gòu) 支持邏輯設(shè)計(jì)中層次與范圍的描述,可借用高級(jí)語(yǔ)言的精巧支持邏輯設(shè)計(jì)中層次與

7、范圍的描述,可借用高級(jí)語(yǔ)言的精巧結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為的描述結(jié)構(gòu)來(lái)簡(jiǎn)化電路行為的描述 具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性具有電路仿真與驗(yàn)證機(jī)制以保證設(shè)計(jì)的正確性 支持電路描述由高層到低層的綜合轉(zhuǎn)換支持電路描述由高層到低層的綜合轉(zhuǎn)換 硬件描述與實(shí)現(xiàn)工藝無(wú)關(guān),有關(guān)工藝參數(shù)可通過(guò)語(yǔ)言提供的硬件描述與實(shí)現(xiàn)工藝無(wú)關(guān),有關(guān)工藝參數(shù)可通過(guò)語(yǔ)言提供的屬性包括進(jìn)去便于文檔管理易于理解和設(shè)計(jì)重用。屬性包括進(jìn)去便于文檔管理易于理解和設(shè)計(jì)重用。8Verilog HDL vs. VHDL (cont.)Verilog HDL vs. VHDL (cont.)v Verilog HDL 和和VHDL 又各有其自己的特點(diǎn)

8、:又各有其自己的特點(diǎn): Verilog HDL 擁有更廣泛的設(shè)計(jì)群體,成熟的資源也擁有更廣泛的設(shè)計(jì)群體,成熟的資源也遠(yuǎn)比遠(yuǎn)比VHDL 豐富豐富 Verilog HDL 是一種非常容易掌握的硬件描述語(yǔ)言是一種非常容易掌握的硬件描述語(yǔ)言(類(lèi)(類(lèi)C語(yǔ)言),而掌握語(yǔ)言),而掌握VHDL 設(shè)計(jì)技術(shù)就相對(duì)比較困難設(shè)計(jì)技術(shù)就相對(duì)比較困難(類(lèi)(類(lèi)Ada語(yǔ)言)。語(yǔ)言)。 一般認(rèn)為一般認(rèn)為Verilog HDL 在系統(tǒng)級(jí)抽象方面比在系統(tǒng)級(jí)抽象方面比VHDL 略略差一些而在門(mén)級(jí)開(kāi)關(guān)電路描述方面比差一些而在門(mén)級(jí)開(kāi)關(guān)電路描述方面比VHDL 強(qiáng)得多強(qiáng)得多 大學(xué)、研究機(jī)構(gòu)更多使用大學(xué)、研究機(jī)構(gòu)更多使用VHDL,而工業(yè)界更多

9、使用,而工業(yè)界更多使用Verilog HDL9提綱提綱v 什么是Verilog HDL?v Verilog HDL vs. VHDLv Verilog HDL語(yǔ)法v 設(shè)計(jì)描述層次v 設(shè)計(jì)的測(cè)試與驗(yàn)證v 可綜合的設(shè)計(jì)v 有限狀態(tài)機(jī)(FSM)v 一個(gè)除法器的設(shè)計(jì)實(shí)例v 常用仿真器和綜合軟件v 網(wǎng)絡(luò)資源10/ sampel_reg.v / sampel_reg.v 數(shù)據(jù)采樣模塊數(shù)據(jù)采樣模塊module sample_reg(clk, rst, din, dout);module sample_reg(clk, rst, din, dout);input clk, rst;input clk, rst

10、;input 3:0 din;input 3:0 din;output 3:0 dout;output 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout = data;assign dout = data;always (posedge clk or negedge rst)always (posedge clk or negedge rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;end else beginend else begin data = din; da

11、ta , =, =v 相等操作符:相等操作符:=, !=, =, !=v 邏輯操作符:邏輯操作符:&, |, !v 按位操作符:按位操作符:, &, |, , , v 歸約操作符:歸約操作符:&, &, |, |, , v 移位操作符:移位操作符:v 條件操作符:條件操作符:exp ? exp1 : exp2;v 連接和復(fù)制操作符:連接和復(fù)制操作符:exp1, exp2, repexpassign bus3:0 = bus0, bus1, bus2, bus3; /反轉(zhuǎn)反轉(zhuǎn)assign bus3:0 = 2bus0, 2bus3; /擴(kuò)展擴(kuò)展19Verilog

12、HDLVerilog HDL語(yǔ)法語(yǔ)法 過(guò)程結(jié)構(gòu)過(guò)程結(jié)構(gòu)vinitial語(yǔ)句:只執(zhí)行一次,并在模擬開(kāi)語(yǔ)句:只執(zhí)行一次,并在模擬開(kāi)始時(shí)執(zhí)行,即在始時(shí)執(zhí)行,即在0時(shí)刻開(kāi)始執(zhí)行。通常時(shí)刻開(kāi)始執(zhí)行。通常用于初始化(例如賦給寄存器一個(gè)初用于初始化(例如賦給寄存器一個(gè)初始值)、波形產(chǎn)生和仿真控制始值)、波形產(chǎn)生和仿真控制valways語(yǔ)句:也是在語(yǔ)句:也是在0時(shí)刻開(kāi)始執(zhí)行,時(shí)刻開(kāi)始執(zhí)行,但是在整個(gè)仿真期間被反復(fù)多次執(zhí)行但是在整個(gè)仿真期間被反復(fù)多次執(zhí)行vinitial塊和塊和always塊內(nèi)部的語(yǔ)句順序塊內(nèi)部的語(yǔ)句順序執(zhí)行執(zhí)行v一個(gè)模塊中可以包含任意多個(gè)一個(gè)模塊中可以包含任意多個(gè)initial或或always

13、語(yǔ)句。這些語(yǔ)句相互并行執(zhí)行,語(yǔ)句。這些語(yǔ)句相互并行執(zhí)行,即這些語(yǔ)句的執(zhí)行順序與其在模塊中即這些語(yǔ)句的執(zhí)行順序與其在模塊中的順序無(wú)關(guān)。一個(gè)的順序無(wú)關(guān)。一個(gè)initial語(yǔ)句或語(yǔ)句或always語(yǔ)句的執(zhí)行產(chǎn)生一個(gè)單獨(dú)的控語(yǔ)句的執(zhí)行產(chǎn)生一個(gè)單獨(dú)的控制流制流v注意注意#的時(shí)延控制用法的時(shí)延控制用法initialinitialbeginbeginreset = 0;reset = 0;a = 4b0101a = 4b0101b = 4b1010;b = 4b1010;#20#20 reset = 1; reset = 1;#50#50 $display(“sum is %d”, sum); $displ

14、ay(“sum is %d”, sum);$finish;$finish;endendalways (always (posedgeposedge clk or clk or negedgenegedge reset) reset)beginbeginif(!reset) beginif(!reset) begindata = 0;data = 0;end else beginend else begindata = din;data = din;endendendend20Verilog HDLVerilog HDL語(yǔ)法語(yǔ)法 表達(dá)式表達(dá)式v 線網(wǎng)類(lèi)型使用線網(wǎng)類(lèi)型使用assign語(yǔ)句賦值,稱(chēng)為

15、連續(xù)賦值語(yǔ)句賦值,稱(chēng)為連續(xù)賦值v 寄存器使用寄存器使用“=”或或”=“賦值,并賦值,并只能用于只能用于initial、always、task和和function塊內(nèi)!塊內(nèi)!注意兩者區(qū)別:注意兩者區(qū)別:a = b; /執(zhí)行到此語(yǔ)句后執(zhí)行到此語(yǔ)句后a的值馬上更新為的值馬上更新為b,稱(chēng)為阻塞性賦值,稱(chēng)為阻塞性賦值a 10) beginresult = 123;end else if(a0) beginroll = roll 1;cnt = cnt - 1;endfor(cnt=0; cnt 1;end24Verilog HDLVerilog HDL語(yǔ)法語(yǔ)法 函數(shù)與任務(wù)函數(shù)與任務(wù)vVerilog HD

16、L還定義了函數(shù)還定義了函數(shù)(function)和任務(wù)和任務(wù)(task),可以用于完成復(fù)雜的行為描述,可以用于完成復(fù)雜的行為描述v函數(shù)只能有一個(gè)輸出,而任務(wù)可以具有多個(gè)輸函數(shù)只能有一個(gè)輸出,而任務(wù)可以具有多個(gè)輸出;兩者都可以有多個(gè)輸入出;兩者都可以有多個(gè)輸入v函數(shù)和任務(wù)必須定義在函數(shù)和任務(wù)必須定義在module內(nèi)內(nèi)25Verilog HDLVerilog HDL語(yǔ)法語(yǔ)法 順序執(zhí)行與并行執(zhí)行順序執(zhí)行與并行執(zhí)行vinitial, always, function, task塊內(nèi)部的語(yǔ)句是塊內(nèi)部的語(yǔ)句是順序執(zhí)行的,所有順序執(zhí)行的,所有begin . end之間的語(yǔ)句也是之間的語(yǔ)句也是順序執(zhí)行的順序執(zhí)行

17、的v同一個(gè)模塊內(nèi)部的所有同一個(gè)模塊內(nèi)部的所有initial, always塊都是并塊都是并行執(zhí)行的行執(zhí)行的vfork . join塊之間的語(yǔ)句是并行執(zhí)行的(略)塊之間的語(yǔ)句是并行執(zhí)行的(略)26Verilog HDLVerilog HDL語(yǔ)法語(yǔ)法 編譯指令編譯指令v 以以(反引號(hào))開(kāi)始的某些標(biāo)識(shí)符是編譯器指令。在(反引號(hào))開(kāi)始的某些標(biāo)識(shí)符是編譯器指令。在Verilog 語(yǔ)言編譯時(shí),特語(yǔ)言編譯時(shí),特定的編譯器指令在整個(gè)編譯過(guò)程中有效(編譯過(guò)程可跨越多個(gè)文件),直到定的編譯器指令在整個(gè)編譯過(guò)程中有效(編譯過(guò)程可跨越多個(gè)文件),直到遇到其它的不同編譯程序指令。完整的標(biāo)準(zhǔn)編譯器指令如下遇到其它的不同編

18、譯程序指令。完整的標(biāo)準(zhǔn)編譯器指令如下: define, undef define, undef 宏定義,類(lèi)似于宏定義,類(lèi)似于#define #undef#define #undef,例如:,例如: define MAX_BUS_SIZE define MAX_BUS_SIZE3232. . . . .reg MAX_BUS_SIZE-1:0 AddReg; reg MAX_BUS_SIZE-1:0 AddReg; 注意引用時(shí)要加注意引用時(shí)要加 ifdef, else, endif ifdef, else, endif 類(lèi)似于類(lèi)似于#ifdef #else #endif#ifdef #else

19、#endif include include 類(lèi)似于類(lèi)似于#include#include,用于包含另外一個(gè),用于包含另外一個(gè)verilogverilog文件文件 timescale timescale resetallresetall default_nettypedefault_nettypev unconnected_drive, nounconnected_driveunconnected_drive, nounconnected_drive celldefine, endcelldefinecelldefine, endcelldefine27Verilog HDLVerilog H

20、DL語(yǔ)法語(yǔ)法 編譯指令編譯指令(cont.)(cont.) timescale timescale 定義定義時(shí)延時(shí)延單位和精度單位和精度在在Verilog HDL Verilog HDL 模型中,所有時(shí)延都用單位時(shí)間表模型中,所有時(shí)延都用單位時(shí)間表述。使用該指令將時(shí)間單位與實(shí)際時(shí)間相關(guān)聯(lián)。指述。使用該指令將時(shí)間單位與實(shí)際時(shí)間相關(guān)聯(lián)。指令格式為:令格式為: timescale timescale time_unit time_unit / / time_precisiontime_precision time_unit time_unit 和和 time_precisiontime_precis

21、ion由值由值1 1、1010、和、和100100以及單位以及單位s s、msms、usus、nsns、psps和和fsfs組成。例如:組成。例如:timescale 1ns / 100pstimescale 1ns / 100ps表示時(shí)延單位為表示時(shí)延單位為1ns, 1ns, 時(shí)延精度為時(shí)延精度為100ps100ps。timescale timescale 編譯器指令在模塊說(shuō)明外部出現(xiàn)編譯器指令在模塊說(shuō)明外部出現(xiàn), , 并并且影響后面所有的時(shí)延值。且影響后面所有的時(shí)延值。28Verilog HDLVerilog HDL語(yǔ)法語(yǔ)法 系統(tǒng)函數(shù)系統(tǒng)函數(shù)v 以以$ $字符開(kāi)始的標(biāo)識(shí)符表示系統(tǒng)任務(wù)或系統(tǒng)

22、函數(shù)。任務(wù)提供了一種封字符開(kāi)始的標(biāo)識(shí)符表示系統(tǒng)任務(wù)或系統(tǒng)函數(shù)。任務(wù)提供了一種封裝行為的機(jī)制,可在設(shè)計(jì)的不同部分被調(diào)用。任務(wù)可以返回裝行為的機(jī)制,可在設(shè)計(jì)的不同部分被調(diào)用。任務(wù)可以返回0 0個(gè)或多個(gè)或多個(gè)值。函數(shù)除只能返回一個(gè)值以外與任務(wù)相同。此外,函數(shù)在個(gè)值。函數(shù)除只能返回一個(gè)值以外與任務(wù)相同。此外,函數(shù)在0 0時(shí)刻時(shí)刻執(zhí)行,即不允許延遲,而任務(wù)可以帶有延遲。執(zhí)行,即不允許延遲,而任務(wù)可以帶有延遲。v $display $monitor $strobe$display $monitor $strobe v $time$time $stime $realtime $printtimescale

23、$timeformat $stime $realtime $printtimescale $timeformat v $stop $finish $stop $finish v $fopen $fclose $fdisplay $fwrite $fmonitor $fstrobe $fopen $fclose $fdisplay $fwrite $fmonitor $fstrobe $readmemb $readmemb $readmemh$readmemhv $rtoi $itor $realtobits $bittoreal$rtoi $itor $realtobits $bittorea

24、lv $random$randomv 例如:例如:$display (“hello world!”); /$display (“hello world!”); /打印輸出打印輸出hello worldhello world$time /$time /該系統(tǒng)任務(wù)返回當(dāng)前的模擬時(shí)間。該系統(tǒng)任務(wù)返回當(dāng)前的模擬時(shí)間。29提綱提綱v 什么是Verilog HDL?v Verilog HDL vs. VHDLv Verilog HDL語(yǔ)法v設(shè)計(jì)描述層次v 設(shè)計(jì)的測(cè)試與驗(yàn)證v 可綜合的設(shè)計(jì)v 有限狀態(tài)機(jī)(FSM)v 一個(gè)除法器的設(shè)計(jì)實(shí)例v 常用仿真器和綜合軟件v 網(wǎng)絡(luò)資源30設(shè)計(jì)描述層次設(shè)計(jì)描述層次v算法(

25、行為)級(jí)描述算法(行為)級(jí)描述v結(jié)構(gòu)級(jí)描述結(jié)構(gòu)級(jí)描述v寄存器傳輸級(jí)(寄存器傳輸級(jí)(RTL)描述)描述v開(kāi)關(guān)級(jí)(門(mén)級(jí))描述開(kāi)關(guān)級(jí)(門(mén)級(jí))描述v混合層次描述混合層次描述31設(shè)計(jì)描述層次設(shè)計(jì)描述層次 - - 算法(行為)級(jí)描述算法(行為)級(jí)描述v 主要用于快速驗(yàn)證算主要用于快速驗(yàn)證算法的正確性法的正確性v 不一定可以綜合成實(shí)不一定可以綜合成實(shí)際電路結(jié)構(gòu)際電路結(jié)構(gòu)實(shí)例:n位整數(shù)除法器, D = A/B, R = A%Bmodule div (A, B, D, R);parameter n = 32;input n-1:0 A, B;output n-1:0 D, R;reg n-1:0 D, R;al

26、ways (A or B)begin D = 0; for(R=A; RB; R = R - B) begin D = D + 1; endendendmodule32設(shè)計(jì)描述層次設(shè)計(jì)描述層次 結(jié)構(gòu)級(jí)描述結(jié)構(gòu)級(jí)描述v 更接近電路的實(shí)際結(jié)構(gòu)更接近電路的實(shí)際結(jié)構(gòu)v 電路的層次化描述電路的層次化描述v 類(lèi)似于電路框圖類(lèi)似于電路框圖module HA(A , B , S , C)module HA(A , B , S , C);input A, B;input A, B;output S, C;output S, C;parameter AND_DELAY = 1, XOR_DELAY = 2;par

27、ameter AND_DELAY = 1, XOR_DELAY = 2;assign #XOR_DELAYS = A Bassign #XOR_DELAYS = A B;assign #AND_DELAYC = A & Bassign #AND_DELAYC = A & B;endmoduleendmodulemoduleFA(P, Q, Cin, Sum, Cout ) ;moduleFA(P, Q, Cin, Sum, Cout ) ;input P, Q, Cin;input P, Q, Cin;output Sum, Cout;output Sum, Cout;para

28、meter OR_DELAY = 1;parameter OR_DELAY = 1;wire S1, C1, C2;wire S1, C1, C2;/兩個(gè)模塊實(shí)例語(yǔ)句兩個(gè)模塊實(shí)例語(yǔ)句HA h1 (P, Q, S1, C1); /HA h1 (P, Q, S1, C1); /通過(guò)位置關(guān)聯(lián)。通過(guò)位置關(guān)聯(lián)。HA h2 ( .A(C i n), .S(S u m), .B(S 1), .C(C 2); /HA h2 ( .A(C i n), .S(S u m), .B(S 1), .C(C 2); /通過(guò)端口通過(guò)端口與信號(hào)的名字關(guān)聯(lián)。與信號(hào)的名字關(guān)聯(lián)。/門(mén)實(shí)例語(yǔ)句:門(mén)實(shí)例語(yǔ)句:or #OR_DELAY

29、O1 (Cout, C1, C2) ;or #OR_DELAYO1 (Cout, C1, C2) ;endmoduleendmodule使用兩個(gè)半加器模使用兩個(gè)半加器模塊構(gòu)造的全加器塊構(gòu)造的全加器33設(shè)計(jì)描述層次設(shè)計(jì)描述層次 - RTL- RTL級(jí)描述級(jí)描述v 貼近實(shí)際電路結(jié)構(gòu)的貼近實(shí)際電路結(jié)構(gòu)的描述描述v 描述的細(xì)節(jié)到寄存器描述的細(xì)節(jié)到寄存器內(nèi)容傳輸級(jí)別內(nèi)容傳輸級(jí)別v 可以精確描述電路的可以精確描述電路的工作原理、執(zhí)行順序工作原理、執(zhí)行順序v 細(xì)化到寄存器級(jí)別的細(xì)化到寄存器級(jí)別的結(jié)構(gòu)描述也就是結(jié)構(gòu)描述也就是RTL級(jí)級(jí)描述,并無(wú)絕對(duì)劃分描述,并無(wú)絕對(duì)劃分標(biāo)準(zhǔn)標(biāo)準(zhǔn)module sample_re

30、g(clk, rst, din, dout);input clk, rst;input 3:0 din;output 3:0 dout;reg 3:0 data;assign dout = data;always (posedge clk or negedge rst)beginif(!rst) begin data = 4b0;end else begin data = din;endendendmodule34設(shè)計(jì)描述層次設(shè)計(jì)描述層次 開(kāi)關(guān)級(jí)(門(mén)級(jí))描述開(kāi)關(guān)級(jí)(門(mén)級(jí))描述v 完整描述了電路的細(xì)節(jié)完整描述了電路的細(xì)節(jié)v 最底層的電路描述最底層的電路描述v 可以描述可以描述pmos/nmosm

31、odule MUX4x1(Z, D0, D1, D2, D3, S0, S1);module MUX4x1(Z, D0, D1, D2, D3, S0, S1);output Z;output Z;input D0, D1, D2, D3, S0, S1;input D0, D1, D2, D3, S0, S1;andand u0 (T0, D0, S0bar, S1bar) , u0 (T0, D0, S0bar, S1bar) , u1 u1(T1, D1, S0bar, S1),T1, D1, S0bar, S1), u2 (T2, D2, S0, S1bar), u2 (T2, D2,

32、 S0, S1bar), u3 (T3, D3, S0, S1) , u3 (T3, D3, S0, S1) ,notnot u4 (S0bar, S0), u4 (S0bar, S0), u5 (S1bar, S1); u5 (S1bar, S1);oror u6 (Z, T0, T1, T2, T3); u6 (Z, T0, T1, T2, T3);endmoduleendmodule4路選路選1多選器多選器35設(shè)計(jì)描述層次設(shè)計(jì)描述層次 混合層次描述混合層次描述v 以上各種層次描述方式可以任意混合使用,因此一個(gè)設(shè)以上各種層次描述方式可以任意混合使用,因此一個(gè)設(shè)計(jì)可能某些模塊使用了行為描述的

33、方式,而另外一些模計(jì)可能某些模塊使用了行為描述的方式,而另外一些模塊使用了開(kāi)關(guān)級(jí)描述塊使用了開(kāi)關(guān)級(jí)描述v 在實(shí)際設(shè)計(jì)中,功能復(fù)雜的模塊可以先用行為級(jí)或結(jié)構(gòu)在實(shí)際設(shè)計(jì)中,功能復(fù)雜的模塊可以先用行為級(jí)或結(jié)構(gòu)級(jí)的描述來(lái)表示,而對(duì)功能簡(jiǎn)單的模塊則使用級(jí)的描述來(lái)表示,而對(duì)功能簡(jiǎn)單的模塊則使用RTL級(jí)的級(jí)的描述,以盡早完成系統(tǒng)的仿真和算法的驗(yàn)證;在設(shè)計(jì)的描述,以盡早完成系統(tǒng)的仿真和算法的驗(yàn)證;在設(shè)計(jì)的過(guò)程中逐步細(xì)化復(fù)雜模塊,替代原來(lái)的行為描述,直至過(guò)程中逐步細(xì)化復(fù)雜模塊,替代原來(lái)的行為描述,直至設(shè)計(jì)可以綜合并滿(mǎn)足設(shè)計(jì)指標(biāo)設(shè)計(jì)可以綜合并滿(mǎn)足設(shè)計(jì)指標(biāo)36提綱提綱v 什么是Verilog HDL?v Veril

34、og HDL vs. VHDLv Verilog HDL語(yǔ)法v 設(shè)計(jì)描述層次v設(shè)計(jì)的測(cè)試與驗(yàn)證v 可綜合的設(shè)計(jì)v 有限狀態(tài)機(jī)(FSM)v 一個(gè)除法器的設(shè)計(jì)實(shí)例v 常用仿真器和綜合軟件v 網(wǎng)絡(luò)資源37設(shè)計(jì)的測(cè)試與驗(yàn)證設(shè)計(jì)的測(cè)試與驗(yàn)證v 一般需要編寫(xiě)測(cè)試文件對(duì)設(shè)計(jì)進(jìn)行仿真測(cè)試,稱(chēng)為一般需要編寫(xiě)測(cè)試文件對(duì)設(shè)計(jì)進(jìn)行仿真測(cè)試,稱(chēng)為testbenchv testbench一般采用行為級(jí)描述,產(chǎn)生一定的輸入激勵(lì),一般采用行為級(jí)描述,產(chǎn)生一定的輸入激勵(lì),得到設(shè)計(jì)的輸出響應(yīng),并檢查輸出結(jié)果的正確性得到設(shè)計(jì)的輸出響應(yīng),并檢查輸出結(jié)果的正確性v 在規(guī)范的模塊設(shè)計(jì)中,每一個(gè)模塊都需要編寫(xiě)?yīng)毩⒌臏y(cè)在規(guī)范的模塊設(shè)計(jì)中,每

35、一個(gè)模塊都需要編寫(xiě)?yīng)毩⒌臏y(cè)試文件對(duì)模塊進(jìn)行充分的測(cè)試試文件對(duì)模塊進(jìn)行充分的測(cè)試v 注意選擇合適的輸入激勵(lì),保證測(cè)試能夠覆蓋典型輸入注意選擇合適的輸入激勵(lì),保證測(cè)試能夠覆蓋典型輸入和特殊輸入和特殊輸入38/ sampel_reg.v / sampel_reg.v 數(shù)據(jù)采樣模塊數(shù)據(jù)采樣模塊module sample_reg(clk, rst, din, dout);module sample_reg(clk, rst, din, dout);input clk, rst;input clk, rst;input 3:0 din;input 3:0 din;output 3:0 dout;outpu

36、t 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout = data;assign dout = data;always (posedge clk or negedge rst)always (posedge clk or negedge rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;end else beginend else begin data = din; data , =, , , , &(按位與)(按位與), |(按位或),(按位或), (連接運(yùn)算

37、)等位(連接運(yùn)算)等位操作運(yùn)算符操作運(yùn)算符v ,=,assign等賦值語(yǔ)句等賦值語(yǔ)句v always塊塊42不可綜合的語(yǔ)法舉例不可綜合的語(yǔ)法舉例v initial塊塊v forever塊塊v for, while, repeat, force, release, task, enable, disable一般不可綜合(注:某些特定情況下一般不可綜合(注:某些特定情況下for和和while等可能可等可能可以綜合)以綜合)v 系統(tǒng)函數(shù)如系統(tǒng)函數(shù)如$display等等v 除法,求模運(yùn)算,實(shí)數(shù)運(yùn)算等復(fù)雜算術(shù)運(yùn)算一般不可綜合除法,求模運(yùn)算,實(shí)數(shù)運(yùn)算等復(fù)雜算術(shù)運(yùn)算一般不可綜合(注:可能極少數(shù)綜合器有庫(kù)可以

38、引用,可以綜合)(注:可能極少數(shù)綜合器有庫(kù)可以引用,可以綜合)v #延時(shí)賦值語(yǔ)句一般綜合時(shí)會(huì)被忽略延時(shí)賦值語(yǔ)句一般綜合時(shí)會(huì)被忽略v . .43可綜合的設(shè)計(jì)舉例可綜合的設(shè)計(jì)舉例(1)(1)module sample_reg(clk, rst, din, dout);module sample_reg(clk, rst, din, dout);input clk, rst;input clk, rst;input 3:0 din;input 3:0 din;output 3:0 dout;output 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout =

39、 data;assign dout = data;always (posedge clk or negedge rst)always (posedge clk or negedge rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;end else beginend else begin data = din; data = din;endendendendendmoduleendmodule這是一個(gè)采樣鎖存模塊,在時(shí)鐘這是一個(gè)采樣鎖存模塊,在時(shí)鐘上升沿鎖存輸入數(shù)據(jù)上升沿鎖存輸入數(shù)據(jù)din到寄存到寄存器器data

40、(四位)中,(四位)中,dout連到連到data寄存器的輸出。寄存器的輸出。 data對(duì)應(yīng)對(duì)應(yīng)的是帶復(fù)位端的寄存器,其時(shí)鐘的是帶復(fù)位端的寄存器,其時(shí)鐘信號(hào)為信號(hào)為clk(上升沿有效上升沿有效),復(fù)位信,復(fù)位信號(hào)為號(hào)為rst(低電平有效)(低電平有效)clkrstdin3:0dout3:0data3:0DQRSTCK44可綜合的設(shè)計(jì)舉例可綜合的設(shè)計(jì)舉例(2)(2)module sample_latch(clk, rst, din, dout);module sample_latch(clk, rst, din, dout);input clk, rst;input clk, rst;input

41、3:0 din;input 3:0 din;output 3:0 dout;output 3:0 dout;reg 3:0 data;reg 3:0 data;assign dout = data;assign dout = data;always (clk or rst)always (clk or rst)beginbeginif(!rst) beginif(!rst) begin data = 4b0; data = 4b0;else if(clk) beginelse if(clk) begin data = din; data = din;endendendendendmodulee

42、ndmodule這也是一個(gè)采樣鎖存模塊,這也是一個(gè)采樣鎖存模塊,但是但是data對(duì)應(yīng)的不是寄存對(duì)應(yīng)的不是寄存器(器(register)而是鎖存器)而是鎖存器(latch)clkrstdin3:0dout3:0data3:0DQRSTENA45可綜合的設(shè)計(jì)舉例可綜合的設(shè)計(jì)舉例(3)(3)module mux4(sel, a, b, c, d, r);module mux4(sel, a, b, c, d, r);input 1:0 sel;input 1:0 sel;input a, b, c, d;input a, b, c, d;output r;output r;reg r;reg r;a

43、lways (sel or a or b or c or d)always (sel or a or b or c or d)beginbegincase(sel)case(sel) 2b00 : r = a; 2b00 : r = a; 2b01 : r = b; 2b01 : r = b; 2b10 : r = c; 2b10 : r = c; 2b11 : r = d; 2b11 : r = d;endcaseendcaseendendendmoduleendmodule這是一個(gè)四選一的多選器,雖這是一個(gè)四選一的多選器,雖然用了然用了always塊,但是對(duì)應(yīng)的塊,但是對(duì)應(yīng)的電路結(jié)構(gòu)是一個(gè)

44、純組合邏輯電路結(jié)構(gòu)是一個(gè)純組合邏輯sel1:0abcdr46提綱提綱v 什么是Verilog HDL?v Verilog HDL vs. VHDLv Verilog HDL語(yǔ)法v 設(shè)計(jì)描述層次v 設(shè)計(jì)的測(cè)試與驗(yàn)證v 可綜合的設(shè)計(jì)v有限狀態(tài)機(jī)(FSM)v 一個(gè)除法器的設(shè)計(jì)實(shí)例v 常用仿真器和綜合軟件v 網(wǎng)絡(luò)資源47有限狀態(tài)機(jī)(有限狀態(tài)機(jī)(FSMFSM)v 狀態(tài)機(jī)是絕大部分控制電路的核心結(jié)構(gòu)狀態(tài)機(jī)是絕大部分控制電路的核心結(jié)構(gòu)v 有限狀態(tài)機(jī)可以使用有限狀態(tài)機(jī)可以使用always語(yǔ)句和語(yǔ)句和case語(yǔ)句描述,狀態(tài)語(yǔ)句描述,狀態(tài)保存在寄存器中,根據(jù)寄存器不同的值(狀態(tài))執(zhí)行不同保存在寄存器中,根據(jù)寄存器

45、不同的值(狀態(tài))執(zhí)行不同的操作,的操作,case語(yǔ)句的多個(gè)分支則代表了不同狀態(tài)的行為語(yǔ)句的多個(gè)分支則代表了不同狀態(tài)的行為v moore有限狀態(tài)機(jī):輸出僅依賴(lài)于內(nèi)部狀態(tài),跟輸入無(wú)關(guān)有限狀態(tài)機(jī):輸出僅依賴(lài)于內(nèi)部狀態(tài),跟輸入無(wú)關(guān)v mealy有限狀態(tài)機(jī):輸出不僅決定于內(nèi)部狀態(tài),還跟外部有限狀態(tài)機(jī):輸出不僅決定于內(nèi)部狀態(tài),還跟外部輸入有關(guān)輸入有關(guān)48mooremoore有限狀態(tài)機(jī)實(shí)例有限狀態(tài)機(jī)實(shí)例module moore_fsm(clk, reset, A, Z, finish);module moore_fsm(clk, reset, A, Z, finish);parameter STATE_IN

46、IT = 0;parameter STATE_INIT = 0;parameter STATE_ST1 = 1;parameter STATE_ST1 = 1;parameter STATE_ST2 = 2;parameter STATE_ST2 = 2;parameter STATE_FINISH = 3;parameter STATE_FINISH = 3;input clk, reset;input clk, reset;input A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;reg 1:0 state;

47、reg 1:0 state;reg 1:0 Z;reg 1:0 Z;reg finishreg finishalwaysalways (negedge reset or posedge clk) (negedge reset or posedge clk)beginbegin if(!reset) begin if(!reset) begin state = STATE_INIT; state = STATE_INIT; Z = 2b00; Z = 2b00; finish = 1b0; finish = 1b0; end else begin end else begin case(stat

48、e)case(state) STATE_INIT: begin STATE_INIT: begin state = STATE_ST1;state = STATE_ST1; Z = 2b01; Z = 2b01; finish = 1b0; finish = 1b0; end end STATE_ST1: begin STATE_ST1: begin if(A) state = STATE_ST2;if(A) state = STATE_ST2; else state = STATE_FINISH; else state = STATE_FINISH; Z = 2b11; Z = 2b11;

49、finish = 1b0; finish = 1b0; end end STATE_ST2: begin STATE_ST2: begin state = STATE_FINISH;state = STATE_FINISH; Z = 2b10; Z = 2b10; finish = 1b0; finish = 1b0; end end STATE_FINISH: begin STATE_FINISH: begin /state = STATE_FINISH;/state = STATE_FINISH; Z = 2b01; Z = 2b01; finish = 1b1; finish = 1b1

50、; end end endcaseendcase end end endendendmoduleendmodule49mooremoore有限狀態(tài)機(jī)實(shí)例有限狀態(tài)機(jī)實(shí)例(cont.cont.)STATE_ST1STATE_ST1STATE_INITSTATE_INITSTATE_ST2STATE_ST2STATE_FINISHSTATE_FINISHreset=1, A = 1reset=1, A = 1reset=1, A = 0reset=1, A = 0reset = 0reset = 0reset = 1reset = 1reset=1reset=1reset=1reset=1reset

51、 = 0reset = 0reset = 0reset = 050mealymealy有限狀態(tài)機(jī)實(shí)例有限狀態(tài)機(jī)實(shí)例module mealy_fsm(clk, reset, A, Z, finish);module mealy_fsm(clk, reset, A, Z, finish);parameter STATE_INIT = 4b0001;parameter STATE_INIT = 4b0001;parameter STATE_ST1 = 4b0010;parameter STATE_ST1 = 4b0010;parameter STATE_ST2 = 4b0100;parameter

52、STATE_ST2 = 4b0100;parameter STATE_FINISH = 4b1000;parameter STATE_FINISH = 4b1000;input clk, reset;input clk, reset;input A;input A;output 1:0 Z;output 1:0 Z;output finish;output finish;reg 3:0 current_state, next_state;reg 3:0 current_state, next_state;reg 1:0 Z;reg 1:0 Z;reg finish;reg finish;alw

53、ays (negedge reset or posedge clk)always (negedge reset or posedge clk)beginbeginif(!reset) current_state = STATE_INIT;if(!reset) current_state = STATE_INIT;else current_state = next_state;else current_state = next_state;endendalways (currenet_state or A)always (currenet_state or A)beginbeginfinish

54、= 1b0;finish = 1b0;case(current_state)case(current_state) STATE_INIT: begin STATE_INIT: begin next_state = STATE_ST1;next_state = STATE_ST1; Z = 2b01; Z = 2b01; end end STATE_ST1: begin STATE_ST1: begin if(A) beginif(A) begin next_state = STATE_ST2; next_state = STATE_ST2; Z = 2b11; Z = 2b11; end el

55、se begin end else begin next_state = STATE_FINISH; next_state = STATE_FINISH; Z = 2b10; Z = 2b10; end end end end STATE_ST2: begin STATE_ST2: begin next_state = STATE_FINISH;next_state = STATE_FINISH; Z = 2b10; Z = 2b10; end end STATE_FINISH: begin STATE_FINISH: begin / next_state = STATE_FINISH;/ n

56、ext_state = STATE_FINISH; Z = 2b01; Z = 2b01; finish = 1b1;finish B; R = R - B) D = D + 1;for(R=A; RB; R = R - B) D = D + 1;endendok = 1;ok = 1;endendendmoduleendmodule55算法驗(yàn)證算法驗(yàn)證v 上面給出了行為級(jí)的描述,上面給出了行為級(jí)的描述,可以用于驗(yàn)證算法的正確性可以用于驗(yàn)證算法的正確性v 可以編寫(xiě)可以編寫(xiě)testbench文件對(duì)算文件對(duì)算法的正確性進(jìn)行驗(yàn)證法的正確性進(jìn)行驗(yàn)證v 更換更換A, B的值進(jìn)行多次仿真,的值進(jìn)行多次仿真

57、,尤其注意對(duì)特殊輸入的測(cè)試尤其注意對(duì)特殊輸入的測(cè)試(例如除數(shù)為(例如除數(shù)為0,被除數(shù)小于,被除數(shù)小于或等于除數(shù)等)或等于除數(shù)等)v 可以編寫(xiě)更復(fù)雜的測(cè)試,產(chǎn)可以編寫(xiě)更復(fù)雜的測(cè)試,產(chǎn)生生n組隨機(jī)數(shù)作為激勵(lì),并自組隨機(jī)數(shù)作為激勵(lì),并自動(dòng)把輸出響應(yīng)與正確結(jié)果相動(dòng)把輸出響應(yīng)與正確結(jié)果相比較比較/除法器設(shè)計(jì)的測(cè)試文件除法器設(shè)計(jì)的測(cè)試文件timescale 1ns/100pstimescale 1ns/100psmodule tb_div;module tb_div;reg start;reg start;reg 31:0 A, B;reg 31:0 A, B;wire 31:0 D, R;wire 31

58、:0 D, R;wire err, ok;wire err, ok;div UDIV(start, A, B, D, R, err, ok);div UDIV(start, A, B, D, R, err, ok);initial $monitor(“at %t A=%x, B=%x, start=%d, initial $monitor(“at %t A=%x, B=%x, start=%d, D=%d, R=%d, err=%d, ok=%d”, A, B, start, D=%d, R=%d, err=%d, ok=%d”, A, B, start, D, R, err, ok);D,

59、R, err, ok);initialinitialbeginbeginstart = 0;start = 0;A = 32h12345678;A = 32h12345678;B = 32habcd;B = 32habcd;#20#20start = 1;start = 1;#50#50$stop$stopendendendmoduleendmodule56結(jié)構(gòu)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)v 考慮設(shè)計(jì)的可綜合性,考慮設(shè)計(jì)的可綜合性,可用計(jì)數(shù)器來(lái)代替可用計(jì)數(shù)器來(lái)代替for語(yǔ)句語(yǔ)句v 使用狀態(tài)機(jī)控制運(yùn)算使用狀態(tài)機(jī)控制運(yùn)算的開(kāi)始、進(jìn)行、和結(jié)的開(kāi)始、進(jìn)行、和結(jié)束束v 可以編寫(xiě)行為級(jí)模型可以編寫(xiě)行為級(jí)模型對(duì)結(jié)構(gòu)進(jìn)行再次

60、驗(yàn)證對(duì)結(jié)構(gòu)進(jìn)行再次驗(yàn)證STATE_INITSTATE_INITSTATE_RUNSTATE_RUNSTATE_FINISHSTATE_FINISHstart = 1start = 1start = 0start = 0B=0 or count=32B=0 or count=32reset = 0reset = 0count!=32count!=32狀態(tài)轉(zhuǎn)移圖狀態(tài)轉(zhuǎn)移圖57結(jié)構(gòu)設(shè)計(jì)(結(jié)構(gòu)設(shè)計(jì)(cont.cont.)v 把設(shè)計(jì)根據(jù)控制部分和運(yùn)把設(shè)計(jì)根據(jù)控制部分和運(yùn)算部分劃分控制邏輯和數(shù)算部分劃分控制邏輯和數(shù)據(jù)通路據(jù)通路v 分析和優(yōu)化關(guān)鍵路徑分析和優(yōu)化關(guān)鍵路徑v 分別設(shè)計(jì)各個(gè)模塊,對(duì)于分別設(shè)計(jì)各個(gè)模塊,對(duì)于一些基本運(yùn)算(一些基本運(yùn)算(+, -, 計(jì)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論