2011-10-28 18 views
1
module router (clock, ValidPacket0, ValidPacket1, ValidPacket2, ValidPacket3, PacketIn0, PacketIn1, PacketIn2, PacketIn3, PacketOut0, PacketOut1, PacketOut2, PacketOut3); 

    input clock; 
    input ValidPacket0, ValidPacket1, ValidPacket2, ValidPacket3; 
    input [7:0] PacketIn0, PacketIn1, PacketIn2, PacketIn3; 
    output [7:0] PacketOut0,PacketOut1, PacketOut2, PacketOut3; 

    reg [3:0] bvp, vp; 
    reg [1:0] counter0, counter1, counter2, counter3; 
    reg [2:0] sel0, sel1, sel2, sel3; 
    reg [3:0] zero=0; 
    reg [7:0] addr0, addr1, addr2, addr3, out0, out1, out2, out3l; 
    wire  np0, np1, np2, np3; 
    wire [7:0] PacketOut0, PacketOut1, Packetout2, Packetout3; 

    [email protected](posedge clock) 
    bvp[0]<=ValidPacket0; 
    if (ValidPacket0 && !bvp[0]) vp[0]=1'b1; 
    else vp[0]=0; 

上記のコードは私に次のエラーを与えますか?Verilogのコンパイラエラー

答えて

1

あなたがやろうとしている内容に応じて、あなたは(How to interpret blocking vs non blocking assignments in Verilog?を見て、自分の割り当てタイプを修正)always @(posedge)後の文の周りbeginendキーワードを追加する必要があるか、あなたは、if /他の前にalways @(*)を追加する必要があります組み合わせ論理を導入する。

1
[email protected](posedge clock) 
    bvp[0]<=ValidPacket0; 
    if (ValidPacket0 && !bvp[0]) vp[0]=1'b1; 
    else vp[0]=0; 

この 'if'ブロックはモジュールレベルで表示されるため、生成ブロックを示します。コードvp[0]=1'b1;は、手順ブロック内でのみ許可される手順文です。コンパイラは、識別子ではないモジュールまたはudpインスタンスと、それに続く '['を期待しているので不平を言っています。