国产久草深夜福利精品_精品国产看高清国产毛片_成年日韩片av在线网站_亚洲国产综合777_免费高清一级在线观看_欧美色图中文字幕_老中医用嘴排阴毒 小雨_99精品无码视频在线播放_久久久精品强暴视频_国产aⅴ一区最新精品

SystemVerilog語(yǔ)言簡(jiǎn)介(下)
電子元件,電子元器件深圳市創(chuàng)唯電子有限公司
您現(xiàn)在的位置: 首頁(yè) > 電子技術(shù)
SystemVerilog語(yǔ)言簡(jiǎn)介(下)  2012/3/1
15. 強(qiáng)制類型轉(zhuǎn)換  Verilog不能將一個(gè)值強(qiáng)制轉(zhuǎn)換成不同的數(shù)據(jù)類型。SystemVerilog通過(guò)使用<type>’操作符提供了數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換功能。這種強(qiáng)制轉(zhuǎn)換可以轉(zhuǎn)換成任意類型,包括用戶定義的類型。例如:  int’ (2.0 * 3.0) // 將結(jié)果轉(zhuǎn)換為int類型mytype’ (foo) // 將foo轉(zhuǎn)換為mytype類型  一個(gè)值還可以通過(guò)在強(qiáng)制轉(zhuǎn)換操作符前指定一個(gè)10進(jìn)制數(shù)來(lái)轉(zhuǎn)換成不同的向量寬度,例如:  17’ (x - 2) // 將結(jié)果轉(zhuǎn)換為17

15. 強(qiáng)制類型轉(zhuǎn)換

Verilog不能將一個(gè)值強(qiáng)制轉(zhuǎn)換成不同的數(shù)據(jù)類型。SystemVerilog通過(guò)使用<type>’操作符提供了數(shù)據(jù)類型的強(qiáng)制轉(zhuǎn)換功能。這種強(qiáng)制轉(zhuǎn)換可以轉(zhuǎn)換成任意類型,包括用戶定義的類型。例如:

int’ (2.0 * 3.0) // 將結(jié)果轉(zhuǎn)換為int類型
mytype’ (foo) // 將foo轉(zhuǎn)換為mytype類型

一個(gè)值還可以通過(guò)在強(qiáng)制轉(zhuǎn)換操作符前指定一個(gè)10進(jìn)制數(shù)來(lái)轉(zhuǎn)換成不同的向量寬度,例如:

17’ (x - 2) // 將結(jié)果轉(zhuǎn)換為17位寬度

也可以將結(jié)果轉(zhuǎn)換成有符號(hào)值,例如:

signed’ (x) // 將x轉(zhuǎn)換為有符號(hào)值

16. 操作符

Verilog沒(méi)有C語(yǔ)言的遞增(++)和遞減(--)操作符。而SystemVerilog加入了幾個(gè)新的操作符:

 ++和--:遞增和遞減操作符;
 +=、-=、*=、/=、%=、&=、^=、|=、<<=、>>=、<<<=和>>>=賦值操作符;

17. 唯一性和優(yōu)先級(jí)決定語(yǔ)句

在Verilog中,如果沒(méi)有遵循嚴(yán)格的編碼風(fēng)格,它的if-else和case語(yǔ)句會(huì)在RTL仿真和RTL綜合間具有不一致的結(jié)果。如果沒(méi)有正確使用full_case和parallel_case綜合指令還會(huì)引起一些其它的錯(cuò)誤。

SystemVerilog能夠顯式地指明什么時(shí)候一條決定語(yǔ)句的分支是唯一的,或者什么時(shí)候需要計(jì)算優(yōu)先級(jí)。我們可以在if或case關(guān)鍵字之前使用 unique或requires關(guān)鍵字。這些關(guān)鍵字可以向仿真器、綜合編譯器、以及其它工具指示我們期望的硬件類型。工具使用這些信息來(lái)檢查if或 case語(yǔ)句是否正確建模了期望的邏輯。例如,如果使用unique限定了一個(gè)決定語(yǔ)句,那么在不希望的case值出現(xiàn)的時(shí)候仿真器就能夠發(fā)布一個(gè)警告信息。

bit [2:0] a;
unique if ((a==0) || (a==1)) y = in1;
else if (a==2) y = in2;
else if (a==4) y = in3; // 值3、5、6、7會(huì)引起一個(gè)警告

priority if (a[2:1]==0) y = in1; // a是0或1
else if (a[2]==0) y = in2; // a是2或3
else y = in3; // 如果a為其他的值

unique case (a)
0, 1: y = in1;
2: y = in2;
4: y = in3;
endcase // 值3、5、6、7會(huì)引起一個(gè)警告

priority casez (a)
2’b00? : y = in1; // a是0或1
2’b0?? : y = in2; // a是2或3
default : y = in3; //如果a為其他的值
endcase

18. 底部檢測(cè)的循環(huán)

Verilog包含for、while和repeat循環(huán),這幾個(gè)循環(huán)都是在循環(huán)的起始處檢測(cè)循環(huán)條件。SystemVerilog加入了一個(gè)do-while循環(huán),這種循環(huán)在執(zhí)行語(yǔ)句的結(jié)尾處檢測(cè)循環(huán)條件。

19. 跳轉(zhuǎn)語(yǔ)句

在語(yǔ)句的執(zhí)行過(guò)程中,C語(yǔ)言提供了幾種方式來(lái)跳轉(zhuǎn)到新的語(yǔ)句,包括:return、break、continue和goto。在Verilog中除了通過(guò)使用disable語(yǔ)句跳轉(zhuǎn)到語(yǔ)句組的尾部外,沒(méi)有提供任何其它跳轉(zhuǎn)語(yǔ)句。使用disable語(yǔ)句執(zhí)行中止和繼續(xù)功能要求加入塊的名字,并且會(huì)產(chǎn)生不直觀的代碼。SystemVerilog加入了C語(yǔ)言的break和continue關(guān)鍵字,這兩個(gè)關(guān)鍵字不要求使用塊名字。另外,SystemVerilog還加入了一個(gè)return關(guān)鍵字,它可以用來(lái)在任何執(zhí)行點(diǎn)上退出一個(gè)任務(wù)或函數(shù)。

break:退出一個(gè)循環(huán),與C語(yǔ)言相同;
 continue:跳轉(zhuǎn)到一個(gè)循環(huán)的尾部,與C語(yǔ)言相同;
 return 表達(dá)式:退出一個(gè)函數(shù);
 return:退出一個(gè)任務(wù)或void類型的函數(shù)。

SystemVerilog沒(méi)有包含C語(yǔ)言中的goto語(yǔ)句。

20. 塊名字和語(yǔ)句標(biāo)簽

在Verilog中,我們可以通過(guò)在begin或fork關(guān)鍵字之后指定名字來(lái)為begin-end或fork-jion語(yǔ)句指定名字。這個(gè)指定的名字代表整個(gè)語(yǔ)句塊。SystemVerilog還允許在end或jion關(guān)鍵字之后指定一個(gè)匹配的塊名字。這種機(jī)制很容易將end或jion與對(duì)應(yīng)的 begin或fork聯(lián)系起來(lái),尤其是在一個(gè)長(zhǎng)的塊或嵌套的塊中。塊結(jié)尾處的名字是可選的,但如果使用的話,它必須與塊起始處的名字相同。例如:

與《SystemVerilog語(yǔ)言簡(jiǎn)介(下)》相關(guān)列表
電話:400-900-3095
QQ:800152669
庫(kù)存查詢
Copyright(C) 2011-2021 Szcwdz.com 創(chuàng)唯電子 版權(quán)所有 備案號(hào):粵ICP備11103613號(hào)
專注電子元件代理銷售  QQ:800152669  電子郵件:sales@szcwdz.com  電話:400-900-3095