本章講述在Verilog HDL中編寫表達(dá)式的基礎(chǔ)。
表達(dá)式由操作數(shù)和操作符組成。表達(dá)式可以在出現(xiàn)數(shù)值的任何地方使用。
4.1 操作數(shù)
操作數(shù)可以是以下類型中的一種:
1) 常數(shù)
2) 參數(shù)
3) 線網(wǎng)
4) 寄存器
5) 位選擇
6) 部分選擇
7) 存儲(chǔ)器單元
8) 函數(shù)調(diào)用
4.1.1 常數(shù)
前面的章節(jié)已講述了如何書寫常量。下面是一些實(shí)例。
256,7 // 非定長(zhǎng)的十進(jìn)制數(shù)。
4'b10_11, 8'h0A // 定長(zhǎng)的整型常量。
'b1, 'hFBA // 非定長(zhǎng)的整數(shù)常量。
90.00006 // 實(shí)數(shù)型常量。
"BOND" // 串常量;每個(gè)字符作為8位A S C I I值存儲(chǔ)。
表達(dá)式中的整數(shù)值可被解釋為有符號(hào)數(shù)或無(wú)符號(hào)數(shù)。如果表達(dá)式中是十進(jìn)制整數(shù),例如,12被解釋為有符號(hào)數(shù)。如果整數(shù)是基數(shù)型整數(shù)(定長(zhǎng)或非定長(zhǎng)),那么該整數(shù)作為無(wú)符號(hào)數(shù)對(duì)
待。下面舉例說(shuō)明。
12是01100的5位向量形式(有符號(hào))
- 12是10100的5位向量形式(有符號(hào))
5 ' b 01100是十進(jìn)制數(shù)1 2(無(wú)符號(hào))
5 ' b 10100是十進(jìn)制數(shù)2 0(無(wú)符號(hào))
4 ' d12是十進(jìn)制數(shù)1 2(無(wú)符號(hào))
更為重要的是對(duì)基數(shù)表示或非基數(shù)表示的負(fù)整數(shù)處理方式不同。非基數(shù)表示形式的負(fù)整數(shù)作為有符號(hào)數(shù)處理,而基數(shù)表示形式的負(fù)整數(shù)值作為無(wú)符號(hào)數(shù)。因此-4 4和-6'o54 (十進(jìn)制的4 4等于八進(jìn)制的5 4)在下例中處理不同。
integerCone;
. . .
cone= -44/4
cone = -6'o54/ 4;
注意-4 4和-6 'o54以相同的位模式求值;但是-4 4作為有符號(hào)數(shù)處理,而-6 'o54作為無(wú)符號(hào)數(shù)處理。因此第一個(gè)字符中Cone的值-11,而在第二個(gè)賦值中Coe的值為1073741813
4.1.2 參數(shù)
前一章中已對(duì)參數(shù)作了介紹。參數(shù)類似于常量,并且使用參數(shù)聲明進(jìn)行說(shuō)明。下面是參數(shù)說(shuō)明實(shí)例。
p a r a m e t e r L O A D = 4'd12, S T O R E = 4'd10;
L O A D 和S TO R E為參數(shù)的例子,值分別被聲明為1 2和1 0。
4.1.3 線網(wǎng)
可在表達(dá)式中使用標(biāo)量線網(wǎng)(1位)和向量線網(wǎng)(多位)。下面是線網(wǎng)說(shuō)明實(shí)例。
w i r e [0:3] P r t; //P r t 為4位向量線網(wǎng)。
w i r e B d q; //B b q 是標(biāo)量線網(wǎng)。
線網(wǎng)中的值被解釋為無(wú)符號(hào)數(shù)。在連續(xù)賦值語(yǔ)句中,
a s s i g n P r t = -3;
P rt被賦于位向量11 0 1,實(shí)際上為十進(jìn)制的1 3。在下面的連續(xù)賦值中,
a s s i g n P r t = 4'HA;
P rt被賦于位向量1 0 1 0,即為十進(jìn)制的1 0。
4.1.4 寄存器
標(biāo)量和向量寄存器可在表達(dá)式中使用。寄存器變量使用寄存器聲明進(jìn)行說(shuō)明。例如 :
i n t e g e r TemA, TemB;
r e g [1:5] S t a t e;
t i m e Q u e [ 1 : 5 ] ;
整型寄存器中的值被解釋為有符號(hào)的二進(jìn)制補(bǔ)碼數(shù),而 r e g寄存器或時(shí)間寄存器中的值被解釋為無(wú)符號(hào)數(shù)。實(shí)數(shù)和實(shí)數(shù)時(shí)間類型寄存器中的值被解釋為有符號(hào)浮點(diǎn)數(shù)。
TemA = -10; // T e m A值為位向量1 0 1 1 0,是1 0的二進(jìn)制補(bǔ)碼。
TemA = 'b1011; // T e m A值為十進(jìn)制數(shù)1 1。
State = -10; // S t a t e值為位向量1 0 1 1 0,即十進(jìn)制數(shù)2 2。
State = 'b1011; // S t a t e值為位向量0 1 0 1 1,是十進(jìn)制值1 1。
4.1.5 位選擇
位選擇從向量中抽取特定的位。形式如下:
n e t _ o r _ r e g _ v e c t o r [b i t _ s e l e c t _ e x p r]
下面是表達(dá)式中應(yīng)用位選擇的例子。
S t a t e [1] && S t a t e [4] //寄存器位選擇。
P r t [0] | Bbq // 線網(wǎng)位選擇。
如果選擇表達(dá)式的值為x、z,或越界,則位選擇的值為x。例如S t a t e [x]值為x。
4.1.6 部分選擇
在部分選擇中,向量的連續(xù)序列被選擇。形式如下:
因?yàn)镃 o n e 為非定長(zhǎng)整型變量,基數(shù)表示形式的負(fù)數(shù)在機(jī)內(nèi)以補(bǔ)碼形式出現(xiàn)?!?譯者注
net_ or_ reg_ vector[msb _ const _ expr:1sb _ const _expr]
其中范圍表達(dá)式必須為常數(shù)表達(dá)式。例如。
state[1:4] // 寄存器部分選擇。
P r t [1:3] // 線網(wǎng)部分選擇。
選擇范圍越界或?yàn)閤,z時(shí),部分選擇的值為x。
4.1.7 存儲(chǔ)器單元
存儲(chǔ)器單元從存儲(chǔ)器中選擇一個(gè)字。形式如下:
memory [word _ address]
例如:
. . .
Ack =Dram [60]; //存儲(chǔ)器的第6 0個(gè)單元。
不允許對(duì)存儲(chǔ)器變量值部分選擇或位選擇。例如,
Dram[60] [2] 不允許。
Dram[60] [2:4] 也不允許。
在存儲(chǔ)器中讀取一個(gè)位或部分選擇一個(gè)字的方法如下:將存儲(chǔ)器單元賦值給寄存器變量,然后對(duì)該寄存器變量采用部分選擇或位選擇操作。例如, A c k [2] 和Ack [ 2 : 4 ]是合法的表達(dá)式。
4.1.8 函數(shù)調(diào)用
表達(dá)式中可使用函數(shù)調(diào)用。函數(shù)調(diào)用可以是系統(tǒng)函數(shù)調(diào)用(以 $字符開始)或用戶定義的函數(shù)調(diào)用。例如:
$t i m e + S u m O f E v e n t s (A, B)
/ * $t i m e是系統(tǒng)函數(shù),并且S u m O f E v e n t s是在別處定義的用戶自定義函數(shù)。* /
4.2 操作符
Verilog HDL中的操作符可以分為下述類型:
1) 算術(shù)操作符
2) 關(guān)系操作符
3) 相等操作符
4) 邏輯操作符
5) 按位操作符
6) 歸約操作符
7) 移位操作符
8) 條件操作符
9) 連接和復(fù)制操作符
下表顯示了所有操作符的優(yōu)先級(jí)和名稱。操作符從最高優(yōu)先級(jí)(頂行)到最低優(yōu)先級(jí)(底行)排列。同一行中的操作符優(yōu)先級(jí)相同。
歸約操作符為一元操作符,對(duì)操作數(shù)的各位進(jìn)行邏輯操作,結(jié)果為二進(jìn)制數(shù)。
除條件操作符從右向左關(guān)聯(lián)外,其余所有
操作符自左向右關(guān)聯(lián)。下面的表達(dá)式:
A + B - C
等價(jià)于:
(A + B ) - C / /自左向右
而表達(dá)式:
A ? B : C ? D : F
等價(jià)于:
A ? B : (C ? D : F) //從右向左
圓擴(kuò)號(hào)能夠用于改變優(yōu)先級(jí)的順序,如以下表達(dá)式:
(A ? B : C) ? D : F
4.2.1 算術(shù)操作符
算術(shù)操作符有:
? +(一元加和二元加)
? -(一元減和二元減)
? *(乘)
? /(除)
? %(取模)
整數(shù)除法截?cái)嗳魏涡?shù)部分。例如:
7/4 結(jié)果為 1
取模操作符求出與第一個(gè)操作符符號(hào)相同的余數(shù)。
7%4 結(jié)果為 3
而:
- 7%4 結(jié)果為 - 3
如果算術(shù)操作符中的任意操作數(shù)是 X或Z,那么整個(gè)結(jié)果為X。例如:
'b10x1 + 'b01111 結(jié)果為不確定數(shù)' bx x x x x
1. 算術(shù)操作結(jié)果的長(zhǎng)度
算術(shù)表達(dá)式結(jié)果的長(zhǎng)度由最長(zhǎng)的操作數(shù)決定。在賦值語(yǔ)句下,算術(shù)操作結(jié)果的長(zhǎng)度由操
作符左端目標(biāo)長(zhǎng)度決定??紤]如下實(shí)例:
reg [0:3] Arc, Bar, Crt ;
reg [0:5] F r x;
. . .
Arc = B a r + C r t;
F r x = B a r + C r t;
第一個(gè)加的結(jié)果長(zhǎng)度由 B a r,C rt和A rc長(zhǎng)度決定,長(zhǎng)度為 4位。第二個(gè)加法操作的長(zhǎng)度同樣由F rx的長(zhǎng)度決定(F rx、B a t和C rt中的最長(zhǎng)長(zhǎng)度),長(zhǎng)度為6位。在第一個(gè)賦值中,加法操
作的溢出部分被丟棄;而在第二個(gè)賦值中,任何溢出的位存儲(chǔ)在結(jié)果位 F r x [ 1 ]中。在較大的表達(dá)式中,中間結(jié)果的長(zhǎng)度如何確定?在 Verilog HDL中定義了如下規(guī)則:表達(dá)式中的所有中間結(jié)果應(yīng)取最大操作數(shù)的長(zhǎng)度(賦值時(shí),此規(guī)則也包括左端目標(biāo))。考慮另一個(gè)
實(shí)例:
w i r e [4:1] Box, Drt;
w i r e [1:5] C f g;
w i r e [1:6] P e g;
w i r e [1:8] A d t;
. . .
a s s i g n A d t = (B o x + C f g) + (D r t + P e g) ;
表達(dá)式左端的操作數(shù)最長(zhǎng)為 6,但是將左端包含在內(nèi)時(shí),最大長(zhǎng)度為 8。所以所有的加操作使用8位進(jìn)行。例如:B o x和C f g相加的結(jié)果長(zhǎng)度為8位。
2. 無(wú)符號(hào)數(shù)和有符號(hào)數(shù)
執(zhí)行算術(shù)操作和賦值時(shí),注意哪些操作數(shù)為無(wú)符號(hào)數(shù)、哪些操作數(shù)為有符號(hào)數(shù)非常重要。
無(wú)符號(hào)數(shù)存儲(chǔ)在:
? 線網(wǎng)
? 一般寄存器
? 基數(shù)格式表示形式的整數(shù)
有符號(hào)數(shù)存儲(chǔ)在:
? 整數(shù)寄存器
? 十進(jìn)制形式的整數(shù)
下面是一些賦值語(yǔ)句的實(shí)例:
r e g [0:5] B a r;
i n t e g e r T a b;
. . .
B a r = -4'd12; //寄存器變量B a r的十進(jìn)制數(shù)為5 2,向量值為1 1 0 1 0 0。
T a b = -4'd12; // 整數(shù)T a b的十進(jìn)制數(shù)為- 1 2,位形式為1 1 0 1 0 0。
-4'd12 / 4 // 結(jié)果是1 0 7 3 7 4 1 8 2 1。
-12 / 4 // 結(jié)果是- 3
因?yàn)锽 a r是普通寄存器類型變量,只存儲(chǔ)無(wú)符號(hào)數(shù)。右端表達(dá)式的值為 ' b 11 0 1 0 0(1 2的二進(jìn)制補(bǔ)碼)。因此在賦值后, B a r存儲(chǔ)十進(jìn)制值5 2。在第二個(gè)賦值中,右端表達(dá)式相同,值為' b 11 0 1 0 0,但此時(shí)被賦值為存儲(chǔ)有符號(hào)數(shù)的整數(shù)寄存器。Ta b存儲(chǔ)十進(jìn)制值- 1 2(位向量為11 0 1 0 0)。注意在兩種情況下,位向量存儲(chǔ)內(nèi)容都相同;但是在第一種情況下,向量被解釋為無(wú)符號(hào)數(shù),而在第二種情況下,向量被解釋為有符號(hào)數(shù)。
下面為具體實(shí)例:
B a r = - 4'd12/4;
T a b = - 4'd12 /4;
B a r = - 12/4
T a b = - 12/4
在第一次賦值中,B a r被賦于十進(jìn)制值6 1(位向量為1111 0 1)。而在第二個(gè)賦值中,Ta b被賦于與十進(jìn)制1 0 7 3 7 4 1 8 2 1(位值為0 0 11 . . . 111 0 1)。B a r在第三個(gè)賦值中賦于與第一個(gè)賦值相同的值。這是因?yàn)锽 a r只存儲(chǔ)無(wú)符號(hào)數(shù)。在第四個(gè)賦值中, B a r被賦于十進(jìn)制值-3。
下面是另一些例子:
B a r = 4 - 6;
T a b = 4 - 6;
B a r被賦于十進(jìn)制值6 2(-2的二進(jìn)制補(bǔ)碼),而Ta b被賦于十進(jìn)制值-2(位向量為11111 0)。
下面為另一個(gè)實(shí)例:
B a r = -2 + (-4);
T a b = -2 + (-4);
B a r被賦于十進(jìn)制值5 8(位向量為111 0 1 0),而Ta b被賦于十進(jìn)制值-6(位向量為111 0 1 0)。
4.2.2 關(guān)系操作符
關(guān)系操作符有:
? >(大于)
? <(小于)
? >=(不小于)
? <=(不大于)
關(guān)系操作符的結(jié)果為真( 1)或假(0)。如果操作數(shù)中有一位為 X或Z,那么結(jié)果為X。例
如:
23 > 45
結(jié)果為假(0),而:
52< 8'hxFF
結(jié)果為x。如果操作數(shù)長(zhǎng)度不同,長(zhǎng)度較短的操作數(shù)在最重要的位方向(左方)添 0補(bǔ)齊。例
如:
'b1000 > = 'b01110
等價(jià)于:
'b01000 > = 'b01110
結(jié)果為假(0)。
4.2.3 相等關(guān)系操作符
相等關(guān)系操作符有:
? = =(邏輯相等)
? !=(邏輯不等)
第4章 表 達(dá) 式 33
? = = =(全等)
? != =(非全等)
如果比較結(jié)果為假,則結(jié)果為 0;否則結(jié)果為 1。在全等比較中,值 x和z嚴(yán)格按位比較。也就是說(shuō),不進(jìn)行解釋,并且結(jié)果一定可知。而在邏輯比較中,值 x和z具有通常的意義,且結(jié)果可以不為x。也就是說(shuō),在邏輯比較中,如果兩個(gè)操作數(shù)之一包含 x或z,結(jié)果為未知的值(x)。如下例,假定:
D a t a = 'b11x0;
A d d r = 'b11x0;
那么:
D a t a = = A d d r
不定,也就是說(shuō)值為x,但:
D a t a = = = A d d r
為真,也就是說(shuō)值為1。
如果操作數(shù)的長(zhǎng)度不相等,長(zhǎng)度較小的操作數(shù)在左側(cè)添 0補(bǔ)位,例如:
2'b10 = = 4'b0010
與下面的表達(dá)式相同:
4'b0010 = = 4'b0010
結(jié)果為真(1)。
4.2.4 邏輯操作符
邏輯操作符有:
? && (邏輯與)
? || (邏輯或)
? !(邏輯非)
這些操作符在邏輯值0或1上操作。邏輯操作的結(jié)構(gòu)為0或1。例如, 假定:
C r d = 'b0; //0 為假
Dgs = 'b1; //1 為真
那么:
C r d && D g s 結(jié)果為0 (假)
C r d || D g s 結(jié)果為1 (真)
!D g s 結(jié)果為0 (假)
對(duì)于向量操作, 非0向量作為1處理。例如,假定:
A _ B u s = 'b0110;
B _ B u s = 'b0100;
那么:
A _ B u s || B _ B u s 結(jié)果為1
A _ B u s && B _ B u s 結(jié)果為 1
并且:
! A _ B u s 與! B _ B u s的結(jié)果相同。
結(jié)果為0。
如果任意一個(gè)操作數(shù)包含x,結(jié)果也為x。
34 Verilog HDL 硬件描述語(yǔ)言
下載
!x 結(jié)果為x
4.2.5 按位操作符
按位操作符有:
? ~(一元非)
? &(二元與)
? |(二元或)
? ^(二元異或)
? ~^, ^~(二元異或非)
這些操作符在輸入操作數(shù)的對(duì)應(yīng)位上按位操作,并產(chǎn)生向量結(jié)果。下表顯示對(duì)于不同操作符按步操作的結(jié)果。
例如,假定,
A = 'b0110;
B = 'b0100;
那么:
A | B 結(jié)果為0 1 1 0
A & B 結(jié)果為0 1 0 0
如果操作數(shù)長(zhǎng)度不相等, 長(zhǎng)度較小的操作數(shù)在最左側(cè)添0補(bǔ)位。例如,
'b0110 ^ 'b10000
與如下式的操作相同:
'b00110 ^ 'b10000
結(jié)果為' b 1 0 11 0。
第4章 表 達(dá) 式 35
下載
與
或
異或 異或非
非
4.2.6 歸約操作符
歸約操作符在單一操作數(shù)的所有位上操作,并產(chǎn)生 1位結(jié)果。歸約操作符有:
? & (歸約與)
如果存在位值為0, 那么結(jié)果為0;若如果存在位值為 x或z,結(jié)果為x;否則結(jié)果為1。
? ~& (歸約與非)
與歸約操作符&相反。
? | (歸約或)
如果存在位值為1,那么結(jié)果為1;如果存在位 x或z,結(jié)果為x;否則結(jié)果為0。
? ~| (歸約或非)
與歸約操作符|相反。
? ^ (歸約異或)
如果存在位值為x或z,那么結(jié)果為x;否則如果操作數(shù)中有偶數(shù)個(gè) 1, 結(jié)果為0;否則結(jié)果
為1。
? ~^ (歸約異或非)
與歸約操作符^正好相反。
如下所示。假定,
A = 'b0110;
B = 'b0100;
那么:
|B 結(jié)果為1
& B 結(jié)果為0
~ A 結(jié)果為1
歸約異或操作符用于決定向量中是否有位為 x。假定,
M y R e g = 4'b01x0 ;
那么:
^M y R e g 結(jié)果為x
上述功能使用如下的i f語(yǔ)句檢測(cè):
i f ( ^M y R e g = = = 1'bx)
$ d i s p l a y ("There is an unknown in the vector MyReg !")
注意邏輯相等( = = )操作符不能用于比較;邏輯相等操作符比較將只會(huì)產(chǎn)生結(jié)果 x。全等操作符期望的結(jié)果為值1。
4.2.7 移位操作符
移位操作符有:
? << (左移)
? >> (右移)
移位操作符左側(cè)操作數(shù)移動(dòng)右側(cè)操作數(shù)表示的次數(shù),它是一個(gè)邏輯移位。空閑位添 0補(bǔ)位。如果右側(cè)操作數(shù)的值為x或z, 移位操作的結(jié)果為x。假定:
r e g [ 0:7] Q r e g;
. . .
Q r e g = 4'b0111;
那么:
Q r e g >> 2 是 8 ' b 0 0 0 0 _ 0 0 0 1
V erilog H D L中沒(méi)有指數(shù)操作符。但是,移位操作符可用于支持部分指數(shù)操作。例如,如果要計(jì)算Z
N u m B i t s 的值,可以使用移位操作實(shí)現(xiàn),例如:
32'b1 << N u m B i t s / /N u m B i t s必須小于3 2。
同理,可使用移位操作為2 - 4解碼器建模,如
w i r e [0:3] D e c o d e O u t = 4'b1 << A d d r e s s [ 0 : 1 ] ;
A d d re s s[0:1] 可取值0 , 1 , 2和3。與之相應(yīng),D e c o d e O u t可以取值4 ' b 0 0 0 1、4 ' b 0 0 1 0、4 ' b 0 1 0 0
和4 ' b 1 0 0 0,從而為解碼器建模。
4.2.8 條件操作符
條件操作符根據(jù)條件表達(dá)式的值選擇表達(dá)式,形式如下 :
c o n d_e x p r ? e x p r 1 : e x p r 2
如果c o n d _ e x p r 為真(即值為1 ),選擇e x p r 1;如果c o n d _ e x p r為假(值為0 ),選擇e x p r 2。如果c o n d _ e x p r 為x或z,結(jié)果將是按以下邏輯 e x p r 1和e x p r 2按位操作的值: 0與0得0,1與1得1,其余情況為x。
如下所示:
w i r e [0:2] S t u d e n t = M a r k s > 18 ? G r a d e _ A : G r a d e _ C;
計(jì)算表達(dá)式M a r k s > 18; 如果真, G r a d e _ A 賦值為S t u d e n t; 如果M a r k s < =18, G r a d e _ C 賦值為S t u d e n t。下面為另一實(shí)例:
a l w a y s
#5 C t r = (C t r != 25) ? (C t r + 1) : 5;
過(guò)程賦值中的表達(dá)式表明如果C t r不等于25, 則加1;否則如果C t r值為2 5時(shí), 將C t r值重新置
為5。
4.2.9 連接和復(fù)制操作
連接操作是將小表達(dá)式合并形成大表達(dá)式的操作。形式如下 :
{e x p r 1, e x p r 2, . . .,e x p r N}
實(shí)例如下所示:
w i r e [7:0] D b u s;
w i r e [11:0] A b u s;
a s s i g n D b u s [7:4] = {D b u s [0], D b u s [1], D b u s[2], D b u s[ 3 ] } ;
/ /以反轉(zhuǎn)的順序?qū)⒌投?位賦給高端4位。
a s s i g n D b u s = {Dbus [3:0], D b u s [ 7 : 4 ] } ;
/ /高4位與低4位交換。
由于非定長(zhǎng)常數(shù)的長(zhǎng)度未知, 不允許連接非定長(zhǎng)常數(shù)。例如, 下列式子非法:
{D b u s,5} / /不允許連接操作非定長(zhǎng)常數(shù)。
復(fù)制通過(guò)指定重復(fù)次數(shù)來(lái)執(zhí)行操作。形式如下 :
{r e p e t i t i o n _ n u m b e r {expr1, expr2, ...,exprN } }
以下是一些實(shí)例:
A b u s = {3{4'b1011}}; // 位向量1 2 ' b 1 0 1 1 _ 1 0 1 1 _ 1 0 1 1)
A b u s = {{4{D b u s[7]}}, D b u s}; / * 符號(hào)擴(kuò)展 * /
第4章 表 達(dá) 式 37
下載
{3{1'b1}} 結(jié)果為1 1 1
{3{Ack}} 結(jié)果與{A c k, A c k, A c k}相同。
4.3 表達(dá)式種類
常量表達(dá)式是在編譯時(shí)就計(jì)算出常數(shù)值的表達(dá)式。通常,常量表達(dá)式可由下列要素構(gòu)成 :
1) 表示常量文字, 如' b 1 0和3 2 6。
2) 參數(shù)名,如R E D的參數(shù)表明:
p a r a m e t e r R E D = 4'b1110;
標(biāo)量表達(dá)式是計(jì)算結(jié)果為 1位的表達(dá)式。如果希望產(chǎn)生標(biāo)量結(jié)果 , 但是表達(dá)式產(chǎn)生的結(jié)果
為向量, 則最終結(jié)果為向量最右側(cè)的位值。
習(xí)題
1. 說(shuō)明參數(shù)G AT E _ D E L AY, 參數(shù)值為5。
2. 假定長(zhǎng)度為6 4個(gè)字的存儲(chǔ)器, 每個(gè)字8位,編寫Verilog 代碼,按逆序交換存儲(chǔ)器的內(nèi)容。即
將第0個(gè)字與第6 3個(gè)字交換,第1個(gè)字與第6 2個(gè)字交換,依此類推。
3. 假定3 2位總線A d d re s s _ B u s, 編寫一個(gè)表達(dá)式,計(jì)算從第11位到第2 0位的歸約與非。
4. 假定一條總線C o n t ro l _ B u s [ 1 5 : 0 ],編寫賦值語(yǔ)句將總線分為兩條總線:A b u s [ 0 : 9 ]和B b u s
[ 6 : 1 ]。
5. 編寫一個(gè)表達(dá)式,執(zhí)行算術(shù)移位,將 Qparity 中包含的8位有符號(hào)數(shù)算術(shù)移位。
6. 使用條件操作符 , 編寫賦值語(yǔ)句選擇 N e x t S t a t e的值。如果C u rre n t S t a t e的值為R E S E T, 那么N e x t S t a t e的值為 G O;如果 C u rre n t S t a t e的值為 G O,則 N e x t S t a t e 的值為 B U S Y;如果C u rre n t S t a t e的值為B U S Y;則N e x t S t a t e的值為R E S E T。
7. 使用單一連續(xù)賦值語(yǔ)句為圖2 - 2所示的2 - 4解碼器電路的行為建模。[提示:使用移位操作符、條件操作符和連接操作符。]
8. 如何從標(biāo)量變量 A,B,C和D中產(chǎn)生總線 B u s Q[0:3]? 如何從兩條總線 B u s A [ 0 : 3 ]和B u s Y
[ 2 0 : 1 5 ]形成新的總線B u s R [ 1 0 : 1 ] ?
原文標(biāo)題:Verilog入門4-Verilog表達(dá)式
文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7492瀏覽量
163854 -
Verilog
+關(guān)注
關(guān)注
28文章
1351瀏覽量
110107
原文標(biāo)題:Verilog入門4-Verilog表達(dá)式
文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論