




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、,第四章 Verilog基本語法(一),周慧,4.1 數(shù)據(jù)類型及其常量和變量,2020/7/24,0、低、偽、邏輯低、地、VSS、負(fù)插入,1、高、真、邏輯高、電源、VDD、正插入,X、不確定:邏輯沖突無法確定其邏輯值,HiZ、高阻抗、三態(tài)、無驅(qū)動源,Verilog 的四種邏輯值,x和X、z和Z不區(qū)別大小寫。Z有時候也用?代替,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è)計時很少使用,2020/7/24,一、常量,在程序運行中,其值不能被改變的量叫常量 兩類最基本的常量:數(shù)字型常量和參數(shù)(parameter) 數(shù)字型常量:整型數(shù)可以按如下兩種方式書寫 簡單的十進(jìn)制數(shù)格式 基數(shù)格式,2020/7/24,基數(shù)表示法(一),格式:位寬進(jìn)制 值 無符號數(shù)。 位寬是按照二進(jìn)制數(shù)來計算的。 進(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ù)格式計數(shù)形式的數(shù)通常為無符號數(shù)。 這種形式的整型數(shù)的長度定義是可選的。如果沒有定義一個整數(shù)型的長度,數(shù)的長度為相應(yīng)值中定義的位數(shù)。 下面是兩個例子: o721 9位八進(jìn)制數(shù) hAF 8位十六進(jìn)制數(shù),2020/7/24,基數(shù)表示法(三),如果定義的長度比為常量指定的長度長,通常在左邊填0補位。但是如果數(shù)最左邊一位為x或z,就相應(yīng)地用x或z在左邊補位。 例如:10b10 左邊添0占位, 0000000010 10bx
4、0 x1 左邊添x占位, x x x x x x x 0 x 1 如果長度定義得更小,那么最左邊的位相應(yīng)地被截斷。 例如: 3 b1001_0011與3b011 相等 5H0FFF 與5H1F 相等 ?字符在數(shù)中可以代替值z在值z被解釋為不分大小寫的情況下提高可讀性,2020/7/24,下劃線,下劃線可以用來分割數(shù)的表達(dá)式以提高程序的可讀性,但不能用在位寬和進(jìn)制處,只能用于具體的數(shù)字之間 比如 16b1010_1011_11111_000 /合法格式 8b_0011_1011 /非法格式,2020/7/24,負(fù)數(shù),一個數(shù)字可以被定義成負(fù)數(shù),只要在位寬表達(dá)式前加一個減號 - 8d5 / 合法格式
5、 8d-5 /非法格式,2020/7/24,簡單的十進(jìn)制格式,這種形式的整數(shù)定義為帶有一個可選的“+”(一元)或“”(一元)運算符的數(shù)字序列。 這種形式的整數(shù)值代表一個有符號的數(shù)。負(fù)數(shù)使用補碼形式表示。 例如 15相當(dāng)于二進(jìn)制01111 -15相當(dāng)于二進(jìn)制10001,2020/7/24,實數(shù)類型,實數(shù)可以用下列兩種形式定義 十進(jìn)制記數(shù)法,例如: 2.0 ; -0.1等 科學(xué)記數(shù)法,例如: 235.1e2等于23510.0 234_12e2等于2341200.0 實數(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ù)時候默認(rèn)是32位,每個字母用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,字符串,字符串是雙引號內(nèi)的字符串列。 一個字符可用八位二進(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ù)是一個常量。用parameter定義一個標(biāo)識符來代表一個常量。參數(shù)經(jīng)常用于定義時延和變量的寬度。 格式: 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ù)值 當(dāng)某個模塊在另一個模塊內(nèi)被引用時,高層模塊能夠改變低層模塊的參數(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, /實例Ha1中的參數(shù)XOR_DELAY。 Ha1.AND_DELAY=2; /實例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個值5賦給參數(shù)AND_DELAY,該參數(shù)在模塊HA中說明。 /第2個值2賦給參數(shù)XOR_DELAY,該參數(shù)在模塊HA中說明。 endmodule,2020/7/24,課堂練習(xí)-參數(shù)傳遞,假定一個模塊為BK,內(nèi)部兩個參數(shù)P1,P2;另外一個模塊為HA,內(nèi)部參數(shù)P3,P4 其在TOP模塊中實例化調(diào)用的名稱分別為U1, U2 請嘗試在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)存儲數(shù)值,用于電容節(jié)點的建模 tri1, tri0 用于線邏輯的建模,上拉或下拉驅(qū)動 supply0, supply1 supply0用于對“地”建模,supply1對電源建模,2020/7/24,補充知識:連續(xù)賦制值語句,連續(xù)賦制語句用于把值賦給線網(wǎng)型變量(不能為寄存器型變量賦值) 語句形式為:assign A = B 連續(xù)賦值語句在什么時候執(zhí)行呢? 只要在右端表達(dá)式的操作數(shù)上有事件(事件為值的變化)發(fā)
12、生時,表達(dá)式即被計算;如果結(jié)果值有變化,新結(jié)果就賦給左邊的線網(wǎng)。,2020/7/24,連續(xù)賦值的目標(biāo)類型,標(biāo)量線網(wǎng) 向量線網(wǎng) 向量的常數(shù)型位選擇 , 如 a1 向量的常數(shù)型部分選擇 如:a3:1 上述類型的任意的拼接運算結(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,在本例中,有兩個連續(xù)賦值語句。這些賦值語句是并發(fā)的,與其書寫的順序無關(guān)
13、,2020/7/24,寄存器(register)類型變量,寄存器(register)類型變量 register 型變量能保持其值,直到它被賦于新的值。 register 型變量常用于行為建模,產(chǎn)生測試的激勵信號。 常用行為語句結(jié)構(gòu)來給寄存器類型的變量賦值。,2020/7/24,reg型,寄存器是數(shù)據(jù)存儲單元的抽象 reg型數(shù)據(jù)常用來表示always塊內(nèi)的指定信號,常代表觸發(fā)器 reg型數(shù)據(jù)用initial或者always塊中指定信號 reg型數(shù)據(jù)的缺省值是x??梢员毁x正值或者負(fù)值。當(dāng)它作為一個表達(dá)式中的操作數(shù)時候,作為無符號數(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個整型變量的寄存器陣列 time t_vals 3:0; /4個時間變量的寄存器陣列 數(shù)據(jù)類型為 reg 的陣列常稱為存儲器(即 memory): reg 15:0 MEM 0:1023; / 1K x 16 位的存儲器 reg 7:0 PREP hfffe : hffff; / 2 x 8 位的存儲器 可以用參數(shù)來表示存儲器的大?。?parameter wordsize = 16; parameter memsize = 1024; reg
15、 wordsize-1:0 MEM3memsize-1:0; 只能一次選擇一個字,不允許對存儲器變量值部分進(jìn)行部分選擇或位選擇. 如 dram60 2:4是錯誤的,2020/7/24,存儲器 memory型變 量,存儲器 memory型 用一個寄存器數(shù)組來對存儲器建模。 格式: reg msb:lsb 存儲器名 upper1:lower1; 如: reg 3:0 MyMem 63:0; / 64個四位寄存器組,2020/7/24,其他類型變量,integer 整數(shù)寄存器 有符號數(shù)。 主要用來高層次建模。 如: integer A;/ 整形寄存器,32位 integer B 1023:0; /
16、10位 time 時間類型寄存器 如: time CurrentTime;/ CurrentTime存儲一個時間值 CurrentTime = $time;,2020/7/24,輸入端口(input)可以由寄存器(reg)或線網(wǎng)(wire)連接驅(qū)動,但它本身只能驅(qū)動網(wǎng)絡(luò)連接。 輸出端口 (output)可以由寄存器或線網(wǎng)連接驅(qū)動,但它本身只能驅(qū)動線網(wǎng)連接。 輸入/輸出端口(inout)只可以由線網(wǎng)連接驅(qū)動,但它本身只能驅(qū)動線網(wǎng)連接。 如果信號變量是在過程塊 (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)中對變量賦值時,忘了把它定義為寄存器 類型(reg)或已把它定義為連接類型了(wire) 把實例的輸出連接出去時,把它定義為寄存器類型 把模塊的輸入信號定義為寄存器
18、類型。 這是經(jīng)常犯的三個錯誤!,選擇數(shù)據(jù)類型時常犯的錯誤,4.2 運算符及表達(dá)式,2020/7/24,4.2 運算符(操作符)及表達(dá)式,Verilog HDL中的運算符可以分為下述類型: 算術(shù)運算符 關(guān)系運算符 相等運算符 邏輯運算符 按位運算符 縮減(歸約)運算符 移位運算符 條件運算符 連接和復(fù)制運算符,2020/7/24,按所帶操作數(shù)的個數(shù)分類,單目運算符(unary operator) 帶一個操作數(shù),操作數(shù)在運算符的 右邊 如 clock 雙目運算符(binary operator) 帶兩個操作數(shù),操作數(shù)分別在運算符的兩邊 如 a | b 三目運算符(ternary operator) 帶三個操作數(shù),用三目運算符隔開,2020/7/24,4.2.1算術(shù)運算符,算術(shù)運算符有: +(一元加和二元加) -(一元減和二元減) *(乘) /(除) %(取模) 整數(shù)除法截斷任何小數(shù)部分。例如: 7/4 結(jié)果為1 取模運算符求出與第一個運算符符號相同的余數(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等.壓縮文件請下載最新的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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 餐飲企業(yè)品牌授權(quán)及合作推廣合同
- 公共交通樞紐停車場車位使用權(quán)轉(zhuǎn)讓合同
- 餐飲公司廚師崗位晉升與勞動合同
- 拆除工程安全生產(chǎn)責(zé)任保險合同
- 《有效教學(xué)》課件
- 醫(yī)學(xué)常見病癥診斷與處理知識測試試卷
- 《初二數(shù)學(xué)概率統(tǒng)計初步學(xué)習(xí)教案》
- 小學(xué)周長教學(xué)課件
- 企業(yè)廢物管理與環(huán)境保護(hù)法律法規(guī)的執(zhí)行效果評估考核試卷
- 交通安全宣傳教育政策研究考核試卷
- 國家開放大學(xué)一網(wǎng)一平臺電大《建筑測量》實驗報告1-5題庫
- 教學(xué)樓管理規(guī)定
- 烏審旗礦產(chǎn)資源總體規(guī)劃(2021-2025年)
- 北大醫(yī)學(xué)部如何編寫PBL案例
- 產(chǎn)品系列3.3saas分銷動力培訓(xùn)
- GB/T 24218.6-2010紡織品非織造布試驗方法第6部分:吸收性的測定
- GB/T 19939-2005光伏系統(tǒng)并網(wǎng)技術(shù)要求
- 財富沙盤流程課件
- 2022年西學(xué)中考試題庫
- 《大學(xué)物理》課程教學(xué)大綱
- 建筑安全生產(chǎn)自查臺賬(建筑施工)
評論
0/150
提交評論