|
|
LIBRARY ieee;
|
|
|
USE ieee.std_logic_1164.ALL;
|
|
|
LIBRARY lpp;
|
|
|
USE lpp.lpp_ad_conv.ALL;
|
|
|
USE lpp.general_purpose.SYNC_FF;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
ENTITY ADS7886_drvr_tb IS
|
|
|
|
|
|
END ADS7886_drvr_tb;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
ARCHITECTURE tb OF ADS7886_drvr_tb IS
|
|
|
|
|
|
COMPONENT TestModule_ADS7886
|
|
|
GENERIC (
|
|
|
freq : INTEGER;
|
|
|
amplitude : INTEGER);
|
|
|
PORT (
|
|
|
cnv_run : IN STD_LOGIC;
|
|
|
cnv : IN STD_LOGIC;
|
|
|
sck : IN STD_LOGIC;
|
|
|
sdo : OUT STD_LOGIC);
|
|
|
END COMPONENT;
|
|
|
|
|
|
-- component generics
|
|
|
CONSTANT ChanelCount : INTEGER := 8;
|
|
|
CONSTANT ncycle_cnv_high : INTEGER := 79;
|
|
|
CONSTANT ncycle_cnv : INTEGER := 500;
|
|
|
|
|
|
-- component ports
|
|
|
SIGNAL cnv_rstn : STD_LOGIC;
|
|
|
SIGNAL cnv : STD_LOGIC;
|
|
|
SIGNAL rstn : STD_LOGIC;
|
|
|
SIGNAL sck : STD_LOGIC;
|
|
|
SIGNAL sdo : STD_LOGIC_VECTOR(ChanelCount-1 DOWNTO 0);
|
|
|
SIGNAL sample : Samples(ChanelCount-1 DOWNTO 0);
|
|
|
SIGNAL sample_val : STD_LOGIC;
|
|
|
SIGNAL run_cnv : STD_LOGIC;
|
|
|
|
|
|
|
|
|
-- clock
|
|
|
signal Clk : STD_LOGIC := '1';
|
|
|
SIGNAL cnv_clk : STD_LOGIC := '1';
|
|
|
|
|
|
|
|
|
BEGIN -- tb
|
|
|
|
|
|
MODULE_ADS7886: FOR I IN 0 TO ChanelCount-1 GENERATE
|
|
|
TestModule_ADS7886_u: TestModule_ADS7886
|
|
|
GENERIC MAP (
|
|
|
freq => 256/(I+1),
|
|
|
amplitude => 300/(I+1))
|
|
|
PORT MAP (
|
|
|
cnv_run => run_cnv,
|
|
|
cnv => cnv,
|
|
|
sck => sck,
|
|
|
sdo => sdo(I));
|
|
|
END GENERATE MODULE_ADS7886;
|
|
|
|
|
|
-- component instantiation
|
|
|
DUT: ADS7886_drvr
|
|
|
GENERIC MAP (
|
|
|
ChanelCount => ChanelCount,
|
|
|
ncycle_cnv_high => ncycle_cnv_high,
|
|
|
ncycle_cnv => ncycle_cnv)
|
|
|
PORT MAP (
|
|
|
cnv_clk => cnv_clk,
|
|
|
cnv_rstn => cnv_rstn,
|
|
|
cnv_run => run_cnv,
|
|
|
cnv => cnv,
|
|
|
clk => clk,
|
|
|
rstn => rstn,
|
|
|
sck => sck,
|
|
|
sdo => sdo,
|
|
|
sample => sample,
|
|
|
sample_val => sample_val);
|
|
|
|
|
|
-- clock generation
|
|
|
Clk <= not Clk after 20 ns; -- 25 Mhz
|
|
|
cnv_clk <= not cnv_clk after 10173 ps; -- 49.152 MHz
|
|
|
|
|
|
-- waveform generation
|
|
|
WaveGen_Proc: process
|
|
|
begin
|
|
|
-- insert signal assignments here
|
|
|
wait until Clk = '1';
|
|
|
rstn <= '0';
|
|
|
cnv_rstn <= '0';
|
|
|
run_cnv <= '0';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
rstn <= '1';
|
|
|
cnv_rstn <= '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
wait until Clk = '1';
|
|
|
run_cnv <= '1';
|
|
|
wait;
|
|
|
|
|
|
end process WaveGen_Proc;
|
|
|
|
|
|
|
|
|
|
|
|
END tb;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|
|
|
CONFIGURATION ADS7886_drvr_tb_tb_cfg OF ADS7886_drvr_tb IS
|
|
|
FOR tb
|
|
|
END FOR;
|
|
|
END ADS7886_drvr_tb_tb_cfg;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
|
|