第四章 Verilog基本語法(一).ppt_第1頁
第四章 Verilog基本語法(一).ppt_第2頁
第四章 Verilog基本語法(一).ppt_第3頁
第四章 Verilog基本語法(一).ppt_第4頁
第四章 Verilog基本語法(一).ppt_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、,第四章 Verilog基本語法(一),周慧,4.1 數(shù)據(jù)類型及其常量和變量,2020/7/24,0、低、偽、邏輯低、地、VSS、負(fù)插入,1、高、真、邏輯高、電源、VDD、正插入,X、不確定:邏輯沖突無法確定其邏輯值,HiZ、高阻抗、三態(tài)、無驅(qū)動(dòng)源,Verilog 的四種邏輯值,x和X、z和Z不區(qū)別大小寫。Z有時(shí)候也用?代替,2020/7/24,數(shù)據(jù)類型,Verilog HDL中共有19種數(shù)據(jù)類型,分成常量和變量 最基本最常用的4種: 寄存器型reg 線網(wǎng)型wire 整形 integer 參數(shù)型 parameter 其余的包括:large medium scalare

2、d time small tri trio tri1 triand trior trireg vectored wand wor型,主要與基本單元庫有關(guān),設(shè)計(jì)時(shí)很少使用,2020/7/24,一、常量,在程序運(yùn)行中,其值不能被改變的量叫常量 兩類最基本的常量:數(shù)字型常量和參數(shù)(parameter) 數(shù)字型常量:整型數(shù)可以按如下兩種方式書寫 簡(jiǎn)單的十進(jìn)制數(shù)格式 基數(shù)格式,2020/7/24,基數(shù)表示法(一),格式:位寬進(jìn)制 值 無符號(hào)數(shù)。 位寬是按照二進(jìn)制數(shù)來計(jì)算的。 進(jìn)制可以為b或B(二進(jìn)制)、o或O(八進(jìn)制)、d或D(十進(jìn)制)、h或H(十六進(jìn)制)。值是基于進(jìn)制的數(shù)字序列。如: 3b001, 3

3、B110 三位二進(jìn)制 6o12, 6O12 六位八進(jìn)制 4d9, 4D9 十位十進(jìn)制 8hBF, 8HBF 八位十六進(jìn)制,2020/7/24,2020/7/24,基數(shù)表示法(二),基數(shù)格式計(jì)數(shù)形式的數(shù)通常為無符號(hào)數(shù)。 這種形式的整型數(shù)的長(zhǎng)度定義是可選的。如果沒有定義一個(gè)整數(shù)型的長(zhǎng)度,數(shù)的長(zhǎng)度為相應(yīng)值中定義的位數(shù)。 下面是兩個(gè)例子: o721 9位八進(jìn)制數(shù) hAF 8位十六進(jìn)制數(shù),2020/7/24,基數(shù)表示法(三),如果定義的長(zhǎng)度比為常量指定的長(zhǎng)度長(zhǎng),通常在左邊填0補(bǔ)位。但是如果數(shù)最左邊一位為x或z,就相應(yīng)地用x或z在左邊補(bǔ)位。 例如:10b10 左邊添0占位, 0000000010 10bx

4、0 x1 左邊添x占位, x x x x x x x 0 x 1 如果長(zhǎng)度定義得更小,那么最左邊的位相應(yīng)地被截?cái)唷?例如: 3 b1001_0011與3b011 相等 5H0FFF 與5H1F 相等 ?字符在數(shù)中可以代替值z(mì)在值z(mì)被解釋為不分大小寫的情況下提高可讀性,2020/7/24,下劃線,下劃線可以用來分割數(shù)的表達(dá)式以提高程序的可讀性,但不能用在位寬和進(jìn)制處,只能用于具體的數(shù)字之間 比如 16b1010_1011_11111_000 /合法格式 8b_0011_1011 /非法格式,2020/7/24,負(fù)數(shù),一個(gè)數(shù)字可以被定義成負(fù)數(shù),只要在位寬表達(dá)式前加一個(gè)減號(hào) - 8d5 / 合法格式

5、 8d-5 /非法格式,2020/7/24,簡(jiǎn)單的十進(jìn)制格式,這種形式的整數(shù)定義為帶有一個(gè)可選的“+”(一元)或“”(一元)運(yùn)算符的數(shù)字序列。 這種形式的整數(shù)值代表一個(gè)有符號(hào)的數(shù)。負(fù)數(shù)使用補(bǔ)碼形式表示。 例如 15相當(dāng)于二進(jìn)制01111 -15相當(dāng)于二進(jìn)制10001,2020/7/24,實(shí)數(shù)類型,實(shí)數(shù)可以用下列兩種形式定義 十進(jìn)制記數(shù)法,例如: 2.0 ; -0.1等 科學(xué)記數(shù)法,例如: 235.1e2等于23510.0 234_12e2等于2341200.0 實(shí)數(shù)小數(shù)通過四舍五入被隱式地轉(zhuǎn)換為最相近的整數(shù)。例如: 42.446, 42.45 轉(zhuǎn)換為整數(shù)42 92.5, 92.699 轉(zhuǎn)換為整

6、數(shù)93 5.62 轉(zhuǎn)換為整數(shù)6 26.22 轉(zhuǎn)換為整數(shù)26,2020/7/24,常量的位數(shù),,x(或z)在十六進(jìn)制值中代表4位x(或z),在八進(jìn)制中代表3位x(或z),在二進(jìn)制中代表1位x(或z) 當(dāng)常量不說明位數(shù)時(shí)候默認(rèn)是32位,每個(gè)字母用8位ASCII碼來表示 10 =32d10 =32b1010 1=32d1 =32b1 -1 = -32d1 =32hFFFF_FFFF BX=32BX=32BXXXXXXXXXX. “AB”=16B 010000001_01000010 A的ASCII值是85,B的值是86,2020/7/24,字符串,字符串是雙引號(hào)內(nèi)的字符串列。 一個(gè)字符可用八位二進(jìn)制

7、表示。如: “INTEGER” 需要 8*7位。 例:reg 8*14:1 Message; Message = “INTERNAL ERROR”;,2020/7/24,課堂練習(xí),下列表達(dá)式的位模式是什么?寫出其具體的二進(jìn)制表示值 7o44, Bx0, 5bx110, hA0, 10d2, hzF,2020/7/24,參數(shù),參數(shù)是一個(gè)常量。用parameter定義一個(gè)標(biāo)識(shí)符來代表一個(gè)常量。參數(shù)經(jīng)常用于定義時(shí)延和變量的寬度。 格式: parameter param1 = const_expr1, param2 = const_expr2, , paramN = const_exprN; 如: p

8、arameter Delay = 1; parameter A = 32,B=4b0001; parameter string = “exec_command”;,2020/7/24,參數(shù)的傳遞,參數(shù)值也可以在編譯時(shí)被改變。改變參數(shù)值可以使用參數(shù)定義語句或通過在模塊初始化語句中定義參數(shù)值 當(dāng)某個(gè)模塊在另一個(gè)模塊內(nèi)被引用時(shí),高層模塊能夠改變低層模塊的參數(shù)值。模塊參數(shù)值的改變可采用下述兩種方式: 參數(shù)定義語句(defparam); 帶參數(shù)值的模塊引用。,2020/7/24,defparam舉例,module TOP (NewA, NewB, NewS, NewC); input NewA, New

9、B; output NewS,NewC; defparam Ha1.XOR_DELAY=5, /實(shí)例Ha1中的參數(shù)XOR_DELAY。 Ha1.AND_DELAY=2; /實(shí)例Ha1中參數(shù)的AND_DELAY。 HA Ha1(NewA, NewB, NewS, NewC); endmodule,module HA(A,B,S,C); input A,B; output S,C; parameter AND_DELAY=1, XOR_DELAY=2; assign #XOR_DELAY S=AB; assign #AND_DELAY C=A input NewA, NewB; output Ne

10、wS,NewC; HA #(5,2) Ha1 (NewA, NewB, NewS, NewC); /第1個(gè)值5賦給參數(shù)AND_DELAY,該參數(shù)在模塊HA中說明。 /第2個(gè)值2賦給參數(shù)XOR_DELAY,該參數(shù)在模塊HA中說明。 endmodule,2020/7/24,課堂練習(xí)-參數(shù)傳遞,假定一個(gè)模塊為BK,內(nèi)部?jī)蓚€(gè)參數(shù)P1,P2;另外一個(gè)模塊為HA,內(nèi)部參數(shù)P3,P4 其在TOP模塊中實(shí)例化調(diào)用的名稱分別為U1, U2 請(qǐng)嘗試在top模塊中用兩種不同的方法改變其參數(shù)值p1-p4分別為1,2,3,4,2020/7/24,二、變 量,在Verilog中有兩大主要數(shù)據(jù)類型:線網(wǎng)類型(wire)、寄

11、存器類型(reg)。 線網(wǎng)類型 包含下述不同種類的線網(wǎng)子類型。 wire, tri 用于連線的最常見的線網(wǎng)類型 wor, trior 線或 wand, triand 線與 trireg 此線網(wǎng)存儲(chǔ)數(shù)值,用于電容節(jié)點(diǎn)的建模 tri1, tri0 用于線邏輯的建模,上拉或下拉驅(qū)動(dòng) supply0, supply1 supply0用于對(duì)“地”建模,supply1對(duì)電源建模,2020/7/24,補(bǔ)充知識(shí):連續(xù)賦制值語句,連續(xù)賦制語句用于把值賦給線網(wǎng)型變量(不能為寄存器型變量賦值) 語句形式為:assign A = B 連續(xù)賦值語句在什么時(shí)候執(zhí)行呢? 只要在右端表達(dá)式的操作數(shù)上有事件(事件為值的變化)發(fā)

12、生時(shí),表達(dá)式即被計(jì)算;如果結(jié)果值有變化,新結(jié)果就賦給左邊的線網(wǎng)。,2020/7/24,連續(xù)賦值的目標(biāo)類型,標(biāo)量線網(wǎng) 向量線網(wǎng) 向量的常數(shù)型位選擇 , 如 a1 向量的常數(shù)型部分選擇 如:a3:1 上述類型的任意的拼接運(yùn)算結(jié)果,2020/7/24,連續(xù)賦值語句舉例,module F A _ D f (A, B, Cin, Sum, Cout ) ; input A, B, Cin; output Sum, Cout ; assign S u m = A B Cin; assign C o u t = (A endmodule,在本例中,有兩個(gè)連續(xù)賦值語句。這些賦值語句是并發(fā)的,與其書寫的順序無關(guān)

13、,2020/7/24,寄存器(register)類型變量,寄存器(register)類型變量 register 型變量能保持其值,直到它被賦于新的值。 register 型變量常用于行為建模,產(chǎn)生測(cè)試的激勵(lì)信號(hào)。 常用行為語句結(jié)構(gòu)來給寄存器類型的變量賦值。,2020/7/24,reg型,寄存器是數(shù)據(jù)存儲(chǔ)單元的抽象 reg型數(shù)據(jù)常用來表示always塊內(nèi)的指定信號(hào),常代表觸發(fā)器 reg型數(shù)據(jù)用initial或者always塊中指定信號(hào) reg型數(shù)據(jù)的缺省值是x。可以被賦正值或者負(fù)值。當(dāng)它作為一個(gè)表達(dá)式中的操作數(shù)時(shí)候,作為無符號(hào)數(shù)。 reg數(shù)據(jù)類型定義格式為 reg n-1:0 數(shù)據(jù)名1,.; 或

14、者 reg n:1 數(shù)據(jù)名1,.;,2020/7/24,寄存器陣列,Verilog 語言支持寄存器陣列的聲明: integer NUMS 7:0; / 8個(gè)整型變量的寄存器陣列 time t_vals 3:0; /4個(gè)時(shí)間變量的寄存器陣列 數(shù)據(jù)類型為 reg 的陣列常稱為存儲(chǔ)器(即 memory): reg 15:0 MEM 0:1023; / 1K x 16 位的存儲(chǔ)器 reg 7:0 PREP hfffe : hffff; / 2 x 8 位的存儲(chǔ)器 可以用參數(shù)來表示存儲(chǔ)器的大?。?parameter wordsize = 16; parameter memsize = 1024; reg

15、 wordsize-1:0 MEM3memsize-1:0; 只能一次選擇一個(gè)字,不允許對(duì)存儲(chǔ)器變量值部分進(jìn)行部分選擇或位選擇. 如 dram60 2:4是錯(cuò)誤的,2020/7/24,存儲(chǔ)器 memory型變 量,存儲(chǔ)器 memory型 用一個(gè)寄存器數(shù)組來對(duì)存儲(chǔ)器建模。 格式: reg msb:lsb 存儲(chǔ)器名 upper1:lower1; 如: reg 3:0 MyMem 63:0; / 64個(gè)四位寄存器組,2020/7/24,其他類型變量,integer 整數(shù)寄存器 有符號(hào)數(shù)。 主要用來高層次建模。 如: integer A;/ 整形寄存器,32位 integer B 1023:0; /

16、10位 time 時(shí)間類型寄存器 如: time CurrentTime;/ CurrentTime存儲(chǔ)一個(gè)時(shí)間值 CurrentTime = $time;,2020/7/24,輸入端口(input)可以由寄存器(reg)或線網(wǎng)(wire)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)網(wǎng)絡(luò)連接。 輸出端口 (output)可以由寄存器或線網(wǎng)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)線網(wǎng)連接。 輸入/輸出端口(inout)只可以由線網(wǎng)連接驅(qū)動(dòng),但它本身只能驅(qū)動(dòng)線網(wǎng)連接。 如果信號(hào)變量是在過程塊 (initial塊 或 always塊)中被賦值的,必須把它聲明為寄存器類型變量,如何選擇正確的數(shù)據(jù)類型?,2020/7/24,modul

17、e 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,舉例說明數(shù)據(jù)類型的選擇,2020/7/24,在過程塊(always initial)中對(duì)變量賦值時(shí),忘了把它定義為寄存器 類型(reg)或已把它定義為連接類型了(wire) 把實(shí)例的輸出連接出去時(shí),把它定義為寄存器類型 把模塊的輸入信號(hào)定義為寄存器

18、類型。 這是經(jīng)常犯的三個(gè)錯(cuò)誤!,選擇數(shù)據(jù)類型時(shí)常犯的錯(cuò)誤,4.2 運(yùn)算符及表達(dá)式,2020/7/24,4.2 運(yùn)算符(操作符)及表達(dá)式,Verilog HDL中的運(yùn)算符可以分為下述類型: 算術(shù)運(yùn)算符 關(guān)系運(yùn)算符 相等運(yùn)算符 邏輯運(yùn)算符 按位運(yùn)算符 縮減(歸約)運(yùn)算符 移位運(yùn)算符 條件運(yùn)算符 連接和復(fù)制運(yùn)算符,2020/7/24,按所帶操作數(shù)的個(gè)數(shù)分類,單目運(yùn)算符(unary operator) 帶一個(gè)操作數(shù),操作數(shù)在運(yùn)算符的 右邊 如 clock 雙目運(yùn)算符(binary operator) 帶兩個(gè)操作數(shù),操作數(shù)分別在運(yùn)算符的兩邊 如 a | b 三目運(yùn)算符(ternary operator) 帶三個(gè)操作數(shù),用三目運(yùn)算符隔開,2020/7/24,4.2.1算術(shù)運(yùn)算符,算術(shù)運(yùn)算符有: +(一元加和二元加) -(一元減和二元減) *(乘) /(除) %(取模) 整數(shù)除法截?cái)嗳魏涡?shù)部分。例如: 7/4 結(jié)果為1 取模運(yùn)算符求出與第一個(gè)運(yùn)算符符號(hào)相同的余數(shù)。 7%4 結(jié)果為3 而- 7%4 結(jié)果為- 3,2020/7/24,課堂練習(xí),以下表達(dá)式在verilog HDL中的值是多少?(結(jié)果用16位hex表示表示) 5/3 (-9)/6 (-9) % 6 11 %

溫馨提示

  • 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)論