代碼中的某些語法可以修復。您可以通過{}運算符對一組信號進行分組。
wire [3:0] flag_temp;
assign flag_temp [3:0] = (op_dec == 5'b00000) ? flag_temp[3:0] :
(op_dec == 5'b00001) ? flag_temp[3:0] :
(op_dec == 5'b00010) ? {flag_temp[1], flag_temp[3], flag_temp[0]} : {flag_temp[2]} ;
有無與倫比的大括號。兩個打開((但是隻有一個關閉) 在賦值語句中還有賦值,flag_temp [0] = 1'b0,它擊敗了賦值本身的目的 另外flag_temp被賦值本身,沒有外部值。分配給它這將導致剩餘flag_temp「X」始終
意圖的代碼是我不太清楚,所以無法做出更有意義的建議
更新的代碼 - 。 以下是一些基於數據模型操作的示例代碼,其餘操作符可以添加到相似的行中。
對於現在針對特定操作而改變的信號,這些值被循環並且針對改變特定標誌的操作被添加到級聯「{}」操作符中。 最後是默認的原始值保留。
reg [3:0] x ;
reg [3:0] y;
wire [3:0] sum;
wire carry_i = 1 ; // driven to 1 for example
wire zero ;
assign {carr_o,sum} = x+y+carry_i ;
assign flag_ex[3:0] = (op_dec == 5'b00000) ? { flag_ex[3],flag_ex[2],flag_ex[1],carr_o} : // ADD
(op_dec == 5'b00001) ? { flag_ex[3],flag_ex[2],flag_ex[1],carr_o}: // SUB
(op_dec == 5'b00010) ? { flag_ex[3],flag_ex[2],zero,flag_ex[0]}: // MOV
flag_ex[3:0]; //default
它的處理器的代碼,我添加標誌(進位,溢出,零和奇偶校驗),它是強制使用數據流建模。意圖是重置進位和溢出標誌,而奇偶校驗和零將受(例如)A&B操作的影響。 – peregriuns19
更新了代碼以使用簡單的數據流建模示例 –