verilogで有限ステートマシンを作成しようとしています。システムには、4つの入力1-bit
、、、 rst
および1つの出力、があります。clk
A
B
Z
次のいずれかの場合、Zは1に等しくなります。Aの最後の2つのクロックエッジで同じ値があった。
または、最後のルールが真であったため、すべてのクロックエッジでBがハイ(1)になっています。
それ以外の場合z=0
;
私の試みのATMをシミュレートするためのツールがありません。だから私はこれが正しい方法であるかどうか、そして私が正しい軌道に乗っているかどうか疑問に思っていますか?
module StateMachine( R, A, B, clk, Z);
input R, A, B, clk;
output reg Z;
reg ATemp;
reg state;
always @ (posedge clk or A)
if (A == 1'b1)
/////////////////
begin
if (ATemp == 1'b1) state <= 1'b1;
else ATemp <= A;
end
////////////////
else
////////////
begin
if (ATemp == 1'b0) state <= 1'b1;
else ATemp <= A;
end
always @ (state)
case(state)
1'b0: Z=0;
1'b1: Z=1;
default: Z=0;
endcase
endmodule