VHDL код, е то нали?

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;
Крайна сметка, ако;
КРАЙ процес;
КРАЙ действие;

 
Здравейте lzh08,

1.Има два липсват сигнали в организацията: SysClk, Reset.Ако искате да синтезира код имате нужда от първоначален сигнал за нулиране на държавна машина:

Код:Процес (reset_n, SysClk)

BEGIN

АКО reset_n = 0, тогава

Cur_State <= St0;

ELSIF Rising_Edge (SysClk), тогава

Cur_State <= Next_State;

Крайна сметка, ако;

КРАЙ процес;

 

Welcome to EDABoard.com

Sponsor

Back
Top