Verilog的數據類型


1          整數、實數和時間寄存器類型

    整數是一種通用的寄存器數據類型,用於對數量進行操作,使用integer進行聲明。

      integer counter;      //一般用途的變量用作計數器

      initial

              counter = -1;   //把-1存儲到寄存器中

    實數:實常量和實數寄存器數據類型使用關鍵字real來聲明,可以用十進制或科學計數法來表示。實數聲明不能帶有范圍,其默認值為0.如果將一個實數賦予一個整數,那么實數將會被取為最接近的整數。

      real delta;        //定義一個名為delta的實型變量

    時間寄存器:仿真是按照仿真時間進行的,verilog使用一個特殊的時間寄存器數據類型來保存仿真時間。時間變量通過使用關鍵字time來聲明,其寬度與具體實現無關,最小為64位。通過調用系統函數$time可以取得當前的仿真時間。

2          數組

    Verilog中允許聲明reg、integer、time、real、realtime及其向量類型的數組,對數組的維數沒有限制,即可聲明任意維數的數組。線網數組也可用於連接實例的端口,數組中的每個元素都可以作為一個標量或者向量,以同樣的方式來使用,形如<</span>數組名>[<</span>下標>]。

      Integer    count[0:7];      //由八位計數變量組成的數組

      reg  bool [31:0];             //由32個1位的布爾寄存器變量組成的數組

      wire [7:0] w_array2 [5:0];       //聲明8位向量的數組

 

注意:不要把數組和線網或寄存器向量混淆起來。向量是一個單獨的元件,它的位寬是n,數組由多個元件組成,其中每個元件的位寬為n或1.

3          存儲器

    Verilog中使用寄存器一維數組來表示存儲器。數字的每個元素成為一個元素或一個字(word),由一個數組索引來指定。每個字的位寬為1位或者多位。注意n個1位寄存器和一個n位寄存器是不同的。如果需要訪問存儲器中的一個特定的字,則可通過子的地址作為數組的下標來完成。

      reg  mem1bit[0:1023];            //1k的1位存儲器

      reg   [7:0] membyte [0:1023]; //1k的字節(8位)存儲器membyte

      membyet[511]         //取出membyte中地址511所處的字節

4          參數

    Verilog使用關鍵字parameter在模塊內定義常數。參數代表常數,不能像變量那樣賦值,但是每個模塊實例的參數值可以在編譯階段被重載。通過參數重載使得用戶可以對模塊實例進行定制。除此之外還可以對參數的類型和范圍進行定義。

      parameter port_id = 5;   //定義常數port_id 為5

 

5          字符串

    字符串保存在reg類型的變量中,每個字符占用8位(一個字節),因此寄存器變量的寬度應足夠大,以保證容納全部字符。如果寄存器變量的寬度大於字符串的大小,則verilog用0來填充左邊的空余位。如果寄存器變來那個的寬度小於字符串的大小,則verilog截去字符串最左邊的位。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM