系统Verilog将向量[10..0]附加到整数
我正在尝试将一个火箭位图附加到我已经构建并运行的宇宙飞船位图的中心, spaceship_ux[10..0]是一个向量,它在飞船的X轴和Y轴上保持位置,我试图在以后的计算中使用一个变量,但每次都会出错,我试图用spaceship_X[10..0]进行计算,在这种情况下,我不会出错,但也看不到火箭位图。提前谢谢系统Verilog将向量[10..0]附加到整数,verilog,Verilog,我正在尝试将一个火箭位图附加到我已经构建并运行的宇宙飞船位图的中心, spaceship_ux[10..0]是一个向量,它在飞船的X轴和Y轴上保持位置,我试图在以后的计算中使用一个变量,但每次都会出错,我试图用spaceship_X[10..0]进行计算,在这种情况下,我不会出错,但也看不到火箭位图。提前谢谢 “错误(10748):rocket_move.sv(26)处的Verilog HDL错误:变量声明赋值给x的表达式必须是常量”在其声明处赋值int将在时间零点给它一个初始值。在“禁用”指定
“错误(10748):rocket_move.sv(26)处的Verilog HDL错误:变量声明赋值给x的表达式必须是常量”在其声明处赋值
int
将在时间零点给它一个初始值。在“禁用”指定时,“宇宙飞船X/Y”值仍然是其类型的默认值
假设x/y仅由宇宙飞船x/y驱动,代码执行以下操作:
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];
或:
int x,y;
分配x=宇宙飞船x[10:0];
分配y=宇宙飞船y[10:0]
如果x/y具有相互分配,则处理
始终\u组合中的所有分配条件。如果变量是同步的,那么使用always_ff@(posedge clk)
block和非阻塞赋值(Im使用Quartus,我编辑了代码,只留下了重要的内容,第26行是int x=spaceship_x[10:0];我通过使用“如果这是导致问题的行,int x=spaceship_x[10:0]解决了问题。”;这是因为工具希望变量在声明的行上有一个初始值,而不是一个连续赋值。在代码的更下面(不是声明的行)使用一个连续赋值,赋值x=spaceship_x;
int x,y;
always_comb begin
x = spaceship_X[10:0];
y = spaceship_Y[10:0];
end