|
|
LIBRARY ieee;
|
|
|
USE ieee.std_logic_1164.ALL;
|
|
|
|
|
|
LIBRARY grlib;
|
|
|
USE grlib.amba.ALL;
|
|
|
USE grlib.stdlib.ALL;
|
|
|
USE grlib.AMBA_TestPackage.ALL;
|
|
|
|
|
|
LIBRARY gaisler;
|
|
|
USE gaisler.memctrl.ALL;
|
|
|
USE gaisler.leon3.ALL;
|
|
|
USE gaisler.uart.ALL;
|
|
|
USE gaisler.misc.ALL;
|
|
|
USE gaisler.libdcom.ALL;
|
|
|
USE gaisler.sim.ALL;
|
|
|
USE gaisler.jtagtst.ALL;
|
|
|
USE gaisler.misc.ALL;
|
|
|
|
|
|
LIBRARY techmap;
|
|
|
USE techmap.gencomp.ALL;
|
|
|
|
|
|
LIBRARY esa;
|
|
|
USE esa.memoryctrl.ALL;
|
|
|
|
|
|
LIBRARY lpp;
|
|
|
USE lpp.lpp_waveform_pkg.ALL;
|
|
|
USE lpp.lpp_memory.ALL;
|
|
|
USE lpp.lpp_ad_conv.ALL;
|
|
|
USE lpp.testbench_package.ALL;
|
|
|
USE lpp.lpp_lfr_pkg.ALL;
|
|
|
USE lpp.iir_filter.ALL;
|
|
|
USE lpp.general_purpose.ALL;
|
|
|
USE lpp.CY7C1061DV33_pkg.ALL;
|
|
|
|
|
|
ENTITY testbench IS
|
|
|
END;
|
|
|
|
|
|
ARCHITECTURE behav OF testbench IS
|
|
|
|
|
|
SIGNAL clk25MHz : STD_LOGIC;
|
|
|
SIGNAL rstn : STD_LOGIC := '0';
|
|
|
-----------------------------------------------------------------------------
|
|
|
SIGNAL apbi : apb_slv_in_type;
|
|
|
SIGNAL apbo : apb_slv_out_vector := (OTHERS => apb_none);
|
|
|
SIGNAL ahbsi : ahb_slv_in_type;
|
|
|
SIGNAL ahbso : ahb_slv_out_vector := (OTHERS => ahbs_none);
|
|
|
SIGNAL ahbmi : ahb_mst_in_type;
|
|
|
SIGNAL ahbmo : ahb_mst_out_vector := (OTHERS => ahbm_none);
|
|
|
-----------------------------------------------------------------------------
|
|
|
SIGNAL memi : memory_in_type;
|
|
|
SIGNAL memo : memory_out_type;
|
|
|
SIGNAL wpo : wprot_out_type;
|
|
|
SIGNAL sdo : sdram_out_type;
|
|
|
-----------------------------------------------------------------------------
|
|
|
SIGNAL address : STD_LOGIC_VECTOR(19 DOWNTO 0) := "00000000000000000000";
|
|
|
SIGNAL data : STD_LOGIC_VECTOR(31 DOWNTO 0);
|
|
|
SIGNAL nSRAM_BE0 : STD_LOGIC;
|
|
|
SIGNAL nSRAM_BE1 : STD_LOGIC;
|
|
|
SIGNAL nSRAM_BE2 : STD_LOGIC;
|
|
|
SIGNAL nSRAM_BE3 : STD_LOGIC;
|
|
|
SIGNAL nSRAM_WE : STD_LOGIC;
|
|
|
SIGNAL nSRAM_CE : STD_LOGIC;
|
|
|
SIGNAL nSRAM_OE : STD_LOGIC;
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
BEGIN
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
clk25MHz <= NOT clk25MHz AFTER 5 ns; -- 100 MHz
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
-----------------------------------------------------------------------------
|
|
|
-----------------------------------------------------------------------------
|
|
|
-----------------------------------------------------------------------------
|
|
|
ahb0 : ahbctrl
|
|
|
GENERIC MAP (defmast => 0, split => 0, rrobin => 1, ioaddr => 16#FFF#, ioen => 0, nahbm => 2, nahbs => 1)
|
|
|
PORT MAP (rstn, clk25MHz, ahbmi, ahbmo, ahbsi, ahbso);
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
|
memctrlr : mctrl
|
|
|
GENERIC MAP (hindex => 0, pindex => 0, paddr => 0, srbanks => 1)
|
|
|
PORT MAP (rstn, clk25MHz, memi, memo, ahbsi, ahbso(0), apbi, apbo(0), wpo, sdo);
|
|
|
|
|
|
memi.brdyn <= '1';
|
|
|
memi.bexcn <= '1';
|
|
|
memi.writen <= '1';
|
|
|
memi.wrn <= "1111";
|
|
|
memi.bwidth <= "10";
|
|
|
|
|
|
bdr : FOR i IN 0 TO 3 GENERATE
|
|
|
data_pad : iopadv GENERIC MAP (tech => padtech, width => 8)
|
|
|
PORT MAP (
|
|
|
data(31-i*8 DOWNTO 24-i*8),
|
|
|
memo.data(31-i*8 DOWNTO 24-i*8),
|
|
|
memo.bdrive(i),
|
|
|
memi.data(31-i*8 DOWNTO 24-i*8));
|
|
|
END GENERATE;
|
|
|
|
|
|
address <= memo.address(21 DOWNTO 2);
|
|
|
nSRAM_CE <= NOT(memo.ramsn(0));
|
|
|
nSRAM_OE <= memo.ramoen(0);
|
|
|
nSRAM_WE <= memo.writen;
|
|
|
nSRAM_BE0 <= memo.mben(3);
|
|
|
nSRAM_BE1 <= memo.mben(2);
|
|
|
nSRAM_BE2 <= memo.mben(1);
|
|
|
nSRAM_BE3 <= memo.mben(0);
|
|
|
|
|
|
async_1Mx16_0: CY7C1061DV33
|
|
|
GENERIC MAP (
|
|
|
ADDR_BITS => 20,
|
|
|
DATA_BITS => 16,
|
|
|
depth => 1048576,
|
|
|
MEM_ARRAY_DEBUG => 32,
|
|
|
TimingInfo => TRUE,
|
|
|
TimingChecks => '1')
|
|
|
PORT MAP (
|
|
|
CE1_b => '0',
|
|
|
CE2 => nSRAM_CE,
|
|
|
WE_b => nSRAM_WE,
|
|
|
OE_b => nSRAM_OE,
|
|
|
BHE_b => nSRAM_BE1,
|
|
|
BLE_b => nSRAM_BE0,
|
|
|
A => address,
|
|
|
DQ => data(15 DOWNTO 0));
|
|
|
|
|
|
async_1Mx16_1: CY7C1061DV33
|
|
|
GENERIC MAP (
|
|
|
ADDR_BITS => 20,
|
|
|
DATA_BITS => 16,
|
|
|
depth => 1048576,
|
|
|
MEM_ARRAY_DEBUG => 32,
|
|
|
TimingInfo => TRUE,
|
|
|
TimingChecks => '1')
|
|
|
PORT MAP (
|
|
|
CE1_b => '0',
|
|
|
CE2 => nSRAM_CE,
|
|
|
WE_b => nSRAM_WE,
|
|
|
OE_b => nSRAM_OE,
|
|
|
BHE_b => nSRAM_BE3,
|
|
|
BLE_b => nSRAM_BE2,
|
|
|
A => address,
|
|
|
DQ => data(31 DOWNTO 16));
|
|
|
-----------------------------------------------------------------------------
|
|
|
|
|
|
END;
|
|
|
|