Ignore:
Timestamp:
01/27/11 08:32:16 (13 years ago)
Author:
neise
Message:
synchronous trigger handling added
continous soft trigger generation.
---> control frequency via 'send 0x21??'
each step increases trigger delay by 12.5ms
0x2100 = 40Hz
0x21FF = 0.3Hz
File:
1 edited

Legend:

Unmodified
Added
Removed
  • firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/data_generator.vhd.bak

    r10081 r10121  
    5858      adc_otr : in std_logic_vector (3 downto 0);
    5959      drs_channel_id : out std_logic_vector (3 downto 0) := (others => '0');
    60       drs_dwrite : out std_logic := '1';
     60      -- --
     61--      drs_dwrite : out std_logic := '1';
     62      drs_readout_ready : out std_logic := '0';
     63      -- --
    6164      drs_clk_en, drs_read_s_cell : out std_logic := '0';
    6265
     
    6972      drs_s_cell_array : in drs_s_cell_array_type;
    7073     
    71       drs_readout_started : out std_logic
     74      drs_readout_started : out std_logic := '0'
    7275      );
    7376end data_generator ;
     
    7780type state_generate_type is (INIT, CONFIG, CONFIG1, CONFIG2,CONFIG3, CONFIG4, CONFIG5, CONFIG6, CONFIG7, WRITE_HEADER, WRITE_EXTERNAL_TRIGGER, WRITE_INTERNAL_TRIGGER, WRITE_BOARD_ID, WRITE_TEMPERATURES,
    7881                             WRITE_DAC1, WRITE_DAC2, WRITE_CHANNEL_ID, WRITE_START_CELL, WRITE_ROI, WRITE_ADC_DATA, WRITE_DATA_END, WRITE_DATA_END_WAIT,
    79                              WRITE_END_FLAG, WRITE_DATA_STOP,
     82                             WRITE_END_FLAG, WRITE_DATA_STOP, WRITE_DATA_STOP1,
    8083                             WRITE_DATA_IDLE, WAIT_FOR_ADC, WAIT_FOR_STOP_CELL, START_DRS_READING);
    8184
     
    181184            sig_drs_readout_started <= '1'; -- is set to '0' in state WRITE_DAC1
    182185            -- stop drs, dwrite low
    183             drs_dwrite <= '0';
     186            -- drs_dwrite <= '0';
    184187            -- start reading of drs stop cell
    185188            drs_read_s_cell <= '1';
     
    272275        when WRITE_ADC_DATA =>
    273276          if (data_cntr < roi_max (channel_id)) then
    274 --            data_out <= "000" & adc_otr(3) & adc_data_array(3)
    275 --                      & "000" & adc_otr(2) & adc_data_array(2)
    276 --                      & "000" & adc_otr(1) & adc_data_array(1)
    277 --                      & "000" & adc_otr(0) & adc_data_array(0);
    278               data_out <= "00000" & conv_std_logic_vector (data_cntr, 11)
    279                           & "00010" & conv_std_logic_vector (data_cntr, 11)
    280                           & "00100" & conv_std_logic_vector (data_cntr, 11)
    281                           & "00110" & conv_std_logic_vector (data_cntr, 11) ;
     277            data_out <= "000" & adc_otr(3) & adc_data_array(3)
     278                      & "000" & adc_otr(2) & adc_data_array(2)
     279                      & "000" & adc_otr(1) & adc_data_array(1)
     280                      & "000" & adc_otr(0) & adc_data_array(0);
     281 --             data_out <= "00000" & conv_std_logic_vector (data_cntr, 11)
     282--                          & "00010" & conv_std_logic_vector (data_cntr, 11)
     283--                          & "00100" & conv_std_logic_vector (data_cntr, 11)
     284--                          & "00110" & conv_std_logic_vector (data_cntr, 11) ;
    282285            addr_cntr <= addr_cntr + 1;
    283286            state_generate <= WRITE_ADC_DATA;
     
    329332                  if (ram_write_ready_ack = '0') then
    330333                  -- --
    331             drs_dwrite <= '1';
     334--            drs_dwrite <= '1';
     335            drs_readout_ready <= '1';
    332336                                          data_cntr <= 0;
    333337                                          addr_cntr <= 0;
    334338                                          channel_id <= 0;
    335                                           state_generate <= WRITE_DATA_IDLE;
     339                                          state_generate <= WRITE_DATA_STOP1;
    336340                                        -- --
    337341                                        end if;
    338342                                  -- --
     343                                when WRITE_DATA_STOP1 =>
     344                                  if (drs_readout_ready_ack = '1') then
     345                                    drs_readout_ready <= '0';
     346                                    state_generate <= WRITE_DATA_IDLE;
     347                                  end if;
    339348                                when others =>
    340349                                        null;
Note: See TracChangeset for help on using the changeset viewer.