“本文主要分享了在Verilog設(shè)計(jì)過(guò)程中一些經(jīng)驗(yàn)與知識(shí)點(diǎn),主要包括循環(huán)語(yǔ)句(forever、repeat、while和for)、運(yùn)算符。”
01
—
循環(huán)語(yǔ)句
在Verilog中存在著4種類型的循環(huán)語(yǔ)句(forever、repeat、while和for),其中“while”與“for”的使用方法與C語(yǔ)言中的基本類似。
“forever”語(yǔ)句
語(yǔ)句格式如下: forever begin //add codes end
仿真效果如下:rega;initial begina = 0;foreverbegin#5 a = ~a;endend

-
“repeat”語(yǔ)句
仿真結(jié)果如下:parameter times = 3;reg[7:0]b_1,b_2;initialbeginb_1 = 0;#10;b_1 = 8'b0000_0100;#10;endalways@(b_1)beginb_2 = b_1;repeat(times)beginb_2 = b_2 << 1;endend

在10ns的時(shí)候,b_1賦值為8’b0000_0100,這時(shí)候repeat語(yǔ)句觸發(fā),b_2變成了8’b0010_0000,可見(jiàn)b_2右移了三位,也就是repeat內(nèi)的語(yǔ)句重復(fù)執(zhí)行了3次。
-
“while”語(yǔ)句
仿真結(jié)果如下:reg[7:0]c_1,c_2;initialbeginc_1 = 0;#10;c_1 = 1;c_2 = 8'b0000_0001;while(c_1)beginc_2 = c_2 << 1;#10;if(c_2 == 8'b0001_0000)c_1 = 0;elsec_1 = 1;endend

-
“for”語(yǔ)句
-
先求表達(dá)式1;
-
求解表達(dá)式2。若其值為真,則執(zhí)行 for 語(yǔ)句中指定的內(nèi)嵌語(yǔ)句,然后執(zhí)行第3步;若表達(dá)式2值為假,則結(jié)束循環(huán),轉(zhuǎn)到第5步;
-
求解表達(dá)式3;
-
轉(zhuǎn)回上面第2步繼續(xù)執(zhí)行;
-
循環(huán)結(jié)束,執(zhí)行 for 語(yǔ)句下面的語(yǔ)句。
示例代碼如下:
reg [7:0] d_1,d_2;initialbegind_2 = 10;#10;for(d_1=1;d_1<5;d_1=d_1+1)begind_2 = d_2 + 3;#5;endend

02
—
運(yùn)算符
-
基本算術(shù)運(yùn)算符
-
+ (加法運(yùn)算符);
-
- (減法運(yùn)算符);
-
* (加法運(yùn)算符);
-
/ (除法運(yùn)算符);
-
% (模運(yùn)算符或者求余運(yùn)算符,要求%兩側(cè)均為整型數(shù)據(jù),結(jié)果取第一個(gè)操作數(shù)的符號(hào)位,-10%3的結(jié)果是-1,11%-3的結(jié)果是2);
-
賦值運(yùn)算符
-
=;
-
<=;
-
關(guān)系運(yùn)算符
-
> (大于);
-
>= (大于等于);
-
? ? ? (小于);
-
<=? ? ? (小于等于);
-
== (等于);
-
!= (不等于);
-
=== (等于,可以比較含有X和Z的操作數(shù),在仿真中用的比較多);
-
!== (不等于,可以比較含有X和Z的操作數(shù),在仿真中用的比較多)。
-
邏輯運(yùn)算符
-
&& (邏輯與);
-
|| (邏輯或);
-
! (邏輯非)。
-
條件運(yùn)算符
?:
例子:y=x?a:b(當(dāng)x為真時(shí),y=a,當(dāng)x為假時(shí),y=b)。
-
位運(yùn)算符
位運(yùn)算符的操作數(shù)是幾位,結(jié)果也是幾位。
-
~ (取反);
-
& (按位與);
-
| (按位或);
-
^ (按位異或,XOR,相同為0,不同為1);
-
^~ (按位同或,相同為1,不同為0);
-
~& (與非,先按與的操作,然后結(jié)果取反);
-
~| (或非,先按或的操作,然后結(jié)果取反)。
-
移位運(yùn)算符
-
<??? (左移,左移一位相當(dāng)于乘2);
-
>> (右移,右移一位相當(dāng)于除以2)。
-
拼接運(yùn)算符
{s1,s2,s3,s4}:將兩個(gè)或者多個(gè)信號(hào)拼接起來(lái)。
-
縮減運(yùn)算符(一元簡(jiǎn)約運(yùn)算符)
縮減運(yùn)算符對(duì)單個(gè)操作數(shù)進(jìn)行與、或、非遞推運(yùn)算,最后的結(jié)果是1位的二進(jìn)制數(shù)。具體過(guò)程如下:
-
先將操作數(shù)的第1位和第2位進(jìn)行與、或、非運(yùn)算;
-
運(yùn)算的結(jié)果與第3位進(jìn)行與、或、非運(yùn)算;
-
一次類推,知道最后一位。
審核編輯:郭婷reg [3:0] a;reg b;b = &a; 等同于 b = ((a[0]&a[1])&a[2])&a[3]。
-
Verilog
+關(guān)注
關(guān)注
30文章
1369瀏覽量
113820 -
C語(yǔ)言
+關(guān)注
關(guān)注
183文章
7634瀏覽量
144192
原文標(biāo)題:Verilog基礎(chǔ)知識(shí)學(xué)習(xí)筆記(三)
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
煉獄傳奇-移位和位拼運(yùn)算符之戰(zhàn)
求一道MATLAB編程題。要求: 使用循環(huán)語(yǔ)句編程,但不能使用數(shù)組運(yùn)算符和sum
Java基礎(chǔ)之Java運(yùn)算符
邏輯運(yùn)算符是什么
Bitwise 邏輯運(yùn)算符進(jìn)行設(shè)計(jì)
條件運(yùn)算符是什么_條件運(yùn)算符有哪些
單目運(yùn)算符是什么_單目運(yùn)算符有哪些
淺析MySQL中的各類運(yùn)算符
python運(yùn)算符是什么
C語(yǔ)言總結(jié)_語(yǔ)句、運(yùn)算符
什么是邏輯運(yùn)算符
KUKA機(jī)器人的邏輯運(yùn)算符
verilog的邏輯運(yùn)算符

Verilog邏輯設(shè)計(jì)中的循環(huán)語(yǔ)句和運(yùn)算符
評(píng)論