У меня очень разочаровывает опыт моей первой недели обучения Verilog.Синтаксическая ошибка Icarus Verilog при вычитании двух 32-битных входов?
Я пытаюсь скомпилировать код ниже - от mipsalu.v
module MIPSALU (ALUctl, A, B, ALUOut, Zero);
input [3:0] ALUctl;
input [31:0] A,B;
output reg [31:0] ALUOut;
output Zero;
assign Zero = (ALUOut==0); //Zero is true if ALUOut is 0; goes anywhere
always @(ALUctl, A, B) //reevaluate if these change
case (ALUctl)
0: ALUOut <= A & B;
1: ALUOut <= A | B;
2: ALUOut <= A + B;
3: ALUOut <= A^B;
6: ALUOut <= A – B;
7: ALUOut <= A < B ? 1:0;
12: ALUOut <= ~(A | B); // result is nor
default: ALUOut <= 0; //default to 0, should not happen;
endcase
endmodule
Когда я пытаюсь скомпилировать это с помощью iverilog -o test mipsalu.v
, iverilog говорит мне
mipsalu.v:13: syntax error
I give up.
Когда я удалить ошибочную строку и скомпилировать снова, нет ошибок -
module MIPSALU (ALUctl, A, B, ALUOut, Zero);
input [3:0] ALUctl;
input [31:0] A,B;
output reg [31:0] ALUOut;
output Zero;
assign Zero = (ALUOut==0); //Zero is true if ALUOut is 0; goes anywhere
always @(ALUctl, A, B) //reevaluate if these change
case (ALUctl)
0: ALUOut <= A & B;
1: ALUOut <= A | B;
2: ALUOut <= A + B;
3: ALUOut <= A^B;
//6: ALUOut <= A – B;
7: ALUOut <= A < B ? 1:0;
12: ALUOut <= ~(A | B); // result is nor
default: ALUOut <= 0; //default to 0, should not happen;
endcase
endmodule
Любое понимание было бы очень признателен. Спасибо!
Edit: стоит отметить, что я бегу версии 10 Икара Verilog на ОС Windows 8.1 с использованием MinGW/MSYS
Ничего себе, это очень полезно. Я не писал этот код, но я обязательно изменю неблокирующие назначения на регулярные = присваивания – Zabitz