我不明白为什么我的编译器会抱怨我对OUT的所有赋值语句。 这是我的代码:

`include "prj_definition.v"
module ALU(OUT, ZERO, OP1, OP2, OPRN);
// input list
input [`DATA_INDEX_LIMIT:0] OP1; // operand 1
input [`DATA_INDEX_LIMIT:0] OP2; // operand 2
input [`ALU_OPRN_INDEX_LIMIT:0] OPRN; // operation code

// output list
output [`DATA_INDEX_LIMIT:0] OUT; // result of the operation.
output ZERO;

always @(OP1 or OP2 or OPRN)
begin
// TBD - Code for the ALU
case (OPRN)
        `ALU_OPRN_WIDTH'h01 : OUT = OP1 + OP2; // addition
    `ALU_OPRN_WIDTH'h02 : OUT = OP1 - OP2; // subtraction
    `ALU_OPRN_WIDTH'h03 : OUT = OP1 * OP2; // multiplication  
    `ALU_OPRN_WIDTH'h04 : OUT = OP1 >> OP2; // shift_right
    `ALU_OPRN_WIDTH'h05 : OUT = OP1 << OP2; // shift_left
    `ALU_OPRN_WIDTH'h06 : OUT = OP1 & OP2; // bitwise and
    `ALU_OPRN_WIDTH'h07 : OUT = OP1 | OP2; // bitwise or
    `ALU_OPRN_WIDTH'h08 : OUT = ~(OP1 | OP2); // bitwise nor
    `ALU_OPRN_WIDTH'h09 : OUT = OP1 < OP2; // less than

        default: OUT = `DATA_WIDTH'hxxxxxxxx;
endcase
end

always @(OUT) //whenever the output changes
begin
if(OUT === 0) ZERO = 1; //if result is 0, set the zero flag
else ZERO = 0; //otherwise keep the 0 flag false
end

endmodule

有人可以解释发生了什么吗? 让我知道是否需要更多信息。

#1楼 票数:1

弄清楚了! 以防万一其他人遇到类似的问题,这是我添加的内容:

//output registers
output reg OUT;
output reg ZERO;

  ask by aurora91 translate from so

未解决问题?本站智能推荐:

1回复

系统 Verilog 非法分配:无法将解压缩类型分配给打包类型

在 System Verilog 中,我写道: 但是,我在这一行遇到错误: 它说: 错误:mult32x32_arith.sv(19):从类型“reg $[63:0]”非法分配类型“reg[63:0]”:无法将解压缩类型分配给压缩类型。 但是,我不明白问题是什么。
1回复

Verilog 函数返回错误值

有人可以帮助我理解为什么我的功能无法正常工作吗? 当我运行上面的代码时,我得到这个作为输出: 为什么当requestChipSelect设置为SELECT_VGA (2) 时,我的函数总是将此视为0 ?
2回复

系统Verilog总线路由

在系统Verilog中,我知道您可以使用array [15:8]路由部分总线,以作为分割通道的方法。 有没有办法以非连续的方式做到这一点。 例如,车道2,3,8,9。
1回复

Verilog,截断genvar宽度大小

如何截断genvar变量的宽度? 例如,如果我有: 当我在ModelSim中进行仿真时,我会得到端口大小与连接大小不匹配。 我知道问题出在genvar为32位宽,而我模块的宽度也有所不同。 我试过了 和 但是它们在语法上是不正确的。 我该如何解决这个问题?
1回复

Verilog中的数组位参数范围-下溢或-1

在这种情况下,参数init索引范围应该是什么: 应该是[-1:0]或[4294967295:0] ,为什么? 这种行为是标准化的还是取决于工具?
2回复

如何在系统Verilog中实例化

我正在尝试在System Verilog中实例化一个模块。 它可以在Modelsim中正确编译。 当我尝试模拟测试台时,它说。 这是我的代码: 知道可能是什么问题吗? 编译和仿真Verilog代码时,我没有出现实例化问题。 仅系统Verilog。 我看了很多代码示例,发
1回复

如何从 Verilog 定义宏中选择特定位?

我最初有一个“params_list.v”文件,其中列出了多个全局约束 参数用于特定模块,如下所示 原来的 'params_list.v' 文件被分成了多个头文件 'header1.vh', 'header2.vh', 其中一个文件的定义如下所示 然后使用以下几行将头文件包含在主设计文
2回复

在ModelSim Altera Edition 10.4中无法像Verilog最初的构造那样工作

从版本10.4开始,使用初始块启动问题。 像这样: 要么 ModelSim 10.4错误: 错误(可抑制):(vlog-7061){path}在always_ff块中驱动的变量'init_ram',可能不受任何其他进程驱动 在旧版本中,所有功能都可以正常运行。