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

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

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

Verilog基本語法之?dāng)?shù)據(jù)類型

jf_GctfwYN7 ? 來源:IC修真院 ? 2023-06-18 10:52 ? 次閱讀

數(shù)據(jù)類型及常量、變量

數(shù)據(jù)類型

數(shù)據(jù)類型是用來表示數(shù)字電路中的數(shù)據(jù)存儲(chǔ)和傳送單元

4種基本的數(shù)據(jù)類型

integer(整形)

parameter類型

reg

wire(線網(wǎng))

常量

在程序運(yùn)行的過程中,其值不允許被改變

包括:

數(shù)字(包括整形,x和z值,負(fù)數(shù))

parameter常量(或稱符號(hào)常量)

1. 整數(shù)型常量

二進(jìn)制 (b/B)

十進(jìn)制 (d/D)

十六進(jìn)制 (h/H)

八進(jìn)制 (o/O)

整常數(shù)的3種表達(dá)方式

<位寬>'<進(jìn)制><數(shù)字> 完整的表達(dá)方式 8'11000101或 8'hc5
<進(jìn)制><數(shù)字> 缺省位寬,有機(jī)器系統(tǒng)決定,至少32位 hc5
<數(shù)字> 缺省進(jìn)制為十進(jìn)制,位寬默認(rèn)為32位 197
表達(dá)方式 說明 舉例

注:位寬表示二進(jìn)制時(shí)的寬度

2.x和z值

x表示不定值(8'b1001xxxx或8’h9x);

z表示高阻值(8'b1001zzzz或8’h9z);

每個(gè)字符代表的二進(jìn)制的寬度取決于所用的進(jìn)制;

當(dāng)用二進(jìn)制表示時(shí),以表明位寬的數(shù)若用x或者z表示某些位,則只有在最左邊的x或z具有擴(kuò)展性例如:8'bzx = 8'bzzzz_zzzx 8'b1x = 8'b0000_001x

?是z的另一種表示符號(hào),建議在case語句中使用?表示高阻態(tài)z。

casez (select)
    4'h???1: out=a;
    4'h??1?: out=b;
    4'h?1??: out=c;
    4'h1???: out=d;
endcase

3.負(fù)數(shù)

在位寬前邊加一個(gè)負(fù)號(hào),表示負(fù)數(shù);

如:-8’d5 //5的補(bǔ)數(shù) =8'11111011

負(fù)號(hào)不能放在位寬和進(jìn)制之間,也不能放在進(jìn)制和數(shù)字之間

4.parameter常量(符號(hào)常量)

用parameter來定義一個(gè)標(biāo)示符,代表一個(gè)常量,稱為符號(hào)常量

格式:

parameter 參數(shù)名1 = 表達(dá)式, 參數(shù)名2 = 表達(dá)式

parameter 參數(shù)型數(shù)據(jù)的確認(rèn)符,后邊的為賦值語句表

每個(gè)賦值語句的右邊必須為常數(shù)表達(dá)式,且只能包含數(shù)字或先前定義過的符號(hào)常量:

parameter addrwidth =16; //合法

parameter addrwidth = addrwidth * 2 //非法

常用參數(shù)來定義延時(shí)時(shí)間和變量寬度

可用字符串表示的任何地方,都可用定義的參數(shù)來代替;

參數(shù)是本地的,其定義只在本模塊有效;

在模塊或?qū)嵗瘯r(shí),可通過參數(shù)傳遞改變?cè)诒灰媚K或?qū)嵗幸讯x的參數(shù)

localparam 符號(hào)常量

格式:

localparam 參數(shù)名1 = 表達(dá)式, 參數(shù)名2 = 表達(dá)式;

localparam 參數(shù)型數(shù)據(jù)的確認(rèn)符,后邊的為賦值語句表

parameter可作為在頂層模塊中例化底層模塊時(shí)傳遞參數(shù)的接口

localparam的作用域僅僅限于當(dāng)前module,不能作為參數(shù)傳遞的接口;

實(shí)例:

module mod (out, ina, inb);
...
parameter cycle = 8, real_cinstant = 2.039;
...
endmodule 




module test;
...
mod #(6,3.19) mk(out,ain,bin); //對(duì)mod模塊的實(shí)例引用及參數(shù)的傳遞
...
endmodule

變量

在程序運(yùn)行過程中,其值可以改變的量,稱為變量;

常用的有3種:

網(wǎng)絡(luò)型(nets)

寄存器型(register)

數(shù)組(memory)

1.net型變量

輸出始終隨輸入的變化二變化的變量(表示結(jié)構(gòu)實(shí)體之間的物理連接)

常用的net變量為wire。

wire型變量

最常用的nets型變量,常用來表示以assign語句賦值的組合邏輯信號(hào)

模塊中的輸入/輸出信號(hào)類型缺省為wire型

可用做任何方程式的輸入,或“assign”語句和實(shí)例元件的輸出。

2.register 型變量

對(duì)應(yīng)具有狀態(tài)保持作用的電路元件(如觸發(fā)器,寄存器)

常用來表示過程塊語句(initial always,task,function)內(nèi)的指定信號(hào)

常用register型變量:

reg:常代表觸發(fā)器

integer:32位帶符號(hào)整數(shù)型變量

real:64位帶符號(hào)實(shí)數(shù)型變量

time:無符號(hào)時(shí)間變量

register變量與net變量的根本區(qū)別:register變量要被明確的賦值,并且在被重新賦值前一直保持原值

register變量必須通過過程語句塊賦值,不能使用assign語句塊賦值

在過程語句塊內(nèi)賦值的每個(gè)信號(hào)必須定義成register型。

reg型變量

在過程塊中被賦值的信號(hào),往往代表觸發(fā)器,但不一定就是觸發(fā)器(也可以是組合邏輯信號(hào))

· reg與wire的區(qū)別:

//reg型變量既可以生成觸發(fā)器,也可以生成組合邏輯
//wire型變量只能生成組合邏輯


//用reg變量生成組合邏輯


module rw1(a,b,out1,out2);
input   a,b;
output  out1, out2;
reg     out1;
wireout2;


assign out2 = a;   //連續(xù)賦值語句
always @(b)        //電平觸發(fā)
       out1 <=~b;  //過程賦值語句
endmodule?


//用reg變量生成觸發(fā)器


module rw2(clk,d,out1,out2);
input   clk,d;
output  out1, out2;
reg     out1;
wire????out2;


assign out2 = d & ~out1;   //連續(xù)賦值語句
always @(posedge clk)        //邊沿觸發(fā)
     begin
       out1 <= d;  //過程賦值語句
 end
endmodule 

· 邊沿觸發(fā)和電平觸發(fā)的區(qū)別:

邊沿觸發(fā):posedge定義為上升沿觸發(fā),只有在后面信號(hào)由低變高的時(shí)候才觸發(fā),negedge正好相反,為下降沿觸發(fā)。

電平觸發(fā):當(dāng)敏感信號(hào)發(fā)生變化是觸發(fā)

3.memory型變量——數(shù)組

有若干個(gè)相同寬度的reg向量構(gòu)成的數(shù)組

Verilog 通過reg型變量簡歷數(shù)組來對(duì)存儲(chǔ)器建模

memory型變量可描述RAM,ROM和reg文件

memory型變量通過擴(kuò)展reg型變量的地址范圍來生成

reg [n-1:0] 存儲(chǔ)器名[m-1:0]; 每個(gè)存儲(chǔ)單元位寬為n,共有m個(gè)存儲(chǔ)單元

例:

reg [n-1:0] rega; //一個(gè)n位的寄存器;

reg mema [n-1:0] ; //n個(gè)一位寄存器組成的存儲(chǔ)器

賦值方式不同:

一個(gè)n位的寄存器可用一條賦值語句賦值,一個(gè)完整的存儲(chǔ)器則不行,若要對(duì)某存儲(chǔ)器中的存儲(chǔ)單元進(jìn)行讀寫操作,必須指明該單元在存儲(chǔ)器中的地址!

例:

rega=0; //合法賦值語句

mema=0; // 非合法賦值語句

mema[8]=1;//合法賦值語句

mema[1023:0]=0; //合法賦值語句





審核編輯:劉清

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

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119197
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    539

    瀏覽量

    85431
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114214
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1990

    瀏覽量

    60869
  • Verilog語言
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    8192

原文標(biāo)題:IC學(xué)霸筆記 | Verilog基本語法之?dāng)?shù)據(jù)類型

文章出處:【微信號(hào):IC修真院,微信公眾號(hào):IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    玩轉(zhuǎn)SQLite7:基本語法數(shù)據(jù)類型

    前面幾篇文章已經(jīng)快速了解了SQLite的基本用法以及簡單的Pyhton與C語言的API函數(shù)的使用。本篇再來全面介紹下SQLite的基本語法數(shù)據(jù)類型。
    的頭像 發(fā)表于 09-26 09:07 ?1602次閱讀
    玩轉(zhuǎn)SQLite7:基本<b class='flag-5'>語法</b>與<b class='flag-5'>數(shù)據(jù)類型</b>

    vhdl與verilog語法比較

    VHDL與verilog 的比較1vhdl語法要求嚴(yán)格 如賦值的數(shù)據(jù)類型必須一致, 左邊為整數(shù),右邊必須也為整數(shù), 左邊為矢量右邊必須也為矢量左右的數(shù)據(jù)的 位寬必須也一致,例如: li
    發(fā)表于 05-30 15:12

    【FPGA學(xué)習(xí)】Verilog HDL 語言的標(biāo)識(shí)符和數(shù)據(jù)類型有哪些?

    例子:PieroPIERO / /與 Piero 不同。_a1_b2c00_68ABC$Verilog HDL 有兩大類數(shù)據(jù)類型:? 線網(wǎng)類型,表示 Verilog HDL 結(jié)構(gòu)化元件
    發(fā)表于 09-19 09:36

    Verilog 變量聲明與數(shù)據(jù)類型

    Verilog 變量聲明與數(shù)據(jù)類型二上節(jié)介紹了wire,reg數(shù)據(jù)類型及其用法,并對(duì)變量定義中的向量的定義及使用做了說明。本節(jié)主要介紹其它幾種類型。常用的有如下幾種:整數(shù)integer
    發(fā)表于 08-06 09:21

    Verilog 變量聲明與數(shù)據(jù)類型

    Verilog 變量聲明與數(shù)據(jù)類型Verilog語法中最基本的數(shù)據(jù)類型有 線網(wǎng)(wire),寄存器(reg)和整數(shù)(integer)三種
    發(fā)表于 08-10 14:01

    ARM數(shù)據(jù)類型有哪些?

    ARM數(shù)據(jù)類型有哪些?GNU ARM匯編語法格式是什么?
    發(fā)表于 11-30 06:09

    vhdl數(shù)據(jù)類型

    VHDL中的標(biāo)識(shí)符可以是常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字。VHDL中的數(shù)據(jù)類型可以分成四大類: 標(biāo)量型(SCALAR TYPE):屬單元素的最基本的數(shù)據(jù)類型,通常用于描述一個(gè)單值數(shù)據(jù)對(duì)象
    發(fā)表于 03-30 15:59 ?11次下載

    KEIL-MDK和STM32的數(shù)據(jù)類型-入門篇pdf資料下載

    數(shù)據(jù)類型-入門篇
    發(fā)表于 04-14 10:50 ?7次下載
    KEIL-MDK和STM32的<b class='flag-5'>數(shù)據(jù)類型</b>-<b class='flag-5'>之</b>入門篇pdf資料下載

    Struct結(jié)構(gòu)數(shù)據(jù)類型

    Struct類型是一種由多個(gè)不同數(shù)據(jù)類型元素組成的數(shù)據(jù)結(jié)構(gòu),其元素可以是基本數(shù)據(jù)類型,也可以是Struct、數(shù)組等復(fù)雜數(shù)據(jù)類型以及PLC
    的頭像 發(fā)表于 07-25 17:02 ?2806次閱讀

    結(jié)構(gòu)數(shù)據(jù)類型(Struct)及應(yīng)用案例

    Struct數(shù)據(jù)類型使用非常靈活,隨時(shí)可以使用,但是相對(duì)于PLC數(shù)據(jù)類型 (UDT) 有以下缺點(diǎn),所以建議需要使用Struct類型時(shí),可以使用PLC數(shù)據(jù)類型(UDT)代替。
    的頭像 發(fā)表于 07-27 16:10 ?1620次閱讀

    什么是數(shù)據(jù)類型轉(zhuǎn)換

    常用的3種數(shù)據(jù)類型:1、Python數(shù)據(jù)類型第一種:字符串(str)。 2、Python數(shù)據(jù)類型第二種:整數(shù)(int)。 3、Python數(shù)據(jù)類型第三種:浮點(diǎn)數(shù)(float)。
    的頭像 發(fā)表于 02-23 15:21 ?1646次閱讀

    定義數(shù)據(jù)類型

    在運(yùn)算之前我們必須首先定義出數(shù)據(jù)類型,定義出腳本支持的數(shù)據(jù)類型,這是運(yùn)算的基礎(chǔ)。 這一小節(jié)我們將定義出數(shù)據(jù)類型,在這里我們暫時(shí)定義四個(gè)數(shù)據(jù)類型:
    的頭像 發(fā)表于 03-03 10:10 ?827次閱讀

    Verilog中的基本數(shù)據(jù)類型

    本文將討論 verilog 中常用的數(shù)據(jù)類型,包括對(duì)數(shù)據(jù)表示、線網(wǎng)類型、變量類型和數(shù)組,分享一下使用方法和注意事項(xiàng)。
    的頭像 發(fā)表于 05-12 17:43 ?7230次閱讀
    <b class='flag-5'>Verilog</b>中的基本<b class='flag-5'>數(shù)據(jù)類型</b>

    Verilog最常用的2種數(shù)據(jù)類型

    Verilog 最常用的 2 種數(shù)據(jù)類型就是線網(wǎng)(wire)與寄存器(reg),其余類型可以理解為這兩種數(shù)據(jù)類型的擴(kuò)展或輔助。
    的頭像 發(fā)表于 05-29 16:27 ?1903次閱讀
    <b class='flag-5'>Verilog</b>最常用的2種<b class='flag-5'>數(shù)據(jù)類型</b>

    plc數(shù)據(jù)類型怎么理解和應(yīng)用

    PLC(可編程邏輯控制器)是一種工業(yè)自動(dòng)化設(shè)備,用于控制機(jī)械和工業(yè)過程。在PLC編程中,數(shù)據(jù)類型是非常重要的概念,因?yàn)樗鼪Q定了程序中數(shù)據(jù)的存儲(chǔ)和處理方式。正確理解和應(yīng)用PLC數(shù)據(jù)類型是編寫有效、可靠
    的頭像 發(fā)表于 12-19 11:39 ?3421次閱讀