----------------------------------------------------------------------------- -- LEON3 Demonstration design -- Copyright (C) 2004 Jiri Gaisler, Gaisler Research -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ------------------------------------------------------------------------------ LIBRARY ieee; USE ieee.std_logic_1164.ALL; LIBRARY grlib; USE grlib.amba.ALL; USE grlib.stdlib.ALL; LIBRARY techmap; USE techmap.gencomp.ALL; LIBRARY gaisler; USE gaisler.memctrl.ALL; USE gaisler.leon3.ALL; USE gaisler.uart.ALL; USE gaisler.misc.ALL; USE gaisler.spacewire.ALL; -- PLE LIBRARY esa; USE esa.memoryctrl.ALL; --USE work.config.ALL; LIBRARY lpp; USE lpp.lpp_memory.ALL; USE lpp.lpp_ad_conv.ALL; USE lpp.lpp_top_lfr_pkg.ALL; USE lpp.iir_filter.ALL; USE lpp.general_purpose.ALL; USE lpp.lpp_lfr_time_management.ALL; ENTITY tb_wf_picker IS END; ARCHITECTURE Behavioral OF tb_wf_picker IS SIGNAL clk49_152MHz : STD_LOGIC := '0'; SIGNAL clkm : STD_LOGIC := '0'; SIGNAL rstn : STD_LOGIC := '0'; SIGNAL coarse_time_0 : STD_LOGIC := '0'; -- ADC interface SIGNAL bias_fail_sw : STD_LOGIC; -- OUT SIGNAL ADC_OEB_bar_CH : STD_LOGIC_VECTOR(7 DOWNTO 0); -- OUT SIGNAL ADC_smpclk : STD_LOGIC; -- OUT SIGNAL ADC_data : STD_LOGIC_VECTOR(13 DOWNTO 0); -- IN -- SIGNAL apbi : apb_slv_in_type; SIGNAL apbo : apb_slv_out_vector := (OTHERS => apb_none); SIGNAL ahbmi : ahb_mst_in_type; SIGNAL ahbmo : ahb_mst_out_vector := (OTHERS => ahbm_none); -- internal SIGNAL sample : Samples14v(7 DOWNTO 0); SIGNAL sample_val : STD_LOGIC; BEGIN ----------------------------------------------------------------------------- MODULE_RHF1401: FOR I IN 0 TO 7 GENERATE TestModule_RHF1401_1: TestModule_RHF1401 GENERIC MAP ( freq => 24*(I+1), amplitude => 8000/(I+1), impulsion => 0) PORT MAP ( ADC_smpclk => ADC_smpclk, ADC_OEB_bar => ADC_OEB_bar_CH(I), ADC_data => ADC_data); END GENERATE MODULE_RHF1401; ----------------------------------------------------------------------------- clk49_152MHz <= NOT clk49_152MHz AFTER 10173 ps; -- 49.152/2 MHz clkm <= NOT clkm AFTER 20 ns; -- 25 MHz coarse_time_0 <= NOT coarse_time_0 AFTER 100 ms; ----------------------------------------------------------------------------- -- waveform generation WaveGen_Proc : PROCESS BEGIN -- insert signal assignments here WAIT UNTIL clkm = '1'; apbi <= apb_slv_in_none; rstn <= '0'; -- cnv_rstn <= '0'; -- run_cnv <= '0'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; rstn <= '1'; -- cnv_rstn <= '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; -- run_cnv <= '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; apbi.psel(15) <= '1'; apbi.penable <= '1'; apbi.pwrite <= '1'; -- 765432 apbi.paddr(7 DOWNTO 2) <= "001000"; apbi.pwdata(4 DOWNTO 0) <= "00000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001001"; apbi.pwdata(6 DOWNTO 0) <= "0000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001010"; apbi.pwdata <= "10000000000000000000000000000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001011"; apbi.pwdata <= "10010000000000000000000000000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001100"; apbi.pwdata <= "10100000000000000000000000000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001101"; apbi.pwdata <= "10110000000000000000000000000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001110"; apbi.pwdata(11 DOWNTO 0) <= "000000000000"; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001111"; apbi.pwdata(15 DOWNTO 0) <= "0000000000000001"; -- A => 1 * 100 ms WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "010000"; -- delta_f2_f1 apbi.pwdata(15 DOWNTO 0) <= "0000000001111000"; -- 0x78 = 120 WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "010001"; -- delta_f2_f0 apbi.pwdata(19 DOWNTO 0) <= "00000000001011111000"; -- 0x2f8 = 760 WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "010010"; -- nb_burst_available apbi.pwdata(11 DOWNTO 0) <= "000000001100"; -- 12 = 0xC WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "010011"; -- nb_snapshot_param apbi.pwdata(11 DOWNTO 0) <= "000000001111"; -- 15 (+ 1) WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; WAIT UNTIL clkm = '1'; apbi.paddr(7 DOWNTO 2) <= "001001"; apbi.pwdata(6 DOWNTO 0) <= "0000111"; WAIT UNTIL clkm = '1'; apbi.psel(15) <= '1'; apbi.penable <= '0'; apbi.pwrite <= '0'; WAIT UNTIL clkm = '1'; WAIT; END PROCESS WaveGen_Proc; ahbmi.HGRANT(2) <= '1'; ahbmi.HREADY <= '1'; ahbmi.HRESP <= HRESP_OKAY; ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- -- DUT ------------------------------------------------------------------------ ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- top_ad_conv_RHF1401_1 : top_ad_conv_RHF1401 GENERIC MAP ( ChanelCount => 8, ncycle_cnv_high => 79, ncycle_cnv => 500) PORT MAP ( cnv_clk => clk49_152MHz, cnv_rstn => rstn, cnv => ADC_smpclk, clk => clkm, rstn => rstn, ADC_data => ADC_data, ADC_nOE => ADC_OEB_bar_CH, sample => sample, sample_val => sample_val); waveform_picker0 : top_wf_picker GENERIC MAP( hindex => 2, pindex => 15, paddr => 15, pmask => 16#fff#, pirq => 14, tech => inferred, nb_burst_available_size => 12, -- size of the register holding the nb of burst nb_snapshot_param_size => 12, -- size of the register holding the snapshots size delta_snapshot_size => 16, -- snapshots period delta_f2_f0_size => 20, -- initialize the counter when the f2 snapshot starts delta_f2_f1_size => 16, -- nb f0 ticks before starting the f1 snapshot ENABLE_FILTER => '0' ) PORT MAP( sample => sample, sample_val => sample_val, -- cnv_clk => clk49_152MHz, cnv_rstn => rstn, -- AMBA AHB system signals HCLK => clkm, HRESETn => rstn, -- AMBA APB Slave Interface apbi => apbi, apbo => apbo(15), -- AMBA AHB Master Interface AHB_Master_In => ahbmi, AHB_Master_Out => ahbmo(2), -- coarse_time_0 => coarse_time_0, -- bit 0 of the coarse time -- data_shaping_BW => bias_fail_sw ); ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- END Behavioral;