Verilogを初めて使用しました。有限状態機械のコードを書くとき。私が取得:Verilog構文エラーが常に近くにあります
- [シンセ8から434]混合レベルを高感度かつエッジイベントコントロールがここで合成
のためにサポートされていないトリガ私のコードです:
module controller1(x, clk, s, v);
input x;
input clk;
output s;
output v;
reg [2:0] state;
reg s;
reg v;
always @ (negedge clk or x) begin
case (state)
3'b0 : begin
state <= x ? 3'b1 : 3'b10;
s = x ? 0 : 1;
v = 0;
end
3'b10 : begin
state <= x ? 3'b11 : 3'b101;
s = x ? 0 : 1;
v = 0;
end
3'b1 : begin
state <= 3'b11;
s = x ? 1 : 0;
v = 0;
end
3'b101 : begin
state <= 3'b100;
s = x ? 1 : 0;
v = 0;
end
3'b11 : begin
state <= x ? 3'b111 : 3'b100;
s = x ? 0 : 1;
v = 0;
end
3'b100 : begin
state <= 3'b0;
s = x ? 1 : 0;
v = 0;
end
3'b111 : begin
state <= 3'b0;
s = x ? 0 : 1;
v = x ? 1 : 0;
end
endcase
end
endmodule
質問は次のとおりです。
順序回路は、
- か1ビットの入力(X)
- クロック入力(CLK)
- 2つの1ビット出力(S、およびV)
Xは4ビットのバイナリ数Nを表します。 4ビットの数値は一度に1桁を入力し、最下位ビット(LSB)から開始します。
Sは、第4ビットの入力が発生した場合にN + 3が大きすぎる最初
、V = 1 あることがLSB Sの出力されるN + 3に等しい4ビットの2進数を表します。 4ビットで表される。それ以外の場合、V = 0
Xの第4ビットが受信された後、常に回路がリセットされます。順序回路が次の 状態テーブルで実装されているものとします。
出力は(S、V)です。すべての状態の変化は、クロックパルスの立ち下がりエッジで発生します。
私のコードに必要な結果が得られない場合は、指摘してください。ありがとう!
"reg v"宣言(常に直前)の後にセミコロンはありませんか? – happydave
@happydaveああ、この間違いを指摘してくれてありがとう!しかし、常に周囲には誤りがあります。 Vivado氏は、「[Synth 8-434]ミックスレベルセンシティブおよびエッジトリガーイベントコントロールは合成には対応していません」と述べています。常に@()ステートメント – Jiang