Line 3... |
Line 3... |
-- Title : core64_pb_transaction
|
-- Title : core64_pb_transaction
|
-- Author : Dmitry Smekhov
|
-- Author : Dmitry Smekhov
|
-- Company : Instrumental Systems
|
-- Company : Instrumental Systems
|
-- E-mail : dsmv@insys.ru
|
-- E-mail : dsmv@insys.ru
|
--
|
--
|
-- Version : 1.1
|
-- Version : 1.2
|
--
|
--
|
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
--
|
--
|
-- Description : Узел управления локальной шиной
|
-- Description : Узел управления локальной шиной
|
--
|
--
|
Line 16... |
Line 16... |
-- 1: - 1 чтение данных
|
-- 1: - 1 чтение данных
|
-- 2: - 0 - одно слово, 1 - пакет 512 слов (4096 байт)
|
-- 2: - 0 - одно слово, 1 - пакет 512 слов (4096 байт)
|
--
|
--
|
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
--
|
--
|
|
-- Version 1.2 14.12.2011
|
|
-- Добавлен lc_rd_cfg
|
|
--
|
|
---------------------------------------------------------------------------------
|
|
--
|
-- Version 1.1 28.09.2011 Dmitry Smekhov
|
-- Version 1.1 28.09.2011 Dmitry Smekhov
|
-- Добавлен сигнал pb_slave.complete
|
-- Добавлен сигнал pb_slave.complete
|
--
|
--
|
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
|
|
Line 44... |
Line 49... |
lc_host_data : out std_logic_vector( 63 downto 0 ); --! шина данных - выход
|
lc_host_data : out std_logic_vector( 63 downto 0 ); --! шина данных - выход
|
lc_data : in std_logic_vector( 63 downto 0 ); --! шина данных - вход
|
lc_data : in std_logic_vector( 63 downto 0 ); --! шина данных - вход
|
lc_wr : out std_logic; --! 1 - запись
|
lc_wr : out std_logic; --! 1 - запись
|
lc_rd : out std_logic; --! 1 - чтение, данные должны быть на шестой такт после rd
|
lc_rd : out std_logic; --! 1 - чтение, данные должны быть на шестой такт после rd
|
lc_dma_req : in std_logic_vector( 1 downto 0 ); --! 1 - запрос DMA
|
lc_dma_req : in std_logic_vector( 1 downto 0 ); --! 1 - запрос DMA
|
lc_irq : in std_logic --! 1 - запрос прерывания
|
lc_irq : in std_logic; --! 1 - запрос прерывания
|
|
lc_rd_cfg : in std_logic_vector( 3 downto 0 ):="0101" --! настройка задержки захвата данных по сигналу lc_rd
|
|
|
|
|
);
|
);
|
|
|
end component;
|
end component;
|
Line 80... |
Line 86... |
lc_host_data : out std_logic_vector( 63 downto 0 ); --! шина данных - выход
|
lc_host_data : out std_logic_vector( 63 downto 0 ); --! шина данных - выход
|
lc_data : in std_logic_vector( 63 downto 0 ); --! шина данных - вход
|
lc_data : in std_logic_vector( 63 downto 0 ); --! шина данных - вход
|
lc_wr : out std_logic; --! 1 - запись
|
lc_wr : out std_logic; --! 1 - запись
|
lc_rd : out std_logic; --! 1 - чтение, данные должны быть на шестой такт после rd
|
lc_rd : out std_logic; --! 1 - чтение, данные должны быть на шестой такт после rd
|
lc_dma_req : in std_logic_vector( 1 downto 0 ); --! 1 - запрос DMA
|
lc_dma_req : in std_logic_vector( 1 downto 0 ); --! 1 - запрос DMA
|
lc_irq : in std_logic --! 1 - запрос прерывания
|
lc_irq : in std_logic; --! 1 - запрос прерывания
|
|
lc_rd_cfg : in std_logic_vector( 3 downto 0 ):="0101" --! настройка задержки захвата данных по сигналу lc_rd
|
|
|
|
|
);
|
);
|
|
|
end core64_pb_transaction;
|
end core64_pb_transaction;
|
Line 134... |
Line 141... |
end if;
|
end if;
|
end process;
|
end process;
|
|
|
rd_start <= cnt_start and not cnt(9);
|
rd_start <= cnt_start and not cnt(9);
|
|
|
xrdz: srl16 port map( q=>rd_start_z, clk=>clk, d=>rd_start, a3=>'0', a2=>'1', a1=>'0', a0=>'1' );
|
--xrdz: srl16 port map( q=>rd_start_z, clk=>clk, d=>rd_start, a3=>'0', a2=>'1', a1=>'0', a0=>'1' );
|
|
xrdz: srl16 port map( q=>rd_start_z, clk=>clk, d=>rd_start, a3=>lc_rd_cfg(3), a2=>lc_rd_cfg(2), a1=>lc_rd_cfg(1), a0=>lc_rd_cfg(0) );
|
|
|
pb_slave.stb0 <= pb_master.stb0 after 1 ns when rising_edge( clk );
|
pb_slave.stb0 <= pb_master.stb0 after 1 ns when rising_edge( clk );
|
pb_slave.stb1 <= rd_start_z after 1 ns when rising_edge( clk );
|
pb_slave.stb1 <= rd_start_z after 1 ns when rising_edge( clk );
|
pb_slave.data <= lc_data after 1 ns when rising_edge( clk );
|
pb_slave.data <= lc_data after 1 ns when rising_edge( clk );
|
pb_slave.dmar <= lc_dma_req;
|
pb_slave.dmar <= lc_dma_req;
|