module rocket_move (
input logic clk,
input logic resetN,
input logic signed [10:0] spaceship_X,
input logic signed [10:0] spaceship_Y,
output logic signed [10:0] rocket_topLeftX, // output the top left corner
output logic signed [10:0] rocket_topLeftY // can be negative
);
// a module used to generate the rocket trajectory.
int x = spaceship_X[10:0];
int y = spaceship_Y[10:0];
我试图将火箭位图附加到我已经构建并工作的宇宙飞船位图的中心, spaceship_[10..0] 是在宇宙飞船的轴 X 和 Y 上保持位置的向量,我试图使用变量进行未来的计算,但我每次都收到错误,我试图用 spaceship_X[10..0] 进行计算,在这种情况下我没有收到错误,但也看不到火箭位图。提前致谢
"错误 (10748):rocket_move.sv(26) 处的 Verilog HDL 错误:变量声明赋值到 x 的表达式必须是常量">
在其声明时分配int
将在时间为零处为其提供初始值。在非分配时,宇宙飞船 X/Y 值仍然是其类型的默认值。
假设 x/y 仅由宇宙飞船 X/Y 驱动,您的代码执行以下操作:
int x,y;
always_comb begin
x = spaceship_X[10:0];
y = spaceship_Y[10:0];
end
或: 国际 x,y; 分配 x = spaceship_X[10:0]; 分配 y = spaceship_Y[10:0];
如果 x/y 具有相互赋值,则处理always_comb
内的所有赋值条件。如果变量是同步的,则使用带有非阻塞赋值 (<=
always_ff @(posedge clk)
块。