《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第5章_第1頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第5章_第2頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第5章_第3頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第5章_第4頁
《Verilog HDL數(shù)字系統(tǒng)設(shè)計-原理、實例及仿真》課件第5章_第5頁
已閱讀5頁,還剩102頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章結(jié)構(gòu)級建模方法5.1VerilogHDL內(nèi)置基元5.2用戶定義原語(UDP)5.3模塊的調(diào)用5.4行為描述和結(jié)構(gòu)描述的混合使用

5.1VerilogHDL內(nèi)置基元

VerilogHDL提供了26個內(nèi)置基元,用于對數(shù)字系統(tǒng)實際的邏輯結(jié)構(gòu)進(jìn)行建模。這些基元包括基本門電路、上拉電阻、下拉電阻、MOS開關(guān)和雙向開關(guān)。這26個基元可以再分類如下:

(1)多輸入門:and、nand、or、nor、xor、xnor。

(2)多輸出門:buf、not。

(3)三態(tài)門:bufif0、bufif1、notif0、notif1。

(4)上拉、下拉電阻:pullup、pulldown。

(5)?MOS開關(guān):cmos、nmos、pmos、rcmos、rnmos、rpmos。

(6)雙向開關(guān):tran、tranif0、tranif1、rtran、rtranif0、rtranif1。這些基元調(diào)用語句的語法格式如下:

<門的類型>[<驅(qū)動能力><延時>]<例化的門名字>(<端口列表>);

其中,“門的類型”是門聲明語句所必需的,它可以是26個基元中的任意一種。“驅(qū)動能力”和“延時”是可選項,可根據(jù)不同的情況選不同的值或不選?!袄拈T名字”是在本模塊中引用的這種類型的門的實例名。<端口列表>按(輸出,輸入1,輸入2,…)順序列出。下面是門類型的引用:

nand#10nd1(a,data,clock,clear);

該語句中引用了一個名為nd1的與非門(nand),其輸入為data、clock和clear,輸出為a,輸出與輸入的延時為10個單位時間。5.1.1基本門

1.多輸入門

多輸入門具有1個或多個輸入,但只有一個輸出。內(nèi)置的多輸入門有6種:and(與門)、nand(與非門)、or(或門)、nor(或非門)、xor(異或門)、xnor(異或非門)。

多輸入門實例化語句的語法格式如下:

gate_typeinstance_name(output,input1,…,inputN);圖5.1多輸入門的輸入/輸出關(guān)系

1)與門(and)

圖5.2和表5.1所示為與門的邏輯符號和邏輯表。

例如:

andU1(out1,a,b,c,d);

/*與門U1,輸出為out1,有4個輸入a、b、c、d*/圖5.2與門的邏輯符號

2)與非門(nand)

圖5.3和表5.2所示為與非門的邏輯符號和邏輯表。

例如:

nandU2(sum,a,b,c);

/*與非門U2,輸出為sum,帶有3個輸入a、b、c*/圖5.3與非門的邏輯符號

3)或門(or)

圖5.4和表5.3所示為或門的邏輯符號和邏輯表。

例如:

orU3(out,in1,in2),U4(out1,a,b,c);

/*或門U3、U4(同類門實例引用簡化方式)*/圖5.4或門的邏輯符號

4)或非門(nor)

圖5.5和表5.4所示為或非門的邏輯符號和邏輯表。

例如:

norU5(out,in1,in2);

norU6(out1,out,b,c);

//U5輸出out信號連接到U6的輸入端口圖5.5或非門的邏輯符號表5.4或非門的邏輯表

5)異或門(xor)

圖5.6和表5.5所示為異或門的邏輯符號和邏輯表。

例如:

xorU7(out,in1,in2);

xorU8(out1,out,in1,c);

//in1信號連接到U7、U8的輸入端口圖5.6異或門的邏輯符號表5.5異或門的邏輯表

6)異或非門(xnor)

圖5.7和表5.6所示為異或非門的邏輯符號和邏輯表。

例如:

xnorU11(out,in1,in2);

xnor(out1,out,b,c);//沒有實例名圖5.7異或非門的邏輯符號表5.6異或非門的邏輯表

2.多輸出門

多輸出門具有一個輸入、一個或多個輸出。內(nèi)置的多輸出門有兩種:buf(緩沖門)和not(非門)。

多輸出門實例語句的語法格式如下:

gate_typeinstance_name(output1,…,outputN,input);

其中,gate_type為門類型,是上述的兩種多輸出門之一;instance_name是這個實例門的名稱;端口output1,…,outputN是輸出端,最后一個端口input是輸入端。多輸出門的形式如圖5.8所示。圖5.8多輸出門圖5.9和表5.7為多輸出門的邏輯符號和邏輯表。圖5.9多輸出門的邏輯符號

3.三態(tài)門

三態(tài)門用于對三態(tài)驅(qū)動器建模,共有3個端口:一個數(shù)據(jù)輸入端、一個控制信號輸入端和一個數(shù)據(jù)輸出端。內(nèi)置的三態(tài)門有4種:bufif1(高有效三態(tài)門)、bufif0(低有效三態(tài)門)、notif1(高有效三態(tài)非門)、notif0(低有效三態(tài)非門)。

三態(tài)門實例語句的語法格式如下:

gate_typeinstance_name(output,input,control);

其中,gate_type為門類型,是上述的4種三態(tài)門之一;instance_name是這個實例門的名稱;第一個端口output是輸出端,第二個端口input是輸入端,第三個端口control是控制信號輸入端。

圖5.10所示為三態(tài)門的邏輯符號。圖5.10三態(tài)門的邏輯符號表5.8~表5.11所示分別為四種三態(tài)門的邏輯表。表中的某些項是可選的。例如,0/z表明根據(jù)輸入數(shù)據(jù)的信號強(qiáng)度和控制信號的值,輸出既可以為0也可以為z。例如:5.1.2上拉、下拉電阻

上拉電阻和下拉電阻是一類只有一個端口(輸出端)的器件模型,其作用是改變其輸出端的值。上拉電阻將輸出置為1,下拉電阻將輸出置為0。

聲明上拉電阻和下拉電阻的關(guān)鍵字是:pullup(上拉電阻)、pulldown(下拉電阻)。

上拉、下拉電阻的語法形式如下:

pull_type[instance_name](output);

其中,pull_type是pullup或pulldown;可選項instance_name是實例名;output是唯一的輸出端口。5.1.3MOS開關(guān)

VerilogHDL具有對MOS晶體管級進(jìn)行設(shè)計的能力。隨著電路復(fù)雜性的增加(上百萬的晶體管)及先進(jìn)CAD工具的出現(xiàn),以開關(guān)級為基礎(chǔ)進(jìn)行的設(shè)計正在逐漸萎縮。VerilogHDL目前僅提供用邏輯值0、1、x、z和與它們相關(guān)的驅(qū)動強(qiáng)度進(jìn)行數(shù)字設(shè)計的能力,沒有模擬設(shè)計能力。因此在VerilogHDL中,晶體管也僅被當(dāng)作導(dǎo)通或者截止的開關(guān)。MOS模型在仿真時表現(xiàn)為兩種狀態(tài):開或關(guān),即導(dǎo)通或不導(dǎo)通。對于MOS來說,數(shù)據(jù)只能從輸入端流向輸出端,并且可以通過設(shè)置控制信號來關(guān)閉數(shù)據(jù)流,所以MOS是單向的。

Verilog提供了6種MOS晶體管開關(guān):cmos、pmos、rcmos、rpmos、nmos、rnmos。

MOS晶體管開關(guān)的語法格式如下:

mos_type[instance_name](outputA,inputB,controlC);

其中,mos_type是nmos、rnmos、pmos和rpmos四種三端口MOS開關(guān)之一;可選項instance_name是這個MOS開關(guān)實例的名稱;第一個端口outputA為輸出端,第二個端口inputB是輸入端,第三個端口controlC是控制信號輸入端。pmos、nmos、rnmos和rpmos均為三端口MOS開關(guān),包括一個數(shù)據(jù)輸出端、一個數(shù)據(jù)輸入端和一個控制信號輸入端。nmos用于NMOS晶體管建模;pmos用于PMOS晶體管建模。NMOS和PMOS開關(guān)符號如圖5.11所示。圖5.11NMOS和PMOS開關(guān)符號

pmos、nmos、rnmos和rpmos這四種MOS開關(guān)的工作過程如下:

(1)對于nmos和rnmos開關(guān),如果其控制信號為0,那么關(guān)閉這個開關(guān),使輸出為z;如果控制信號是1,則打開這個開關(guān),把輸入端的數(shù)據(jù)傳輸至輸出端。

(2)對于pmos和rpmos開關(guān),如果其控制信號為1,那么關(guān)閉這個開關(guān),使輸出為z;如果控制信號是0,則打開這個開關(guān),把輸入端的數(shù)據(jù)傳輸至輸出端。

rnmos和rpmos與nmos和pmos相比,它們的輸入端和輸出端之間存在阻抗(電阻)。因此,對于rnmos和rpmos,當(dāng)數(shù)據(jù)從輸入端傳輸至輸出端時,由于電阻帶來的損耗,使得數(shù)據(jù)的信號強(qiáng)度減弱。例如:

nmosn1(out,data,control); //實例名為n1的nmos開關(guān)

pmosp1(out,data,control); //實例名為p1的pmos開關(guān)

輸出out的值由輸入data和control的值確定。nmos和pmos的邏輯表如表5.12所示。信號data和control不同的組合導(dǎo)致這兩個開關(guān)輸出1、0或者z、x邏輯值(如果不能確定輸出為1或0,就有可能輸出z、x值)。

cmos和rcmos(cmos的高阻態(tài))有4個端口:一個數(shù)據(jù)輸出端,一個數(shù)據(jù)輸入端和兩個控制信號輸入端。其語法格式如下:

(r)cmos[instance_name](outputA,inputB,Ncontrol,Pcontrol);

其中,可選項instance_name是這個MOS開關(guān)實例的名稱;第一個端口outputA為輸出端,第二個端口inputB是輸入端,第三個端口Ncontrol是N通道控制信號輸入端,第四個端口Pcontrol是P通道控制信號輸入端。cmos(rcmos)的開關(guān)行為與pmos(rpmos)和nmos(rnmos)的類似。可以這樣認(rèn)為,cmos(outputA,inputB,Ncontrol,Pcontrol)是一個nmos(output,input,Ncontrol)和一個pmos(output,input,Pcontrol)的組合。也就是可以用如圖5.12所示nmos和pmos器件來建立一個cmos器件的模型。圖5.12cmos開關(guān)在cmos開關(guān)中,存在著pmos和nmos兩條數(shù)據(jù)通路,當(dāng)Pcontrol為0時,上半部分的pmos開關(guān)打開,數(shù)據(jù)可以從輸入端inputB傳輸?shù)捷敵龆薿utputA;當(dāng)Ncontrol為1時,下半部分的nmos開關(guān)打開,數(shù)據(jù)可以從輸入端inputB傳輸?shù)捷敵龆薿utputA;因此,cmos的真值表可以參考pmos和nmos的。例如:

cmosc1(out,data,ncontrol,pcontrol);//實例名c1的cmos開關(guān)

rcmos是cmos的高阻態(tài),其開關(guān)行為與cmos完全相同,只是在其輸入端和輸出端之間存在著阻抗,所以數(shù)據(jù)從輸入傳送到輸出的過程中存在著損耗,使得其信號強(qiáng)度被減弱。5.1.4雙向開關(guān)

NMOS、PMOS和CMOS管都是從漏極向源極導(dǎo)通的,是單向的。在數(shù)字電路中,雙向?qū)ǖ钠骷埠艹S?。對雙向?qū)ǖ钠骷?,其兩邊的信號都可以是?qū)動信號。通過設(shè)計雙向開關(guān)就可以實現(xiàn)雙向?qū)ǖ钠骷?。VerilogHDL內(nèi)置了6種雙向開關(guān),即數(shù)據(jù)可以在兩個端口之間雙向流動。這6種雙向開關(guān)是tran、rtran、tranif0、rtranif0、tranif1、rtranif1。

其中,前兩種開關(guān)tran和rtran(tran的高阻態(tài))是不能關(guān)斷的,始終處于打開狀態(tài),數(shù)據(jù)可以在兩個端口之間自由流動。tran和rtran的語法形式如下:

(r)tran[instance_name](signalA,signalB);這兩種開關(guān)只有兩個端口signalA和signalB,數(shù)據(jù)可以在這兩個端口之間流動,因為沒有控制信號,這兩個開關(guān)都不能被關(guān)斷,所以這種雙向的數(shù)據(jù)流動是無條件進(jìn)行的。

后4種開關(guān)(tranif0、rtranif0、tranif1和rtranif1)可以通過控制信號關(guān)閉。其語法形式如下:

bidirection_type[instance_name](signalA,signalB,controlC);

其中,bidirection_type是上述4種雙向開關(guān)之一,實例名instance_name是可選項,前兩個端口(signalA、signalB)是雙向端口,第三個端口controlC是控制信號輸入端。對于tranif0和rtranif0,controlC為0時打開開關(guān),允許數(shù)據(jù)雙向流動,當(dāng)controlC為1時關(guān)閉開關(guān),禁止數(shù)據(jù)流動;對于tranif1和rtranif1,controlC為1時打開開關(guān),允許數(shù)據(jù)雙向流動,當(dāng)controlC為0時關(guān)閉開關(guān),禁止數(shù)據(jù)流動。在這6種雙向開關(guān)中,tran、tranif0和tranif1內(nèi)的數(shù)據(jù)流動時沒有損耗,但rtran、rtranif0和rtranif1的輸入端和輸出端之間存在阻抗,當(dāng)信號通過開關(guān)傳輸時,信號強(qiáng)度會減弱。

tran、tranif0和tranif1的邏輯符號如圖5.13所示。圖5.13雙向開關(guān)的邏輯符號

tran開關(guān)作為兩個信號inout1和inout2之間的緩存,inout1或inout2都可以是驅(qū)動信號。僅當(dāng)control信號是邏輯0時,tranif0開關(guān)連接inout1和inout2兩個信號;如果control信號是邏輯1,則沒有驅(qū)動源的信號取高阻態(tài)值z,有驅(qū)動源的信號仍然從驅(qū)動源取值。如果control信號是邏輯1,則tranif1開關(guān)連接的inout1和inout2兩個信號導(dǎo)通。5.1.5門級建模舉例

下面通過幾個例子學(xué)習(xí)門級結(jié)構(gòu)建模的基本方法。

4選1多路選擇器有4個數(shù)據(jù)輸入端D0、D1、D2、D3,一個數(shù)據(jù)輸出端Z和兩個控制信號輸入端S0、S1。選擇器會根據(jù)S0和S1的值從4個數(shù)據(jù)輸入端中選擇其中的一個送到輸出端。圖5.14和表5.13所示分別為4選1多路選擇器的電路結(jié)構(gòu)和真值表。圖5.144選1多路選擇器的電路結(jié)構(gòu)

5.2用戶定義原語(UDP)

5.2.1UDP的定義

UDP的定義與模塊無關(guān),與模塊屬同一層次,所以UDP定義不能出現(xiàn)在模塊之內(nèi)。UDP定義可以單獨出現(xiàn)在一個VerilogHDL文件中或與模塊定義同時處于某個文件中。它的語法形式如下:注意:

(1)

UDP只能有一個輸出端,而且必定是端口說明列表的第一項。

(2)?UDP可以有多個輸入端,最多允許有10個輸入端。

(3)?UDP所有的端口變量必須是標(biāo)量,也就是必須是1位的。

(4)在UDP的真值表項中,只允許出現(xiàn)0、1、x三種邏輯值,高阻值狀態(tài)z是不允許出現(xiàn)的。

(5)只有輸出端才可以被定義為寄存器型變量。

(6)?initial語句用于為時序電路內(nèi)部的寄存器賦初值,只允許賦0、1、x三種邏輯值,缺省值為x。

在UDP中可以描述兩類電路行為:組合電路和時序電路(邊沿觸發(fā)和電平觸發(fā))。5.2.2組合電路UDP

在組合電路UDP中,填寫的功能列表類似真值表,即規(guī)定了不同的輸入值組合相對應(yīng)的輸出值。沒有指定的任意組合輸出為x。表中output是輸出端的值,input是輸入端的值,它們的排列順序必須和端口列表中的順序相同。表中每一行的語法形式如下:

input1input2…:output

列表中給出多個這樣的行就能對不同的輸入值組合定義對應(yīng)的輸出值,如果某個輸入值組合沒有定義其輸出,那么就把這種情況的輸出置為x。

【例5.1】2-1數(shù)據(jù)選擇器的UDP定義方法。

【例5.2】使用2-1數(shù)據(jù)選擇器原語構(gòu)建4-1多路選擇器。在UDP實例中共可以指定2個時延,這是由于UDP的輸出可以取值0、1或x(無截止時延)。使用6個輸入端A、B、C、D、Sel[1]、Sel[2]和1個輸出端Z以及2個線網(wǎng)TL、TP來實現(xiàn)3個UDP的連接,其內(nèi)部結(jié)構(gòu)如圖5.15所示。圖5.15使用UDP構(gòu)造的4-1多路選擇器5.2.3時序電路UDP

1.初始化狀態(tài)寄存器

時序電路UDP的狀態(tài)初始化可以使用一條過程賦值語句實現(xiàn)。其語法形式如下:

initialreg_name=0,1,orx;

其中,reg_name是狀態(tài)寄存器,0、1、x是這個寄存器可以取的值。初始化語句在UDP定義中出現(xiàn),但初始化狀態(tài)寄存器不是必需的,若在UDP定義中沒有狀態(tài)寄存器初始化語句,那么狀態(tài)寄存器的值為x。

2.電平觸發(fā)的時序電路UDP

電平觸發(fā)的時序電路UDP比組合型多了一個寄存器,主要用來保存當(dāng)前的狀態(tài),也可以作為當(dāng)前的輸出。當(dāng)前的狀態(tài)和輸入確定下一個狀態(tài)和輸出。

【例5.3】電平觸發(fā)的D鎖存器時序電路UDP,只要時鐘(clk)為低電平0,數(shù)據(jù)就從輸入傳遞到輸出,否則輸出值保持不變。

3.邊沿觸發(fā)的時序UDP

【例5.4】用邊沿觸發(fā)時序電路UDP為邊沿觸發(fā)的D觸發(fā)器建模,初始化語句用于初始化觸發(fā)器的狀態(tài)。

【例5.5】假定d_edge為UDP定義,它現(xiàn)在就能夠像基本門一樣在模塊中使用,如下面的4位寄存器所示。

4.電平觸發(fā)和邊沿觸發(fā)混合的UDP

時序UDP包括電平觸發(fā)和邊沿觸發(fā)兩種,VerilogHDL允許這兩種行為混合存在于同一個UDP中。在這種情況下,邊沿變化在電平觸發(fā)之前處理,即電平觸發(fā)項覆蓋邊沿觸發(fā)項。

【例5.6】帶異步清零的D觸發(fā)器的UDP描述。

5.3模?塊?的?調(diào)?用

為了把所有模塊連接成系統(tǒng)或者高層模塊而調(diào)用低層子模塊,需使用模塊實例化語句。模塊實例化語句和調(diào)用基元時使用的基元實例化語句形式上完全一致,也是使用結(jié)構(gòu)級建模方法描述的。

調(diào)用低層模塊的語法形式為:

低層模塊名實例名(參數(shù)定義);

其中,“低層模塊名”是要引用的模塊名;“實例名”是模塊的實例名;“參數(shù)定義”是端口關(guān)聯(lián)聲明。5.3.1端口的關(guān)聯(lián)方式

端口有兩種關(guān)聯(lián)方式,即位置關(guān)聯(lián)方式和名稱關(guān)聯(lián)方式,這兩種關(guān)聯(lián)方式不能夠混合使用,其語法形式如下:

port_expr

//位置關(guān)聯(lián)方式

.PortName(port_expr) //名稱關(guān)聯(lián)方式

其中,PortName是子模塊在定義時給出的端口名稱,port_expr是高層模塊內(nèi)定義的線網(wǎng)或寄存器變量,這個變量與子模塊端口關(guān)聯(lián)就實現(xiàn)了子模塊與高層模塊之間的連接。名稱關(guān)聯(lián)方式是用一個小數(shù)點“.”引導(dǎo)的表達(dá)式.PortName(port_expr),模塊端口和端口表達(dá)式的關(guān)聯(lián)被顯式地指定,也就是子模塊PortName端口在高層模塊中與port_expr相關(guān)聯(lián)。因此端口的關(guān)聯(lián)順序并不重要。

位置關(guān)聯(lián)方式不需要給出子模塊定義時給出的端口名稱PortName,只要端口表達(dá)式按模塊定義時的端口順序與模塊中的端口關(guān)聯(lián)即可。port_expr可以是以下的任何類型:標(biāo)識符(reg或net)、位選擇、部分位選擇、前三種類型的合并、表達(dá)式(只適用于輸入端口)。例如:

MicroM1(UdIn[3:0],{WrN,RdN},Status[0],Status[1],

&UdOut[0:7],TxData);

【例5.7】使用兩個半加器模塊構(gòu)造全加器,子模塊是半加器HA,高層模塊是全加器FA,在FA中引用了兩個HA。邏輯圖如圖5.16所示,其中h1和h2分別是兩個半加器。圖5.16使用兩個半加器模塊構(gòu)造的全加器子模塊半加器的VerilogHDL描述:全加器的VerilogHDL描述:5.3.2端口懸空的處理

在實例化語句中,懸空端口可通過將端口表達(dá)式表示為空白來指定為懸空端口。

【例5.8】子模塊的描述。高層模塊調(diào)用子模塊DFF,模塊實例化語句是:

(1)DFFd1(.Q(QS),.Qbar(),.Data(D),.Preset(),.Clock(CK));/*名稱關(guān)聯(lián)方式。端口Qbar和Preset的括號里為空,表明這兩個端口被懸空*/

(2)DFFd2(QS,,D,,CK);/*位置對應(yīng)方式。輸出端口Qbar和輸入端口Preset的位置都被懸空*/

懸空的端口因為類型不同而意義不同。若模塊的輸出端口懸空,則表示該輸出端口不用。若模塊的輸入端口懸空,則被置為高阻態(tài)z。5.3.3端口寬度匹配問題

在端口關(guān)聯(lián)時,若端口和局部端口表達(dá)式的長度不同,則端口通過無符號數(shù)的右對齊或截斷方式進(jìn)行匹配。

【例5.9】模塊調(diào)用時端口寬度匹配舉例。

子模塊的描述:頂層模塊Top的描述:在子模塊guan_lian的實例語句中:

(1)?2位的Bdl和6位的Pba相連,Bdl[2]連接到Pba[0],Bdl[1]連接到Pba[1],余下的輸入端口Pba[5]、Pba[4]Pba[3]和Pba[2]被截斷,處于懸空狀態(tài),因此為高阻態(tài)z。

(2)?5位的Mpr和3位的

溫馨提示

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

評論

0/150

提交評論