我在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',
答案 0 :(得分:3)
您需要停止编码并思考发生了什么。您正在建模硬件和连接。当你写分配x =这意味着“我有一根电线,我希望你用这个值驱动那根电线”。如果你想要连接一个类似r1的模块,它必须连接总是你不能去“哦等等,如果发生这种情况只需为我创建一个乘法单元”。
您需要在开始时实例化您的连接。如果您有时只需要正确的移位值,那么您可以使用类似assign out = select ? shiftedValue : unshiftedValue;
的语句然后您只需编写用于选择的逻辑。
你可能想要一个输出的触发器。像
这样的东西reg [31:0] result;
always @(posedge clk)
begin
result <= out;
end