吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解Verilog的一些基本要素

電子工程師 ? 來源:工程師曾玲 ? 2019-02-11 13:42 ? 次閱讀

一、標(biāo)識(shí)符與注釋

前面已經(jīng)說到,模塊名的定義要符合標(biāo)識(shí)符的定義,那么什么是標(biāo)識(shí)符呢?它的語法是什么呢?

①標(biāo)識(shí)符是賦給對象的唯一名稱,通過標(biāo)識(shí)符可以提及相應(yīng)的對象,Verilog語法將對轉(zhuǎn)義標(biāo)識(shí)符中的字符逐個(gè)處理。

②標(biāo)識(shí)符可以是字母、數(shù)字、下劃線和美元符$的組合,并且標(biāo)識(shí)符的第一個(gè)字母必須是字母或者是下劃線。此外,在Verilog的標(biāo)識(shí)符中,是區(qū)分大小寫的。

③Verilog中有一些關(guān)鍵字,簡單地了解就是,預(yù)定義好了的,用來說明語言節(jié)后的標(biāo)識(shí)符,都是小寫的。標(biāo)識(shí)符不能和關(guān)鍵字重復(fù)。

④Verilog中還有一種叫做轉(zhuǎn)義標(biāo)識(shí)符的東西,定義為以(反斜杠)符號(hào)開頭,以空白結(jié)尾(如一個(gè)空格)的字符。如initial就是一個(gè)轉(zhuǎn)義字符。轉(zhuǎn)義標(biāo)識(shí)符和關(guān)鍵字是不一樣的,比如initial是非關(guān)鍵字,而initial是關(guān)鍵字。

語言中總需要一些注釋的,Verilog中兩種注釋方法:

①以/開始注釋,/結(jié)束注釋,即/ 注釋內(nèi)容/,可以多行注釋。

②以//開頭,這種注釋只能注釋一行

二、常量

對于一門語言,我們總可言考慮它的常量有哪些,變量有哪些,現(xiàn)在就讓我們看看Verilog中的常量有哪些吧。

(1)數(shù)值邏輯

數(shù)字邏輯就是一種狀態(tài),可言說說一種常量了,有下面的知識(shí)點(diǎn)/注意點(diǎn):

①Verilog中有四種羅家數(shù)值:邏輯0,邏輯1,x:未知態(tài),Z高阻態(tài);其中x、z是不區(qū)分大小寫的;在verilog中,表達(dá)式和邏輯門輸入的z通常解釋為x,也就是不定態(tài),不能確定這個(gè)邏輯值是1還是0。

②實(shí)際電路中只有0或者1,沒有x和z,當(dāng)你給電路中設(shè)置為x或z時(shí),由編譯軟件或者綜合軟件等EDA軟件決定電路最終是0或者1.

(2)數(shù)值

一個(gè)數(shù)也是一種常量。

①Verilog中主要可以這么對數(shù)值進(jìn)行組合,整數(shù)和實(shí)數(shù),有符號(hào)數(shù)和無符號(hào)數(shù)。在Verilog中,下劃線’_’可以隨意用在整數(shù)和實(shí)數(shù)中,沒有實(shí)際意義,只是提高了可讀性。

②對于Verilog中的整數(shù),可以分為簡單的十進(jìn)制數(shù)和基數(shù)表示的整數(shù)。

One:簡單的十進(jìn)制格式的整數(shù)定義為帶有“+”或者“-”操作符的數(shù)字序列,你如45表示十進(jìn)制數(shù)45,-45表示十進(jìn)制數(shù)-45。

注意,簡單的十進(jìn)制數(shù)格式的整數(shù)代表一個(gè)有符號(hào)的數(shù),其中負(fù)數(shù)可使用兩種補(bǔ)碼形式表示。下面舉例子進(jìn)行說明:

對于簡單的十進(jìn)制32,它是一個(gè)有符號(hào)的數(shù),由于二進(jìn)制中才對有無符號(hào)進(jìn)行區(qū)分,因此它在二進(jìn)制中,用6位表示就是100000或者用7位表示就是0100000(最高位是符號(hào)位);對于簡單的十進(jìn)制數(shù)-15,在二進(jìn)制中,用5位表示就是10001,用6位表示就是110001(最高位是符號(hào)擴(kuò)展位)。

Two:基數(shù)格式的整數(shù)格式是:[位寬]’基數(shù) 數(shù)值,位寬是一個(gè)數(shù)值,表示數(shù)值位長,基數(shù)可以是二進(jìn)制(b)、八進(jìn)制(o)、十進(jìn)制(d)、十六進(jìn)制(h),字母不區(qū)分大小寫,不然7’d100表示7位的十進(jìn)制數(shù)100。

③實(shí)數(shù)有十進(jìn)制計(jì)數(shù)法(如2.0)和科學(xué)計(jì)數(shù)法,但是根據(jù)Verilog的定義,實(shí)數(shù)都通過四舍五入隱式的轉(zhuǎn)換為最相近的整數(shù)。

(3)字符串

字符串是雙引號(hào)內(nèi)的字符序列,不能分成多行寫。此外,字符串是8位ASCII值的序列,比如“char”這個(gè)字符串,就要8x4=32bit寄存器存儲(chǔ)它。一些綜合器是不支持字符串的。

(4)參數(shù)

通過parameter 、localparam等定義的參數(shù),也可以看成是常量,它們的格式記錄在前面一篇的博文里面了。

三、變量—數(shù)據(jù)類型

在Verilog中,它的變量可以用另外的名稱代替:數(shù)據(jù)類型。Verilog的數(shù)據(jù)類型是一種“變量”,用來表示數(shù)字電路硬件中的數(shù)據(jù)存儲(chǔ)和傳送元素。Verilog中主要有兩大數(shù)據(jù)類型(變量):線網(wǎng)類型和寄存器類型。

(1)線網(wǎng)類型

①線網(wǎng)類型主要表示表示Verilog中的結(jié)構(gòu)化元件之間的物理連線,其數(shù)值由驅(qū)動(dòng)單元決定;如果沒有驅(qū)動(dòng)元件連接到網(wǎng)線上,則其默認(rèn)值為高阻z。此外線網(wǎng)類型的變量只能用assign進(jìn)行賦值驅(qū)動(dòng),不能在always中進(jìn)行賦值。

(可綜合的線網(wǎng)類型:)

②線網(wǎng)類型中的wire變量是最常用的,它可以最為任何表達(dá)式的輸入,也可以用做assign語句和模塊例化的輸出。Wire的取值是0、1、x、z。此外雖然Verilog語法允許wire類型的數(shù)據(jù)變量允許多個(gè)驅(qū)動(dòng)源,但是僅用于仿真當(dāng)中,綜合中任何變量連接多個(gè)驅(qū)動(dòng)源都是錯(cuò)誤的。

③tri線網(wǎng)類型,這個(gè)類型與wire類型功能幾乎一樣,但是當(dāng)總線上需要描述高阻態(tài)的特性時(shí),用它來描述以跟wire進(jìn)行區(qū)分。

④supply1和supply0線網(wǎng)類型:supply1用來對電源建模,即高電平1,;supply0用來對低電平進(jìn)行建模,即低電平0。

(不可綜合,進(jìn)用于仿真的線網(wǎng)類型:)

⑤wor(線或)、trior(三態(tài)或):專門用于單信號(hào)多驅(qū)動(dòng);

Wand(線與)、triand(三態(tài)與):專門用于多驅(qū)動(dòng)源;

Trireg:具有電荷保持特性的連線;

Tri1:上拉電阻;tri0:下拉電阻。

(2)寄存器類型

①寄存器型變量,都有“寄存特性”,即在接受下一個(gè)賦值之前,將保持原值不變。寄存器變量沒有強(qiáng)度之分,且所以的寄存器類型變量都必須明確給出類型說明(無默認(rèn)狀態(tài))。

(可綜合的寄存器類型:)

②最常用的是reg類型的寄存器變量。寄存器變量可以取任意長度,默認(rèn)值未知,reg類型的數(shù)據(jù)可以是正值或者負(fù)值。但當(dāng)一個(gè)reg類型的數(shù)據(jù)是一個(gè)表達(dá)式的操作數(shù)時(shí),它的值被當(dāng)做無符號(hào)數(shù),即正值(比如,你定義了reg [3:0] a;…a = -2;那么由于-2的補(bǔ)碼是1110,a中存儲(chǔ)的值是1110,也就是值其實(shí)是14)。

③integer類型,這種類型是整數(shù)寄存器類型,可以作為32位的普通寄存器使用,但是不能直接取這個(gè)變量的某一位,而是通過把這個(gè)變量賦予給一個(gè)32位的reg變量,對reg變量進(jìn)行操作。

④賦值注意:賦值總是從最右端的位向最左端的位進(jìn)行;任何多余的位將被截?cái)唷4送庥捎谡麛?shù)的負(fù)數(shù)形式實(shí)質(zhì)上是以補(bǔ)碼向量表示的,因此需要注意賦值的位寬。

⑤reg的擴(kuò)展類型——memory類型:reg [n-1:0] 存儲(chǔ)器名 [m-1:0] ;(表示深度是m,字寬是n的存儲(chǔ)器,可以存儲(chǔ)mxn個(gè)bit)。此外不能直接對memory進(jìn)行讀寫,而是先定義一個(gè)地址寄存器,通過這個(gè)地址寄存器進(jìn)行索引,再取值。

(不可綜合,僅用于仿真的寄存器變量有:)

⑥time類型:用于存儲(chǔ)和處理時(shí)間,只存儲(chǔ)無符號(hào)數(shù);

Real類型:實(shí)數(shù)類型;realtime類型;由于這種電路設(shè)計(jì)中不常用,所以不過多記載。

四、運(yùn)算符

在Verilog中,所謂的運(yùn)算符就是用來進(jìn)行運(yùn)算的,根據(jù)運(yùn)算符所帶的操作數(shù)的個(gè)數(shù),可以分為單目、雙目、三目。然后我們還是喜歡根據(jù)功能進(jìn)行劃分,大概有9種功能類型的運(yùn)算符。

(1)賦值運(yùn)算符

①賦值運(yùn)算分為連續(xù)賦值和過程賦值。

②連續(xù)賦值語句,也成為數(shù)據(jù)流描述方式,用assign關(guān)鍵字表示,賦值符號(hào)是“=”,只能對線網(wǎng)賦值。

一個(gè)線網(wǎng)型變量一旦被連續(xù)賦值語句賦值之后,賦值語句右端賦值表達(dá)式的值將連續(xù)對被賦值變量產(chǎn)生連續(xù)驅(qū)動(dòng)。只要右端表達(dá)式任一個(gè)操作數(shù)的值發(fā)生變化,就會(huì)立即出發(fā)對被賦值變量的更新操作。

③過程賦值,主要用于initial模塊和always模塊中的賦值語句。在過程塊中,只能使用過程賦值語句,同時(shí)過程賦值語句也只能用在過程賦值模塊中。

過程賦值的賦值符號(hào)是“=”“<=”,分別表示阻塞賦值和非阻塞賦值。

(2)算術(shù)運(yùn)算符

①算術(shù)運(yùn)算符又稱為二進(jìn)制運(yùn)算符,有+(加)、-(減)、*(乘)、/(除)、%(取余)。

②+、-、*是可以綜合的,/和%只有在除數(shù)或者模值是2的整數(shù)次(2、4、8…)的時(shí)候才是可以綜合。

③在進(jìn)行乘除運(yùn)算時(shí),結(jié)果值會(huì)略去小數(shù)部分;在取余操作中,結(jié)果的符號(hào)位和取余運(yùn)算第一位操作數(shù)的符號(hào)位保持一致(-12/(6/4),符號(hào)位與-12一致)。

④在進(jìn)行基本算術(shù)運(yùn)算時(shí),如果某一操作數(shù)有不確定的值x,則運(yùn)算結(jié)果也是不確定值x。

⑤算術(shù)表達(dá)式結(jié)果的位寬由位寬最大的操作數(shù)決定;在賦值賦值語句中(無論是連續(xù)還是過程賦值),算術(shù)操作的結(jié)果的位寬由操作符左端目標(biāo)位寬決定;在較長的表達(dá)式中,中間結(jié)果的位寬應(yīng)取最大操作數(shù)的位寬;此外由于位寬的關(guān)系,在運(yùn)算是要進(jìn)行位寬保留,也就是結(jié)果位寬取大一點(diǎn),防止溢出。

⑥有無符號(hào)的算術(shù)運(yùn)算討論:在設(shè)計(jì)中,所有的算術(shù)運(yùn)算都是按照無符號(hào)數(shù)進(jìn)行的;如果要完成有符號(hào)數(shù)的計(jì)算,對于加減操作,通過補(bǔ)碼處理即可用無符號(hào)加法完成;對于乘法操作,無符號(hào)數(shù)直接采用“*”操作,有符號(hào)數(shù),通過定義輸入輸出和中間變量的符號(hào)類型為signed來處理。

(3)邏輯運(yùn)算符

①邏輯運(yùn)算符有:邏輯與&&、邏輯或||和邏輯非!;其中&&和||是雙目運(yùn)算符,運(yùn)算結(jié)果是一位;!是單目運(yùn)算符,結(jié)果是一位。

(4)關(guān)系運(yùn)算符

①關(guān)系運(yùn)算符有8種:大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、邏輯相等(==)、邏輯不相等(!=)、全等(===)、全不等(!==)。

②關(guān)系運(yùn)算符的結(jié)果是1位(包括1、0、x、z)。

③“===”和“!==”可以比較含有x和z的操作數(shù),但是由于實(shí)際硬件中不存在x態(tài)和z態(tài),在綜合時(shí)將按照“==”和“!=”來進(jìn)行;其實(shí)際的功能僅用在仿真中。

(5)條件運(yùn)算符

①條件運(yùn)算符,三目運(yùn)算符:(條件表達(dá)式)?():();

(6)位運(yùn)算符

①位運(yùn)算符有:按位與(&)、按位或(|)、按位反(~)、按位異或(^)、按位同或(^~或者~^)。除~外,都是雙目運(yùn)算符。

②運(yùn)算結(jié)果可能是多位(每一個(gè)操作數(shù)的對應(yīng)位進(jìn)行運(yùn)算,得出的結(jié)果也是各個(gè)位運(yùn)算“拼”起來的結(jié)果),不僅僅是1為,注意與邏輯運(yùn)算符的區(qū)別!,此外如果兩個(gè)操作數(shù)的長度不相等,將會(huì)對較短的數(shù)進(jìn)行高位補(bǔ)0,然后進(jìn)行相應(yīng)的位運(yùn)算,使輸出結(jié)果的長度與位寬的操作數(shù)保持一致。

(7)拼接運(yùn)算符

①拼接運(yùn)算符可以將兩個(gè)或者更多信號(hào)的某些位拼接起來進(jìn)行運(yùn)算操作,{a1,b1,c1…}這樣子拼接,拼接運(yùn)算也可以復(fù)制一個(gè)常量或者變量。

(8)移位運(yùn)算符

①移位運(yùn)算符有兩個(gè):左移(<<)、右移(>>),移位過程中都用0來填補(bǔ)移出的空位,左移會(huì)引起位數(shù)擴(kuò)大,而右移則不會(huì)(如4’b1101<<2 = 6’b110100);因此要注意移位后變量的位數(shù),以及存儲(chǔ)移位后結(jié)果的存儲(chǔ)器/線網(wǎng)位寬。

②左移相當(dāng)于乘2,而右移相當(dāng)于除2,在實(shí)際運(yùn)算中,經(jīng)常通過不同移位數(shù)的組合來計(jì)算簡單的乘法和除法,比如result=data*19中,因?yàn)?0=16 + 2 + 1=2^4+2^1+2^0,所以result = data<<4 + data<<1+data;(當(dāng)然實(shí)際代碼中不是這樣的,而是在always塊中進(jìn)行不同的移位,中間寄存器進(jìn)行存儲(chǔ)移位結(jié)果,然后用assign語句進(jìn)行加起來)

(9)一元簡約/歸約運(yùn)算符

①一元?dú)w約運(yùn)算符是單目運(yùn)算符,操作數(shù)放在右邊,操作符有歸約與(&)、歸約或(|)、歸約與非(~&)、歸約或非(~|)、歸約異或(^)、歸約同或(~^),運(yùn)算形式是(?):首先將操作數(shù)的第一位和第二位進(jìn)行相應(yīng)的與、或等操作,然后再講運(yùn)算結(jié)果和第三位進(jìn)行操作,依次類推直至最后一位。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5363

    瀏覽量

    121169
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110395

原文標(biāo)題:視角 | Verilog是怎么一點(diǎn)一點(diǎn)寫出來的!

文章出處:【微信號(hào):wc_ysj,微信公眾號(hào):旺材芯片】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    分享一些優(yōu)秀的verilog代碼 高質(zhì)量verilog代碼的六要素

    高質(zhì)量的verilog代碼至少需要包含以下幾個(gè)要素:可讀性、功能、性能、標(biāo)準(zhǔn)化、穩(wěn)定性、可定位。
    的頭像 發(fā)表于 07-18 10:09 ?1233次閱讀
    分享<b class='flag-5'>一些</b>優(yōu)秀的<b class='flag-5'>verilog</b>代碼 高質(zhì)量<b class='flag-5'>verilog</b>代碼的六<b class='flag-5'>要素</b>

    正弦脈寬調(diào)制(SPWM)波的基本要素

    正弦脈寬調(diào)制(SPWM)波的基本要素 摘要:本文以電工學(xué)正弦理論為基礎(chǔ);以經(jīng)典的自然采樣法為依托;以電子變流技術(shù)為研究對象,  &
    發(fā)表于 11-14 11:57

    PCB設(shè)計(jì)基本要素

    syj工程編寫的PCB設(shè)計(jì)基本要素
    發(fā)表于 12-13 14:05

    PCB設(shè)計(jì)的電源平面處理基本要素是什么?

    電源平面的處理,在PCB設(shè)計(jì)中占有很重要的地位。在個(gè)完整的設(shè)計(jì)項(xiàng)目中,通常電源的處理決定項(xiàng)目的30%-50%的成功率。本次給大家介紹在PCB設(shè)計(jì)過程中電源平面處理應(yīng)該考慮的基本要素
    發(fā)表于 09-11 11:52

    形成干擾的基本要素

    形成干擾的基本要素切斷干擾傳播路徑的常用措施提高敏感器件的抗干擾性能
    發(fā)表于 02-05 06:26

    E-R圖的基本要素有哪些

    E-R圖的基本要素是實(shí)體型、屬性和聯(lián)系。寫出三種腳本語言Python、JAVASCRIPT,ASP,PHP,PERL,Nuva
    發(fā)表于 09-09 07:36

    Verilog HDL華為入門教程

    Verilog HDL 華為入門教程 本文主要介紹了Verilog HDL 語言的一些基本知識(shí),目的是使初學(xué)者能夠迅速掌握HDL設(shè)計(jì)方法,初步了解并掌握Verilog HDL語言的
    發(fā)表于 02-11 08:35 ?141次下載

    Verilog HDL硬件描述語言_Verilog語言要素

    本章介紹Verilog HDL的基本要素,包括標(biāo)識(shí)符、注釋、數(shù)值、編譯程序指令、系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。另外,本章還介紹了Verilog硬件描述語言中的兩種數(shù)據(jù)類型。verilog相關(guān)教程
    發(fā)表于 04-25 16:09 ?17次下載

    Verilog HDL入門教程

    本文主要介紹了Verilog HDL 語言的一些基本知識(shí),目的是使初學(xué)者能夠迅速掌握HDL設(shè)計(jì)方法,初步了解并掌握Verilog HDL語言的基本要素,能夠讀懂簡單的設(shè)計(jì)代碼并能夠進(jìn)行
    發(fā)表于 07-15 15:27 ?0次下載

    Verilog的語言要素

    本章介紹Verilog HDL的基本要素,包括標(biāo)識(shí)符、注釋、數(shù)值、編譯程序指令、系統(tǒng)任務(wù)和系統(tǒng)函數(shù)。另外,本章還介紹了Verilog硬件描述語言中的兩種數(shù)據(jù)類型。 3.1 標(biāo)識(shí)符
    發(fā)表于 02-11 17:01 ?2032次閱讀
    <b class='flag-5'>Verilog</b>的語言<b class='flag-5'>要素</b>

    Verilog HDL入門教程

    本文主要介紹了Verilog HDL 語言的一些基本知識(shí),目的是使初學(xué)者能夠迅速掌握HDL 設(shè)計(jì)方法,初步了解并掌握Verilog HDL語言的基本要素,能夠讀懂簡單的設(shè)計(jì)代碼并能夠進(jìn)
    發(fā)表于 02-11 08:00 ?99次下載
    <b class='flag-5'>Verilog</b> HDL入門教程

    PCB檢查的細(xì)節(jié)要素一些

    PCB的檢查有很多個(gè)細(xì)節(jié)的要素,本人列舉了一些自認(rèn)為最基本的并且最容易出錯(cuò)的要素,作為后期檢查。
    的頭像 發(fā)表于 01-08 17:02 ?1821次閱讀

    華為Verilog HDL入門教程的PDF電子書免費(fèi)下載

    本文主要介紹了Verilog HDL 語言的一些基本知識(shí),目的是使初學(xué)者能夠迅速掌握HDL設(shè)計(jì)方法,初步了解并掌握Verilog HDL語言的基本要素,能夠讀懂簡單的設(shè)計(jì)代碼并能夠進(jìn)行
    發(fā)表于 12-23 16:47 ?92次下載
    華為<b class='flag-5'>Verilog</b> HDL入門教程的PDF電子書免費(fèi)下載

    verilog一些基本概念

    FPGA各位和數(shù)字IC設(shè)計(jì)崗位面試時(shí)常常會(huì)問下verilog一些基本概念,做了下整理,面試時(shí)定用得上!
    的頭像 發(fā)表于 07-07 09:51 ?1566次閱讀

    PCB的五個(gè)基本要素

    網(wǎng)絡(luò)。同時(shí)PCB板還具有絕緣,隔熱,防潮等功能。 3、PCB的五個(gè)基本要素用 01 要素:載板 PCB的載板又稱為基
    的頭像 發(fā)表于 01-07 09:30 ?305次閱讀
    百家乐官网视频聊天游戏| 百家乐赌场老千| 太阳城| 百家乐官网玩法介绍图片| 澳门百家乐博| 游戏百家乐官网押金| 大发888客户端下载| 百家乐官网彩金| 百家乐技巧经| 名人百家乐官网的玩法技巧和规则| 大发888网站打不开| 百家乐官网园好又多| 888娱乐城| 百家乐棋牌作弊器| 百家乐官网洗码软件| 百家乐群html| 玩百家乐官网平台| 大发888娱乐场下载最高| 诺贝尔百家乐官网的玩法技巧和规则 | 百樂坊百家乐官网的玩法技巧和规则 | 百家乐注册| 百家乐官网如何打公式| 威尼斯人娱乐城好吗| 扑克百家乐官网麻将筹码防伪| 平昌县| 上海百家乐的玩法技巧和规则| 百家乐官网网上赌有作假吗| 188金宝博备用网址| 海威百家乐赌博机| 百家乐官网棋牌官网| 高额德州扑克视频| 博彩百家乐软件| 百家乐官网信誉平台现金投注| 大发888 漏洞| 克拉克百家乐试玩| 澳门百家乐官网视频| 大发888在线网址| 百家乐二游戏机| 百家乐官网返点| 网上真钱娱乐| 全讯网3344666|