0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Verilog HDL中編寫表達(dá)式的基礎(chǔ)講述

電子工程師 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2021-03-05 15:20 ? 次閱讀

本章講述在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]

例如:

reg [1:8] Ack, Dram[0 :63] ;

. . .

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    詳解nginx的正則表達(dá)式

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級(jí)。
    的頭像 發(fā)表于 12-03 09:59 ?186次閱讀
    詳解nginx<b class='flag-5'>中</b>的正則<b class='flag-5'>表達(dá)式</b>

    Verilog表達(dá)式的位寬確定規(guī)則

    很多時(shí)候,Verilog表達(dá)式的位寬都是被隱式確定的,即使你自己設(shè)計(jì)了位寬,它也是根據(jù)規(guī)則先確定位寬后,再擴(kuò)展到你的設(shè)計(jì)位寬,這常常會(huì)導(dǎo)致結(jié)果產(chǎn)生意想不到的錯(cuò)誤。
    的頭像 發(fā)表于 10-22 15:41 ?496次閱讀
    <b class='flag-5'>Verilog</b><b class='flag-5'>表達(dá)式</b>的位寬確定規(guī)則

    通過(guò)工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量表達(dá)式的快速配置

    ,出現(xiàn)告警可能是多個(gè)變量達(dá)到條件而觸發(fā)的,就需要對(duì)中間變量進(jìn)行配置。 對(duì)此,物通博聯(lián)提供基于工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量表達(dá)式的快速配置操作。用戶可以根據(jù)生產(chǎn)現(xiàn)場(chǎng)的應(yīng)用需求,靈活配置中間變量表達(dá)式,實(shí)現(xiàn)多參數(shù)、多條件
    的頭像 發(fā)表于 10-08 17:10 ?250次閱讀
    通過(guò)工業(yè)智能網(wǎng)關(guān)實(shí)現(xiàn)中間變量<b class='flag-5'>表達(dá)式</b>的快速配置

    nginx的正則表達(dá)式和location路徑匹配指南

    前言,我這里驗(yàn)證的nginx-v1.23.2單機(jī)環(huán)境下的nginx的正則表達(dá)式、location路徑匹配規(guī)則和優(yōu)先級(jí)。
    的頭像 發(fā)表于 09-29 16:02 ?789次閱讀
    nginx<b class='flag-5'>中</b>的正則<b class='flag-5'>表達(dá)式</b>和location路徑匹配指南

    求助,以下恒流源電路Io的計(jì)算表達(dá)式怎么計(jì)算?

    這個(gè)恒流源電路Io的計(jì)算表達(dá)式怎么計(jì)算,求給出詳細(xì)計(jì)算過(guò)程
    發(fā)表于 08-22 08:16

    TestStand表達(dá)式中常用的語(yǔ)法規(guī)則和運(yùn)算符使用

    TestStand也有自己的語(yǔ)言嘛?在回答這個(gè)問(wèn)題之前大家可以想一下在使用TestStand時(shí)有一個(gè)和語(yǔ)言密切相關(guān)的屬性。沒(méi)錯(cuò)那就是表達(dá)式(Expressions),在這篇文章,小編將以Q&A的方式來(lái)帶著大家來(lái)理解并熟悉TestStand
    的頭像 發(fā)表于 08-15 18:10 ?1439次閱讀
    TestStand<b class='flag-5'>表達(dá)式</b>中常用的語(yǔ)法規(guī)則和運(yùn)算符使用

    Java表達(dá)式引擎選型調(diào)研分析

    1 簡(jiǎn)介 我們項(xiàng)目組主要負(fù)責(zé)面向企業(yè)客戶的業(yè)務(wù)系統(tǒng), 企業(yè)的需求往往是多樣化且復(fù)雜的,對(duì)接不同企業(yè)時(shí)會(huì)有不同的定制化的業(yè)務(wù)模型和流程。 我們?cè)跇I(yè)務(wù)系統(tǒng) 使用表達(dá)式引擎,集中配置管理業(yè)務(wù)規(guī)則,并實(shí)現(xiàn)
    的頭像 發(fā)表于 08-15 14:25 ?355次閱讀
    Java<b class='flag-5'>表達(dá)式</b>引擎選型調(diào)研分析

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉(cāng)頡基本概念表達(dá)式(二)

    。for-in 表達(dá)式的基本形式為: for (迭代變量 in 序列) { 循環(huán)體 } 其中“循環(huán)體”是一個(gè)代碼塊?!暗兞俊笔菃蝹€(gè)標(biāo)識(shí)符或由多個(gè)標(biāo)識(shí)符構(gòu)成的元組,用于綁定每輪遍歷由迭代器指向的數(shù)據(jù),可以
    發(fā)表于 08-09 14:26

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉(cāng)頡基本概念表達(dá)式(一)

    實(shí)參等。此外,因?yàn)閭}(cāng)頡是強(qiáng)類型的編程語(yǔ)言,所以倉(cāng)頡表達(dá)式不僅可求值,還有確定的類型。 倉(cāng)頡編程語(yǔ)言的各種表達(dá)式將在后續(xù)章節(jié)逐一介紹,本節(jié)介紹最常用的條件表達(dá)式、循環(huán)
    發(fā)表于 08-08 10:27

    求助,有關(guān)表達(dá)式選項(xiàng)卡(ADS)的問(wèn)題求解

    你好。 我看不到表達(dá)式選項(xiàng)卡的某些變量值。 數(shù)組的大小顯然是 256,但我最多只能看到 100。 請(qǐng)問(wèn)問(wèn)題出在哪里? 謝謝。
    發(fā)表于 06-03 06:23

    mapgis屬性篩選表達(dá)式

    篇文章,我們將詳細(xì)討論MapGIS的屬性篩選表達(dá)式,包括語(yǔ)法、操作符和函數(shù)等。 屬性篩選表達(dá)式是一種在MapGIS中用于指定要素選擇條件的代碼。它由一組操作符、函數(shù)和屬性字段組成,用于描述要篩選的要素的特征。在MapGIS
    的頭像 發(fā)表于 02-25 10:58 ?1648次閱讀

    西門子博途的算術(shù)表達(dá)式

    算術(shù)表達(dá)式既可以是一個(gè)數(shù)字值,也可以是由帶有算術(shù)運(yùn)算符的兩個(gè)值或表達(dá)式組合而成。 算術(shù)運(yùn)算符可以處理當(dāng)前 CPU 所支持的各種數(shù)據(jù)類型。如果在該運(yùn)算中有 2 個(gè)操作數(shù),那么可根據(jù)以下條件來(lái)確定結(jié)果的數(shù)據(jù)類型。
    的頭像 發(fā)表于 01-24 11:36 ?1011次閱讀

    你還不會(huì)gvim正則表達(dá)式?一文搞懂!

    gvim正則表達(dá)式常在命令行模式下使用,一般用于文本文件字符串的替換、刪除等操作。
    的頭像 發(fā)表于 01-19 16:47 ?1194次閱讀

    機(jī)械能守恒定律三種表達(dá)式

    。 機(jī)械能守恒定律可以用三種不同的表達(dá)式來(lái)描述。首先是最常見(jiàn)的“動(dòng)能和勢(shì)能之和不變”表達(dá)式。在一個(gè)封閉系統(tǒng)內(nèi),如果沒(méi)有外力做功,那么系統(tǒng)中所有物體的動(dòng)能之和和勢(shì)能之和將保持不變。這意味著一個(gè)物體的機(jī)械能不會(huì)因?yàn)閮?nèi)
    的頭像 發(fā)表于 01-16 16:58 ?1409次閱讀

    rs觸發(fā)器的邏輯表達(dá)式

    邏輯表達(dá)式是描述邏輯關(guān)系的符號(hào)表示,可以用于定義和描述各種電路和邏輯操作。在邏輯電路,RS觸發(fā)器是一種基本的存儲(chǔ)器元件,也被稱為鎖存器。 RS觸發(fā)器是由兩個(gè)與門組成的,其輸出互相連接,形成一個(gè)反饋
    的頭像 發(fā)表于 01-12 14:09 ?3169次閱讀