練習一
有符號數(shù)據(jù)與無符號數(shù)據(jù)對比
代碼:
module vector_transfer(); logic[7:0]logic_vector=8'b1000_0000; bit [7:0] bit_vector=8'b1000_0000; byte signed_vector=8'b1000_0000; initial begin $display("logic_vector=%d",logic_vector); $display("bit_vector=%d",bit_vector); $display("signed_vector=%d",signed_vector); end endmodule
仿真結(jié)果:
相信各位小伙伴,都能理解該仿真結(jié)果的產(chǎn)生,但是可能有的小伙伴會有疑問,為什么signed_vector的-128結(jié)果中間有很多空格?你真的仔細,先為你豎起大拇指,接下來我們就講解一下為什么輸出結(jié)果會是這樣。
這里是解釋
首先,在開始階段,聲明變量logic_vector為8位,bit_vector為8位,signed_vector沒有明確給出具體位寬,默認32位。是不是看到區(qū)別了,別激動,接著往下看,8位二進制數(shù)轉(zhuǎn)換位十進制數(shù)最大值為2^8-1=255,位寬為3,同樣道理,32位二進制數(shù)轉(zhuǎn)換位十進制數(shù)最大值為2^32-1=42_6496_7295,位寬為10,理解了這個接下來就是重點了哦?。?!在使用到display時,我們經(jīng)常需要考慮到顯示數(shù)據(jù)的對齊方式,一般會在%和指定基數(shù)之間通過指定域?qū)拋韺崿F(xiàn)顯示數(shù)據(jù)的對齊,格式一般為:%(域?qū)捴担?進制)
域?qū)捴担?/strong>即為顯示數(shù)據(jù)的個數(shù);
進制:可以是二進制b,十進制d,八進制o,十六進制h;
%(進制)默認為最大位寬
理解了這些,我們接著分析上邊的代碼:
$display("logic_vector=%d",logic_vector) 顯示的logic_vector默認為最大位寬3
$display("bit_vector=%d",bit_vector) 顯示的logic_vector默認為最大位寬3
$display("signed_vector=%d",signed_vector) 顯示的logic_vector默認為最大位寬10
所以顯示結(jié)果 logic_vector=128;bit_vector=128;signed_vector= -128(中間空7個位寬);如果想實現(xiàn)signed_vector= -128,可以修改代碼:$display("signed_vector=%0d", signed_vector);%0表示按照實際位寬進行解釋。
練習二
有符號數(shù)據(jù)與無符號數(shù)據(jù)轉(zhuǎn)換
代碼:
module vector_transfer1(); byte signed_vector=8'b1000_0000; bit[8:0]result_vector; initial begin result_vector=signed_vector; $display("@1 result_vector='h%x",result_vector); result_vector=unsigned'(signed_vector); $display("@2 result_vector='h%x",result_vector); end endmodule
仿真結(jié)果:
練習三
數(shù)據(jù)截取
代碼:
module vector_transfer2(); logic [3:0] x_vector=4'b111x; bit [2:0] bit_vector; initial begin $fsdbDumpfile("vector_transfer2.fsdb"); $fsdbDumpvars; end initial begin $display("@1 x_vector='b%b",x_vector); bit_vector=x_vector; $display("@2 bit_vector='b%b",bit_vector); end endmodule
仿真結(jié)果:
練習四
隊列的基本用法
代碼:
module queue(); int j=1, q2[$]={3,4}, q[$]={0,2,5}; initial begin $fsdbDumpfile("queue.fsdb"); $fsdbDumpvars; end initial begin q.insert(1,j); $display(q); q.insert(3,q2[0]); $display(q); q.insert(4,q2[1]); $display(q); q.delete(1); $display(q); q.push_front(6); $display(q); j=q.pop_back; $display(j);; q.push_back(8); $display(q); j=q.pop_front; $display(j); foreach(q[i]) $display(q[i]); q.delete(); end endmodule
仿真結(jié)果:
審核編輯:劉清
-
二進制
+關(guān)注
關(guān)注
2文章
786瀏覽量
41571 -
仿真器
+關(guān)注
關(guān)注
14文章
1014瀏覽量
83594 -
十進制
+關(guān)注
關(guān)注
0文章
66瀏覽量
13170
原文標題:IC學霸筆記 | SV基本語法練習
文章出處:【微信號:IC修真院,微信公眾號:IC修真院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論