演習4:順序回路における状態遷移の記述法(ステートマシンその2) |

各命令はデコードステート(DECO)から遷移した先頭
ステートから始まり,最後は次命令のフェッチステート(F0)に戻ります.
インデックス修飾のロード命令も同様にデコードステート(DECO)から先頭のステート(LD_IX1)に遷移して命令の実行を開始します.但し,無条
件で次ステートに遷移するステートと,条件付きで遷移するステートがありま
すので注意して下さい.
遷移するステートの条件等は,LD(インデックス修飾)
命令の動作を参照して下さい.
case PRESENT_STATE is
when V0 => --ベクトルスタート
(中略)
when F0 => PRESENT_STATE <= F1; --命令フェッチ
when F1 =>
if ACK = '1' then
PRESENT_STATE <= DECO;
end if;
when DECO => --命令デコード
case PRESENT_INST is
when LD_IM => PRESENT_STATE <= LD_IM;
when LD_D => PRESENT_STATE <= LD_D1;
when LD_IX => PRESENT_STATE <= LD_IX1;
(中略)
when others => PRESENT_STATE <= HALT1;
end case;
when LD_IM => PRESENT_STATE <= F0; --LD Immediate
when LD_D1 => PRESENT_STATE <= LD_D2; --LD Direct
when LD_D2 =>
if ACK = '1' then
PRESENT_STATE <= LD_D3;
end if;
when LD_D3 => PRESENT_STATE <= F0;
-- 演習4 : 状態遷移の記述法
when LD_IX1 =>
when LD_IX2 =>
when LD_IX3 =>
when LD_IX4 =>
if ACK = '1' then
end if;
when LD_IX5 =>
when ST_D1 => PRESENT_STATE <= ST_D2; --ST Direct
when ST_D2 => PRESENT_STATE <= ST_D3;
when ST_D3 =>
if ACK = '1' then
PRESENT_STATE <= ST_D4;
end if;
when ST_D4 => PRESENT_STATE <= F0;
when ST_IX1 => PRESENT_STATE <= ST_IX2; --ST Index
when ST_IX2 => PRESENT_STATE <= ST_IX3;
when ST_IX3 => PRESENT_STATE <= ST_IX4;
when ST_IX4 => PRESENT_STATE <= ST_IX5;
when ST_IX5 =>
if ACK = '1' then
PRESENT_STATE <= ST_IX6;
end if;
when ST_IX6 => PRESENT_STATE <= F0;
(中略)
when others => PRESENT_STATE <= V0;
end case;
演習5:制御信号の生成へ
ホーム
シーケンサの設計
シミュレーション
辞書