00001
00002 --**************************************************************
00003 --* *
00004 --* The source code for the ATLAS BCM "AAA" FPGA is made *
00005 --* available via the GNU General Public License (GPL) *
00006 --* unless otherwise stated below. *
00007 --* *
00008 --* In case of problems/questions/bug reports etc. please *
00009 --* contact michael.niegl@cern.ch *
00010 --* *
00011 --**************************************************************
00012
00013 --**************************************************************
00014 --* *
00015 --* $Source: /local/reps/bcmfpga/bcm_aaa/bcm_aaa/div/raw_data_emul.vhd,v $
00016 --* $Revision: 1.5.2.3 $ *
00017 --* $Name: dev $ *
00018 --* $Author: mniegl $ *
00019 --* $Date: 2008/11/03 17:57:45 $ *
00020
00021
00022 --* *
00023 --**************************************************************
00024
00025 library ieee;
00026
00027 use ieee.std_logic_1164.all;
00028
00029 use ieee.numeric_std.all;
00030 library work;
00031 use work.main_components.all;
00032
00033
00034
00035
00036
00037 entity raw_data_emul is
00038
00039 generic (
00040 CONF : bit_vector(1 to 8) := "10101010"
00041 );
00042 port (
00043 CLK : in ;
00044 RESET : in ;
00045 EN : in ;
00046 CH1 : out (31 downto 0);
00047 CH2 : out (31 downto 0);
00048 CH3 : out (31 downto 0);
00049 CH4 : out (31 downto 0);
00050 CH5 : out (31 downto 0);
00051 CH6 : out (31 downto 0);
00052 CH7 : out (31 downto 0);
00053 CH8 : out (31 downto 0)
00054 );
00055
00056 end raw_data_emul;
00057
00058
00059
00060
00061 architecture raw_data_emul_arc of raw_data_emul is
00062
00063
00064 component LFSR14_23A3
00065 port (
00066 clock : in ;
00067 en : in ;
00068 q : out (13 downto 0)
00069 );
00070 end component;
00071
00072
00073 component loop_cnt
00074 port (
00075 CLK : in ;
00076 RESET : in ;
00077 EN : in ;
00078 Y : out (31 downto 0));
00079 end component;
00080
00081 type datarr is array (1 to 8) of (31 downto 0);
00082 type datarr_s is array (1 to 8) of (13 downto 0);
00083 signal data_i : datarr;
00084 signal data_is : datarr_s;
00085
00086 begin -- raw_data_emul_arc
00087
00088 CH1 <= data_i(1);
00089 CH2 <= data_i(2);
00090 CH3 <= data_i(3);
00091 CH4 <= data_i(4);
00092 CH5 <= data_i(5);
00093 CH6 <= data_i(6);
00094 CH7 <= data_i(7);
00095 CH8 <= data_i(8);
00096
00097 counter_data : for I in 1 to 8 generate
00098
00099 CHSEL : if CONF(I) = '1' generate
00100
00101 data_gen : loop_cnt
00102 port map (
00103 CLK => CLK,
00104 RESET => RESET,
00105 EN => EN,
00106 Y => data_i (I));
00107
00108 end generate CHSEL;
00109
00110 end generate counter_data;
00111
00112 lfsr_data : for J in 1 to 8 generate
00113
00114 CHSEL2 : if CONF(J) = '0' generate
00115
00116 data_gen2 : LFSR14_23A3
00117 port map (
00118 clock => CLK,
00119 en => EN,
00120 q => data_is(J));
00121
00122 data_i(J) <= gnd_vec_long(31 downto 20) & data_is(J) & gnd_vec_long(5 downto 0) when rising_edge(CLK);
00123
00124 end generate CHSEL2;
00125
00126 end generate lfsr_data;
00127
00128 end raw_data_emul_arc;