0

我在 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',

4

1 回答 1

3

您需要停止编码并考虑发生了什么。您正在对硬件和连接进行建模。当你写assign x =时,这意味着“我有一根电线,我希望你用这个值驱动那根电线”。如果您有一个像 r1 这样的模块要连接,它必须始终连接,您不能“哦,等等,如果发生这种情况,只需为我创建一个乘法单元”。

您需要在开始时实例化您的连接。如果你有时只想要右移值,那么你可以有一个像assign out = select ? shiftedValue : unshiftedValue;And 这样的语句,然后你只需要编写 select 的逻辑。

你可能需要一个触发器来输出。就像是

reg [31:0] result;
always @(posedge clk)
begin
    result <= out;
end
于 2012-11-08T23:03:40.640 回答