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...