日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SystemVerilog文本值和数据类型

發布時間:2023/12/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SystemVerilog文本值和数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SystemVerilog文本值和數據類型

1、增強的文本值賦值

給一個向量賦予文本值
在Veirlog語言中,一個向量可以很容易地賦值為全00、全x(不確定)或全z(高阻態)。

parameter SIZE = 64; reg [SIZE-1 :0] data; data = 0;//將數據各位置0 data = 'bz;//將數據各位置z data = 'bx;//將數據各位置x

上例中每個賦值都是可擴展的。如果SIZE參數被重新定義,如128,賦值會自動擴展到data的新長度。但是Verilog并未提供一種將向量賦為全1的方便途徑。為了將一個文本值所有位都置1,必須指定一個固定長度。

data = 64'hFFFFFFFFFFFFFFFFF;

為了使所有全1賦值都是可擴展的,Verilog設計者必須學習編碼技巧,例如使用一些操作類型來對向量賦全1,而不是指定文本值。

data = ~0;//0的補碼運算 data = -1;//2的補碼運算

給一個向量賦予特殊的文本值
SystemVerilog在兩個方面增強了文本值的賦值。第一,增加了一個更簡單的語法,可以指定要賦的值,而不用指定進制。第二,賦值可以是邏輯1.這個語法指定所有位被賦予什么值,該值前面有個硬撇號(’)。

'0:將左邊的所有位賦為0 '1:將左邊的所有位賦為1 'z或者'Z:將左邊的所有位賦為z 'x或者'X:將左邊的所有位賦為0 注意:硬撇號(')不同于重音符號(`) data = 'b1; //將data的所有位置為1

文本值隨左手邊向量寬度擴量

2、`define增強

SystemVerilog擴展了Verilog宏文本替換–`define的功能,是宏文本可以包含特殊字符。

`"允許字符串內的宏變量替換 字符串內的宏變量替換 Verilog允許在`define宏中使用雙引號("),但是雙引號內文本變成文本串。也就是說,在Verilog中, 不可能采用在字符串中嵌入宏變量的文本替換宏創建字符串。 SystemVerilog可以進行宏文本字符串的變量替換,這是通過在形成字符串的引號前加重音符號(`) 來實現。 //本例文本替換的目的是將所有出現的宏變量v變量替換為實際的變量值data。 `define print(v)\$display(`"variable v = %h`",v); `print(data);

在Verilog中,為了不影響表示字符串的雙引號,字符串內嵌入的引號必須帶轉義符: \ "

$display("variable \"data\" = %h",data);

當字符串是包含變量替換的文本替換宏的一部分時,對嵌入的雙引號僅使用轉義符是不夠的,必須使用
’ \ '"

`define print(v)\$display(`"variable '\'"v'\'" = %h`",v); `print(data);

通過宏建立標識符名
使用Verilog的’define,不可能通過連接兩個或多個文本宏來建立一個新的標識符。原因是創建的標識符名各部分之間總是有一個空格。

在宏文本中,“作為不引入空格的分隔符
SystemVerilog提供了一個不引入空格的方法,使用兩個連接的重音符(”),使兩個或多個文本宏連接成一個新的名字。
在多次使用一組相似的名字,并且無法使用數組的情況下,應用(")可以簡化源代碼。

需要定義多個名字相似的兩態bit變量和wand線網,并且將變量持續賦值給線網。 這個bit變量可以使用局部過程賦值,而這個wand線網是可以有多個驅動的線邏輯它的一個驅動時兩態變量:bit bit類型類似于Verilog的reg類型,但是bit類型只能儲存兩態值,而reg類型可儲存四態變量。 //在無文本替換的源文件中 bit d00_bit; wand d00_net = d00_bit; bit d01_bit; wand d01_net = d01_bit; ...//每一位都重復60多次 bit d62_bit; wand d62_net = d62_bit; bit d63_bit; wand d00_net = d62_bit; //使用SystemVerilog對`define增強 `define TWO_STATE_NET(name) bit name"_bit;\ wand name"_net = name"_bit; `TWO_STATE_NET(d00) `TWO_STATE_NET(d01) ... `TWO_STATE_NET(d62) `TWO_STATE_NET(d63)

總結

以上是生活随笔為你收集整理的SystemVerilog文本值和数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。