verilog中case所有分支都要有所有訊號的驅動嗎

2021-04-28 02:32:43 字數 2635 閱讀 5923

1樓:匿名使用者

不一定必須抄

所有分支都要襲

有所有訊號的驅bai動,但通

du常建議完善所有狀態,另外如zhi果狀態值dao未完全遍歷的情況下,一定要加default語句。

補充問題中,「只在指定的狀態時允許修改其值(~ena = 0),然而我發現這個沒有起作用」是個什麼意思?(~ena = 0)是什麼控制的?

verilog語法,有關case語句

2樓:匿名使用者

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

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

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

3樓:

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

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

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

4樓:匿名使用者

沒見過。這能編譯過去?

verilog中case使用問題

5樓:海天盛

case變成ca***再加上default:y=1'b0就可以解決此問題,使用方法。

如下參考:

1.首先,右鍵單擊專案並單擊newsource以建立乙個新的**檔案。

2.選擇使用者文件建立乙個自定義文件文件,檔名和字尾隨意。

3.建立完成後,切換到檔案面板底部,雙擊開啟檔案,根據自己喜歡的形式輸入資料。

4.寫完資料檔案後,右鍵單擊專案,單擊newsource,然後選擇verilog測試裝置,輸入檔名並繼續,選擇要測試的模組,然後建立檔案。

5.雙擊開啟檔案,可以看到要測試的模組塊的輸入對應一些reg暫存器型別,輸出對應一些wire型別。新增兩個引數常量,然後為for迴圈新增計數變數j,並新增乙個向量陣列來儲存檔案讀取的資料。

6.下面是程式生成的用於例項化和連線接收測試模組的**。只需編寫end之間的測試**。

6樓:匿名使用者

always@(sel or a or b or c or d)begin

case(sel)

2'b00:y=a;

2'b01:y=b;

2'b10:y=c;

2'b11:y=d;

default:y=1'bz; //這裡給乙個預設值就行了endcaseend

7樓:匿名使用者

把case 變成ca***試試 再加上default:y=1'b0;

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

8樓:匿名使用者

首先從軟體角度考慮

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

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

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

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

9樓:匿名使用者

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

if語句則具有優先順序。

verilog中case**化簡:怎麼合併「相同操作的不同專案」?

10樓:高邊疆號

reg [1:0]addr_cnt=2'b11;

reg read=1'b1;

always@(posedge clk_40m) begin

addr_cnt <= addr_cnt + 1'b1;//在所有分支中操作相同,可以提出到分支語句以外,同一"begin end"塊以內

case(addr_cnt)

2'b00,2'b01: read <= 1'b0;//對某變數完全相同的操作,逗號隔開不同的分支標誌即可

2'b10: read <= 1'b1;

2'b11: read <= 1'bz;//乙個分支僅對乙個變數賦值時,可以不用begin end 塊語句

default: ; //直接分號 等價於該「case」塊中賦值的變數 全部進行" read <= read;"操作

endcase;end

11樓:匿名使用者

就這樣寫就行:

2'b00,2『b01: begin

read<=1'b1;

addr_cnt<=addr_cnt+1'b1;end

verilog中的rledrled是什麼意思

是不是發錯了,感覺是,把rled的最後一位放到前邊從新組合成乙個新的數值 你這個最好把完整的 發出來看看,才能知道什麼意思 一般就在兩個場合用乙個就是rled 3 1 中的 另一種在選擇語句中一般是 a b?c d 意思是如果b 1 a就等於c,否則a等於d 在verilog中led bit led...

C語言switch中case 2如何呼叫case 1中的結果

char c scanf c c switch c return 0 你輸入a和b都是輸出的a 在case 2 後不要加break 如 switch case 2 case 1 break 用switch巢狀吧 switch switch case語句case2中呼叫case1中定義的物件 你這個物...

請問下verilog中語句wireA與wi

wire n 0 a 中a 0 是最低位 wire 0 n a 中a 0 是最高位 表示順序不同而已 verilog裡面,變數wire 7,0 a 跟wire 8,1 a 第二個數字是什麼意思?是一樣的嗎?為什麼有這樣的表示?首先要指出的是wire 7,0 a和wire 8,1 a這樣的表達在ver...