北航夏宇聞verilog講稿ppt語法入門.ppt_第1頁
北航夏宇聞verilog講稿ppt語法入門.ppt_第2頁
北航夏宇聞verilog講稿ppt語法入門.ppt_第3頁
北航夏宇聞verilog講稿ppt語法入門.ppt_第4頁
北航夏宇聞verilog講稿ppt語法入門.ppt_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,Verilog HDL 基礎(chǔ)語法入門,第一講 課程簡介,目的: 簡單介紹Verilog HDL語言和仿真工具 介紹講課計(jì)劃 介紹如何不斷地學(xué)習(xí)新的有關(guān)知識(shí),講座中關(guān)于Verilog HDL的主要內(nèi)容,講課內(nèi)容主要包括: Verilog 的應(yīng)用 Verilog 語言的組成部件 結(jié)構(gòu)級(jí)的建模與仿真 行為級(jí)的建模與仿真 延遲參數(shù)的表示 Verilog 的測試平臺(tái): 怎樣產(chǎn)生激勵(lì)信號(hào)和控制信號(hào) 輸出響應(yīng)的產(chǎn)生、記錄和驗(yàn)證 任務(wù)和函數(shù) 用戶定義的元器件(primitives) 可綜合風(fēng)格的Verilog 建模,講座中關(guān)于Verilog仿真工具的主要內(nèi)容,講課內(nèi)容主要包括: 如何對(duì)所做的設(shè)計(jì)進(jìn)行編譯和仿

2、真 如何使用元器件庫 如何用Verilog-XL命令行界面調(diào)試代碼 如何用圖形用戶界面(GUI) 延遲的計(jì)算和標(biāo)記 仿真性能建模 循環(huán)多次仿真,目的: 了解用HDL語言設(shè)計(jì)數(shù)字邏輯的優(yōu)點(diǎn) 了解Verilog 主要應(yīng)用領(lǐng)域 了解Verilog 的發(fā)展歷史 了解電路系統(tǒng)的不同層次的Verilog抽象,第二講:Verilog 的應(yīng)用,Verilog HDL是一種用于數(shù)字邏輯電路設(shè)計(jì)的語言: - 用Verilog HDL描述的電路設(shè)計(jì)就是該電路 的 Verilog HDL模型。 - Verilog HDL 既是一種行為描述的語言也 是一種結(jié)構(gòu)描述的語言。 這也就是說,既可以用電路的功能描述也可以用元器

3、件和它們之間的連接來建立所設(shè)計(jì)電路的Verilog HDL模型。Verilog模型可以是實(shí)際電路的不同級(jí)別的抽象。這些抽象的級(jí)別和它們對(duì)應(yīng)的模型類型共有以下五種:,Verilog 的應(yīng)用,Verilog 的應(yīng)用,系統(tǒng)級(jí)(system): 用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)模塊的外部性能的模 算法級(jí)(algorithmic): 用高級(jí)語言結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)算法的模型。 RTL級(jí)(Register Transfer Level): 描述數(shù)據(jù)在寄存器之間流動(dòng)和如何處理這些數(shù)據(jù)的模型。 門級(jí)(gate-level): 描述邏輯門以及邏輯門之間的連接的模型。 開關(guān)級(jí)(switch-level): 描述器件中三極管和儲(chǔ)存節(jié)

4、點(diǎn)以及它們之間連接的模型。,Verilog 的應(yīng)用,一個(gè)復(fù)雜電路的完整Verilog HDL模型是由若個(gè) Verilog HDL 模塊構(gòu)成的,每一個(gè)模塊又可以由若干個(gè)子模塊構(gòu)成。 利用Verilog HDL語言結(jié)構(gòu)所提供的這種功能就可以構(gòu)造一個(gè)模塊間的清晰層次結(jié)構(gòu)來描述極其復(fù)雜的大型設(shè)計(jì)。 Verilog HDL行為描述語言作為一種結(jié)構(gòu)化和過程性的語言,其語法結(jié)構(gòu)非常適合于算法級(jí)和RTL級(jí)的模型設(shè)計(jì)。這種行為描述語言具有以下八項(xiàng)功能:,Verilog 的應(yīng)用,可描述順序執(zhí)行或并行執(zhí)行的程序結(jié)構(gòu)。 用延遲表達(dá)式或事件表達(dá)式來明確地控制過程的啟動(dòng)時(shí)間。 通過命名的事件來觸發(fā)其它過程里的激活行為或停

5、止行為。 提供了條件、if-else、case、循環(huán)程序結(jié)構(gòu)。 提供了可帶參數(shù)且非零延續(xù)時(shí)間的任務(wù)(task)程序結(jié)構(gòu)。 提供了可定義新的操作符的函數(shù)結(jié)構(gòu)(function)。,Verilog 的應(yīng)用,提供了用于建立表達(dá)式的算術(shù)運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符。 Verilog HDL語言作為一種結(jié)構(gòu)化的語言也非常適合于門級(jí)和開關(guān)級(jí)的模型設(shè)計(jì)。 Verilog HDL的構(gòu)造性語句可以精確地建立信號(hào)的模型。這是因?yàn)樵赩erilog HDL中,提供了延遲和輸出強(qiáng)度的原語來建立精確程度很高的信號(hào)模型。信號(hào)值可以有不同的的強(qiáng)度,可以通過設(shè)定寬范圍的模糊值來降低不確定條件的影響。,Verilog 的應(yīng)用,V

6、erilog HDL作為一種高級(jí)的硬件描述編程語言,有著類似C語言的風(fēng)格。其中有許多語句如:if語句、case語句等和C語言中的對(duì)應(yīng)語句十分相似。如果讀者已經(jīng)掌握C語言編程的基礎(chǔ),那么學(xué)習(xí) Verilog HDL并不困難,我們只要對(duì)Verilog HDL某些語句的特殊方面著重理解,并加強(qiáng)上機(jī)練習(xí)就能很好地掌握它,利用它的強(qiáng)大功能來設(shè)計(jì)復(fù)雜的數(shù)字邏輯電路。下面我們將對(duì)Verilog HDL中的基本語法逐一加以介紹。,模塊的抽象,技術(shù)指標(biāo): 用文字表示 用算法表示 用高級(jí)行為的Verilog模塊表示 RTL/功能級(jí): 用可綜合的Verilog模塊表示 門級(jí)/結(jié)構(gòu)級(jí): 用實(shí)例引用的Verilog模塊

7、表示 版圖布局/物理級(jí): 用幾何形狀來表示,第三講.簡單的 Verilog HDL 模塊,目的: 通過簡單的例子了解Verilog模塊的基本構(gòu)成 了解Verilog模塊的層次結(jié)構(gòu)和行為模塊 了解Verilog模塊的測試,簡單的 Verilog HDL 模塊,下面先介紹幾個(gè)簡單的Verilog HDL程序,然后從中分析Verilog HDL程序的特性。 例2.1.1: module adder ( count,sum,a,b,cin ); input 2:0 a,b; input cin; output count; output 2:0 sum; assign count,sum=a+b+ci

8、n; endmodule 這個(gè)例子描述了一個(gè)三位的加法器。從例子中可以看出整個(gè)Verilog HDL程序是嵌套在module和endmodule聲明語句里的。,簡單的 Verilog HDL 模塊,例2.1.2: 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*/ endmodule 這個(gè)程序描述了一個(gè)比較器.在這個(gè)程序中,/*.*/和/.表示注釋部分,注釋只是為了方便程序員理解程序,

9、對(duì)編譯是不起作用的。,簡單的 Verilog HDL 模塊,例2.1.3: module trist2(out,in,enable); output out; input in, enable; bufif1 mybuf(out,in,enable); endmodule 這個(gè)程序描述了一個(gè)三態(tài)驅(qū)動(dòng)器。程序通過調(diào)用一個(gè)實(shí)例元件bufif1來實(shí)現(xiàn)其功能。,簡單的 Verilog HDL 模塊,例2.1.4:module trist1(out,in,enable); output out; input in, enable; mytri tri_inst(out,in,enable); endmo

10、dule module mytri(out,in,enable); output out; input in, enable; assign out = enable? In : bz; endmodule,簡單的 Verilog HDL 模塊,上述程序例子通過另一種方法描述了一個(gè)三態(tài)門。 在這個(gè)例子中存在著兩個(gè)模塊:模塊trist1 調(diào)用模塊 mytri 的實(shí)例元件 tri_inst。 模塊 trist1 是上層模塊。模塊 mytri 則被稱為子模塊。 通過這種結(jié)構(gòu)性模塊構(gòu)造可構(gòu)成特大型模塊。,簡單的 Verilog HDL 模塊,通過上面的例子可以看到: Verilog HDL程序是由模塊

11、構(gòu)成的。模塊是可以進(jìn)行層次嵌套的。正因?yàn)槿绱?才可以將大型的數(shù)字電路設(shè)計(jì)分割成不同的小模塊來實(shí)現(xiàn)特定的功能,最后通過頂層模塊調(diào)用子模塊來實(shí)現(xiàn)整體功能。 每個(gè)模塊要進(jìn)行端口定義,并說明輸入輸出口,然后對(duì)模塊的功能進(jìn)行行為邏輯描述。 Verilog HDL程序的書寫格式自由,一行可以寫幾個(gè)語句,一個(gè)語句也可以分寫多行。 除了endmodule語句外,每個(gè)語句和數(shù)據(jù)定義的最后必須有分號(hào) 可以用/*.*/和/.對(duì)Verilog HDL程序的任何部分作注釋。一個(gè)好的,有使用價(jià)值的源程序都應(yīng)當(dāng)加上必要的注釋,以增強(qiáng)程序的可讀性和可維護(hù)性。,模塊的結(jié)構(gòu),Verilog的基本設(shè)計(jì)單元是“模塊”(block)。

12、一個(gè)模塊是由兩部分組成的:一)描述接口;二)描述邏輯功能,即定義輸入是如何影響輸出的。下面舉例說明:,模塊的結(jié)構(gòu),從上面的例子可以看出: - Verilog模塊結(jié)構(gòu)完全嵌在module和endmodule聲明語句之間; - 每個(gè)Verilog程序包括四個(gè)主要部分:端口定義、I/O說明、內(nèi)部信號(hào)聲明、功能定義。,第四講 模塊的測試,如何檢查上述例子其功能是否正確? 需要有測試激勵(lì)信號(hào)輸入到被測模塊 需要記錄被測模塊的輸出信號(hào) 需要把用功能和行為描述的Verilog模塊 轉(zhuǎn)換為門級(jí)電路互連的電路結(jié)構(gòu)(綜合)。 需要對(duì)已經(jīng)轉(zhuǎn)換為門級(jí)電路結(jié)構(gòu)的邏輯 進(jìn)行測試(門級(jí)電路仿真)。 需要對(duì)布局布線后的電路結(jié)

13、構(gòu)進(jìn)行測試。 (布局布線后仿真)。,模塊的測試,模塊的測試,測試模塊常見的形式: module t; reg ; /被測模塊輸入/輸出變量類型定義 wire; /被測模塊輸入/輸出變量類型定義 initial begin ; ; ; end /產(chǎn)生測試信號(hào) always #delay begin ; end /產(chǎn)生測試信號(hào) Testedmd m(.in1(ina), .in2(inb), .out1(outa), .out2(outb) ); /被測模塊的實(shí)例引用 initial begin .; .; . end /記錄輸出和響應(yīng) endmodule,模塊的測試,測試模塊中常用的過程塊:,a

14、lways,所有的過程塊都在0時(shí)刻同時(shí)啟動(dòng);它們是并行的,在模塊中不分前后。 initial塊 只執(zhí)行一次。 always塊 只要符合觸發(fā)條件可以循環(huán)執(zhí)行。,模塊的測試,如何描述激勵(lì)信號(hào): module t; reg a, b, sel; wire out; /引用多路器實(shí)例 mux2_m (out, a, b, sel); /加入激勵(lì)信號(hào) initial begin a=0; b=1; sel=0; #10 b=0; #10 b=1; sel=1; #10 a=1; #10 $stop; end,模塊的測試,如何觀察被測模塊的響應(yīng): 在initial 塊中,用系統(tǒng)任務(wù)$time 和 $mon

15、itor $time 返回當(dāng)前的仿真時(shí)刻 $monitor 只要在其變量列表中有某一個(gè)或某幾個(gè)變 量值發(fā)生變化,便在仿真單位時(shí)間結(jié)束時(shí)顯示其變 量列表中所有變量的值。 例: initial begin $monitor ($time, , “out=%b a=%b sel=%b”, out,a,b,sel); end,模塊的測試,如何把被測模塊的輸出變化記錄到數(shù)據(jù)庫文件中? (文件格式為VCD,大多數(shù)的波形顯示工具都能讀取該格式) 可用以下七個(gè)系統(tǒng)任務(wù): $dumpfile(“file.dump”); /打開記錄數(shù)據(jù)變化的數(shù)據(jù)文件 $dumpvars(); /選擇需要記錄的變量 $dumpfl

16、ush; /把記錄在數(shù)據(jù)文件中的資料轉(zhuǎn)送到硬盤保存 $dumpoff; /停止記錄數(shù)據(jù)變化 $dumpon; /重新開始記錄數(shù)據(jù)變化 $dumplimit(); /規(guī)定數(shù)據(jù)文件的大?。ㄗ止?jié)) $dumpall; /記錄所有指定信號(hào)的變化值到數(shù)據(jù)文件中,模塊的測試,如何把被測模塊的響應(yīng)變化記錄到數(shù)據(jù)庫文件中? 舉例說明: $dumpvars; /記錄各層次模塊中所有信號(hào)的變化 $dumpvars(1,top); /只記錄模塊top中所有信號(hào)的變化 $dumpvars(2,top.u1); /記錄top模塊中實(shí)例u1和它以下一層子模塊所有信號(hào)的變化 $dumpvars(0,top.u2,top.u

17、1.u13.q); /記錄top模塊中實(shí)例u2和它本層所有信號(hào)的變化,還有top.u1.u13.q 信號(hào)的變化。 $dumpvars(3,top.u2,top.u1); /記錄top模塊中u2和u1所有信號(hào)的變化(包括其兩層以下子模塊的信號(hào)變化)。,模塊的測試,如何把被測模塊的響應(yīng)變化記錄到數(shù)據(jù)庫文件中? 舉例說明: 下面的 Verilog 代碼段可以代替測試文件中的系統(tǒng)任務(wù)$monitor initial begin $dumpfile(“vlog.dump”); $dumpvars(0,top); end,語法詳細(xì)講解第五講. Verilog 語法要點(diǎn),目標(biāo): 理解Verilog 語言的一

18、些重要規(guī)定. 學(xué)會(huì)認(rèn)識(shí)一些有關(guān)的重要語言符號(hào). 掌握Verilog 中如何規(guī)定時(shí)間單位,語法詳細(xì)講解Verilog 與 C 的主要不同點(diǎn),Verilog 有許多語法規(guī)則與 C 語言一致。 但與 C 語言有根本的區(qū)別: - 并行性 - 塊的含義: initial 塊 和 always塊 兩種賦值語句: 阻塞 賦值 “ = ” 非阻塞賦值 “= ”,語法詳細(xì)講解空格和注釋,Verilog 是一種格式很自由的語言。 空格在文本中起一個(gè)分離符的作用, 別的沒有其他用處。 單行注釋符用 /* 與C 語言一致 多行注釋符用 /* - */ 與C 語言一致,語法詳細(xì)講解整數(shù)和實(shí)常數(shù),Verilog 語言中常

19、數(shù)可以是整數(shù)或?qū)崝?shù): 整數(shù)可以標(biāo)明位數(shù)也可以不標(biāo)明位數(shù),表示方法: 位數(shù)基數(shù)值 其中位數(shù)表明該數(shù)用二進(jìn)制的幾位來表示 基數(shù)可以是二(b)、八(O)、十(d)或 十六(h)進(jìn)制 數(shù)值可以是所選基數(shù)的任何合法的值包括 不定值 x 位和高阻值 z。 如:64hff01 8b1101_0001 h83a 實(shí)常數(shù)可以用十進(jìn)制表示也可以用科學(xué)浮點(diǎn)數(shù)表示,如:32e-4 (表示0.0032) 4.1E3( 表示 4100),語法詳細(xì)講解字符串,Verilog 語言中,字符串常常用于表示命令內(nèi)需要顯示的信息。 用“ ”括起來的一行字符串,換新一行用 “n” 字符,與 C 語言一致。 在字符串中可以用 C 語言

20、中的各種格式控制符,如t, ”, 在字符串中可以用 C 語言中的各種數(shù)值型式控制符(有些不同),如: %b(二進(jìn)制), %o(八進(jìn)制), %d(十進(jìn)制), %h(十六進(jìn)制), %t(時(shí)間類型),%s (字符串類型),語法詳細(xì)講解標(biāo)識(shí)符,所謂標(biāo)識(shí)別符就是用戶為程序描述中的Verilog 對(duì)象所起的名字。 標(biāo)識(shí)符必須以英語字母(a-z, A-Z)起頭,或者用下橫線符( _ )起頭。其中可以包含數(shù)字、$符和下橫線符。 標(biāo)識(shí)符最長可以達(dá)到1023個(gè)字符。 模塊名、端口名和實(shí)例名都是標(biāo)識(shí)符。 Verilog語言是大小寫敏感的,因此sel 和 SEL 是兩個(gè)不同的標(biāo)識(shí)符。,語法詳細(xì)講解合法和非法標(biāo)識(shí)符,合

21、法的: shift_reg_a busa_index bus263,非法的: 34net /不能用數(shù)字開頭 a*b_net /不能含有非字母符號(hào)* n263 /不能含有非字母符號(hào),Verilog 是大小寫敏感的。所有的Verilog 關(guān)鍵詞都是小寫的。,語法詳細(xì)講解特別的標(biāo)識(shí)符,特別標(biāo)識(shí)符是用 “” 符開始,以空格符結(jié)束的標(biāo) 識(shí)符。它可以包含任何可打印的ASCII字符。 但“”符和空格并不算是標(biāo)識(shí)符的一部分。 特別標(biāo)識(shí)符往往是由RTL級(jí)源代碼或電路圖類型的 設(shè)計(jì)輸入經(jīng)過綜合器自動(dòng)綜合生成的網(wǎng)表結(jié)構(gòu)型 Verilog 語句中的標(biāo)識(shí)符。 舉例說明: #sel , bus+index , A,B ,

22、 Top.3inst .net1 , /在層次模塊中的標(biāo)識(shí)名,語法詳細(xì)講解系統(tǒng)任務(wù)和函數(shù),$ $ 符號(hào)表示 Verilog 的系統(tǒng)任務(wù)和函數(shù) 常用的系統(tǒng)任務(wù)和函數(shù)有下面幾種: $time /找到當(dāng)前的仿真時(shí)間 $display, $monitor /顯示和監(jiān)視信號(hào)值的變化 $stop /暫停仿真 $finish /結(jié)束仿真 - 例: initial $monitor($time,”a=%b, b=%b”, a, b); /每當(dāng)a 或b值變化時(shí)該系統(tǒng)任務(wù)都顯示當(dāng)前的仿真時(shí)刻并分別用二進(jìn)制和十六進(jìn)制顯示信號(hào)a和 b的值,語法詳細(xì)講解特殊符號(hào) “#”,特殊符號(hào) “#” 常用來表示延遲: 在過程賦值語

23、句時(shí)表示延遲。 例:initial begin #10 rst=1; #50 rst=0; end 在門級(jí)實(shí)例引用時(shí)表示延遲。 例:not #1 not1(nsel, sel); and #2 and2(a1, a, nsel); 在模塊實(shí)例引用時(shí)表示參數(shù)傳遞 介紹參數(shù)類型變量時(shí)再講。,語法詳細(xì)講解編譯引導(dǎo)語句,編譯引導(dǎo)語句用主鍵盤左上角小寫鍵 “ ” 起頭 用于指導(dǎo)仿真編譯器在編譯時(shí)采取一些特殊處理 編譯引導(dǎo)語句一直保持有效,直到被取消或重寫 resetall 編譯引導(dǎo)語句把所有設(shè)置的編譯引導(dǎo)恢復(fù)到缺省狀態(tài) 常用的編譯引導(dǎo)有: define include timescale uselib

24、resetall .,語法詳細(xì)講解編譯引導(dǎo)語句,使用define 編譯引導(dǎo)能提供簡單的文本替代功能 define 在編譯時(shí)會(huì)用宏文本來替代源代碼中的宏名。 合理地使用define可以提高程序的可讀性 舉例說明: define on 1b1 define off 1b0 define and_delay #3 在程序中可以用有含義的文字來表示沒有意思的數(shù)碼提高了程序 的可讀性,在程序中可以用 on, off, and_delay 分別表 示 1,0,和 #3 。,語法詳細(xì)講解編譯引導(dǎo)語句,使用include 編譯引導(dǎo),在編譯時(shí)能把其指定的整個(gè)文件包括進(jìn)來一起處理 舉例說明: include “g

25、lobal.v” include “parts/counter.v” include “././library/mux.v” 合理地使用include 可以使程序簡潔、清晰、條理清楚、易于查錯(cuò)。,語法詳細(xì)講解編譯引導(dǎo)語句,timescale 用于說明程序中的時(shí)間單位和仿真精度 舉例說明: timescale 1ns/100ps timescale 語句必須放在模塊邊界前面 舉例說明: timescale 1ns/100ps module MUX2_1(out,a,b,sel); not #1 not1(nsel, sel); and #2 and1(a1, a, nsel); endmodul

26、e 盡可能地使精度與時(shí)間單位接近,只要滿足設(shè)計(jì)的實(shí)際需要就行。 舉例說明:在上例中所有的時(shí)間單位都是1ns的整數(shù)倍,語法詳細(xì)講解編譯引導(dǎo)語句,仿真步長即仿真單位(STU) 是所有參加仿真模塊中由timescale 指定的精度中最高(即時(shí)間最短)的那個(gè)決定的: (STU=100fs) 舉例: timescale 1ns/10ps module M1(.); not #1.23 not1(nsel, sel); /1.23 ns中共有12300個(gè)STU(100fs) endmodule timescale 100ns/1ns module M2(.); not #1.23 not1(nsel, s

27、el); /123 ns中共有1230000個(gè)STU(100fs) endmodule timescale 1ps/100fs module M3(.); not #1.23 not1(nsel, sel); /1.23 ps中共有12個(gè)STU(100fs) endmodule,語法詳細(xì)講解編譯引導(dǎo)語句,時(shí)間單位 : fs (呼秒)femptoseconds: 1.0E-15 秒 ps (皮秒) picoseconds: 1.0E-12 秒 ns (納秒) nonoseconds: 1.0E-9 秒 us (微秒) microseconds: 1.0E-6 秒 ms (毫秒) millisec

28、onds: 1.0E-3 秒 s ( 秒) seconds: 1.0 秒,語法詳細(xì)講解編譯引導(dǎo)語句,uselib 編譯引導(dǎo)語句: 用于定義仿真器到哪里去找?guī)煸?如果該引導(dǎo)語句啟動(dòng)的話,它就一直有效 直到遇到另外一個(gè)uselib的定義或resetall語句 比其他配置庫搜索路徑的命令選項(xiàng)作用大 如果仿真器在uselib定義的地點(diǎn)找不到器件庫,它不會(huì)轉(zhuǎn)向由編譯命令行-v 和-y選項(xiàng)指定的器件庫去找。,語法詳細(xì)講解編譯引導(dǎo)語句,使用 uselib 的語法: uselib 器件庫1的地點(diǎn) 器件庫2的地點(diǎn) 。 上面的器件庫地點(diǎn)可用以下兩種方法表示: 1) file = 庫文件名的路徑 2) dir =

29、 庫目錄名的路徑 libext = .文件擴(kuò)展 例如: uselib dir =/lib/FAST_lib/ uselib dir =/lib/TTL_lib/ libext=.v file = /libs/TTL_U/udp.lib,語法詳細(xì)講解第六講 Verilog 的數(shù)據(jù)類型和邏輯值,目的: 掌握Verilog不同邏輯值的含義 學(xué)習(xí)Verilog不同的數(shù)據(jù)類型 理解如何使用和在什么場合下使用不同的數(shù)據(jù)類型 學(xué)習(xí)聲明數(shù)據(jù)類型的語法,語法詳細(xì)講解Verilog 的四種邏輯值,0、低、偽、邏輯低、地、VSS、負(fù)插入,1、高、真、邏輯高、電源、VDD、正插入,X、不確定:邏輯沖突無法確定其邏輯值

30、,HiZ、高阻抗、三態(tài)、無驅(qū)動(dòng)源,語法詳細(xì)講解主要的數(shù)據(jù)類型,Verilog 有三種主要的數(shù)據(jù)類型: Nets 表示器件之間的物理連接, 稱為網(wǎng)絡(luò)連接類型 Register 表示抽象的儲(chǔ)存單元,稱為寄存器/變量類型 Parameter 表示運(yùn)行時(shí)的常數(shù),稱為參數(shù)類型,語法詳細(xì)講解主要的數(shù)據(jù)類型,Nets(網(wǎng)絡(luò)連線): 由模塊或門驅(qū)動(dòng)的連線。 驅(qū)動(dòng)端信號(hào)的改變會(huì)立刻 傳遞到輸出的連線上。 例如:右圖上,selb的改 變,會(huì)自動(dòng)地立刻影響或 門的輸出。,nets,語法詳細(xì)講解主要的數(shù)據(jù)類型,連接(Nets) 類型變量的種類: 在為不同工藝的基本元件建立庫模型的時(shí)候,常常需要用不同的 連接類型來與之

31、對(duì)應(yīng),使其行為與實(shí)際器件一致。常見的有以下 幾種。 類型 功能 wire, tri 對(duì)應(yīng)于標(biāo)準(zhǔn)的互連線(缺省) supply1, supply2 對(duì)應(yīng)于電源線或接地線 wor, trior 對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線或邏輯連接 wand, triand 對(duì)應(yīng)于有多個(gè)驅(qū)動(dòng)源的線與邏輯連接 trireg 對(duì)應(yīng)于有電容存在能暫時(shí)存儲(chǔ)電平的連接 tri1, tri0 對(duì)應(yīng)于需要上拉或下拉的連接 如果不明確地說明連接是何種類型,應(yīng)該是指 wire 類型。,語法詳細(xì)講解主要的數(shù)據(jù)類型,寄存器(register)類型變量 register 型變量能保持其值,直到它被賦于新的值。 register 型變量常用于行

32、為建模,產(chǎn)生測試的激勵(lì)信號(hào)。 常用行為語句結(jié)構(gòu)來給寄存器類型的變量賦值。,語法詳細(xì)講解主要的數(shù)據(jù)類型,寄存器(register)類型變量的數(shù)據(jù)類型 寄存器類型變量共有四種數(shù)據(jù)類型: 類型 功能 . reg 無符號(hào)整數(shù)變量,可以選擇不同的位寬。 integer 有符號(hào)整數(shù)變量,32位寬,算術(shù)運(yùn)算可產(chǎn)生2的 補(bǔ)碼。 real 有符號(hào)的浮點(diǎn)數(shù),雙精度。 time 無符號(hào)整數(shù)變量,64位寬(Verilog-XL仿真 工具用64位的正數(shù)來記錄仿真時(shí)刻),語法詳細(xì)講解主要的數(shù)據(jù)類型,如何選擇正確的數(shù)據(jù)類型? 輸入口(input)可以由寄存器或網(wǎng)絡(luò)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。 輸出口 (output

33、)可以由寄存器或網(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塊 或 always塊)中被賦值的,必須把它聲明為寄存器類型變量,語法詳細(xì)講解主要的數(shù)據(jù)類型,舉例說明數(shù)據(jù)類型的選擇 module top; wire y; reg a, b; DUT u1(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,語法詳細(xì)講解主要的數(shù)據(jù)類型,選擇數(shù)據(jù)類型時(shí)常犯的錯(cuò)誤 在過程塊中對(duì)變量賦值時(shí),忘了把它定義為寄存器 類型(reg)或已把它定義為連接類型了(wire) 把實(shí)例的輸出連接出去時(shí),把它定義為寄存器類型了 把模塊的輸入信號(hào)定義為寄存器類型了。 這是經(jīng)常犯的三個(gè)錯(cuò)誤!,語法詳細(xì)講解主要的數(shù)據(jù)類型,參數(shù)(parameters

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論