Verilog错误

时间:2012-11-08 22:19:37

标签: verilog

我在Verilog有一个学校项目,我是新手。该计划的一部分是

    integer x;
    assign x=1;
    **LINE 49** while(x<=9)
            begin
                assign lastBitsofP=P[1:0];
                if(lastBitsofP == 2'b00 || lastBitsofP ==2'b11)
                    begin
                    rightShift r1(shiftedValue,P);
                    end
                x=x+1;
            end

但我总是得到这个错误:“mainModule.v”第49行期待'endmodule',找到'while',

1 个答案:

答案 0 :(得分:3)

您需要停止编码并思考发生了什么。您正在建模硬件和连接。当你写分配x =这意味着“我有一根电线,我希望你用这个值驱动那根电线”。如果你想要连接一个类似r1的模块,它必须连接总是你不能去“哦等等,如果发生这种情况只需为我创建一个乘法单元”。

您需要在开始时实例化您的连接。如果您有时只需要正确的移位值,那么您可以使用类似assign out = select ? shiftedValue : unshiftedValue;的语句然后您只需编写用于选择的逻辑。

你可能想要一个输出的触发器。像

这样的东西
reg [31:0] result;
always @(posedge clk)
begin
    result <= out;
end