我是xilinx的新手,所以请原谅代码中的任何愚蠢行为。
啊,所以我正在尝试设计一个 8位ALU ,模块在模拟上完美运行,但我们需要在 FPGA 板上获取输入和显示输出。
从技术上讲,我应该使用 RS-232 ,但由于我们只有 8位输入和8个开关,我们正在尝试以这种方式编码。
但是,代码无法编译并出错
"expecting 'endmodule', found 'forever'"
。
我使用'forever'
而不是'always'
,因为始终不允许在其中实例化任何实例。
有人可以帮我们弄清楚代码有什么问题吗?
module main(out,in,switch);
output [7:0] out;
input [7:0] in;
input switch;
reg [7:0] a,b,select;
reg [1:0] count;
wire eq, comp, C8;
initial
begin
count = 2'b00;
select = 8'b0000_0000;
end
MyALU A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]);
forever
begin
if (switch)
begin
case (count)
00:
begin
a = in;
count = 2'b01;
end
01:
begin
b = in;
count = 2'b10;
end
10:
begin
select = in;
A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]);
count = 2'b00;
end
default
a = in;
endcase
end
end
答案 0 :(得分:1)
verilog中的每个模块都必须以行endmodule
结尾。你的代码中缺少这个。并尝试使用always@(*)
代替forever
。 forever
不可综合,仅用于模拟验证。
答案 1 :(得分:0)
forever
语句替换为always @(*)
。A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]);
endmodule
。