2017-08-29 2 views
0

現在、8ビットの符号なしレジスタと32ビットの符号付き整数を含む新しいデータ構造オブジェクトを定義するために、SystemVerilogでTypeDefを使用しようとしていますが、エラーを取得しておいてください。SystemVerilog TypeDefパックされた、またはパックされていない配列ディメンションがゼロのインデックスオブジェクト

エラー(10053):UART.vでのVerilog HDLのエラー(35):できませんインデックスオブジェクト「データ」ゼロパックまたはアンパック配列の次元で

私が再作成されています下の単純な実装では、topLevelModuleが、構造体が構成されている整数と8ビットの符号なしレジスタの両方の値を決定するlowLevelModuleをインスタンス化するofを生成して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を正しいマナーに使用しているかどうかはわかりません。

答えて

2

アンパックされた構造体としてdataを宣言しました。これは、パックド配列としてはアクセスできません。構造体のアンパックメンバーに自分の割り当てを変更するか:

data.identifier = someUnsigned8BitUnsignedReg; 
data.currentSynapticWeight = someIntegerValue; 

またはパック構造体に

typedef struct packed { 
      reg[7:0] identifier; 
      integer currentSynapticWeight; 
     } dataPacket; 
を定義するために、あなたの typedefを変更
関連する問題