##// END OF EJS Templates
EQM debug
EQM debug

File last commit:

r302:6b992ec40bf9 WaveFormPicker-0-0-10 (MINI-LFR) JC
r569:64f72d322da8 JC
Show More
testbench_package.vhd
136 lines | 4.0 KiB | text/x-vhdl | VhdlLexer
/ designs / LFR_simu / testbench_package.vhd
pellion
[WFP] Register the DMA "send" signal to permit the start of 2 burst consecutively.
r302
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
LIBRARY grlib;
USE grlib.amba.ALL;
USE grlib.stdlib.ALL;
--LIBRARY gaisler;
--USE gaisler.libdcom.ALL;
--USE gaisler.sim.ALL;
--USE gaisler.jtagtst.ALL;
--LIBRARY techmap;
--USE techmap.gencomp.ALL;
PACKAGE testbench_package IS
PROCEDURE APB_WRITE (
SIGNAL clk : IN STD_LOGIC;
CONSTANT pindex : IN INTEGER;
SIGNAL apbi : OUT apb_slv_in_type;
CONSTANT paddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
CONSTANT pwdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0)
);
PROCEDURE APB_READ (
SIGNAL clk : IN STD_LOGIC;
CONSTANT pindex : IN INTEGER;
SIGNAL apbi : OUT apb_slv_in_type;
SIGNAL apbo : IN apb_slv_out_type;
CONSTANT paddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL prdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
PROCEDURE AHB_READ (
SIGNAL clk : IN STD_LOGIC;
CONSTANT hindex : IN INTEGER;
SIGNAL ahbmi : IN ahb_mst_in_type;
SIGNAL ahbmo : OUT ahb_mst_out_type;
CONSTANT haddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL hrdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
);
END testbench_package;
PACKAGE BODY testbench_package IS
PROCEDURE APB_WRITE (
SIGNAL clk : IN STD_LOGIC;
CONSTANT pindex : IN INTEGER;
SIGNAL apbi : OUT apb_slv_in_type;
CONSTANT paddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
CONSTANT pwdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0)
) IS
BEGIN
apbi.psel(pindex) <= '1';
apbi.pwrite <= '1';
apbi.penable <= '1';
apbi.paddr <= paddr;
apbi.pwdata <= pwdata;
WAIT UNTIL clk = '0';
WAIT UNTIL clk = '1';
apbi.psel(pindex) <= '0';
apbi.pwrite <= '0';
apbi.penable <= '0';
apbi.paddr <= (OTHERS => '0');
apbi.pwdata <= (OTHERS => '0');
WAIT UNTIL clk = '0';
WAIT UNTIL clk = '1';
END APB_WRITE;
PROCEDURE APB_READ (
SIGNAL clk : IN STD_LOGIC;
CONSTANT pindex : IN INTEGER;
SIGNAL apbi : OUT apb_slv_in_type;
SIGNAL apbo : IN apb_slv_out_type;
CONSTANT paddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL prdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
) IS
BEGIN
apbi.psel(pindex) <= '1';
apbi.pwrite <= '0';
apbi.penable <= '1';
apbi.paddr <= paddr;
WAIT UNTIL clk = '0';
WAIT UNTIL clk = '1';
apbi.psel(pindex) <= '0';
apbi.pwrite <= '0';
apbi.penable <= '0';
apbi.paddr <= (OTHERS => '0');
WAIT UNTIL clk = '0';
WAIT UNTIL clk = '1';
prdata <= apbo.prdata;
END APB_READ;
PROCEDURE AHB_READ (
SIGNAL clk : IN STD_LOGIC;
CONSTANT hindex : IN INTEGER;
SIGNAL ahbmi : IN ahb_mst_in_type;
SIGNAL ahbmo : OUT ahb_mst_out_type;
CONSTANT haddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
SIGNAL hrdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
) IS
BEGIN
WAIT UNTIL clk = '1';
ahbmo.HADDR <= haddr;
ahbmo.HPROT <= "0011";
ahbmo.HIRQ <= (OTHERS => '0');
ahbmo.HCONFIG <= (0 => (OTHERS => '0'), OTHERS => (OTHERS => '0'));
ahbmo.HINDEX <= hindex;
ahbmo.HBUSREQ <= '1';
ahbmo.HLOCK <= '1';
ahbmo.HSIZE <= HSIZE_WORD;
ahbmo.HBURST <= HBURST_SINGLE;
ahbmo.HTRANS <= HTRANS_NONSEQ;
ahbmo.HWRITE <= '0';
WHILE ahbmi.HREADY = '0' LOOP
WAIT UNTIL clk = '1';
END LOOP;
WAIT UNTIL clk = '1';
--WAIT UNTIL clk = '1' AND ahbmi.HREADY = '1' AND ahbmi.HGRANT(hindex) = '1';
ahbmo.HBUSREQ <= '0';
ahbmo.HLOCK <= '0';
ahbmo.HTRANS <= HTRANS_IDLE;
WHILE ahbmi.HREADY = '0' LOOP
WAIT UNTIL clk = '1';
END LOOP;
WAIT UNTIL clk = '1';
hrdata <= ahbmi.HRDATA;
--WAIT UNTIL clk = '1' AND ahbmi.HREADY = '1' AND ahbmi.HGRANT(hindex) = '1';
ahbmo.HLOCK <= '0';
WAIT UNTIL clk = '1';
END AHB_READ;
END testbench_package;