2016-04-19 5 views
0

構造体をVerilogで使用すると、未解決の問題があります。ここで構造体に関するVERILOGの問題

は私のコードです:


//Other technic 
//typedef struct{bit Over_I;}reg_type; 

// Code 
module Overload(rst_n,clock,vlowp,IHigh,Over_I); 

    // Port declaration 
    input rst_n,clock,vlowp,IHigh; 
    output Over_I; 

    reg S_NOM = 0; 
    reg S_OVL = 1; 

    struct{ 
     reg Over_I; 
    } reg_type; 

    reg_type Reg,NextReg; 

    initial 
    begin 
     Over_I = Reg.Over_I; 
    end 

私は成功せず、モジュールの外部のtypedefでみました。

コンソールによって指定されたエラーは、次のとおり

「ERROR:HDLCompiler:806 - "C:/....../ Lattice_tests/Test_Verilog /ソース/ overload_test.v" 行26:構文エラーの近く"{"。

ライン26 iは、構造体を定義したラインである。誰かが私を助けることができる場合

、私は感謝される。 感謝。 Franckois

答えて

1

Verilogではサポートされていない構造体のデータ型。SystemVerilog(th Verilogの後継者)はそうです。最新のVerilogシミュレータはすべてSystemVerilogシミュレータです。 .vから.sv
に変更することで、SystemVerilogを有効にすることができます。ほとんどのシミュレータには、すべてのVerilogファイルをSystemVerilogとして強制的にコンパイルするオプションがありますが、マニュアルを参照する必要があります。 SystemVerilogのキーワード(例:bitおよびbyte)と競合する変数/ネット名を使用するレガシーVerilogコードが多数あります。ファイル拡張子が正しく使用されている場合、シミュレータは正しくファイルを正しく解析できます。

initialは、何かを1度だけ割り当てます。 Over_Iは時間0の後にReg.Over_Iの値を持ちません。さらに、ワイヤ(出力のデフォルトタイプ)は手続き型ブロック内に割り当てることができません(例:initialおよびalwaysブロック)。 assignステートメントを使用するか、output regにして、それを(SystemVerilogを前提として)always_combまたはalways_ffブロックまたはVerilog alwaysブロックに割り当てます。