使用FPGA板输入8位ALU的输出

时间:2015-12-07 04:52:31

标签: verilog fpga xilinx alu

我是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 

2 个答案:

答案 0 :(得分:1)

verilog中的每个模块都必须以行endmodule结尾。你的代码中缺少这个。并尝试使用always@(*)代替foreverforever不可综合,仅用于模拟验证。

答案 1 :(得分:0)

  1. forever语句替换为always @(*)
  2. 从案例陈述中删除此行: A(eq, comp, C8, out, a, b, 1'b0, select[0], select[1], select[2], select[3]);
  3. 最后添加endmodule