Verilog語法中case語句是不是隻執行一條語句

2022-01-24 03:31:35 字數 3663 閱讀 3367

1樓:匿名使用者

預設是的。包括if else 也是一樣。

但是可以利用begin end結構讓其執行中間所有的語句。

不知道你是不是這個意思,歡迎追問~

2樓:匿名使用者

是的,他和c語言不一樣,c語言是隻要這一條滿足條件,下滿的語句都會執行

3樓:匿名使用者

我猜你想問的是case (條件)

1:****

2:****

上面****是不是隻能執行一條語句,是嗎?

答案是,不是,可以執行很多語句。你用begin--end括起來就可以了。

4樓:匿名使用者

補充2樓 貌似有多個條件成立時,執行最後一個

verilog中,case語句是併發的麼?即只會執行其中一條麼? 這樣的話,是不是以下兩個程式是等價的? 5

5樓:

case語句是併發的,但是編譯過程還是從上到下的。

你的體溫是阻塞和非阻塞的區別,它們在不同的always模組裡面是不一樣的,非阻塞賦值要等上升沿結束之後,在波形圖上可以看到,並不能夠立刻採到的,而阻塞賦值是可以的。

6樓:匿名使用者

給你個觀念

non-blocking ----> synthesize 完你想讓他變dff

blocking ----> synthesize 完你想讓他變 nand, nor, inv, etc...

切記先想清楚電路再寫code,verilog不是寫c....

verilog語法,有關case語句

7樓:匿名使用者

case括弧內的表示式稱為控制表示式,case分支項中的表示式稱為分支表示式。

控制表示式通常表示為控制訊號的某些位,分支表示式則用這些控制訊號的具體狀態值來表示,

因此分支表示式又可以稱為常量表示式。所以我感覺這個**估計不能實現吧,到時我測試下看看。

8樓:

在這裡不能以c語言的語法來理解這段邏輯,應該考慮case語句在verilog裡面綜合完之後生成的什麼電路。

case語句是分支比較語句,也就是說,本質上就是case後面括號中的值與下面每個分支開頭的值作比較,相同則執行。

看你在樓上的**,因該是licseq的哪一位等於1,就執行哪一個對應分支語句。

9樓:匿名使用者

沒見過。這能編譯過去?

在verilog中為什麼能用case語句儘量不用if語句?

10樓:匿名使用者

首先從軟體角度考慮

if加若干個else if可以組成一個與case類似的功能但需要注意的是if-else if是有優先順序的,也就是第一個if不成立的話,才判斷第二個else if

那麼問題就來了,如果這個if組合裡有10個else if條件,那麼邏輯就需要做一個在一個時鐘週期內能判斷10個條件的硬體電路來,這樣是不明智也是不合理的,比較容易造成時序不滿足

雖然說if有這樣的缺點,但它的優點是每個else if都可以判斷不同的條件,比較靈活

一般來說,如果判斷的條件只是一個向量的不同值,那麼case是最合適的如果判斷的條件是許多不同的向量或者變數,那麼if還是比較合適的當然也可以選擇case和if的組合,這樣靈活性和時序都比較好

11樓:匿名使用者

case語句在編譯成硬體電路後,各個分支之間是平行的,優先順序是相同的;

if語句則具有優先順序。

verilog中用case語句時一定要用always塊嗎

12樓:創舊黃

是的.但是always塊可以綜合成組合電路,利用case語句可以綜合成組合的mux多路選擇器,也可以綜合成時序電路,同步的mux.

13樓:

case語句屬於行為級建模,必須用在過程塊中,即always或者initial中的begin...end或者fork...join語句中,但是由於initial語句塊一般只用於測試,不可綜合,因此只考慮always語句塊中使用case語句

14樓:風雷小草

是的。不然在assign語句中怎麼用?

15樓:匿名使用者

3234nbvf;ljl

verilog的case語句問題

16樓:匿名使用者

always @(en or din)

if(en)

case(din)

8'b1111_1110: key = 4'b0001;

8'b1111_1101: key = 4'b0010;

8'b1111_1011: key = 4'b0011;

8'b1111_0111: key = 4'b0100;

8'b1110_1111: key = 4'b0101;

8'b1101_1111: key = 4'b0110;

8'b1011_1111: key = 4'b0111;

8'b0111_1111: key = 4'b1000;

8'b1111_1111: key = 4'b0000;

default: key = 4'b0000;

endcase

else

key = 4'b0000;

17樓:匿名使用者

你的always語句寫的不對吧。

verilog語言 case多語句 實現路選擇器問題

18樓:網友

不是說你在**裡定義一個reg型變數,綜合器就會綜合處一個暫存器來,case必須在always塊裡,always裡面的被賦值變數必須是reg型,這是語法的規定,只能遵守。

寫**的時候不要加入觸發器(不要邊沿觸發),最終綜合出來的仍然是一個組合電路。case也注意要加上default,不然會綜合一個儲存器出來。

verilog中的case語法使用,求助!

19樓:宋桓公

是不是沒寫endcase啊, 每個加上begin   endcase(ihex)

4'b0000:

begin

seg1=7'b1100110;

seg2=7'b0111111;

seg3...

end4'b0001:

begin

seg1=7'b1100110;

seg2=7'b0111111;

seg3...

endendcase

20樓:黑炎之龍斬者

case(ihex)

=14』11001100111111;

.....

endcase

21樓:檢霽杜鵾

預設是的。包括if

else

也是一樣。

但是可以利用begin

end結構讓其執行中間所有的語句。

不知道你是不是這個意思,歡迎追問~

西班牙語語法問題,幾個西班牙語語法問題

me pongo nervioso cuando tengo que hablar en p blico 我會緊張,當我要在當眾說話 me pone nervioso hablar en p blico 當眾說話,我會緊張 me dan miedo las serpientes 我怕蛇 按理說第一句...

VB中CASE使用問題,VB中如何使用select case語句

這種不行,用 if then elseif then elseif then end if 還有個方法,這些變數的值都0和1,可以作為二進位制碼合成一個變數中,然後用select private sub command1 click dim b as byte dim s1 as byte,s2 a...

西語語法問題,西班牙語語法問題

這裡的palillos並非特指,因此不需要定冠詞los修飾。句子含義是 中國人用筷子吃飯 而不是 中國人用這雙筷子吃飯 西班牙語語法問題 1.首先,你打錯了一個地方,es de mis hijos 要記得性數一致。nosotros dos是指他們夫妻兩個,並不是指臥室,是指人。2.對,此處指的是fa...