硬件描述語(yǔ)言verilog-HDL基礎(chǔ).ppt_第1頁(yè)
硬件描述語(yǔ)言verilog-HDL基礎(chǔ).ppt_第2頁(yè)
硬件描述語(yǔ)言verilog-HDL基礎(chǔ).ppt_第3頁(yè)
硬件描述語(yǔ)言verilog-HDL基礎(chǔ).ppt_第4頁(yè)
硬件描述語(yǔ)言verilog-HDL基礎(chǔ).ppt_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余297頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、Verilog HDL 基礎(chǔ) 第一部分 初級(jí)篇,第一講 Verilog 的基本概念,2020/8/7,2,硬件描述語(yǔ)言HDL(Hardware Description Language)是硬件設(shè)計(jì)人員和電子設(shè)計(jì)自動(dòng)化(EDA)工具之間的接口,其主要目的是用來編寫設(shè)計(jì)文件,建立電子系統(tǒng)行為級(jí)的仿真模型。,1.1 硬件描述語(yǔ)言HDL,2020/8/7,3,1.1 硬件描述語(yǔ)言HDL,硬件描述語(yǔ)言利用計(jì)算機(jī)的巨大能力對(duì)用HDL建模的復(fù)雜數(shù)字邏輯進(jìn)行仿真,然后再自動(dòng)綜合以生成符合要求且在電路結(jié)構(gòu)上可以實(shí)現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),根據(jù)網(wǎng)表和某種工藝的器件自動(dòng)生成具體電路然后生成該工藝條件下這種

2、具體電路的延時(shí)模型。仿真驗(yàn)證無誤后用于制造ASIC芯片或?qū)懭隒PLD和FPGA器件中。,2020/8/7,4,什么是硬件描述語(yǔ)言,具有特殊結(jié)構(gòu)能夠?qū)τ布壿嬰娐返墓δ苓M(jìn)行描述的一種高級(jí)編程語(yǔ)言 這種特殊結(jié)構(gòu)能夠: 描述電路的連接 描述電路的功能 在不同抽象級(jí)上描述電路 描述電路的時(shí)序 表達(dá)具有并行性 HDL主要有兩種:Verilog和VHDL Verilog起源于C語(yǔ)言,因此非常類似于C語(yǔ)言,容易掌握 VHDL格式嚴(yán)謹(jǐn) VHDL出現(xiàn)較晚,但標(biāo)準(zhǔn)化早。IEEE 1706-1985標(biāo)準(zhǔn)。,2020/8/7,5,為什么要使用硬件描述語(yǔ)言,電路的邏輯功能容易理解; 便于計(jì)算機(jī)對(duì)邏輯進(jìn)行分析處理; 把邏

3、輯設(shè)計(jì)與具體電路的實(shí)現(xiàn)分成兩個(gè)獨(dú)立的階段來操作; 邏輯設(shè)計(jì)與實(shí)現(xiàn)的工藝無關(guān); 邏輯設(shè)計(jì)的資源積累可以重復(fù)利用; 可以由多人共同更好更快地設(shè)計(jì)非常復(fù)雜的邏輯電路(幾十萬(wàn)門以上的邏輯系統(tǒng))。,2020/8/7,6,1.2 Verilog HDL 的歷史,1.2.1 什么是Verilog HDL Verilog HDL是硬件描述語(yǔ)言的一種,用于數(shù) 字電子系統(tǒng)設(shè)計(jì)。設(shè)計(jì)者可用它進(jìn)行各種級(jí)別的 邏輯設(shè)計(jì),可用它進(jìn)行數(shù)字邏輯系統(tǒng)的仿真驗(yàn) 證、時(shí)序分析、邏輯綜合。它是目前應(yīng)用最廣泛 的一種硬件描述語(yǔ)言。,2020/8/7,7,1.2 Verilog HDL 的歷史,1.2.2 Verilog HDL的產(chǎn)生及

4、發(fā)展 Verilog HDL是在1983年由GDA(GateWay Design Automation)公司的Phil Moorby所創(chuàng)。Phi Moorby后來成為Verilog-XL的主要設(shè)計(jì)者和Cadence公司的第一個(gè)合伙人。 在19841985年間,Moorby設(shè)計(jì)出了第一個(gè)Verilog-XL的仿真器。 1986年,Moorby提出了用于快速門級(jí)仿真的XL算法。 1990年,Cadence公司收購(gòu)了GDA公司 1991年,Cadence公司公開發(fā)表Verilog語(yǔ)言,成立了OVI(Open Verilog International)組織來負(fù)責(zé)Verilog HDL語(yǔ)言的發(fā)展。 1

5、995年制定了Verilog HDL的IEEE標(biāo)準(zhǔn),即IEEE1364。,2020/8/7,8,1.2 Verilog HDL 的歷史,2020/8/7,9,VHDL - 比VerilogHDL早幾年成為I EEE標(biāo)準(zhǔn); - 語(yǔ)法/結(jié)構(gòu)比較嚴(yán)格,因而編寫出的 模塊風(fēng)格比較清晰; - 比較適合由較多的設(shè)計(jì)人員合作完成 的特大型項(xiàng)目(一百萬(wàn)門以上)。,1.3 Verilog HDL 和 VHDL的比較,2020/8/7,10,Verilog HDL - 較多的第三方工具的支持 - 語(yǔ)法結(jié)構(gòu)比VHDL簡(jiǎn)單 - 學(xué)習(xí)起來比VHDL容易 - 仿真工具比較好使 - 測(cè)試激勵(lì)模塊容易編寫,1.3 Veril

6、og HDL 和 VHDL的比較,2020/8/7,11,1.3 Verilog HDL 和 VHDL的比較,2020/8/7,12,1.4 Verilog 目前的應(yīng)用情況和適用的設(shè)計(jì),Verilog的主要應(yīng)用包括: ASIC和FPGA工程師編寫可綜合的RTL代碼 高抽象級(jí)系統(tǒng)仿真進(jìn)行系統(tǒng)結(jié)構(gòu)開發(fā) 測(cè)試工程師用于編寫各種層次的測(cè)試程序 用于ASIC和FPGA單元或更高層次的模塊的模型開發(fā),2020/8/7,13,1.4 Verilog 目前的應(yīng)用情況和適用的設(shè)計(jì),Verilog 較為適合系統(tǒng)級(jí)(System)、算法 級(jí)(Alogrithem)、寄存器傳輸級(jí)(RTL)、邏輯 (Logic)、門級(jí)

7、(Gate)和電路開關(guān)級(jí)(Switch)的 設(shè)計(jì),而對(duì)于特大型(千萬(wàn)門級(jí)以上)的系 統(tǒng)級(jí)(System)設(shè)計(jì),則VHDL更為合適。,2020/8/7,14,1.5 采用 Verilog HDL 設(shè)計(jì)復(fù)雜數(shù)字電路的優(yōu)點(diǎn),1.5.1 傳統(tǒng)設(shè)計(jì)方法電路原理圖輸入法 采用電路原理圖輸入法進(jìn)行設(shè)計(jì),周期長(zhǎng)、需 要專門的設(shè)計(jì)工具、需手工布線等。這種低水平的 設(shè)計(jì)方法大大延長(zhǎng)了設(shè)計(jì)周期。,2020/8/7,15,采用Verilog輸入法,可以很容易地把完成的設(shè)計(jì) 移植到不同廠家的不同芯片中去,并在不同規(guī)模應(yīng)用 時(shí)可以較容易地作修改。 采用Verilog輸入法最大的優(yōu)點(diǎn)是其與工藝無關(guān) 性。實(shí)際上這是利用了計(jì)算

8、機(jī)的巨大能力并在EDA工 具幫助下,把邏輯驗(yàn)證與具體工藝庫(kù)匹配、布線即時(shí) 延計(jì)算分成不同的階段來實(shí)現(xiàn),從而減輕了人們的繁 瑣勞動(dòng)。,1.5.2 Verilog HDL 設(shè)計(jì)法與傳統(tǒng)的電路原理圖輸入法的比較,2020/8/7,16,1.5 采用 Verilog HDL 設(shè)計(jì)復(fù)雜數(shù)字電路的優(yōu)點(diǎn),1.5.3 Verilog 的標(biāo)準(zhǔn)化與軟核的重用 Verilog 是在1983年由GDA公司首先開發(fā)成功的,經(jīng) 過諸多改進(jìn),于1995年11月正式被批準(zhǔn)為Verilog IEEE1363 1995標(biāo)準(zhǔn),又于2001年3月在原標(biāo)準(zhǔn)的基礎(chǔ)上經(jīng)過改進(jìn)和 補(bǔ)充推出Verilog IEEE13642001新標(biāo)準(zhǔn)。 由

9、于Verilog HDL設(shè)計(jì)方法與工藝無關(guān)性,因而大 大提高了Verilog 模型的可重用性。我們把功能經(jīng)過驗(yàn)證的、 可綜合的、實(shí)現(xiàn)后電路結(jié)構(gòu)總門數(shù)在5000門以上的Verilog HDL模型稱之為“軟核”(Softcore),而把由軟核構(gòu)成的器件成 為虛擬器件。利用軟核和虛擬器件的可重復(fù)利用的特性就可 大大縮短設(shè)計(jì)周期,加快了復(fù)雜電路的設(shè)計(jì)。,2020/8/7,17,1.5.4 軟核、固核和硬核的概念以及它 們的重用,顯而易見,在具體實(shí)現(xiàn)手段和工藝技術(shù)尚未確定的邏輯設(shè)計(jì)階段,軟核具有最大的靈活性。而近年來電路實(shí)現(xiàn)工藝技術(shù)的發(fā)展是相當(dāng)迅速的,為了邏輯電路設(shè)計(jì)成果的積累,和更快更好地設(shè)計(jì)更大規(guī)模

10、的電路,發(fā)展軟核的設(shè)計(jì)和推廣軟核的重用技術(shù)是非常有必要的。,把在某一種專用半導(dǎo)體集成電路工藝的(ASIC)器件上實(shí)現(xiàn)的經(jīng)驗(yàn)證是正確的總門數(shù)在5000門以上的電路結(jié)構(gòu)掩膜,稱之為“硬核”。,把在某一種現(xiàn)場(chǎng)可編程門陣列(FPGA)器件上實(shí)現(xiàn) 的,經(jīng)驗(yàn)證是正確的總門數(shù)在5000門以上電路結(jié)構(gòu)編碼文件,稱之為“固核”。,2020/8/7,18,1.6 Verilog HDL 的設(shè)計(jì)流程簡(jiǎn)介,自頂向下的設(shè)計(jì)是從系 統(tǒng)級(jí)開始,把系統(tǒng)級(jí)劃分為 若干個(gè)基本單元,然后再把 每個(gè)基本單元?jiǎng)澐譃橄乱粚?次的基本單元,一直這樣做 下去,直到可以直接用EDA 元件庫(kù)的基本元件來實(shí)現(xiàn)為 止圖1.1.3為自頂向下(Top-

11、 Down)的示意圖,以設(shè)計(jì)樹 的形式繪出。,1.6.1 自頂向下(Top-Down)設(shè)計(jì)的基本概念,圖 1.1.3 Top-Down 設(shè)計(jì)思想,2020/8/7,19,1.6 Verilog HDL 的設(shè)計(jì)流程簡(jiǎn)介,1.6.2 層次管理的基本概念 復(fù)雜數(shù)字邏輯電路和系統(tǒng)的層次化、結(jié)構(gòu)化設(shè)計(jì)隱含著硬件設(shè)計(jì)方案的逐次分解。完整的硬件設(shè)計(jì)可以由圖1.1.3所示的設(shè)計(jì)樹描述。在這個(gè)設(shè)計(jì)樹上,節(jié)點(diǎn)對(duì)應(yīng)著該層次上基本單元的行為描述,樹枝對(duì)應(yīng)著基本單元的結(jié)構(gòu)分解。在不同的層次都可以進(jìn)行仿真以對(duì)設(shè)計(jì)思想進(jìn)行驗(yàn)證。EDA工具提供了有效的手段來管理錯(cuò)綜復(fù)雜的層次,即可以很方便地查看某一層次某模塊的源代碼或電路圖

12、以改正仿真時(shí)發(fā)現(xiàn)的錯(cuò)誤。,2020/8/7,20,1.6.3 具體模塊的設(shè)計(jì)編譯和仿真的過程,1.6 Verilog HDL 的設(shè)計(jì)流程簡(jiǎn)介,從左圖可以看出,模塊設(shè)計(jì)流程主要由兩大主要功能部分組成: 1)設(shè)計(jì)開發(fā):即從編寫設(shè)計(jì)文件綜合到布局布線投片生成這樣一系列步驟。 2)設(shè)計(jì)驗(yàn)證:也就是進(jìn)行各種仿真的一系列步驟,如果在仿真過程中發(fā)現(xiàn)問題就返回設(shè)計(jì)輸入進(jìn)行修改。,2020/8/7,21,1.6 Verilog HDL 的設(shè)計(jì)流程簡(jiǎn)介,1.6.4 對(duì)應(yīng)具體工藝器件的優(yōu)化、映象和布局布線 由于各種ASIC和FPFA器件的工藝各不相同,因而當(dāng)用不同廠家的不同器件來實(shí)現(xiàn)已驗(yàn)證的邏輯網(wǎng)表(EDIF文件)

13、時(shí),就需要不同的基本單元庫(kù)與布線延遲模型與之對(duì)應(yīng)才能進(jìn)行準(zhǔn)確的優(yōu)化、映象、和布局布線。基本單元庫(kù)與布線延遲模型由熟悉本廠工藝的工程師提供,再由EDA廠商的工程師編入相應(yīng)的處理程序,而邏輯電路設(shè)計(jì)師只需用一文件說明所用的工藝器件和約束條件,EDA工具就會(huì)自動(dòng)地根據(jù)這一文件選擇相應(yīng)的庫(kù)和模型進(jìn)行準(zhǔn)確的處理從而大大提高設(shè)計(jì)效率。,2020/8/7,22,1.7 小結(jié),掌握HDL設(shè)計(jì)方法應(yīng)從學(xué)習(xí)Verilog HDL設(shè)計(jì)方法開始。 由于Top-Down的設(shè)計(jì)方法是首先從系統(tǒng)設(shè)計(jì)入手的,因而從頂層進(jìn)行功能劃分和結(jié)構(gòu)設(shè)計(jì)。系統(tǒng)的總體仿真是頂層進(jìn)行功能化分的重要環(huán)節(jié),這時(shí)的設(shè)計(jì)與工藝無關(guān)。 從底向上的設(shè)計(jì)在

14、某種意義上講是Top-Down設(shè)計(jì)的逆過程。,Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程,第二講 Verilog 語(yǔ)法的基本概念,2020/8/7,24,概述,Verilog既是一種行為描述的語(yǔ)言也是一種結(jié)構(gòu)描述語(yǔ)言。Verilog模型可以是實(shí)際電路的不同級(jí)別的抽象。這些抽象的級(jí)別包括: 系統(tǒng)級(jí)(system):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模型。 算法級(jí)(algorithm):用高級(jí)語(yǔ)言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。 RTL級(jí)(Register Transfer Level):描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理、控制這些數(shù)據(jù)流動(dòng)的模型。 以上三種都屬于行為描述,只有RTL級(jí)才與邏輯電路有明確的對(duì)應(yīng)關(guān)

15、系。 門級(jí)(gate-level):描述邏輯門以及邏輯門之間的連接的模型。 開關(guān)級(jí)(switch-level):描述器件中三極管和儲(chǔ)存節(jié)點(diǎn)以及它們之間連接的模型。,2020/8/7,25,Verilog HDL行為描述語(yǔ)言具有以下功能: 可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。 用延遲表達(dá)式或事件表達(dá)式來明確地控制過程的啟動(dòng)時(shí)間。 通過命名的事件來觸發(fā)其它過程里的激活行為或停止行為。 提供了條件如if-else、case、循環(huán)程序結(jié)構(gòu)。 提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)(task)程序結(jié)構(gòu)。 提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。 提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位

16、運(yùn)算符。 Verilog HDL語(yǔ)言作為一種結(jié)構(gòu)化的語(yǔ)言也非常適合于門級(jí)和開關(guān)級(jí)的模型設(shè)計(jì)。,概述,2020/8/7,26,概述,因其結(jié)構(gòu)化的特點(diǎn)又使它具有以下功能: 提供了一套完整的表示組合邏輯的基本元件的原語(yǔ)(primitive); 提供了雙向通路(總線)和電阻器件的原語(yǔ); 可建立MOS器件的電荷分享和電荷衰減動(dòng)態(tài)模型。,2020/8/7,27,2.1 Verilog 模塊的基本概念,下面先介紹幾個(gè)簡(jiǎn)單的Verilog HDL 程序,從中了解Verilog模塊的特性 【例 2.1】 module muxtwo (out, a, b, sl); input a,b,sl; output ou

17、t; reg out; always (sl or a or b) if (! sl) out = a; else out = b; endmodule,a,b,sl,out,2020/8/7,28,2.1 Verilog 模塊的基本概念,MUX(多路選擇器)的行為可以描述為:只要信號(hào)a或b或sl發(fā)生變化,如果sl為0則選擇a輸出;否則選擇b輸出。 這個(gè)行為的描述并沒有說明如果輸入 a 或 b是三態(tài)的(高阻時(shí))輸出應(yīng)該是什么,但有具體結(jié)構(gòu)的真實(shí)電路是有一定的輸出的。 沒有考慮延時(shí)問題,2020/8/7,29,2.1 Verilog 模塊的基本概念,【例2.2】,module twomux (o

18、ut, a, b, sl); input a, b, sl; output out; not u1 (nsl, sl ); and #1 u2 (sela, a, nsel); and #1 u3 (selb, b, sl); or #2 u4 (out, sela, selb); endmodule,MUX的結(jié)構(gòu)級(jí)描述,采用Verilog基本單元(門)描述。描述中含有傳輸延時(shí)。,2020/8/7,30,2.1 Verilog 模塊的基本概念,【例 2.3】 module adder ( count,sum,a,b,cin ); input 2:0 a,b; input cin; output

19、 count; output 2:0 sum; assign count,sum=a+b+cin; endmodule,這個(gè)例子描述了一個(gè)三位的加法器。從例子中可以看出,整個(gè)Verilog HDL程序是位于module和endmodule聲明語(yǔ)句之間的,2020/8/7,31,2.1 Verilog 模塊的基本概念,【例 2.4】 module compare ( equal,a,b ); output equal; /聲明輸出信號(hào)equal input 1:0 a,b; /聲明輸入信號(hào)a,b assign equal=(a=b)?1:0; /*如果兩個(gè)輸入信號(hào)相等則輸出為1。否則輸出為0*/

20、 endmodule,這個(gè)程序描述了一個(gè)比較器.在這個(gè)程中,/*.*/和/.表示注釋部分,注釋只是為了方便程序員理解程序,對(duì)編譯是不起作用的。,2020/8/7,32,【例2.5】 module trist2(out,in,enable); output out; input in ,enable; bufil1 mybuf(out,in,enable); endmodule,2.1 Verilog 模塊的基本概念,程序通過調(diào)用一個(gè)在Verilog語(yǔ)言提供的原語(yǔ)庫(kù)中現(xiàn)存的三態(tài)驅(qū)動(dòng)器元件bufil1來實(shí)現(xiàn)其邏輯功能。這個(gè)調(diào)用過程也稱為庫(kù)元件bufif1的實(shí)例化,在本模塊中它被具體化為mybuf.

21、,33,【例2.6】 module trist1(sout,sin,ena); output sout; input sin,ena; mytri tri_inst(.out(sout),.in(sin),.enable(ena); /調(diào)用由mytri模塊定義的實(shí)例元件tri_inst,即把已定義的模塊myfri在本模塊中具體化為tri_inst endmodule module mytri(out,in,enable); output out; input in,enable; assign out=enable?in:bz; endmodule,2.1 Verilog 模塊的基本概念,20

22、20/8/7,34,2.2 Verilog 用于模塊的測(cè)試,如何檢查上述例子其功能是否正確? 需要有測(cè)試激勵(lì)信號(hào)輸入到被測(cè)模塊 需要記錄被測(cè)模塊的輸出信號(hào) 需要把用功能和行為描述的Verilog模塊轉(zhuǎn)換為門級(jí)電路互連的電路結(jié)構(gòu)(綜合)。 需要對(duì)已經(jīng)轉(zhuǎn)換為門級(jí)電路結(jié)構(gòu)的邏輯進(jìn)行測(cè)試(門級(jí)電路仿真)。 需要對(duì)布局布線后的電路結(jié)構(gòu)進(jìn)行測(cè)試。 (布局布線后仿真)。,35,2.2 Verilog 用于模塊的測(cè)試,36,2.3 小結(jié),通過上面的例子可以看到: (1)Verilog HDL程序是由模塊構(gòu)成的。每個(gè)模塊的內(nèi)容都是位于module和endmodule兩個(gè)語(yǔ)句之間。每個(gè)模塊實(shí)現(xiàn)特定的功能。 (2)

23、模塊是可以進(jìn)行層次嵌套的。 (3)每個(gè)模塊要進(jìn)行端口定義,并說明輸入輸出口,然后對(duì)模塊的功能進(jìn)行描述。 (4)Verilog HDL程序的書寫格式自由,一行可以寫幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句也可以分寫多行。 (5)除了endmodule語(yǔ)句外,每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有分號(hào)。 (6)可以用/*.*/和/.對(duì)Verilog HDL程序的任何部分作注釋。一個(gè)好的,有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增強(qiáng)程序的可讀性和可維護(hù)性。,Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程,第三講 常用Verilog 語(yǔ)法之一,3.1 模塊的結(jié)構(gòu),Verilog的基本設(shè)計(jì)單元是“模塊”(block) 。一個(gè)模塊是由兩部分 組成

24、的,一部分描述接口,另一部分描述邏輯功能,即定義輸入是 如何影響輸出的。 module block1(a, b, c, d); input a, b; output c, d; assign c = a | b; assign d = a endmodule,a,b,c,d,Verilog 模塊的結(jié)構(gòu)由在module和endmodule 關(guān) 鍵詞之間的四個(gè)主要部分組成: - 端口定義: module block1(a, b, c, d ); - I/O說明 : input a, b, c ; output d ; - 內(nèi)部信號(hào)聲明: wire x; - 功能定義: assign d = a |

25、 x ; assign x = ( b endmodule,3.1 模塊的結(jié)構(gòu),3.1 模塊的結(jié)構(gòu),3.1.1 模塊的端口定義 模塊的端口聲明了模塊的輸入輸出口。其格式如下: module 模塊名(口1,口2,口3,口4, ); 3.1.2 模塊內(nèi)容 模塊的內(nèi)容包括I/O說明、內(nèi)部信號(hào)聲明、功能定義。 I/O說明的格式 輸入口: input信號(hào)位寬1:0 端口名1; input信號(hào)位寬1:0 端口名2; input信號(hào)位寬1:0 端口名i; /(共有i個(gè)輸入口),3.1 模塊的結(jié)構(gòu),輸出口 output信號(hào)位寬1:0 端口名1; output信號(hào)位寬1:0 端口名2; output信號(hào)位寬1:

26、0 端口名j; /(共有j個(gè)輸出口) 輸入/輸出口: inout信號(hào)位寬1:0 端口名1; inout信號(hào)位寬1:0 端口名2; inout信號(hào)位寬1:0 端口名k; /(共有k個(gè)雙向總線端口) I/O說明也可以寫在端口聲明語(yǔ)句里。其格式如下: module module_name(input port1,input port2, output port1,output port2 );,3.1 模塊的結(jié)構(gòu),內(nèi)部信號(hào)說明 在模塊內(nèi)用到的和與端口有關(guān)的wire 和 reg 變量的聲明。 如: reg width-1 : 0 R變量1,R變量2 ; wire width-1 : 0 W變量1,W變

27、量2 ; ,3.1 模塊的結(jié)構(gòu),功能定義 模塊中最重要的部分是邏輯功能定義部分。有三種方法可在 模塊中產(chǎn)生邏輯。 - 用 assign 語(yǔ)句(數(shù)據(jù)流描述): assign a = b end,3.1 模塊的結(jié)構(gòu),3.1.3 理解要點(diǎn) 如在模塊中邏輯功能由下面三個(gè)語(yǔ)句塊組成 : assign cs = ( a0 end 三條語(yǔ)句是并行的,它們產(chǎn)生獨(dú)立的邏輯電路; 而在 always 塊中: begin 與 end 之間是順序執(zhí)行的。,3.2 數(shù)據(jù)類型及其常量及變量,3.2.1.常量 在程序運(yùn)行過程中,其值不能被改變的量稱為常量。 一數(shù)字 整數(shù)。在Verilog HDL中,整型常量即整常數(shù)有以下四

28、種進(jìn)制表示形式: 1) 二進(jìn)制整數(shù)(b或B) 2) 十進(jìn)制整數(shù)(d或D) 3) 十六進(jìn)制整數(shù)(h或H) 4) 八進(jìn)制整數(shù)(o或O) 數(shù)字表達(dá)方式有以下三種: 1) 這是一種全面的描述方式。 2) 在這種描述方式中,數(shù)字的位寬采用缺省位寬 (這由具體的機(jī)器系統(tǒng)決定,但至少32位)。 3) 在這種描述方式中,采用缺省進(jìn)制十進(jìn)制。,3.1.2 數(shù)值 1. Verilog HDL中的數(shù)值可取下面的四類值:,Verilog HDL中有兩類數(shù)值常量 整型數(shù)和實(shí)型數(shù),下劃線符號(hào)“_”除了不能放于數(shù)值的首位以外,可以隨意用在整型數(shù)與實(shí)型數(shù)中,他們對(duì)數(shù)值的大小沒有任何改變,只是為了提高可讀性。 1)整型數(shù)及其表

29、示 Verilog HDL的整數(shù)可以使二進(jìn)制(b或B)、十進(jìn)制(d或D)、十六進(jìn)制(h或H)與八進(jìn)制(o或O),有下面三種書寫形式 (1)簡(jiǎn)單的十進(jìn)制格式; (2)缺省位寬的基數(shù)格式; (3)指定位寬的基數(shù)格式。,Verilog HDL中有兩類數(shù)值常量 整型數(shù)和實(shí)型數(shù),()簡(jiǎn)單的十進(jìn)制格式: 用的數(shù)字串組成的十進(jìn)制數(shù),可以用符號(hào)“”或“”來表示數(shù)的正負(fù) ()缺省位寬的基數(shù)格式; 表示形式為: 符號(hào)“”為基數(shù)格式表示的固有字符,該字符不能省略,否則為非法表示形式;參數(shù)用于說明數(shù)值采用的進(jìn)制格式;參數(shù)為相應(yīng)進(jìn)制格式下的一串?dāng)?shù)字這種格式未指定位寬,其缺省值至少為位 ()指定位寬的基數(shù)格式: 表示形式

30、為:sizebase_formatnumber 參數(shù)size用來指定所表示數(shù)字的位寬當(dāng)位寬小于數(shù)值的實(shí)際大小時(shí),相應(yīng)的高位部分被忽略;當(dāng)位寬大于數(shù)值的實(shí)際位數(shù),且數(shù)值的最高位是或時(shí),相應(yīng)的高位部分補(bǔ);而當(dāng)位寬大于數(shù)值的實(shí)際位數(shù),但數(shù)值的最高位是x或z時(shí),相應(yīng)的高位部分補(bǔ)或,Verilog HDL中有兩類數(shù)值常量 整型數(shù)和實(shí)型數(shù),基數(shù)符號(hào)及其合法的表示值,Verilog HDL中有兩類數(shù)值常量 整型數(shù)和實(shí)型數(shù),例;三種格式的整數(shù)表示法,15(十進(jìn)制15)簡(jiǎn)單的十進(jìn)制 h15(十進(jìn)制21,十六進(jìn)制15)缺省位寬的十六進(jìn)制 5b10011(十進(jìn)制19,二進(jìn)制10011)位的二進(jìn)制 12h01F(十進(jìn)

31、制31,十六進(jìn)制01F)位的十六進(jìn)制,Verilog HDL中有兩類數(shù)值常量 整型數(shù)和實(shí)型數(shù),Verilog HDL中的實(shí)數(shù)可以用十進(jìn)制與科學(xué)計(jì)數(shù)法兩種格式來表示,如果采用十進(jìn)制格式,小數(shù)點(diǎn)兩邊必須都有數(shù)字,否則為非法的表示形式 實(shí)數(shù)表示法的實(shí)例 1.8 /十進(jìn)制計(jì)數(shù)法 3.8e10 /科學(xué)計(jì)數(shù)法 2.1E-9 /科學(xué)計(jì)數(shù)法可用e或E表示,其結(jié)果相同 3_2387.3398_3047 /使用下劃線提高可讀性 3. /非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù) .2e6 /非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù) .12 /非法表示,小數(shù)點(diǎn)兩遍都必須有數(shù),實(shí)型數(shù)及其表示,Verilog HDL中有兩類數(shù)值常量 整型數(shù)

32、和實(shí)型數(shù),3.2 數(shù)據(jù)類型及其常量及變量,x和z值。 在數(shù)字電路中,x代表不定值,z代表高阻值。一個(gè)x可以用來定義十六進(jìn)制數(shù)的4位二進(jìn)制數(shù)的狀態(tài),八進(jìn)制數(shù)的3位,二進(jìn)制數(shù)的1位。z的表示方式同x類似。z還有一種表達(dá)方式是可以寫作“?”。,3.2 數(shù)據(jù)類型及其常量及變量,負(fù)數(shù)。一個(gè)數(shù)字可以被定義為負(fù)數(shù),只需在位寬表達(dá)式前加一個(gè)減號(hào),減號(hào) 必須寫在數(shù)字定義表達(dá)式的最前面。注意減號(hào)不可以放在位寬和進(jìn)制之間也不 可以放在進(jìn)制和具體的數(shù)之間。 -8d5 /這個(gè)表達(dá)式代表5的補(bǔ)數(shù)(用八位二進(jìn)制數(shù)表示) 8d-5 /非法格式 下畫線(underscore_)。下劃線可以用來分隔開數(shù)的表達(dá)以提高程序可 讀性。

33、但不可以用在位寬和進(jìn)制處,只能用在具體的數(shù)字之間。 16b1010_1011_1111_1010 /合法格式 8b_0011_1010 /非法格式 當(dāng)常量不說明位數(shù)時(shí),默認(rèn)值是32位,每個(gè)字母用8位的ASCII值表示。,3.2 數(shù)據(jù)類型及其常量及變量,二參數(shù)(parameter)型 用參數(shù)聲明一個(gè)可變常量,常用于定義延時(shí)及寬度變量。 參數(shù)定義的語(yǔ)法:parameter ; 可一次定義多個(gè)參數(shù),用逗號(hào)隔開。 在使用文字(literal)的地方都可以使用參數(shù)。 參數(shù)的定義是局部的,只在當(dāng)前模塊中有效。 參數(shù)定義可使用以前定義的整數(shù)和實(shí)數(shù)參數(shù)。,module mod1( out, in1, in2)

34、; . . . parameter cycle = 20, prop_ del = 3, setup = cycle/2 - prop_del, p1 = 8, x_ word = 16bx, file = / usr1/ jdough/ design/ mem_ file. dat; . . . wire p1: 0 w1; / A wire declaration using parameter . . . endmodule,注意:參數(shù)file不是string,而是一個(gè)整數(shù),其值是所有字母的擴(kuò)展ASCII值。若file=“AB”,則file值為8h4142。用法: $fopen(file

35、); $display(“%s”, file);,3.2 數(shù)據(jù)類型及其常量及變量,3.2.2 變量 變量即在程序運(yùn)行過程中其值可以改變的量。常用的網(wǎng)絡(luò)數(shù)據(jù)類型包括wire 型和tri型。wire型變量通常是用來表示單個(gè)門驅(qū)動(dòng)或連續(xù)賦值語(yǔ)句驅(qū)動(dòng)的網(wǎng)絡(luò) 型數(shù)據(jù),tri型變量則用來表示多驅(qū)動(dòng)器驅(qū)動(dòng)的網(wǎng)絡(luò)型數(shù)據(jù)。 表 1.3.1 Wire/tri 變量的真值,3.2 數(shù)據(jù)類型及其常量及變量,一 wire型 wire型數(shù)據(jù)常用來表示用于以assign關(guān)鍵字指定的組合邏輯信號(hào)。 Verilog程序模塊中輸入輸出信號(hào)類型缺省時(shí)自動(dòng)定義為wire型。其格式 如下: wire n-1:0 數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)

36、據(jù)名i; /共有i條總線,每條總 線內(nèi)有n條線路,或 wire n:1 數(shù)據(jù)名1,數(shù)據(jù)名2,數(shù)據(jù)名i;,3.2 數(shù)據(jù)類型及其常量及變量,二 reg型 寄存器是數(shù)據(jù)儲(chǔ)存單元的抽象。寄存器數(shù)據(jù)類型的關(guān)鍵字是 reg。 reg類型數(shù)據(jù)的默認(rèn)初始值為不定值x。 reg型數(shù)據(jù)常用來表示用于“always”模塊內(nèi)的指定信號(hào),常代 表觸發(fā)器。在“always”塊內(nèi)被賦值的每一個(gè)信號(hào)都必須定義成 reg型。 reg型數(shù)據(jù)的格式如下: reg n-1:0 數(shù)據(jù)名1,數(shù)據(jù)名2, 數(shù)據(jù)名i; 或 reg n:1 數(shù)據(jù)名1,數(shù)據(jù)名2, 數(shù)據(jù)名i;,module top; wire y; reg a, b; DUT u

37、1(y,a,b); initial begin a = 0; b = 0; #10 a =1; . end endmodule,module DUT(Y, A, B_); output Y; input A,B: wire Y, A, B; and (Y, A, B); endmodule,舉例說明數(shù)據(jù)類型的選擇,輸入口(input)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。 輸出口 (output)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。 輸入/輸出口(inout)只可以由網(wǎng)絡(luò)連接驅(qū)動(dòng),它本身也只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。 如果信號(hào)變量是在過程塊 (initial塊 或 al

38、ways塊)中被賦值的,必須把它聲明為寄存器類型變量,如何選擇正確的數(shù)據(jù)類型?,如何選擇正確的數(shù)據(jù)類型,module top; wire y; reg a, b; DUT u1 (y, a, b) ; initial begin a = 0; b = 0; #5 a = 1; end endmodule,module DUT (Y, A, B); output Y; input A, B; wire Y, A, B; and (Y, A, B) ; endmodule,輸入端口可以由net/register驅(qū)動(dòng),但輸入端口只能是net,輸出端口可以是net/register類型,輸出端口只能驅(qū)

39、動(dòng)net,在過程塊中只能給register類型賦值,若Y,A,B說明為reg則會(huì)產(chǎn)生錯(cuò)誤。,in1,in2,O,A,B,Y,雙向端口輸入/輸出只能是net類型,選擇數(shù)據(jù)類型時(shí)常犯的錯(cuò)誤舉例,修改前: module example(o1, o2, a, b, c, d); input a, b, c, d; output o1, o2; reg c, d; reg o2 and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0; endmodule,修改后: module example(o1, o2, a, b, c, d); i

40、nput a, b, c, d; output o1, o2; / reg c, d; / reg o2 reg o1; and u1(o2, c, d); always (a or b) if (a) o1 = b; else o1 = 0; endmodule,example.v,選擇數(shù)據(jù)類型時(shí)常犯的錯(cuò)誤舉例,Compiling source file example.v Error! Illegal left-hand-side assignment Verilog-ILHSA example.v, 11: o1 = b; Error! Illegal left-hand-side as

41、signment Verilog-ILHSA example.v, 12: o1 = 0; 2 errors,第一次編譯信息 verilog c example.v,第二次編譯信息,Compiling source file example.v Error! Incompatible declaration, (c) defined as input at line 2 Verilog-IDDIL example.v, 5: Error! Incompatible declaration, (d) defined as input at line 2 Verilog-IDDIL example

42、.v, 5: Error! Gate (u1) has illegal output specification Verilog-GHIOS example.v, 8: 3 errors,3.2 數(shù)據(jù)類型及其常量及變量,三 memory型 Verilog HDL通過對(duì)reg型變量建立數(shù)組來對(duì)存儲(chǔ)器建模,可以描述 RAM型存儲(chǔ)器,ROM存儲(chǔ)器和reg文件。數(shù)組中的每一個(gè)單元通過一個(gè) 數(shù)組索引進(jìn)行尋址。在Verilog語(yǔ)言中沒有多維數(shù)組存在。 memory型數(shù) 據(jù)是通過擴(kuò)展reg型數(shù)據(jù)的地址范圍來生成的。其格式如下: reg n-1:0 存儲(chǔ)器名m-1:0; 或 reg n-1:0 存儲(chǔ)器名m:1

43、;,3.3 運(yùn)算符及表達(dá)式,Verilog HDL語(yǔ)言的運(yùn)算符范圍很廣,其運(yùn)算符按其功能可分為以下幾類:,3.3 運(yùn)算符及表達(dá)式,在Verilog HDL語(yǔ)言中運(yùn)算符所帶的操作數(shù)是不同的,按其所帶 操作數(shù)的個(gè)數(shù)運(yùn)算符可分為三種: 1) 單目運(yùn)算符(unary operator):可以帶一個(gè)操作數(shù),操作數(shù)放在運(yùn)算符的右邊。 2) 二目運(yùn)算符(binary operator):可以帶二個(gè)操作數(shù),操作數(shù)放在運(yùn)算符的兩邊。 3) 三目運(yùn)算符(ternary operator):可以帶三個(gè)操作,這三個(gè)操作數(shù)用三目運(yùn)算符 分隔開。 見下例: clock = clock; / 是一個(gè)單目取反運(yùn)算符, clo

44、ck是操作數(shù)。 c = a | b; / 是一個(gè)二目按位或運(yùn)算符, a 和 b是操作數(shù)。 r = s ? t : u; / ?: 是一個(gè)三目條件運(yùn)算符, s,t,u是操作數(shù)。,3.3 運(yùn)算符及表達(dá)式,3.3.1.基本的算術(shù)運(yùn)算符,+ 加 - 減 * 乘 / 除 % 模,將負(fù)數(shù)賦值給reg或其它無符號(hào)變量使用2的補(bǔ)碼算術(shù)。 如果操作數(shù)的某一位是x或z,則結(jié)果為x 在整數(shù)除法中,余數(shù)舍棄 模運(yùn)算中使用第一個(gè)操作數(shù)的符號(hào),module arithops (); parameter five = 5; integer ans, int; reg 3: 0 rega, regb; reg 3: 0 nu

45、m; initial begin rega = 3; regb = 4b1010; int = -3; /int = 11111111_1101 end initial fork #10 ans = five * int; / ans = -15 #20 ans = (int + 5)/ 2; / ans = 1 #30 ans = five/ int; / ans = -1 #40 num = rega + regb; / num = 1101 #50 num = rega + 1; / num = 0100 #60 num = int; / num = 1101 #70 num = reg

46、b % rega; / num = 1 #80 $finish; join endmodule,注意integer和reg類型在算術(shù)運(yùn)算時(shí)的差別。integer是有符號(hào)數(shù),而reg是無符號(hào)數(shù)。,3.3 運(yùn)算符及表達(dá)式,3.3.2.位運(yùn)算符, not reg 3: 0 rega, regb, regc; reg 3: 0 num; initial begin rega = 4b1001; regb = 4b1010; regc = 4b11x0; end initial fork #10 num = rega join endmodule,五類按位操作符的運(yùn)算規(guī)則,五類按位操作符的運(yùn)算規(guī)則,mo

47、dule bitTest; reg3: 0a,b,c; initial begin a=4b1100;b=4b0011;c=4,b0101; $displayb(a); /按位非運(yùn)算符,結(jié)果為4b0011 $displayb(a /按位異或非運(yùn)算符,結(jié)果為4b0110 end endmodule,按位運(yùn)算的例子,3.3 運(yùn)算符及表達(dá)式,3.3.2.位運(yùn)算符,當(dāng)兩個(gè)操作數(shù)位數(shù)不同時(shí),位數(shù) 少的操作數(shù)零擴(kuò)展到相同位數(shù)。,a = 4b1011; b = 8b01010011; c = a | b; / a零擴(kuò)展為 8b00001011, 位運(yùn)算符中除了是單目運(yùn)算符以外,均為二目運(yùn)算符,即要求運(yùn)算符兩

48、側(cè)各有一個(gè)操作數(shù). 位運(yùn)算符中的二目運(yùn)算符要求對(duì)兩個(gè)操作數(shù)的相應(yīng)位進(jìn)行運(yùn)算操作。,Verilog 數(shù)字系統(tǒng)設(shè)計(jì)教程,第四講 常用 Verilog 語(yǔ)法之二,4.1 邏輯運(yùn)算符,!not parameter five = 5; reg ans; reg 3: 0 rega, regb, regc; initial begin rega = 4b0011; /邏輯值為“1” regb = 4b10 xz; /邏輯值為“1” regc = 4b0z0 x; /邏輯值為“x” end initial fork #10 ans = rega join endmodule,Verilog HDL提供了三種

49、邏輯運(yùn)算符: 邏輯與運(yùn)算符: reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b0 x10; end initial fork #10 val = regc rega ; / val = x #20 val = regb = rega ; / val = 1 #40 val = regb regc ; / val = 1 #50 $finish; join endmodule,rega和regc的關(guān)系取決于x,無論x為何值,regbregc,其結(jié)果是1b1、1b0或1

50、bx。,4.3 等式運(yùn)算符,賦值操作符,將等式右邊表達(dá)式的值拷貝到左邊。,邏輯等,case等,a = 2b1x; b = 2b1x; if (a = b) $display( a is equal to b); else $display( a is not equal to b);,a = 2b1x; b = 2b1x; if (a = b) $display( a is identical to b); else $display( a is not identical to b);,注意邏輯等與 case等的差別,2b1x=2b0 x 值為0,因?yàn)椴幌嗟?2b1x=2b1x 值為x,因?yàn)?/p>

51、可能不相等,也可能相等,2b1x=2b0 x 值為0,因?yàn)椴幌嗤?2b1x=2b1x 值為1,因?yàn)橄嗤?4.3 等式運(yùn)算符,= 邏輯等 ! = 邏輯不等,其結(jié)果是1b1、1b0或1bx。 如果左邊及右邊為確定值并且相等,則結(jié)果為1。 如果左邊及右邊為確定值并且不相等,則結(jié)果為0。 如果左邊及右邊有值不能確定的位,但值確定的位相等,則結(jié)果為x。 !=的結(jié)果與= =相反,值確定是指所有的位為0或1。不確定值是有值為x或z的位。,module equalities1(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011;

52、 regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb != regc; / val = x #40 val = regc = regc; / val = x #50 $finish; join endmodule,module equTest; reg3: 0a,b,c,d,e,f; initial begin a=4;b=7; /缺省值為十進(jìn)制數(shù) c=4b010; d=4bx10; e=

53、4bx101; f=4bxx01; $displayb(c); /輸出0010 $displayb(d); /輸出xx10 $displayb(a=b); /相等運(yùn)算符,結(jié)果為0 $displayb(c !=d); /不相等運(yùn)算符,結(jié)果為x $displayb(c !=f); /不相等運(yùn)算符,結(jié)果為1 $displayb(d=e); /全等運(yùn)算符,結(jié)果為0 $displayb(c !=d); /非全等運(yùn)算符,結(jié)果為1 end endmodule,相等關(guān)系運(yùn)算符的例子,4.3 等式運(yùn)算符,= 相同(case等) ! = 不相同(case不等),其結(jié)果是1b1、1b0或1bx。 如果左邊及右邊的值

54、相同(包括x、z),則結(jié)果為1。 如果左邊及右邊的值不相同,則結(jié)果為0。 !=的結(jié)果與 = 相反,綜合工具不支持,module equalities2(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb = regc; / val = 0 #40 val

55、= regc = regc; / val = 1 #50 $finish; join endmodule,4.4 移位運(yùn)算符,邏輯右移 邏輯左移,移位操作符對(duì)其左邊的操作數(shù)進(jìn)行向左或向右的位移位操作。 第二個(gè)操作數(shù)(移位位數(shù))是無符號(hào)數(shù) 若第二個(gè)操作數(shù)是x或z則結(jié)果為x, 將左邊的操作數(shù)右移右邊操作數(shù)指定的位數(shù),在賦值語(yǔ)句中,如果右邊(RHS)的結(jié)果: 位寬大于左邊,則把最高位截去 位寬小于左邊,則零擴(kuò)展,module shift (); reg 9: 0 num, num1; reg 7: 0 rega, regb; initial rega = 8b00001100; initial fo

56、rk #10 num 3; / num = 00_0000_0001 #20 regb 3 ; / regb = 0000_0001 #30 num 2; /rega = 1111_1100 #50 num1 2;/num1=00_1111_1100 #60 $finish; join endmodule,建議:表達(dá)式左右位數(shù)一致,4.5 位拼接運(yùn)算符,位拼接還可以用嵌套的方式來表達(dá)。 b,3a,b /這等同于b,a,b,a,b,a,b 用于表示重復(fù)的表達(dá)式如上例中的4和3,必須是常數(shù)表達(dá)式。, 位拼接運(yùn)算符,其使用方法如下: 信號(hào)1的某幾位,信號(hào)2的某幾位,.,.,信號(hào)n的某幾位,例: a,

57、b3:0,w,3b101,位拼接還可以用重復(fù)法來簡(jiǎn)化表達(dá)式。 4w /這等同于w,w,w,w,module concatTest; reg a; reg 1: 0b; reg 5: 0c; initial begin a=1b1; b=2b00; c=6b101001; $displayb(a, b);/產(chǎn)生一個(gè)3位數(shù)3b100 $displayb(c5: 3, a); /產(chǎn)生一個(gè)4位數(shù)4b1011 end endmodule,module replicTest; reg a; reg 1: 0b; reg 5: 0c; initial begin a=1b1; b=2b00; $displayb(4a); /結(jié)果為1111 c=4a; $displayb(c); /結(jié)果為001111 end endmodule,連接運(yùn)算的例子,復(fù)制運(yùn)算的例子,4.6 縮減運(yùn)算符,縮減運(yùn)算的具體運(yùn)算過程是這樣的:第一步先將操作數(shù)的第一位與第二位進(jìn)行或與非運(yùn)算,第二步將運(yùn)算結(jié)果與第三位進(jìn)行或與非運(yùn)算,依次類推,直至最后一位。,reg 3:0 B; reg C

溫馨提示

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

評(píng)論

0/150

提交評(píng)論