私はVerilogが初めてです。有限状態マシンのコードを書こうとしたとき。私は得る:
- [Synth 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 つの 1 ビット入力 (X)
- クロック入力 (CLK)
- 2 つの 1 ビット出力 (S および V)
X は 4 ビットの 2 進数 N を表します。4 ビットの数値は、一度に 1 桁ずつ入力され、最下位ビット (LSB) から始まります。
S は、N + 3 に等しい 4 ビットの 2 進数を表します。S の LSB が最初に出力されます。
4 番目のビット入力が発生すると、N + 3 が大きすぎて 4 ビットで表現できない場合は V = 1 になります。それ以外の場合、V = 0 です。
X の 4 番目のビットが受信されると、回路は常にリセットされます。順序回路が次の状態テーブルで実装されていると仮定します。
出力は (S,V) です。すべての状態変化は、クロック パルスの立ち下がりエッジで発生します。
私のコードに必要な結果を得るのに問題がある場合は、指摘してください。ありがとう!</p>