第2章Verilong基本語法與語句_第1頁
第2章Verilong基本語法與語句_第2頁
第2章Verilong基本語法與語句_第3頁
第2章Verilong基本語法與語句_第4頁
第2章Verilong基本語法與語句_第5頁
已閱讀5頁,還剩100頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 主要內(nèi)容主要內(nèi)容2.1 Verilog概述概述2.2 Verilog基本語法基本語法2.3 2.4 Verilog基本組合電路設(shè)計基本組合電路設(shè)計2.5 Verilog基本時序電路設(shè)計基本時序電路設(shè)計2.1 Verilog概述概述o Verilog語言是語言是1983年由年由GDA(Gateway Design Automation)公司的)公司的Phil Moorby首創(chuàng)的,之后首創(chuàng)的,之后Moorby又設(shè)計了又設(shè)計了Verilog-XL仿真器,仿真器,Verilog-XL仿真仿真器大獲成功,也使得器大獲成功,也使得Verilog語言得到推廣使用。語言得到推廣使用。o 1989年,年,Ca

2、dence收購了收購了GDA,1990年,年,Cadence公開發(fā)表了公開發(fā)表了Verilog HDL,并成立了,并成立了OVI組織專門負(fù)責(zé)組織專門負(fù)責(zé)Verilog HDL的發(fā)展。的發(fā)展。o Verilog于于1995年成為年成為IEEE標(biāo)準(zhǔn),稱為標(biāo)準(zhǔn),稱為IEEE Standard 1364-1995(Verilog-1995)o IEEE“1364-2001”標(biāo)準(zhǔn)(標(biāo)準(zhǔn)(Verilog-2001)也獲得通)也獲得通過,多數(shù)綜合器、仿真器都已支持過,多數(shù)綜合器、仿真器都已支持Verilog-2001標(biāo)準(zhǔn)標(biāo)準(zhǔn)1、Verilog發(fā)展發(fā)展2、Verilog語言的特點語言的特點o 既適于可綜合的電

3、路設(shè)計,也可勝任電路與系統(tǒng)的仿真。既適于可綜合的電路設(shè)計,也可勝任電路與系統(tǒng)的仿真。o 能在多個層次上對所設(shè)計的系統(tǒng)加以描述,從開關(guān)級、能在多個層次上對所設(shè)計的系統(tǒng)加以描述,從開關(guān)級、門級、寄存器傳輸級(門級、寄存器傳輸級(RTL)到行為級,都可以勝任,)到行為級,都可以勝任,同時語言不對設(shè)計規(guī)模施加任何限制。同時語言不對設(shè)計規(guī)模施加任何限制。o 靈活多樣的電路描述風(fēng)格,可進行行為描述,也可進行靈活多樣的電路描述風(fēng)格,可進行行為描述,也可進行結(jié)構(gòu)描述;支持混合建模,在一個設(shè)計中各個模塊可以結(jié)構(gòu)描述;支持混合建模,在一個設(shè)計中各個模塊可以在不同的設(shè)計層次上建模和描述。在不同的設(shè)計層次上建模和描述

4、。o Verilog的行為描述語句,如條件語句、賦值語句和循的行為描述語句,如條件語句、賦值語句和循環(huán)語句等,類似于軟件高級語言,便于學(xué)習(xí)和使用。環(huán)語句等,類似于軟件高級語言,便于學(xué)習(xí)和使用。o 內(nèi)置各種基本邏輯門,便于進行門級結(jié)構(gòu)描述;內(nèi)置各內(nèi)置各種基本邏輯門,便于進行門級結(jié)構(gòu)描述;內(nèi)置各種開關(guān)級元件,可進行開關(guān)級的建模。種開關(guān)級元件,可進行開關(guān)級的建模。o 易學(xué)易用,功能強,可滿足各個層次設(shè)計人員的需要。易學(xué)易用,功能強,可滿足各個層次設(shè)計人員的需要。 3 Verilog模塊的結(jié)構(gòu)模塊的結(jié)構(gòu) module aoi(a,b,c,d,f);/* 模塊名為模塊名為aoi,端口列表,端口列表a,b

5、,c,d,f */input a,b,c,d;/模塊的輸入端口為模塊的輸入端口為a,b,c,doutput f; /模塊的輸出端口為模塊的輸出端口為fwire a,b,c,d,f; /定義信號的數(shù)據(jù)類型定義信號的數(shù)據(jù)類型assign f=(a&b)|(c&d); /邏輯功能描述邏輯功能描述endmodule“與與-或或-非非”電路電路 3 Verilog模塊的結(jié)構(gòu)模塊的結(jié)構(gòu)o Verilog程序是由模塊構(gòu)成的。每個模塊的內(nèi)容都嵌在程序是由模塊構(gòu)成的。每個模塊的內(nèi)容都嵌在module和和endmodule兩個關(guān)鍵字之間;每個模塊實現(xiàn)兩個關(guān)鍵字之間;每個模塊實現(xiàn)特定的功能。特定的功

6、能。o 每個模塊首先要進行端口定義,并說明輸入和輸出口每個模塊首先要進行端口定義,并說明輸入和輸出口(input、output或或inout),然后對模塊的功能進行定),然后對模塊的功能進行定義。義。o Verilog程序書寫格式自由,一行可以寫幾個語句,一個語程序書寫格式自由,一行可以寫幾個語句,一個語句也可以分多行寫。句也可以分多行寫。o 除了除了endmodule等少數(shù)語句外,每個語句的最后必須有等少數(shù)語句外,每個語句的最后必須有分分號號。o 可用可用 /*/ 和和 /對對Verilog程序作注釋。程序作注釋。o Verilong程序中的關(guān)鍵字程序中的關(guān)鍵字必須小寫必須小寫,其它字符,其

7、它字符區(qū)別大小寫區(qū)別大小寫,輸入程序時一定要注意!輸入程序時一定要注意! 模塊聲明模塊聲明o 模塊聲明包括模塊名字,模塊輸入、輸出端模塊聲明包括模塊名字,模塊輸入、輸出端口列表。模塊定義格式如下:口列表。模塊定義格式如下:module 模塊名模塊名(端口端口1,端口,端口2,端口,端口3,);端口(端口(Port)定義)定義o 對模塊的輸入輸出端口要明確說明,其格式對模塊的輸入輸出端口要明確說明,其格式為為:input 端口名端口名1,端口名,端口名2, 端口名端口名n;/輸入端口output 端口名端口名1,端口名,端口名2, 端口名端口名n;/輸出端口inout 端口名端口名1,端口名,端

8、口名2, 端口名端口名n;/輸入輸出端口信號類型聲明信號類型聲明o 對模塊中所用到的所有信號(包括端口信號、對模塊中所用到的所有信號(包括端口信號、節(jié)點信號等)都必須進行數(shù)據(jù)類型的定義。節(jié)點信號等)都必須進行數(shù)據(jù)類型的定義。Verilog語言提供了各種信號類型,分別模語言提供了各種信號類型,分別模擬實際電路中的各種擬實際電路中的各種物理連接和物理實體物理連接和物理實體。o 如果信號的數(shù)據(jù)類型沒有定義,則綜合器將如果信號的數(shù)據(jù)類型沒有定義,則綜合器將其其默認(rèn)為是默認(rèn)為是wire型型。 邏輯功能定義邏輯功能定義o模塊中最核心的部分是邏輯功能定義。模塊中最核心的部分是邏輯功能定義。o定義邏輯功能的定

9、義邏輯功能的幾種基本方法幾種基本方法:(1)用)用assign持續(xù)賦值語句定義持續(xù)賦值語句定義assign語句語句多用于組合邏輯的賦值多用于組合邏輯的賦值,稱為持續(xù)賦值方式。,稱為持續(xù)賦值方式。若干連續(xù)賦值語句是并列執(zhí)行,與順序無關(guān)。若干連續(xù)賦值語句是并列執(zhí)行,與順序無關(guān)。(2)用)用always過程塊定義過程塊定義always過程語句既過程語句既可以用來描述組合電路,也可以描述可以用來描述組合電路,也可以描述時序電路。過程塊反復(fù)依據(jù)條件執(zhí)行,相當(dāng)無限循環(huán)執(zhí)行。時序電路。過程塊反復(fù)依據(jù)條件執(zhí)行,相當(dāng)無限循環(huán)執(zhí)行。 多個多個always過程塊并行執(zhí)行,與順序無關(guān)。過程塊并行執(zhí)行,與順序無關(guān)。(3

10、)調(diào)用元件(元件例化)調(diào)用元件(元件例化)調(diào)用元件的方法類似于在電路圖輸入方式下調(diào)入圖形符號調(diào)用元件的方法類似于在電路圖輸入方式下調(diào)入圖形符號來完成設(shè)計,來完成設(shè)計,這種方法側(cè)重于電路的結(jié)構(gòu)描述。這種方法側(cè)重于電路的結(jié)構(gòu)描述。 以上邏輯功能混合使用時,它們都是并行執(zhí)行的。以上邏輯功能混合使用時,它們都是并行執(zhí)行的。Verilog 模塊的模板模塊的模板 module ();output 輸出端口列表輸出端口列表; /輸出端口聲明輸出端口聲明input 輸入端口列表輸入端口列表; /輸入端口聲明輸入端口聲明/*定義數(shù)據(jù),信號的類型,函數(shù)聲明定義數(shù)據(jù),信號的類型,函數(shù)聲明*/reg 信號名;信號名;

11、/邏輯功能定義邏輯功能定義assign =; /使用使用assign語句定義邏輯功能語句定義邏輯功能/用用always塊描述邏輯功能塊描述邏輯功能always () begin /過程賦值過程賦值 /if-else,case語句語句 /while,repeat,for循環(huán)語句循環(huán)語句 /task,function調(diào)用調(diào)用 end /調(diào)用其他模塊調(diào)用其他模塊 ();/門元件例化門元件例化 門元件關(guān)鍵字門元件關(guān)鍵字 ();endmodule組合邏輯電路與時序邏輯電路特點組合邏輯電路與時序邏輯電路特點o 組合邏輯電路:組合邏輯電路:電路任意時刻的輸出狀態(tài)只電路任意時刻的輸出狀態(tài)只由該時刻各輸入狀態(tài)組

12、合決定,而與電路原由該時刻各輸入狀態(tài)組合決定,而與電路原狀態(tài)無關(guān)。狀態(tài)無關(guān)。module comp2_1(x,y,z,a,b); input a ,b; output x,y,z; assign x=(a=b)?1:0 /這些語句是并行執(zhí)行 assign y=(ab)?1:0endmodule如下列數(shù)值比較器程序中如下列數(shù)值比較器程序中a,b的輸入狀態(tài)決定的輸入狀態(tài)決定x,y,z輸出結(jié)果。輸出結(jié)果。如在實驗中做過的如在實驗中做過的兩路輸入選擇器和二進制半加器兩路輸入選擇器和二進制半加器都是組合邏輯電路都是組合邏輯電路組合電路常采用連續(xù)賦值方式(即組合電路常采用連續(xù)賦值方式(即assign語句)

13、進行設(shè)計,但采用過語句)進行設(shè)計,但采用過程賦值語句(一般用阻塞賦值語句程賦值語句(一般用阻塞賦值語句“=”來賦值)和所有輸入信號的電來賦值)和所有輸入信號的電平輸入激勵方式時也可實現(xiàn)組合邏輯電路設(shè)計,但要注意與時序邏輯平輸入激勵方式時也可實現(xiàn)組合邏輯電路設(shè)計,但要注意與時序邏輯中使用的賦值方式和激勵條件的不同。中使用的賦值方式和激勵條件的不同??梢杂^察到上下兩個圖輸入狀態(tài)完全決定輸出狀態(tài)!輸出可以觀察到上下兩個圖輸入狀態(tài)完全決定輸出狀態(tài)!輸出同步跟隨輸入而變!同步跟隨輸入而變!o 時序邏輯電路:電路的任意時刻的輸出狀態(tài)時序邏輯電路:電路的任意時刻的輸出狀態(tài)不僅取決于該時刻的輸入狀態(tài),還與電路

14、的不僅取決于該時刻的輸入狀態(tài),還與電路的原狀態(tài)有關(guān)。所以時序電路都有記憶功能。原狀態(tài)有關(guān)。所以時序電路都有記憶功能。組合邏輯電路與時序邏輯電路特點下列的下列的D觸發(fā)器程序,一般時序電路都由過程語句賦值觸發(fā)器程序,一般時序電路都由過程語句賦值(可用阻塞(可用阻塞“=”或非阻塞賦值語句或非阻塞賦值語句“=”來表示)賦值)來表示)賦值) ,且有邊沿時鐘激勵條件。,且有邊沿時鐘激勵條件??梢钥吹缴厦鎴D形中的輸入可以看到上面圖形中的輸入d,只有在,只有在CLK上升沿時才能決上升沿時才能決定輸出,其它時刻輸出都由觸發(fā)器的原狀態(tài)決定(即輸出不定輸出,其它時刻輸出都由觸發(fā)器的原狀態(tài)決定(即輸出不是同步跟隨輸入

15、而變)。是同步跟隨輸入而變)。2.2 Verilog基本語法概述基本語法概述1 Verilog語言要素構(gòu)成語言要素構(gòu)成Verilog 程序由符號流構(gòu)成,符號包括程序由符號流構(gòu)成,符號包括o 空白符(空白符(White space)o 注釋(注釋(Comments)o 操作符(操作符(Operators)o 數(shù)字(數(shù)字(Numbers)o 字符串(字符串(Strings)o 標(biāo)識符(標(biāo)識符(Identifiers)o 關(guān)鍵字(關(guān)鍵字(Keywords)等)等例如:數(shù)碼顯示電路module decode4_7(decodeout,indec);output6:0 decodeout;input3:

16、0 indec; reg6:0 decodeout;always (indec) begin case(indec) /用用case語句進行譯碼語句進行譯碼 4d0:decodeout=7b1111110; 4d1:decodeout=7b0110000; 4d2:decodeout=7b1101101; 4d3:decodeout=7b1111001; 4d4:decodeout=7b0110011; 4d5:decodeout=7b1011011; 4d6:decodeout=7b1011111; 4d7:decodeout=7b1110000; 4d8:decodeout=7b11111

17、11; 4d9:decodeout=7b1111011; default: decodeout=7bx; endcase endendmodule標(biāo)識符標(biāo)識符數(shù)字?jǐn)?shù)字操作符操作符注釋注釋關(guān)鍵字關(guān)鍵字空白符和注釋 空白符(空白符(White space)空白符包括:空格、空白符包括:空格、tab、換行和換頁??瞻追?、換行和換頁。空白符使代碼錯落有致,閱讀起來更方便。在綜合時空白符代碼錯落有致,閱讀起來更方便。在綜合時空白符被忽略。被忽略。注釋(注釋(Comment) 單行注釋:以單行注釋:以“/”“/”開始到本行結(jié)束開始到本行結(jié)束 多行注釋:多行注釋以多行注釋:多行注釋以“/“/* *”開始,

18、到開始,到“* */”/”結(jié)束結(jié)束例如例如:標(biāo)識符(Identifiers)標(biāo)識符(標(biāo)識符(Identifiers)Verilog中的標(biāo)識符可以是任意一組字母、數(shù)字以及符號中的標(biāo)識符可以是任意一組字母、數(shù)字以及符號“$”和和“_”(下劃線)的組合,但標(biāo)識符的第一個字符必須是(下劃線)的組合,但標(biāo)識符的第一個字符必須是字母或者下劃線字母或者下劃線。另外,標(biāo)識符是。另外,標(biāo)識符是區(qū)分大小寫的區(qū)分大小寫的。Examples:countCOUNT /COUNT與與count是不同的是不同的_A1_d2 /以下劃線開頭以下劃線開頭R56_68FIVE用于定義各種用于定義各種功能模塊、參數(shù)和變量功能模塊、

19、參數(shù)和變量的名字。的名字。關(guān)鍵字(Keywords)Verilog語言內(nèi)部已經(jīng)使用的詞稱為語言內(nèi)部已經(jīng)使用的詞稱為關(guān)鍵字關(guān)鍵字或或保保留字留字,這些保留字用戶不能作為變量或節(jié)點名,這些保留字用戶不能作為變量或節(jié)點名字使用。關(guān)鍵字都是字使用。關(guān)鍵字都是小寫小寫的。的。 例如例如: 整數(shù)整數(shù) 實數(shù)實數(shù) 字符串字符串2、常量及類型 程序運行中,值不能被改變的量稱為程序運行中,值不能被改變的量稱為常量(常量(constants),),Verilog中的常量主中的常量主要有如下要有如下3種類型:種類型: o 簡單的十進制格式 這種形式的整數(shù)數(shù)值代表一個可選的+或-的操作符的數(shù)字系列。并且是一個有符號的數(shù)

20、,在計算機內(nèi)將轉(zhuǎn)換為32位補碼形式。 如 32 -15等整數(shù)(整數(shù)(integer)o基數(shù)格式表示法基數(shù)格式表示法o整數(shù)按如下方式書寫:整數(shù)按如下方式書寫: 即即 size 為為對應(yīng)二進制數(shù)的寬度對應(yīng)二進制數(shù)的寬度;base為進制;為進制;value是基于進制的數(shù)字是基于進制的數(shù)字序列。序列。這種形式的表示可靈活控制整數(shù)在計算機內(nèi)位數(shù)。這種形式的表示可靈活控制整數(shù)在計算機內(nèi)位數(shù)。進制有如下進制有如下4種表示形式:種表示形式: 二進制(二進制(b或或B) 十進制(十進制(d或或D或缺?。┗蛉笔。?十六進制(十六進制(h或或H) 八進制(八進制(o或或O)整數(shù)(整數(shù)(integer)Example

21、s:8b11000101 /位寬為八位的二進制數(shù)位寬為八位的二進制數(shù)110001018hd5 /位寬為八位的十六進制數(shù)位寬為八位的十六進制數(shù)d5;5O27 /5位八進制數(shù)位八進制數(shù)4D2 /4位十進制數(shù)位十進制數(shù)24B1x_01 /4位二進制數(shù)位二進制數(shù)1x015Hx /5位位x(擴展的(擴展的x),即),即xxxxx4hZ /4位位z,即,即zzzz8h2A /*在位寬和在位寬和之間,以及進制和數(shù)值之間,以及進制和數(shù)值之間允許出現(xiàn)空格,之間允許出現(xiàn)空格,但但和和進制進制之間,數(shù)值間是不允許出之間,數(shù)值間是不允許出現(xiàn)空格的,現(xiàn)空格的,比如比如8h2A、8h2A等形式都是不合法的寫等形式都是不合

22、法的寫法法 */整數(shù)(整數(shù)(integer)“位寬位寬”如果缺省則按數(shù)字串的實際位數(shù)計算,如指如果缺省則按數(shù)字串的實際位數(shù)計算,如指定的位寬與數(shù)字串的長度不相符,則首先保留右邊的低位,定的位寬與數(shù)字串的長度不相符,則首先保留右邊的低位,左邊超出的高位部分被截斷;若指定的位寬超過數(shù)字的實左邊超出的高位部分被截斷;若指定的位寬超過數(shù)字的實際長度,通常在數(shù)字系列的高位部分添際長度,通常在數(shù)字系列的高位部分添0補位,若數(shù)字系補位,若數(shù)字系列最左邊一位是列最左邊一位是X或或Z,則用,則用x或或z在左邊補齊。在左邊補齊?!斑M制符號進制符號”如果缺省則如果缺省則默認(rèn)為十進制默認(rèn)為十進制?!皵?shù)字串?dāng)?shù)字串”中除

23、中除09和字母和字母AF(與十六進制對應(yīng)的數(shù)字)外還可以與十六進制對應(yīng)的數(shù)字)外還可以出現(xiàn)出現(xiàn)3種符號;種符號;x(表示不確定或隨機狀態(tài))、(表示不確定或隨機狀態(tài))、z(表示高(表示高阻狀態(tài))和阻狀態(tài))和_(下劃線,沒有實際意義,用于增強程序的(下劃線,沒有實際意義,用于增強程序的可讀性)。每個字符所代表的寬度取決于所用的進制。可讀性)。每個字符所代表的寬度取決于所用的進制。使用中注意的問題:使用中注意的問題:o 實數(shù)(實數(shù)(Real)有下面兩種表示法。有下面兩種表示法。 十進制表示法。十進制表示法。這種表示時必須加小數(shù)點這種表示時必須加小數(shù)點。例如:例如:2.02.00.1 0.1 / /以

24、上以上2 2例是合法的實數(shù)表示形式例是合法的實數(shù)表示形式2. 2. / /非法:非法:小數(shù)點兩側(cè)都必須有數(shù)字小數(shù)點兩側(cè)都必須有數(shù)字 科學(xué)計數(shù)法。例如:科學(xué)計數(shù)法。例如:43_5.1e2 43_5.1e2 / /其值為其值為43510.043510.09.6E2 9.6E2 /960.0 (e/960.0 (e與與E E相同相同) )5E-4 5E-4 /0.0005/0.0005實數(shù)(實數(shù)(Real)字符串(字符串(Strings)o字符串是字符串是雙引號內(nèi)的字符序列雙引號內(nèi)的字符序列。o字符串不能分成多行書寫字符串不能分成多行書寫。例如:。例如: INTERNAL ERROR 是錯誤的是錯誤

25、的o字符串的作用主要是用于仿真時,顯示一些相關(guān)的信息,或者指定字符串的作用主要是用于仿真時,顯示一些相關(guān)的信息,或者指定顯示的格式。顯示的格式。 字符串是字符串是8位位ASC值的系列,是無符號整數(shù)。值的系列,是無符號整數(shù)。 用反斜杠用反斜杠表示的字符是特殊的反義字符。表示的字符是特殊的反義字符。 如如n 表示換行符表示換行符 t 制表符制表符 * 2063、變量及數(shù)據(jù)類型、變量及數(shù)據(jù)類型o Verilog有下面有下面四種四種基本的邏輯狀態(tài)。基本的邏輯狀態(tài)。 0:低電平、邏輯:低電平、邏輯0或邏輯非或邏輯非 1:高電平、邏輯:高電平、邏輯1或或“真真” x或或X:不確定或未知的邏輯狀態(tài):不確定或

26、未知的邏輯狀態(tài) z或或Z:高阻態(tài):高阻態(tài)o Verilog中的所有中的所有數(shù)據(jù)類型數(shù)據(jù)類型都在上述都在上述4類邏輯狀態(tài)中類邏輯狀態(tài)中取值取值,其中其中x和和z都不區(qū)分大小寫都不區(qū)分大小寫,也就是說,值,也就是說,值0 x1z與值與值0X1Z是等同的。是等同的。變量是用來表示數(shù)字電路中的變量是用來表示數(shù)字電路中的物理連線、數(shù)據(jù)存儲物理連線、數(shù)據(jù)存儲和傳輸單元和傳輸單元等物理量,變量遵循標(biāo)識符命名規(guī)則。等物理量,變量遵循標(biāo)識符命名規(guī)則。 數(shù)據(jù)類型n Verilog中的中的變量變量分為如下分為如下兩種數(shù)據(jù)類型兩種數(shù)據(jù)類型: net型型 variable型型net型中常用的有型中常用的有wire、tr

27、i等;等;variable型包括型包括reg、integer等。等。n 注意:在注意:在Verilog-1995標(biāo)準(zhǔn)中,標(biāo)準(zhǔn)中,variable型變量稱為型變量稱為register型;在型;在Verilog-2001標(biāo)準(zhǔn)中將標(biāo)準(zhǔn)中將register一詞改為一詞改為了了variable,以避免初學(xué)者將,以避免初學(xué)者將register和硬件中的寄存器概和硬件中的寄存器概念混淆起來。念混淆起來。Verilog HDL 有兩大類數(shù)據(jù)類型線網(wǎng)類型線網(wǎng)類型( (net型型) net type 表示Verilog結(jié)構(gòu)化元件間的物理連線。它的值由驅(qū)動元件的值決定,例如連續(xù)賦值或門的輸出。如果沒有驅(qū)動元件連接到

28、線網(wǎng),線網(wǎng)的缺省值為z z。寄存器類型寄存器類型( (variable型型) register type表示一個抽象的數(shù)據(jù)存儲單元,它只能在 always語句和 initial語句中被賦值,并且它的值從一個賦值到另一個賦值被保存下來。寄存器類型的變量具有x x的缺省值。*線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象線網(wǎng)類型表示構(gòu)件間的物理連線,而寄存器類型表示抽象的數(shù)據(jù)存儲元件。的數(shù)據(jù)存儲元件。net型n Net型數(shù)據(jù)相當(dāng)于硬件電路中的各種型數(shù)據(jù)相當(dāng)于硬件電路中的各種物理連接物理連接,其特點是,其特點是輸出的值緊跟輸入值的變化而變化。對連線型有兩種驅(qū)輸出的值緊跟輸入值的變化而變化。對連線

29、型有兩種驅(qū)動方式,一種方式是在結(jié)構(gòu)描述中將其連接到一個門元動方式,一種方式是在結(jié)構(gòu)描述中將其連接到一個門元件或模塊的輸出端;另一種方式是用持續(xù)賦值語句件或模塊的輸出端;另一種方式是用持續(xù)賦值語句assign對其進行賦值。對其進行賦值。n wire是最常用的是最常用的Net型型變量。變量。變量默認(rèn)是變量默認(rèn)是wire。n wire型變量的定義格式如下:型變量的定義格式如下:wire 數(shù)據(jù)寬度數(shù)據(jù)寬度數(shù)據(jù)名數(shù)據(jù)名1,數(shù)據(jù)名,數(shù)據(jù)名2,數(shù)據(jù)名數(shù)據(jù)名n; 數(shù)據(jù)寬度數(shù)據(jù)寬度 :忽略時,后面的變量寬度為忽略時,后面的變量寬度為“1位位”例如:例如: wire a,bwire a,b; / /定義了兩個定義

30、了兩個wirewire型變量型變量a a和和b b,寬度為,寬度為1 1位。位。n Examples:wire7:0 databus; /databus的寬度是的寬度是8位位wire19:0 addrbus; /addrbus的寬度是的寬度是20位位o module mux4_1a(out,in1,in2,in3,in4,s0,s1);o input in1,in2,in3,in4,s0,s1; output out;o wire s0_n,s1_n,w,x,y,z; /可以省略可以省略o not (s0_n,s0),(s1_n,s1);o and (w,in1,s0_n,s1_n),(x,i

31、n2,s0_n,s1),o (y,in3,s0,s1_n),(z,in4,s0,s1);o or (out,w,x,y,z);o endmodule這個這個4 4選選1 1邏輯電路采用結(jié)構(gòu)描述邏輯電路采用結(jié)構(gòu)描述方法,其中的方法,其中的s0_ns0_n、s1_ns1_n、w w、x x、y y、z z這這6 6個信號代表器件之間的個信號代表器件之間的物理連接,定義為物理連接,定義為wirewire型,當(dāng)然型,當(dāng)然輸入與輸出口采用默認(rèn),也是輸入與輸出口采用默認(rèn),也是wirewire型。型?!纠纠?.1】Wire特性wire 變量仿真時不需要占用存儲單元變量仿真時不需要占用存儲單元. Varia

32、ble(或稱寄存器型)變量有5種不同的寄存器類型: reg integer time real realtimevariable型變量必須放在型變量必須放在過程語句過程語句(如(如initial、always)中,通過過程賦值語句賦值;在中,通過過程賦值語句賦值;在always、initial等過程塊內(nèi)等過程塊內(nèi)被賦值的信號必須定義成被賦值的信號必須定義成variable型型。注意:注意:variable型變量并不意味著一定對應(yīng)著硬件上的一型變量并不意味著一定對應(yīng)著硬件上的一個觸發(fā)器或寄存器等存儲元件,但在仿真時需要占用一個存儲個觸發(fā)器或寄存器等存儲元件,但在仿真時需要占用一個存儲單元,在綜合

33、器進行綜合時,單元,在綜合器進行綜合時,variable型變量會根據(jù)具體情型變量會根據(jù)具體情況來確定是況來確定是映射成連線還是映射為觸發(fā)器或寄存器。映射成連線還是映射為觸發(fā)器或寄存器。 例如:同樣定義為reg型,但生成的電路單元不同。module sel(a,b,s,y);input a,b,s;output y; reg y; always(a,b,s) begin if(s) y=b; else y=a; end endmoduley生成的為線型驅(qū)動的組合邏輯電路生成的為線型驅(qū)動的組合邏輯電路q生成的為寄存器型時序邏輯電路生成的為寄存器型時序邏輯電路reg型變量型變量reg型變量型變量 是

34、最常用的一種是最常用的一種variable型變量型變量。 定義格式如下定義格式如下: reg msb:lsb reg1, reg2, . regN;msb和和lsb 定義了范圍,并且均為常數(shù)值表達式。范圍定義定義了范圍,并且均為常數(shù)值表達式。范圍定義是可選的;如果沒有定義范圍,缺省值為是可選的;如果沒有定義范圍,缺省值為 1 位寄存器。位寄存器。 例如:例如:reg a,b; /定義了兩個定義了兩個reg型變量型變量a,b,長度長度1位位reg7:0 qout,a; /定義定義qout和和a均為均為8位寬的位寬的reg型向量型向量reg1:8 qout; reg型變量型變量寄存器可以取任意長度

35、,寄存器中的值通常被解釋為無符號數(shù)。reg 1:4 Comb;. . .Comb = 2; / Comb 的值為14(1 1 1 0), 1 1 1 0 是2 的補碼。Comb = 5; /Comb的值為5 (0 1 0 1)。如:如:在過程語句中的被賦值變量必須定義為在過程語句中的被賦值變量必須定義為reg型型例如:例如:always語句中被賦值的變量定義為語句中被賦值的變量定義為reg型型integer為整數(shù)型變量為整數(shù)型變量 一般整數(shù)型在計算機內(nèi)至少是一般整數(shù)型在計算機內(nèi)至少是32位長度,為補碼有符號數(shù),位長度,為補碼有符號數(shù),不能進行位操作,只能整體賦值,但可以通過賦值不能進行位操作,

36、只能整體賦值,但可以通過賦值reg將其轉(zhuǎn)變將其轉(zhuǎn)變?yōu)槲徊僮?。為位操作?格式為:格式為: integer integer1, integer2,. . . intergerN msb: 1sb ; integer變量如:如:integer a,b,c; 定義了定義了3個個32位整型變量位整型變量 integer hist3:6; 一個由一個由4個整型數(shù)組成的個整型數(shù)組成的32位數(shù)組位數(shù)組msb和lsb是定義整數(shù)數(shù)組界限的常量表達式,數(shù)組界限的定義是可選的。注意容許無位界限的情況。一個整數(shù)最少容納 32位。但是具體實現(xiàn)可提供更多的位。i n t e g e r J;r e g 3:0 B c q

37、;J = 6; /J的值為3 2 b 0 0 0 0 . . . 0 0 1 1 0。B c q = J; /B c q的值為4 b 0 1 1 0 。B c q = 4b0101.J = B c q; /J的值為3 2 b 0 0 0 0 . . . 0 0 1 0 1。J = 6; /J 的值為 3 2 b 1 1 1 1 . . . 1 1 0 1 0。B c q = J; /B c q的值為4 b 1 0 1 0。注意賦值總是從最右端的位向最左邊的位進行;任何多余的位被截斷。例如: integer與reg變量轉(zhuǎn)換reg 31:0 Breg;integer Bint; / /B i n

38、t 6 和B i n t 2 0 : 1 0 是不允許的。. . .Breg = Bint; /*現(xiàn)在, B r e g 6 和B r e g 2 0 : 1 0 是允許的,并且從整數(shù) B i n t獲取相應(yīng)的位值。 */上例說明了如何通過簡單的賦值將整數(shù)轉(zhuǎn)換為位向量。類型轉(zhuǎn)換自動完成,不必使用特定的函數(shù)。從位向量到整數(shù)的轉(zhuǎn)換也可以通過賦值完成。time類型o time類型的寄存器用于存儲和處理時間。 time類型的寄存器使用下述方式加以說明。time time_id1, time_id2, . . . , time _ idN msb: 1sb ; msb和 lsb是表明范圍界限的常量表達式

39、。如果未定義界限,每個標(biāo)識符存儲一個至少 64位的時間值。時間類型的寄存器只存儲無符號數(shù)。如: time Events 0:31; /為32個64位時間值數(shù)組。 time CurrTime; /CurrTime 存儲一個64位時間。4 參數(shù)(parameter)n 在在Verilog語言中,用參數(shù)語言中,用參數(shù)parameter來定義符號常量,即來定義符號常量,即用用parameter來定義一個標(biāo)志符代表一個常量。來定義一個標(biāo)志符代表一個常量。參數(shù)常用參數(shù)常用來定義時延和變量的寬度。參數(shù)是局部的,只在其定義的模來定義時延和變量的寬度。參數(shù)是局部的,只在其定義的模塊內(nèi)部起作用。塊內(nèi)部起作用。n

40、其定義格式如下:其定義格式如下:parameter 參數(shù)名參數(shù)名1=表達式表達式1,參數(shù)名,參數(shù)名2=表達式表達式2,參數(shù)名,參數(shù)名3=表表達式達式3, ; /表達式可以是數(shù)字和已定義的參數(shù)組成的表達式表達式可以是數(shù)字和已定義的參數(shù)組成的表達式n 例如:例如:parameterparameter SEL=8,CODE=8ha3 SEL=8,CODE=8ha3;/ /分別定義參數(shù)分別定義參數(shù)SELSEL代表常數(shù)代表常數(shù)8 8(1010進制),參數(shù)進制),參數(shù)CODECODE代表常代表常量量a3a3(1616進制)進制)參數(shù)(parameter)o 【例2.2】 采用參數(shù)定義的加法器o modul

41、e add_w(a,b,sum);o parameter MSB=15; /參數(shù)定義參數(shù)定義o inputMSB:0 a,b; outputMSB+1:0 sum;o assign sum=a+b;o endmodule定義參數(shù)便于對程序中進行相關(guān)調(diào)試!定義參數(shù)便于對程序中進行相關(guān)調(diào)試!5 向量向量 o 標(biāo)量與向量標(biāo)量與向量寬度為寬度為1位的變量稱為位的變量稱為標(biāo)量標(biāo)量,如果在變量聲明中沒有指定位寬,如果在變量聲明中沒有指定位寬,則默認(rèn)為標(biāo)量(則默認(rèn)為標(biāo)量(1位)。舉例如下:位)。舉例如下: wire a; /a為標(biāo)量為標(biāo)量 reg clk; /clk為標(biāo)量為標(biāo)量reg型變量型變量o線寬大于線

42、寬大于1位的變量(包括位的變量(包括net型和型和variable型)稱為型)稱為向量向量(vector)。向量的寬度用下面的形式定義:)。向量的寬度用下面的形式定義: msb : lsbo比如:比如: wire3:0 bus; /4位的總線位的總線o位選擇和域選擇位選擇和域選擇 在表達式中可任意選中向量中的一位或相鄰幾位,分別稱為在表達式中可任意選中向量中的一位或相鄰幾位,分別稱為位選位選擇和域選擇擇和域選擇,這種使用方法方便靈活處理各種問題。,這種使用方法方便靈活處理各種問題。例如:例如:A=mybyte6; /位選擇位選擇B=mybyte5:2; /域選擇域選擇o再比如:再比如:reg7

43、:0 a,b; reg3:0 c; reg d;d=a7&b7; /位選擇位選擇c=a7:4+b3:0; /域選擇域選擇5 向量向量 5 向量向量 存儲器定義存儲器定義格式:格式:regreg 位線最高位序號位線最高位序號: :位線最低序號位線最低序號 信號名信號名 字線最字線最高位序號高位序號: :字線最低序號字線最低序號;其中的其中的 內(nèi)的值可省略,默認(rèn)內(nèi)的值可省略,默認(rèn)1 1位。位。如:如:regreg7:0mem0:2557:0mem0:255定義了一個有定義了一個有256256個單元的寬度為個單元的寬度為8 8位的存儲器。位的存儲器。RegReg一維定義的是一維定義的是矢量寄

44、存器,矢量寄存器,二維定義的是二維定義的是存儲器存儲器。5 向量向量 在一個在一個reg語句中既可以定義存儲器型又可以定義寄存器型變量語句中既可以定義存儲器型又可以定義寄存器型變量與一維與一維regreg型變量不同的是,二維型變量不同的是,二維regreg型變量在引用時只能以一型變量在引用時只能以一個單元為單位,既不能同時選擇多個單元,也不能單獨操作單元中個單元為單位,既不能同時選擇多個單元,也不能單獨操作單元中的某些位的某些位。猶如。猶如integerinteger型變量本身就是型變量本身就是3232位的數(shù)據(jù),因此位的數(shù)據(jù),因此integerinteger型數(shù)組也只能以一個整數(shù)為單位引用。如

45、果想對位操作,可以先讀型數(shù)組也只能以一個整數(shù)為單位引用。如果想對位操作,可以先讀出對應(yīng)單元數(shù)據(jù)賦值給一個寄存器,這樣就可以對位操作。出對應(yīng)單元數(shù)據(jù)賦值給一個寄存器,這樣就可以對位操作。5 向量向量 6 運算符(運算符(Operators) o 算術(shù)運算符(算術(shù)運算符(Arithmetic operators)o 常用的算術(shù)運算符包括:與通常算數(shù)運算相常用的算術(shù)運算符包括:與通常算數(shù)運算相同。同。算術(shù)運算符算術(shù)運算符o 位運算符(位運算符(Bitwise operators) 位運算是將兩個操作數(shù)按位運算是將兩個操作數(shù)按對應(yīng)位對應(yīng)位分別分別進行進行邏輯運算邏輯運算(若長度不同要將位數(shù)少的(若長度

46、不同要將位數(shù)少的操作數(shù)填零補齊)。操作數(shù)填零補齊)。按位取反按位取反&按位與按位與|按位或按位或按位異或按位異或,按位同或(符號按位同或(符號與與是等價是等價的)的)運算符(運算符(Operators)o 邏輯運算符(邏輯運算符(Logical operators)&邏輯與邏輯與| 邏輯或邏輯或!邏輯非邏輯非 同按位操作不同的是將整個操作數(shù)視為真、假或不確同按位操作不同的是將整個操作數(shù)視為真、假或不確定進行邏輯運算(即定進行邏輯運算(即1、0、x),運算結(jié)果也為這三種狀,運算結(jié)果也為這三種狀態(tài)。當(dāng)態(tài)。當(dāng)操作數(shù)為向量時,邏輯操作符會自動強制其邏輯化,操作數(shù)為向量時,邏輯操作符會自

47、動強制其邏輯化,即非零向量當(dāng)作即非零向量當(dāng)作“1”處理,全零向量當(dāng)作處理,全零向量當(dāng)作“0”處理,相當(dāng)處理,相當(dāng)于做了一個于做了一個“或或”規(guī)約。如果操作數(shù)中含有規(guī)約。如果操作數(shù)中含有x或或z,結(jié)果也,結(jié)果也為為x。運算符(運算符(Operators)o 關(guān)系運算符(關(guān)系運算符(Relational operators)小于小于大于大于=大于或等于大于或等于 用于判斷兩個表達式的值之間的大小關(guān)系,皆為二元用于判斷兩個表達式的值之間的大小關(guān)系,皆為二元操作符,判斷結(jié)果為真、假和不確定(即操作符,判斷結(jié)果為真、假和不確定(即1、0、x)三種三種狀態(tài)。狀態(tài)。運算符(運算符(Operators)mod

48、ule comp2_2(x,y,z,a,b); input a ,b; output x,y,z; reg x,y,z;always (a,b) begin if (a=b) x=1b1; else if (ab) y=1b1; else z=1b1; end endmodulemodule comp2_2(x,y,z,a,b); input a ,b; output x,y,z; reg x,y,z;always (a,b) begin if (a=b) begin x=1b1;y=1b0;z=1b0;end else if (ab) begin y=1b1;x=1b0;z=1b0;end

49、else begin z=1b1;x=1b0;y右移右移左移左移功能與功能與c語言邏輯移位指令一樣,語言邏輯移位指令一樣,空出的位添空出的位添0補齊補齊。操作數(shù)操作數(shù))移動位數(shù)移動位數(shù)a=4B0010; a2; a=4B1000如如【例【例2.3】 采用參數(shù)定義的約翰遜計數(shù)器采用參數(shù)定義的約翰遜計數(shù)器o module johnson_w(clk,clr,qout);o input clk,clr;o parameter WIDTH=8; /參數(shù)定義參數(shù)定義o output reg(WIDTH-1):0 qout;o always (posedge clk or posedge clr)o be

50、gin if(clr) qout=0;o else begin qout=qout1;o qout0=qoutWIDTH-1;o /靈活運用位賦值實現(xiàn)復(fù)雜邏輯功能靈活運用位賦值實現(xiàn)復(fù)雜邏輯功能o endo endo endmodule0000000000000001000000110000011111111111仿真結(jié)果運算符(運算符(Operators)o 條件運算符(條件運算符(conditional operators)o 三目運算符三目運算符 = ? :,其定義方式如下:,其定義方式如下:signal=condition?true_expression:false_expression

51、;o 即:信號即:信號=條件條件?表達式表達式1:表達式表達式2;當(dāng)條件成立時,信號取表達式當(dāng)條件成立時,信號取表達式1的值,反之取表達式的值,反之取表達式2的值。的值。module comp2_1(x,y,z,a,b); parameter WIDTH=8; /通過配置參數(shù)通過配置參數(shù)width來調(diào)節(jié)比較器的位寬來調(diào)節(jié)比較器的位寬 input WIDTH-1:0a ,b; output x,y,z; assign x=(a=b)?1:0 ;/這些語句是并行執(zhí)行這些語句是并行執(zhí)行 assign y=(ab)?1:0;endmodule 4位輸入,位輸入,2位輸出的位輸出的4-2二進制編碼器。當(dāng)

52、輸入編碼不是二進制編碼器。當(dāng)輸入編碼不是4中取一碼時,輸中取一碼時,輸出編碼為全出編碼為全x。 / example_4_9: 4-2 binary encodermodule binary_encoder_4_2 ( input 3:0 i_dec, output 1:0 o_dec ); / 利用數(shù)據(jù)流描述和條件運算符利用數(shù)據(jù)流描述和條件運算符? :進行建模進行建模 assign o_dec = (i_dec = 4b0001) ? 2b00 : (i_dec = 4b0010) ? 2b01 : (i_dec = 4b0100) ? 2b10 : (i_dec = 4b1000) ? 2b

53、11 : 2bxx;endmodule4-2二進制編碼器二進制編碼器運算符(運算符(Operators)位拼接位拼接運算符(運算符(concatenation operators) 該運算符將兩個或多個信號的某些位拼接起來。使該運算符將兩個或多個信號的某些位拼接起來。使用如下:用如下:信號信號1的某幾位,信號的某幾位,信號2的某幾位,的某幾位,信號,信號n的某幾位的某幾位如:如:assign ci,si=ai+bi 半加器求和賦值語句半加器求和賦值語句運算符的優(yōu)先級下列為默認(rèn)的操作符優(yōu)先級排列,在書寫程序時下列為默認(rèn)的操作符優(yōu)先級排列,在書寫程序時建議用括號建議用括號()()來控制運算的優(yōu)先級

54、。來控制運算的優(yōu)先級。 參數(shù)(parameter)【例【例2.4】 采用參數(shù)定義的數(shù)據(jù)比較器采用參數(shù)定義的數(shù)據(jù)比較器module compare_w(a,b,larger,equal,less);parameter SIZE=6; /參數(shù)定義參數(shù)定義inputSIZE-1:0 a,b;output larger,equal,less; wire larger,equal,less;/可以省略可以省略assign larger=(ab);assign equal=(a=b);assign less=(ab);endmodule參數(shù)(parameter)【例【例2.5】 采用參數(shù)定義的二進制計數(shù)器

55、采用參數(shù)定義的二進制計數(shù)器module count_w(en,clk,reset,out);input clk,reset,en;parameter WIDTH=8; /參數(shù)定義參數(shù)定義outputWIDTH-1:0 out; regWIDTH-1:0 out;always (posedge clk or negedge reset)if(!reset) out=0;else if(en) out=out+1;endmodule 主要內(nèi)容主要內(nèi)容2.3 Verilog HDL行為語句行為語句類別類別語句語句可綜合性可綜合性過程語句過程語句initial always塊語句塊語句串行塊串行塊be

56、gin-end并行塊并行塊fork-join 賦值語句賦值語句持續(xù)賦值持續(xù)賦值assign過程賦過程賦值值=、=條件語句條件語句if-elsecase循環(huán)語句循環(huán)語句forrepeat while forever 編譯向?qū)дZ句編譯向?qū)дZ句defineincludeifdef, else, endif1 過程語句過程語句o initialo alwayso 在一個模塊(在一個模塊(module)中,使用)中,使用initial和和always語句的次數(shù)是語句的次數(shù)是不受限制不受限制的。的。initial語句常用于仿語句常用于仿真中的初始化,真中的初始化,initial過程塊中的語句過程塊中的語句

57、僅執(zhí)行一僅執(zhí)行一次次;always塊內(nèi)的語句則是塊內(nèi)的語句則是不斷重復(fù)執(zhí)行不斷重復(fù)執(zhí)行的。的。并且模塊中的多個并且模塊中的多個always和和initial語句是同時并語句是同時并行運行。行運行。always過程語句使用模板過程語句使用模板o always ()begin/過程賦值過程賦值/if-else,case,casex,casez選擇語句選擇語句/while,repeat,for循環(huán)循環(huán)/task,function調(diào)用調(diào)用endo “always”過程語句通常是帶有觸發(fā)條件的,觸發(fā)條件過程語句通常是帶有觸發(fā)條件的,觸發(fā)條件寫在敏感信號表達式中,只有寫在敏感信號表達式中,只有當(dāng)觸發(fā)條件滿

58、足當(dāng)觸發(fā)條件滿足時,其后時,其后的的“begin-end”塊內(nèi)語句才塊內(nèi)語句才能按順序執(zhí)行能按順序執(zhí)行。敏感信號表達式敏感信號表達式:()o 敏感信號表達式又稱事件表達式或敏感信號列表,敏感信號表達式又稱事件表達式或敏感信號列表,即當(dāng)該表達式中變量的值改變時,就會引發(fā)塊內(nèi)即當(dāng)該表達式中變量的值改變時,就會引發(fā)塊內(nèi)語句的執(zhí)行。因此敏感信號表達式中應(yīng)列出影響語句的執(zhí)行。因此敏感信號表達式中應(yīng)列出影響塊內(nèi)取值的所有信號。若有兩個或兩個以上信號塊內(nèi)取值的所有信號。若有兩個或兩個以上信號時,時,它們之間用它們之間用“,”連接連接( (或用或用“or”“or”連接)連接)。敏感信號列表可放在模塊內(nèi)任何位置

59、,但一般放敏感信號列表可放在模塊內(nèi)任何位置,但一般放在在always語句后。語句后。o 例如:例如: (a) (a) / /當(dāng)信號當(dāng)信號a a的值發(fā)生改變的值發(fā)生改變 (a (a ,b) b) / /當(dāng)信號當(dāng)信號a a或信號或信號b b的值發(fā)生改變的值發(fā)生改變 (posedge clock) / (posedge clock) /當(dāng)當(dāng)clock clock 的上升沿到來時的上升沿到來時 (negedge clock) / (negedge clock) /當(dāng)當(dāng)clock clock 的下降沿到來時的下降沿到來時 (posedge clk or negedge reset) (posedge c

60、lk or negedge reset) / /當(dāng)當(dāng)clkclk的上升沿到來或的上升沿到來或resetreset信號的下降沿到來信號的下降沿到來敏感信號列表舉例敏感信號列表舉例module mux4_1(out,in0,in1,in2,in3,sel);output out;input in0,in1,in2,in3;input1:0 sel; reg out;always (in0 , in1 , in2 , in3 , sel) /敏感信號列表敏感信號列表case(sel) 2b00: out=in0; 2b01: out=in1; 2b10: out=in2; 2b11: out=in3; default: out=2bx;end

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論