0

私はVerilogに学校のプロジェクトを持っており、それは非常に初心者です。プログラムの一部はこれです

    integer x;
    assign x=1;
    **LINE 49** while(x<=9)
            begin
                assign lastBitsofP=P[1:0];
                if(lastBitsofP == 2'b00 || lastBitsofP ==2'b11)
                    begin
                    rightShift r1(shiftedValue,P);
                    end
                x=x+1;
            end

しかし、私は常にこのエラーを受け取ります:「mainModule.v」49行目は「endmodule」を期待しており、「while」が見つかりました、

4

1 に答える 1

3

コーディングをやめて、何が起こっているのかを考える必要があります。ハードウェアと接続をモデリングしています。assign x = と書くと、「私にはワイヤーがあり、この値でそのワイヤーを駆動してほしい」という意味になります。接続したい r1 のようなモジュールがある場合は、常に接続する必要があります。

最初に接続をインスタンス化する必要があります。時々右にシフトされた値だけが必要な場合は、次のようなステートメントを使用できassign out = select ? shiftedValue : unshiftedValue;ます。次に、select のロジックを記述するだけです。

そして、おそらく出力用にフリップフロップが必要になるでしょう。何かのようなもの

reg [31:0] result;
always @(posedge clk)
begin
    result <= out;
end
于 2012-11-08T23:03:40.640 に答える