我合成了我的VHDL代码。当我看到RTL查看器时,我期待着另一个结果。我得到了一个使用VHDL代码构建的状态机(见下文)并获得了以下结果(见图)。我不知道的一些事情:
1'h0
是什么意思?state~7
是什么意思?state
?其他州在哪里?VHDL代码:
ENTITY state_machine IS
PORT ( clk: IN std_logic;
reset: IN std_logic;
X: IN BIT;
Z: OUT BIT);
END state_machine;
-- Present State Next State Output
-- X !X
-- Z
-- S0 S0 S1 0
-- S1 S0 S11 0
-- S11 S110 S11 0
-- S110 S0 S1101 0
-- S1101 S0 S11 1
ARCHITECTURE behaviour OF state_machine IS
TYPE states IS (S0, S1, S11, S110, S1101);
SIGNAL state : states;
BEGIN
next_state : PROCESS(reset, clk)
BEGIN
IF reset='0' THEN
state <= S0;
ELSIF rising_edge(clk) THEN
CASE state IS
WHEN S0 =>
IF X='0' THEN
state<=S1;
END IF;
WHEN S1 =>
IF X='0' THEN
state<=S11;
ELSE
state<=S0;
END IF;
WHEN S11 =>
IF X='0' THEN
state<=S11;
ELSE
state<=S110;
END IF;
WHEN S110 =>
IF X='0' THEN
state<=S1101;
ELSE
state<=S0;
END IF;
WHEN S1101 =>
IF X='0' THEN
state<=S11;
ELSE
state<=S0;
END IF;
END CASE;
END IF;
END PROCESS;
output:PROCESS(state)
BEGIN
CASE state IS
WHEN S0 => Z<='0';
WHEN S1 => Z<='0';
WHEN S11 => Z<='0';
WHEN S110 => Z<='0';
WHEN S1101 => Z<='1';
END CASE;
END PROCESS;
END behaviour;
RTL原理图:
答案 0 :(得分:2)
查看器对常量使用Verilog表示法,Verilog中的1'h0
与VHDL中的'0'
相同。
OR门只是名为state~7
,就像黄色方框名为state
一样。因此,或门只是一个反相器,因此外部复位输入的state
模块复位为not reset
。
使用状态机的其余设计放在名为state
的内部块中,因此如果双击它,它可能会扩展。当处于状态S1101
时,state
块上的S1101
输出将被声明,因为只有Z
输出'1'
。