我試圖用Verilog建立一個32位ALU和我只做過行爲的Verilog的一個小一點,所以我有一些困難,與此代碼:零標誌的Verilog問題
module ZERO_FLAG(flag, control, inputA, inputB);
input [2:0] control;
input [31:0] inputA, inputB;
output flag;
reg flag;
always @(control or inputA or inputB) begin
case (control)
1: flag <= (|(inputA ~& inputB));
3'bxxx, 3'bxx0, 3'bxx1, 3'bx0x,
3'bx00, 3'bx01, 3'bx1x, 3'bx10,
3'bx11, 3'b0xx, 3'b0x0, 3'b0x1,
3'b00x, 3'b000, 3'b01x, 3'b010,
3'b011, 3'b1xx, 3'b1x0, 3'b1x1,
3'b10x, 3'b100, 3'b101, 3'b11x,
3'b110, 3'b111: flag <= 0;
endcase
end
endmodule
出於某種原因,Modelsim在1的情況下簡單地對inputA和inputB之間的NAND不滿意。基本思想是,我只想在減法發生時拋出一個零標誌,然後我希望結果是一個或減少的兩個輸入的按位NAND。思考?
NB'默認:標誌<= 0;'可能比,更容易'3'bxxx,3'bxx0,3'bxx1,3'bx0x,... ' – Morgan