您好我正在尝试编译此verilog代码时无法确定C语言:/Modeltech_pe_edu_10.3c/examples错误。这对我来说似乎很简单。我做错了什么?任何的意见都将会有帮助。我不喜欢Modelsim但被迫使用它。如果设置存在问题,我很好奇。
这使用case语句实现了基本的ALU设计。请帮忙。稍后我会尝试使用Xilinx来查看是否可以运行它。谢谢!
`timescale 1ns / 1ps
module alu(result,operand0,operand1,control)
(
input [31:0] operand0,
input [31:0] operand1,
input [3:0] control,
output [31:0] result,
reg [31:0] result;
always @(control, operand0, operand1)
begin
case(control)
4'b0000: result = operand0 && operand1;
4'b0001: result = operand0 || operand1;
4'b0010: result = operand0 ^ operand1;
4'b0011: result = operand0 ~| operand1;
4'b0100: result = operand0 + operand1;
4'b0110: result = operand0 - operand1;
4'b1000: result = operand0 < operand1;
4'b1001: result = operand0 << operand1;
4'b1010: result = operand0 >> operand1;
4'b1011: result = operand0 >>> operand1;
endcase
end
endmodule
答案 0 :(得分:0)
看起来你混合了ANSI和非ANSI样式。这将是所有模拟器
非ANSI(IEEE标准1364-1995及以上版本):
module alu(result,operand0,operand1,control)
// ( <-- you have an open parenthesizes that should be here
input [31:0] operand0;
input [31:0] operand1;
input [3:0] control;
output [31:0] result;
reg [31:0] result;
或ANSI(IEEE Std 1364-2001及以上版本):
module alu(
output reg [31:0] result,
input [31:0] operand0, operand1,
input [3:0] control
);
其他建议:使用always @*
代替always @(control, operand0, operand1)
自动敏感列表。如果您需要遵循IEEE Std 1364-1995,请使用always @(control or operand0 or operand1)
作为,
功能,以便在IEEE标准1364-2001中添加敏感列表(以及@*
)。