Ignore:
Timestamp:
04/26/11 16:40:29 (14 years ago)
Author:
neise
Message:
ADC data is not send in network byte order anymore.
RS485 receiver is implemented --> needs testing
internal trigger ID is used for socket number calculation
Location:
firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl
Files:
3 added
5 edited

Legend:

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

    r10225 r10462  
    5454        FTM_RS485_ready                 : in    std_logic;
    5555        FTM_trigger_info                : in    std_logic_vector (55 downto 0); --7 byte
     56        FTM_receiver_status : in std_logic;
    5657
    5758-- EVT HEADER - part 3
     
    9899        drs_s_cell_array                : in    drs_s_cell_array_type;
    99100
    100         drs_readout_started             : out   std_logic := '0'
     101        drs_readout_started             : out   std_logic := '0';
     102        trigger_veto : out std_logic := '1'
    101103);
    102104end data_generator ;
     
    119121        WRITE_CHANNEL_ID, WRITE_START_CELL, WRITE_ROI, WRITE_FILLING,
    120122        WAIT_FOR_ADC, WRITE_ADC_DATA,
    121         WRITE_EXTERNAL_TRIGGER,
     123        WAIT_FOR_EXTERNAL_TRIGGER_READY, WRITE_EXTERNAL_TRIGGER,
    122124        WRITE_END_FLAG,
    123125        WRITE_DATA_END, WRITE_DATA_END_WAIT,
     
    148150signal sig_drs_readout_started : std_logic := '0';
    149151
    150 
     152signal FTM_trigger_info_local_copy : std_logic_vector (55 downto 0) := (others => '0'); --7 byte
    151153
    152154-- self configuration signals:
     
    213215                when IDLE =>
    214216                        state_generate <= IDLE;
    215                        
     217                        trigger_veto <= '0';
    216218                        if (config_start_sig = '1') then
    217219                                config_start_sig <= '0';
     
    221223                        if (ram_write_ea = '1' and trigger_sr = "01") then
    222224                                sig_drs_readout_started <= '1'; -- is set to '0' in next state ... just a pulse.
     225                                trigger_veto <= '1';
    223226                                start_read_drs_stop_cell <= '1';
    224227                                adc_output_enable_inverted <= '0';
     
    385388                when WRITE_ADC_DATA =>
    386389                        if (data_cntr < roi_max_int (channel_id)) then
    387                                 data_out <= "000" & adc_otr(3) & adc_data_array(3) &    --exchange ... with data_cntr when testbenching.
    388                                                         "000" & adc_otr(2) & adc_data_array(2) &
    389                                                         "000" & adc_otr(1) & adc_data_array(1) &
    390                                                         "000" & adc_otr(0) & adc_data_array(0);
     390                                data_out <= adc_data_array(3)(7 downto 0) & "000" & adc_otr(3) & adc_data_array(3)(11 downto 8) &
     391          adc_data_array(2)(7 downto 0) & "000" & adc_otr(2) & adc_data_array(2)(11 downto 8) &
     392          adc_data_array(1)(7 downto 0) & "000" & adc_otr(1) & adc_data_array(1)(11 downto 8) &
     393          adc_data_array(0)(7 downto 0) & "000" & adc_otr(0) & adc_data_array(0)(11 downto 8) ;
     394
    391395                                addr_cntr <= addr_cntr + 1;
    392396                                state_generate <= WRITE_ADC_DATA;
     
    396400                                --adc_output_enable_inverted <= '1'; -- nur für Emulator
    397401                                if (channel_id = 8) then
    398                                         state_generate <= WRITE_EXTERNAL_TRIGGER;
     402                                        state_generate <= WAIT_FOR_EXTERNAL_TRIGGER_READY;
    399403                                        adc_output_enable_inverted <= '1';
    400404                                        -- switch off ADC_CLK
     
    406410                                end if;
    407411                        end if;
    408  
     412               
     413                when WAIT_FOR_EXTERNAL_TRIGGER_READY =>
     414                        state_generate <= WAIT_FOR_EXTERNAL_TRIGGER_READY;
     415                        if (FTM_RS485_ready = '1') then
     416                                --make local copy and proceed
     417                                FTM_trigger_info_local_copy <= FTM_trigger_info;
     418                                state_generate <= WRITE_EXTERNAL_TRIGGER;
     419                        end if;
     420               
     421               
    409422                when WRITE_EXTERNAL_TRIGGER =>    -- external trigger ID
    410423                        addr_out <= start_addr + conv_std_logic_vector(1, RAM_ADDR_WIDTH);
    411                         data_out <=     FTM_trigger_info(15 downto 0) &
    412                                                 FTM_trigger_info(31 downto 16) &
    413                                                 FTM_trigger_info(47 downto 32) &
    414                                                 X"00" & FTM_trigger_info(55 downto 48);
     424                        data_out <=     FTM_trigger_info_local_copy(15 downto 0) &
     425                                                FTM_trigger_info_local_copy(31 downto 16) &
     426                                                FTM_trigger_info_local_copy(47 downto 32) &
     427                                                "0000000"& FTM_receiver_status & FTM_trigger_info_local_copy(55 downto 48);
    415428                        state_generate <= WRITE_END_FLAG;
    416429
  • firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_board_struct.vhd

    r10225 r10462  
    33-- Created:
    44--          by - daqct3.UNKNOWN (IHP110)
    5 --          at - 08:30:59 04.03.2011
     5--          at - 17:31:46 26.04.2011
    66--
    77-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
     
    7676-- Created:
    7777--          by - daqct3.UNKNOWN (IHP110)
    78 --          at - 08:30:59 04.03.2011
     78--          at - 17:31:46 26.04.2011
    7979--
    8080-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
     
    116116      CLK                   : IN     std_logic ;
    117117      D_T_in                : IN     std_logic_vector (1 DOWNTO 0);
     118      FTM_RS485_rx_d        : IN     std_logic ;
    118119      SROUT_in_0            : IN     std_logic ;
    119120      SROUT_in_1            : IN     std_logic ;
     
    131132      CLK_25_PS             : OUT    std_logic ;
    132133      CLK_50                : OUT    std_logic ;
     134      FTM_RS485_rx_en       : OUT    std_logic ;
     135      FTM_RS485_tx_d        : OUT    std_logic ;
     136      FTM_RS485_tx_en       : OUT    std_logic ;
    133137      RSRLOAD               : OUT    std_logic                     := '0';
    134138      SRCLK                 : OUT    std_logic                     := '0';
     
    149153      sclk                  : OUT    std_logic ;
    150154      sensor_cs             : OUT    std_logic_vector (3 DOWNTO 0);
     155      trigger_veto          : OUT    std_logic                     := '1';
    151156      wiz_addr              : OUT    std_logic_vector (9 DOWNTO 0);
    152157      wiz_cs                : OUT    std_logic                     := '1';
     
    191196   --D_T <= (others => '0');
    192197   --D_T2 <= ( others => '0' );
     198   D_T2(1) <= '0';
    193199   -- A0_T(7 downto 0) <= (others => '0');
    194200   --A1_T(7 downto 0) <= (others => '0');
     
    205211   A0_T <= led;
    206212   
    207    -- MAX3485 for FTM trigger ID is switched into receive mode
    208    RS485_E_RE <= '0';
    209    RS485_E_DE <= '0';
    210    -- in receive mode, the DI input of this MAX is in 'don't care' state
    211    RS485_E_DO <= '0';
    212    -- the receive pin is fed out as well
    213    D_T2(1) <= RS485_E_DI;
    214    
    215213   -- additional MAX3485 is switched to shutdown mode
    216214   RS485_C_RE <= '1';  --inverted logic
     
    223221   EE_CS <= '1';
    224222
    225 
    226    -- ModuleWare code(v1.9) for instance 'I0' of 'gnd'
    227    TRG_V <= '0';
    228223
    229224   -- Instance port mappings.
     
    235230         CLK                   => X_50M,
    236231         D_T_in                => D_T_in,
     232         FTM_RS485_rx_d        => RS485_E_DI,
    237233         SROUT_in_0            => D0_SROUT,
    238234         SROUT_in_1            => D1_SROUT,
     
    250246         CLK_25_PS             => OPEN,
    251247         CLK_50                => CLK_50,
     248         FTM_RS485_rx_en       => RS485_E_RE,
     249         FTM_RS485_tx_d        => RS485_E_DO,
     250         FTM_RS485_tx_en       => RS485_E_DE,
    252251         RSRLOAD               => RSRLOAD,
    253252         SRCLK                 => SRCLK,
     
    268267         sclk                  => S_CLK,
    269268         sensor_cs             => TCS,
     269         trigger_veto          => TRG_V,
    270270         wiz_addr              => W_A,
    271271         wiz_cs                => W_CS,
  • firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_definitions.vhd

    r10225 r10462  
    179179
    180180end fad_definitions;
    181 
    182 
  • firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_main_struct.vhd

    r10225 r10462  
    33-- Created:
    44--          by - daqct3.UNKNOWN (IHP110)
    5 --          at - 08:30:56 04.03.2011
     5--          at - 17:31:44 26.04.2011
    66--
    77-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
     
    2020      CLK                   : IN     std_logic;
    2121      D_T_in                : IN     std_logic_vector (1 DOWNTO 0);
     22      FTM_RS485_rx_d        : IN     std_logic;
    2223      SROUT_in_0            : IN     std_logic;
    2324      SROUT_in_1            : IN     std_logic;
     
    3536      CLK_25_PS             : OUT    std_logic;
    3637      CLK_50                : OUT    std_logic;
     38      FTM_RS485_rx_en       : OUT    std_logic;
     39      FTM_RS485_tx_d        : OUT    std_logic;
     40      FTM_RS485_tx_en       : OUT    std_logic;
    3741      RSRLOAD               : OUT    std_logic                     := '0';
    3842      SRCLK                 : OUT    std_logic                     := '0';
     
    5357      sclk                  : OUT    std_logic;
    5458      sensor_cs             : OUT    std_logic_vector (3 DOWNTO 0);
     59      trigger_veto          : OUT    std_logic                     := '1';
    5560      wiz_addr              : OUT    std_logic_vector (9 DOWNTO 0);
    5661      wiz_cs                : OUT    std_logic                     := '1';
     
    7176-- Created:
    7277--          by - daqct3.UNKNOWN (IHP110)
    73 --          at - 08:30:58 04.03.2011
     78--          at - 17:31:45 26.04.2011
    7479--
    7580-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
     
    8792USE IEEE.NUMERIC_STD.all;
    8893USE IEEE.std_logic_signed.all;
     94USE fact_fad_lib.fad_rs485_constants.all;
    8995
    9096LIBRARY FACT_FAD_lib;
     
    114120   SIGNAL c_trigger_mult               : std_logic_vector(15 DOWNTO 0);
    115121   SIGNAL cont_trigger                 : std_logic;
    116    SIGNAL crc                          : std_logic_vector(7 DOWNTO 0);
    117122   SIGNAL current_dac_array            : dac_array_type                               := ( others => 0);
    118123   SIGNAL dac_setting                  : dac_array_type                               := DEFAULT_DAC;        --<<-- default defined in fad_definitions.vhd
     
    161166   SIGNAL ram_write_ready_ack          : std_logic                                    := '0';
    162167   SIGNAL ready                        : STD_LOGIC                                    := '0';
     168   SIGNAL rec_timeout_occured          : std_logic                                    := '0';
    163169   SIGNAL reset                        : std_logic;
    164170   SIGNAL reset_synch_i                : std_logic;
     
    184190   SIGNAL trigger_or_s_trigger         : std_logic;
    185191   SIGNAL trigger_out                  : std_logic;
    186    SIGNAL trigger_type1                : std_logic_vector(7 DOWNTO 0);
    187    SIGNAL trigger_type2                : std_logic_vector(7 DOWNTO 0);
    188192   SIGNAL wiz_ack                      : std_logic;
    189193   SIGNAL wiz_busy                     : std_logic;
     
    208212
    209213   -- Component Declarations
     214   COMPONENT FAD_rs485_receiver
     215   GENERIC (
     216      -- defined in fad_rs485_definitions.fad_rs485_constants
     217      RX_BYTES : integer := RS485_MESSAGE_LEN_BYTES;         -- no. of bytes to receive
     218      RX_WIDTH : integer := RS485_MESSAGE_LEN_BYTES * 8      -- no. of bits to receive
     219   );
     220   PORT (
     221      rec_clk             : IN     std_logic;
     222      rec_start           : IN     std_logic;
     223      rx_d                : IN     std_logic;
     224      rec_dout            : OUT    std_logic_vector (RX_WIDTH - 1 DOWNTO 0) := (others => '0');
     225      rec_timeout_occured : OUT    std_logic                                := '0';
     226      rec_valid           : OUT    std_logic                                := '0';
     227      rx_en               : OUT    std_logic;
     228      tx_d                : OUT    std_logic;
     229      tx_en               : OUT    std_logic
     230   );
     231   END COMPONENT;
    210232   COMPONENT REFCLK_counter
    211233   PORT (
     
    215237      alarm_refclk_too_low  : OUT    std_logic                      := '0';
    216238      counter_result        : OUT    std_logic_vector (11 DOWNTO 0) := (others => '0')
    217    );
    218    END COMPONENT;
    219    COMPONENT RS485_receiver_fake
    220    PORT (
    221       crc           : IN     std_logic_vector (7 DOWNTO 0);
    222       trigger_no    : IN     std_logic_vector (31 DOWNTO 0);
    223       trigger_type1 : IN     std_logic_vector (7 DOWNTO 0);
    224       trigger_type2 : IN     std_logic_vector (7 DOWNTO 0);
    225       rs465_data    : OUT    std_logic_vector (55 DOWNTO 0);
    226       rs485_ready   : OUT    std_logic
    227239   );
    228240   END COMPONENT;
     
    303315      FTM_RS485_ready            : IN     std_logic ;
    304316      FTM_trigger_info           : IN     std_logic_vector (55 DOWNTO 0);                 --7 byte
     317      FTM_receiver_status        : IN     std_logic ;
    305318      -- EVT HEADER - part 3
    306319      fad_event_counter          : IN     std_logic_vector (31 DOWNTO 0);
     
    337350      drs_read_s_cell_ready      : IN     std_logic ;
    338351      drs_s_cell_array           : IN     drs_s_cell_array_type ;
    339       drs_readout_started        : OUT    std_logic                     := '0'
     352      drs_readout_started        : OUT    std_logic                     := '0';
     353      trigger_veto               : OUT    std_logic                     := '1'
    340354   );
    341355   END COMPONENT;
    342356   COMPONENT dna_gen
    343357   PORT (
    344       clk   : IN     STD_LOGIC;
     358      clk   : IN     STD_LOGIC ;
    345359      dna   : OUT    STD_LOGIC_VECTOR (63 DOWNTO 0) := (others => '0');
    346360      ready : OUT    STD_LOGIC                      := '0'
     
    540554   -- Optional embedded configurations
    541555   -- pragma synthesis_off
     556   FOR ALL : FAD_rs485_receiver USE ENTITY FACT_FAD_lib.FAD_rs485_receiver;
    542557   FOR ALL : REFCLK_counter USE ENTITY FACT_FAD_lib.REFCLK_counter;
    543    FOR ALL : RS485_receiver_fake USE ENTITY FACT_FAD_lib.RS485_receiver_fake;
    544558   FOR ALL : adc_buffer USE ENTITY FACT_FAD_lib.adc_buffer;
    545559   FOR ALL : clock_generator_var_ps USE ENTITY FACT_FAD_lib.clock_generator_var_ps;
     
    560574
    561575BEGIN
    562    -- Architecture concurrent statements
    563    -- HDL Embedded Text Block 1 eb1
    564    trigger_type1 <= "00000010";
    565    trigger_type2 <= "00000000";
    566    crc <= X"5A";
    567 
    568576
    569577   -- ModuleWare code(v1.9) for instance 'I6' of 'and'
     
    633641
    634642   -- Instance port mappings.
     643   U_7 : FAD_rs485_receiver
     644      GENERIC MAP (
     645         RX_BYTES => RS485_MESSAGE_LEN_BYTES,            -- no. of bytes to receive
     646         RX_WIDTH => RS485_MESSAGE_LEN_BYTES * 8         -- no. of bits to receive
     647      )
     648      PORT MAP (
     649         rec_clk             => CLK_50_internal,
     650         rx_d                => FTM_RS485_rx_d,
     651         rx_en               => FTM_RS485_rx_en,
     652         tx_d                => FTM_RS485_tx_d,
     653         tx_en               => FTM_RS485_tx_en,
     654         rec_start           => drs_readout_started,
     655         rec_timeout_occured => rec_timeout_occured,
     656         rec_dout            => rs465_data,
     657         rec_valid           => FTM_RS485_ready
     658      );
    635659   REFCLK_counter_main : REFCLK_counter
    636660      PORT MAP (
     
    640664         alarm_refclk_too_high => alarm_refclk_too_high_internal,
    641665         alarm_refclk_too_low  => alarm_refclk_too_low_internal
    642       );
    643    RS485_receiver_fake_instance : RS485_receiver_fake
    644       PORT MAP (
    645          trigger_no    => trigger_id,
    646          trigger_type1 => trigger_type1,
    647          trigger_type2 => trigger_type2,
    648          crc           => crc,
    649          rs465_data    => rs465_data,
    650          rs485_ready   => FTM_RS485_ready
    651666      );
    652667   I_main_adc_buffer : adc_buffer
     
    718733         FTM_RS485_ready            => FTM_RS485_ready,
    719734         FTM_trigger_info           => rs465_data,
     735         FTM_receiver_status        => rec_timeout_occured,
    720736         fad_event_counter          => trigger_id,
    721737         refclk_counter             => counter_result_internal,
     
    747763         drs_read_s_cell_ready      => drs_read_s_cell_ready,
    748764         drs_s_cell_array           => drs_s_cell_array,
    749          drs_readout_started        => drs_readout_started
     765         drs_readout_started        => drs_readout_started,
     766         trigger_veto               => trigger_veto
    750767      );
    751768   dna_gen_instance : dna_gen
  • firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/w5300_modul.vhd

    r10225 r10462  
    939939                                                  when WR_GET_EVT_ID1 =>
    940940                                                                event_number(31 downto 16) <= ram_data;
    941                                                                 ram_addr <= local_ram_start_addr + 7; -- Address of LOW word of Event ID
     941                                                                ram_addr <= local_ram_start_addr + 9; -- Address of LOW word of Event ID
    942942                                                                state_write <= WR_GET_EVT_ID_WAIT2;
    943943                                                        when WR_GET_EVT_ID_WAIT2 =>
Note: See TracChangeset for help on using the changeset viewer.