L
lzh08
Guest
IEEE библиотека;
употреба ieee.std_logic_1164.all;
ENTITY MCU СЕ
ПРИСТАНИЩЕ
(
nDataStrobe: В std_logic;
nAddrStrobe: В std_logic;
nWri: В std_logic;
nReset: В std_logic;
Данни: Inout Std_Logic_Vector (7 DOWNTO 0);
nWait: OUT std_logic;
украшение: OUT std_logic;
);
КРАЙ MCU;
АРХИТЕКТУРА действие на MCU СЕ
ТИП-членка (St0, ST1, st2, ST3, St4, St5);
СИГНАЛ Cur_State, Next_State: Състояние: = St0;
СИГНАЛ RegDataTemp: std_logic_vector (7 downto 0);
СИГНАЛ RegAddrTemp: std_logic_vector (7 downto 0);
BEGIN
Datawrite: процес (Cur_State, nDataStrobe, nWri)
BEGIN
Държавно Cur_State СЕ
КОГАТО St0 => nWait <= '0 ';
IF (nWri = '1 '), тогава
Next_State <= St0;
в противен случай
Next_State <= ST1;
крайна сметка, ако;
КОГАТО ST1 => RegDataTemp <= данни;
IF (nDataStrobe = '1 '), тогава
Next_State <= ST1;
в противен случай
Next_State <= st2;
крайна сметка, ако;
КОГАТО st2 => nWait <= '1 ';
Next_State <= ST3;
КОГАТО ST3 => ако (nDataStrobe = '0 '), тогава
Next_State <= ST3;
в противен случай
Next_State <= St4;
крайна сметка, ако;
КОГАТО St4 => ако (nWri = '0 ')
Next_State <= St4;
в противен случай
Next_State <= St5;
крайна сметка, ако;
КОГАТО St5 => nWait <= 1;
Next_State <= St0;
Когато другите => Next_State <= St0;
края случай;
КРАЙ процес;Процес (SysClk)
BEGIN
АКО Rising_Edge (SysClk), тогава
Cur_State <= Next_State;
Крайна сметка, ако;
КРАЙ процес;
КРАЙ действие;
употреба ieee.std_logic_1164.all;
ENTITY MCU СЕ
ПРИСТАНИЩЕ
(
nDataStrobe: В std_logic;
nAddrStrobe: В std_logic;
nWri: В std_logic;
nReset: В std_logic;
Данни: Inout Std_Logic_Vector (7 DOWNTO 0);
nWait: OUT std_logic;
украшение: OUT std_logic;
);
КРАЙ MCU;
АРХИТЕКТУРА действие на MCU СЕ
ТИП-членка (St0, ST1, st2, ST3, St4, St5);
СИГНАЛ Cur_State, Next_State: Състояние: = St0;
СИГНАЛ RegDataTemp: std_logic_vector (7 downto 0);
СИГНАЛ RegAddrTemp: std_logic_vector (7 downto 0);
BEGIN
Datawrite: процес (Cur_State, nDataStrobe, nWri)
BEGIN
Държавно Cur_State СЕ
КОГАТО St0 => nWait <= '0 ';
IF (nWri = '1 '), тогава
Next_State <= St0;
в противен случай
Next_State <= ST1;
крайна сметка, ако;
КОГАТО ST1 => RegDataTemp <= данни;
IF (nDataStrobe = '1 '), тогава
Next_State <= ST1;
в противен случай
Next_State <= st2;
крайна сметка, ако;
КОГАТО st2 => nWait <= '1 ';
Next_State <= ST3;
КОГАТО ST3 => ако (nDataStrobe = '0 '), тогава
Next_State <= ST3;
в противен случай
Next_State <= St4;
крайна сметка, ако;
КОГАТО St4 => ако (nWri = '0 ')
Next_State <= St4;
в противен случай
Next_State <= St5;
крайна сметка, ако;
КОГАТО St5 => nWait <= 1;
Next_State <= St0;
Когато другите => Next_State <= St0;
края случай;
КРАЙ процес;Процес (SysClk)
BEGIN
АКО Rising_Edge (SysClk), тогава
Cur_State <= Next_State;
Крайна сметка, ако;
КРАЙ процес;
КРАЙ действие;