期待更广泛的 RTL 查看器
Expected a more extensive RTL Viewer
我合成了我的 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 示意图:
查看器对常量使用 Verilog 表示法,Verilog 中的 1'h0
与 VHDL 中的 '0'
相同。
或门简单地命名为state~7
,就像黄色框被命名为state
一样。所以或门只是一个反相器,所以复位到 state
块是 not reset
用于外部复位输入。
带有状态机的设计的其余部分放在名为 state
的内部块中,因此如果您双击它,它可能会展开。 state
块上的 S1101
输出在状态 S1101
时被断言,因为只有那时 Z
输出 '1'
.
我合成了我的 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 示意图:
查看器对常量使用 Verilog 表示法,Verilog 中的 1'h0
与 VHDL 中的 '0'
相同。
或门简单地命名为state~7
,就像黄色框被命名为state
一样。所以或门只是一个反相器,所以复位到 state
块是 not reset
用于外部复位输入。
带有状态机的设计的其余部分放在名为 state
的内部块中,因此如果您双击它,它可能会展开。 state
块上的 S1101
输出在状态 S1101
时被断言,因为只有那时 Z
输出 '1'
.