VHDL kód, je to správně?

L

lzh08

Guest
Knihovna IEEE;
použití ieee.std_logic_1164.all;

ENTITY MCU IS
PORT
(
nDataStrobe: IN Std_Logic;
nAddrStrobe: IN Std_Logic;
nWri: IN Std_Logic;
nReset: IN Std_Logic;
Data: INOUT Std_Logic_Vector (7 DOWNTO 0);
nWait: OUT Std_Logic;
Nack: OUT Std_Logic;
);
END MCU;

ARCHITEKTURA akční MCU IS
TYP stav je (St0, ST1, St2, St3, ST4, St5);
SIGNAL Cur_State, Next_State: Stát: = St0;
SIGNAL RegDataTemp: std_logic_vector (7 downto 0);
SIGNAL RegAddrTemp: std_logic_vector (7 downto 0);

BEGIN

DataWrite: proces (Cur_State, nDataStrobe, nWri)
BEGIN
CASE Cur_State IS
Když St0 => nWait <= '0 ';
if (nWri = '1 '), pak
Next_State <= St0;
jiný
Next_State <= st1;
end if;
Když st1 => RegDataTemp <= Data;
if (nDataStrobe = '1 '), pak
Next_State <= st1;
jiný
Next_State <= St2;
end if;
Když St2 => nWait <= '1 ';
Next_State <= St3;
Když St3 => if (nDataStrobe = '0 '), pak
Next_State <= St3;
jiný
Next_State <= ST4;
end if;
Když ST4 => if (nWri = '0 ')
Next_State <= ST4;
jiný
Next_State <= St5;
end if;
Když St5 => nWait <= 1;
Next_State <= St0;
Když ostatní => Next_State <= St0;
konec případu;
Ukončit proces;Proces (SysClk)
BEGIN
IF Rising_Edge (SysClk), pak
Cur_State <= Next_State;
END IF;
Ukončit proces;
END akce;

 
Dobrý den lzh08,

1.Tam jsou dva chybějící signály v subjektu: SysClk, Reset.Pokud chcete syntetizovat kód budete potřebovat reset signál k inicializaci stavu stroje:

Kód:proces (reset_n, SysClk)

BEGIN

IF reset_n = 0 then

Cur_State <= St0;

ELSIF Rising_Edge (SysClk), pak

Cur_State <= Next_State;

END IF;

Ukončit proces;

 

Welcome to EDABoard.com

Sponsor

Back
Top