[an error occurred while processing this directive]
|
Не поможете ли разобраться с простым вопросом по VHDL ?
Пишу двунаправленную шину данных на RAM, состоящую из двух буферов с Z-выходами и логики управления.
Буферы соединены последовательно.
Вход первого - вход Data из кристалла, соединение входов и выходов - I/O DATA RAM, выход второго - DATA в кристалл.
Из кристалла симулятор (MOdelSIM 5.6e_p2) показывает всё нормально,
но в кристалл не "пишет" - на выходе второго буфера всё время Z,
(test-bench не привожу и так до фига места занял)
хотя после синтеза всё работает правильно.
____________________________________________________________________
Это Z-буфер:
ARCHITECTURE Z_BUF OF Z_BUF IS
BEGIN
L1: for i in (N - 1) downto 0 generate
D_OUT (i) <= D_IN (i) when (EN = '1') else 'Z';
end generate L1;
END Z_BUF;
___________________________________________________________________
Это компонент управления шиной данных:
ENTITY dat_ram_2 IS
PORT(
DATA_IN : IN std_logic_vector (7 downto 0); -- Data from AVR.
DATA_OUT : OUT std_logic_vector (7 downto 0); -- Data to AVR. !!! Вот здесь при симуляции Z.
IO_DATA : INOUT std_logic_vector (7 downto 0); -- I/O bus to RAM.
IO_WE : IN std_logic; -- FPGA IOWE.
IO_RE : IN std_logic; -- FPGA IORE.
IO_N : IN std_logic; -- FPGA ION.
RAM_WE : OUT std_logic; -- WE of the RAM.
RAM_OE : OUT std_logic; -- OE of the RAM.
RAM_CS : OUT std_logic); -- CS of the RAM.
END dat_ram_2 ;
--******************************************************************************
ARCHITECTURE dat_ram_2 OF dat_ram_2 IS
--------------------------------------------------------------------------------
component z_buf
GENERIC(
N : natural);
PORT(
D_IN : IN std_logic_vector (N-1 downto 0);
D_OUT : OUT std_logic_vector (N-1 downto 0);
EN : IN std_logic);
end component;
--------------------------------------------------------------------------------
signal int_bus : std_logic_vector (7 downto 0);
signal wire : std_logic_vector (1 to 2);
--------------------------------------------------------------------------------
BEGIN
D1: z_buf
generic map (n => 8)
port map (
DATA_IN,
int_bus,
WIRE (1));
--------------------------------------------------------------------------------
D2: z_buf
generic map (n => 8)
port map (
int_bus,
DATA_OUT,
WIRE (2));
--------------------------------------------------------------------------------
-- IO bus.
IO_DATA <= int_bus; -- !!! При симуляции данные на этих эти шинах не совпадают, почему ???
-- Control bus.
WIRE (1) <= IO_WE and IO_N and (not (IO_WE and IO_RE));
WIRE (2) <= IO_RE and IO_N and (not (IO_WE and IO_RE));
RAM_WE <= not (IO_WE);
RAM_OE <= not (IO_RE);
RAM_CS <= not (IO_N);
END dat_ram_2;
E-mail: info@telesys.ru