色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

詳解Verilog的一些基本要素

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

一、標識符與注釋

前面已經說到,模塊名的定義要符合標識符的定義,那么什么是標識符呢?它的語法是什么呢?

①標識符是賦給對象的唯一名稱,通過標識符可以提及相應的對象,Verilog語法將對轉義標識符中的字符逐個處理。

②標識符可以是字母、數字、下劃線和美元符$的組合,并且標識符的第一個字母必須是字母或者是下劃線。此外,在Verilog的標識符中,是區分大小寫的。

③Verilog中有一些關鍵字,簡單地了解就是,預定義好了的,用來說明語言節后的標識符,都是小寫的。標識符不能和關鍵字重復。

④Verilog中還有一種叫做轉義標識符的東西,定義為以(反斜杠)符號開頭,以空白結尾(如一個空格)的字符。如initial就是一個轉義字符。轉義標識符和關鍵字是不一樣的,比如initial是非關鍵字,而initial是關鍵字。

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

①以/開始注釋,/結束注釋,即/ 注釋內容/,可以多行注釋。

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

二、常量

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

(1)數值邏輯

數字邏輯就是一種狀態,可言說說一種常量了,有下面的知識點/注意點:

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

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

(2)數值

一個數也是一種常量。

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

②對于Verilog中的整數,可以分為簡單的十進制數和基數表示的整數。

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

注意,簡單的十進制數格式的整數代表一個有符號的數,其中負數可使用兩種補碼形式表示。下面舉例子進行說明:

對于簡單的十進制32,它是一個有符號的數,由于二進制中才對有無符號進行區分,因此它在二進制中,用6位表示就是100000或者用7位表示就是0100000(最高位是符號位);對于簡單的十進制數-15,在二進制中,用5位表示就是10001,用6位表示就是110001(最高位是符號擴展位)。

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

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

(3)字符串

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

(4)參數

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

三、變量—數據類型

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

(1)線網類型

①線網類型主要表示表示Verilog中的結構化元件之間的物理連線,其數值由驅動單元決定;如果沒有驅動元件連接到網線上,則其默認值為高阻z。此外線網類型的變量只能用assign進行賦值驅動,不能在always中進行賦值。

(可綜合的線網類型:)

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

③tri線網類型,這個類型與wire類型功能幾乎一樣,但是當總線上需要描述高阻態的特性時,用它來描述以跟wire進行區分。

④supply1和supply0線網類型:supply1用來對電源建模,即高電平1,;supply0用來對低電平進行建模,即低電平0。

(不可綜合,進用于仿真的線網類型:)

⑤wor(線或)、trior(三態或):專門用于單信號多驅動;

Wand(線與)、triand(三態與):專門用于多驅動源;

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

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

(2)寄存器類型

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

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

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

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

④賦值注意:賦值總是從最右端的位向最左端的位進行;任何多余的位將被截斷。此外由于整數的負數形式實質上是以補碼向量表示的,因此需要注意賦值的位寬。

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

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

⑥time類型:用于存儲和處理時間,只存儲無符號數;

Real類型:實數類型;realtime類型;由于這種電路設計中不常用,所以不過多記載。

四、運算符

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

(1)賦值運算符

①賦值運算分為連續賦值和過程賦值。

②連續賦值語句,也成為數據流描述方式,用assign關鍵字表示,賦值符號是“=”,只能對線網賦值。

一個線網型變量一旦被連續賦值語句賦值之后,賦值語句右端賦值表達式的值將連續對被賦值變量產生連續驅動。只要右端表達式任一個操作數的值發生變化,就會立即出發對被賦值變量的更新操作。

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

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

(2)算術運算符

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

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

③在進行乘除運算時,結果值會略去小數部分;在取余操作中,結果的符號位和取余運算第一位操作數的符號位保持一致(-12/(6/4),符號位與-12一致)。

④在進行基本算術運算時,如果某一操作數有不確定的值x,則運算結果也是不確定值x。

⑤算術表達式結果的位寬由位寬最大的操作數決定;在賦值賦值語句中(無論是連續還是過程賦值),算術操作的結果的位寬由操作符左端目標位寬決定;在較長的表達式中,中間結果的位寬應取最大操作數的位寬;此外由于位寬的關系,在運算是要進行位寬保留,也就是結果位寬取大一點,防止溢出。

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

(3)邏輯運算符

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

(4)關系運算符

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

②關系運算符的結果是1位(包括1、0、x、z)。

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

(5)條件運算符

①條件運算符,三目運算符:(條件表達式)?():();

(6)位運算符

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

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

(7)拼接運算符

①拼接運算符可以將兩個或者更多信號的某些位拼接起來進行運算操作,{a1,b1,c1…}這樣子拼接,拼接運算也可以復制一個常量或者變量。

(8)移位運算符

①移位運算符有兩個:左移(<<)、右移(>>),移位過程中都用0來填補移出的空位,左移會引起位數擴大,而右移則不會(如4’b1101<<2 = 6’b110100);因此要注意移位后變量的位數,以及存儲移位后結果的存儲器/線網位寬。

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5362

    瀏覽量

    120899
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110234

原文標題:視角 | Verilog是怎么一點一點寫出來的!

文章出處:【微信號:wc_ysj,微信公眾號:旺材芯片】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    分享一些優秀的verilog代碼 高質量verilog代碼的六要素

    高質量的verilog代碼至少需要包含以下幾個要素:可讀性、功能、性能、標準化、穩定性、可定位。
    的頭像 發表于 07-18 10:09 ?1212次閱讀
    分享<b class='flag-5'>一些</b>優秀的<b class='flag-5'>verilog</b>代碼 高質量<b class='flag-5'>verilog</b>代碼的六<b class='flag-5'>要素</b>

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

    正弦脈寬調制(SPWM)波的基本要素 摘要:本文以電工學正弦理論為基礎;以經典的自然采樣法為依托;以電子變流技術為研究對象,  &
    發表于 11-14 11:57

    PCB設計基本要素

    syj工程編寫的PCB設計基本要素
    發表于 12-13 14:05

    PCB設計的電源平面處理基本要素是什么?

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

    形成干擾的基本要素

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

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

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

    Verilog HDL華為入門教程

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

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

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

    Verilog HDL入門教程

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

    Verilog的語言要素

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

    Verilog HDL入門教程

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

    PCB檢查的細節要素一些

    PCB的檢查有很多個細節的要素,本人列舉了一些自認為最基本的并且最容易出錯的要素,作為后期檢查。
    的頭像 發表于 01-08 17:02 ?1806次閱讀

    華為Verilog HDL入門教程的PDF電子書免費下載

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

    verilog一些基本概念

    FPGA各位和數字IC設計崗位面試時常常會問下verilog一些基本概念,做了下整理,面試時定用得上!
    的頭像 發表于 07-07 09:51 ?1548次閱讀

    PCB的五個基本要素

    網絡。同時PCB板還具有絕緣,隔熱,防潮等功能。 3、PCB的五個基本要素用 01 要素:載板 PCB的載板又稱為基
    的頭像 發表于 01-07 09:30 ?251次閱讀
    主站蜘蛛池模板: 国产97视频在线观看| 一本之道高清在线3线观看| 国产成人久久AV免费看澳门| 69精品国产人妻蜜桃国产毛片| 亚洲色欲色欲www474ee| 亚洲精品乱码电影在线观看| 亚洲成人一区二区| 小蝌蚪视频在线观看免费观看WWW 小货SAO边洗澡边CAO你动漫 | 全肉高H短篇合集| 日韩av国产av欧美天堂社区| 欧美XXXX69学生HD| 漂亮妈妈中文字幕版| 日本理伦片午夜理伦片| 婷婷精品国产亚洲AV在线观看| 少妇精品无码一区二区三区 | 国产偷窥盗摄一区二区| 国产在线观看99| 久久亚洲成a人片| 免费伦理片网站| 日本视频中文字幕一区二区| 伊人综合在线22| 9277在线观看免费高清完整版| FREE另类老女人| 高h肉肉乳共妻| 国产女人与黑人在线播放| 花蝴蝶hd免费| 两个客户一起吃我的奶| 欧美无码专区| 最近中文字幕MV免费看| caoporn免费视频在线| 久久er99热精品一区二区| 国产色偷偷男人的天堂| 欧美亚洲精品真实在线| 最新高清无码专区| 很黄很色60分钟在线观看| 美女张开腿露尿口给男人亲| 日韩 国产 中文 无码| 99国产精品偷窥熟女精品视频| 国产成人无码精品久久久影院| 欧美亚洲日本日韩在线| 99久久久无码国产AAA精品|