我正在尝试在 verilog 中创建一个有限状态机。该系统有 4 个1-bit
输入 rst
,和1个输出clk
, 。A
B
Z
Z 等于 1,如果: A 在最后两个时钟沿具有相同的值。
或 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