SystemVerilog TypeDef Can;具有零压缩或非压缩数组维度的t索引对象

SystemVerilog TypeDef Can;具有零压缩或非压缩数组维度的t索引对象,verilog,typedef,fpga,system-verilog,Verilog,Typedef,Fpga,System Verilog,我目前正试图在SystemVerilog中使用TypeDef来定义一个新的数据结构对象,该对象包含一个8位无符号寄存器和一个32位有符号整数,但我一直遇到错误: 错误(10053):UART.v(35)处的Verilog HDL错误:无法为压缩或解包数组维数为零的对象“数据”编制索引 我在下面重新创建了一个简单的实现,其中topLevelModule引用了一个lowLevelModule,该模块确定结构所包含的整数和8位无符号寄存器的值,并将它们输出到topLevelModule 使用一个单独的

我目前正试图在SystemVerilog中使用TypeDef来定义一个新的数据结构对象,该对象包含一个8位无符号寄存器和一个32位有符号整数,但我一直遇到错误:

错误(10053):UART.v(35)处的Verilog HDL错误:无法为压缩或解包数组维数为零的对象“数据”编制索引

我在下面重新创建了一个简单的实现,其中topLevelModule引用了一个lowLevelModule,该模块确定结构所包含的整数和8位无符号寄存器的值,并将它们输出到topLevelModule

使用一个单独的UART模块,我试图将这个结构/对象(40位长)发送到主机-为了简化下面的代码,我省略了这个模块,并省略了大部分不相关的代码

typedef struct {
            reg[7:0] identifier;
            integer currentSynapticWeight;
        } dataPacket;

module topLevel(clk, reset, UART_TXD);

    input clk; // Clock Signal
    input reset; // Reset Signal
    output UART_TXD; // Output Signal

    dataPacket data; // Instance the dataPacket Object

    lowLevelModule LLM1(clk, reset, data);

    // CODE TO DRIVE THE UART CONNECTION OMMITED

endmodule

module lowLevelModule(clk, reset, data);

    input clk; // Clock Signal
    input reset; // Reset Signal
    output dataPacket data; // Instance the dataPacket Object

    reg[7:0] someUnsigned8BitUnsignedReg = 8'b10001000;
    integer someIntegerValue = 25;

    always @(*)
        begin
            data[39:32] = someUnsigned8BitUnsignedReg;
            data[31:0]  = someIntegerValue;
        end

endmodule

任何帮助都将不胜感激,我不确定我是否在正确的庄园使用了TypeDef

您将
数据
声明为未打包的结构-您无法将其作为完整的打包数组进行访问。将指定更改为结构的未打包成员:

data.identifier = someUnsigned8BitUnsignedReg;
data.currentSynapticWeight  = someIntegerValue;
或者更改
typedef
以定义压缩结构

typedef struct packed {
            reg[7:0] identifier;
            integer currentSynapticWeight;
        } dataPacket;

您将
数据
声明为未打包的结构-无法将其作为完整的打包数组进行访问。将指定更改为结构的未打包成员:

data.identifier = someUnsigned8BitUnsignedReg;
data.currentSynapticWeight  = someIntegerValue;
或者更改
typedef
以定义压缩结构

typedef struct packed {
            reg[7:0] identifier;
            integer currentSynapticWeight;
        } dataPacket;