source: firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_board_struct.vhd @ 11173

Last change on this file since 11173 was 11173, checked in by neise, 8 years ago
this is v0206 --- v0205 had a bug: when sending 'enable busy' this was not even parsed in firmware. now enable/disable busy is being parsed. NEW BASE PORT = 31919 (this ist 0x7CAF :-)
File size: 14.0 KB
RevLine 
[9912]1-- VHDL Entity FACT_FAD_lib.FAD_Board.symbol
2--
3-- Created:
[10957]4--          by - daqct3.UNKNOWN (IHP110)
[11173]5--          at - 15:01:19 24.06.2011
[9912]6--
[10957]7-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
[9912]8--
9LIBRARY ieee;
10USE ieee.std_logic_1164.all;
11USE ieee.std_logic_arith.all;
12
13ENTITY FAD_Board IS
14   PORT( 
[10123]15      A0_D       : IN     std_logic_vector (11 DOWNTO 0);
16      A1_D       : IN     std_logic_vector (11 DOWNTO 0);
17      A2_D       : IN     std_logic_vector (11 DOWNTO 0);
18      A3_D       : IN     std_logic_vector (11 DOWNTO 0);
19      A_OTR      : IN     std_logic_vector (3 DOWNTO 0);
20      D0_SROUT   : IN     std_logic;
21      D1_SROUT   : IN     std_logic;
22      D2_SROUT   : IN     std_logic;
23      D3_SROUT   : IN     std_logic;
24      D_PLLLCK   : IN     std_logic_vector (3 DOWNTO 0);
25      D_T_in     : IN     std_logic_vector (1 DOWNTO 0);
26      LINE       : IN     std_logic_vector ( 5 DOWNTO 0 );
27      REFCLK     : IN     std_logic;
28      RS485_E_DI : IN     std_logic;
29      TRG        : IN     STD_LOGIC;
30      W_INT      : IN     std_logic;
31      X_50M      : IN     STD_LOGIC;
[10957]32      A0_T       : OUT    std_logic_vector (7 DOWNTO 0)   := (others => '0');
33      A1_T       : OUT    std_logic_vector (7 DOWNTO 0)   := (OTHERS => '0');
[10123]34      AMBER_LED  : OUT    std_logic;
35      A_CLK      : OUT    std_logic_vector (3 DOWNTO 0);
36      DAC_CS     : OUT    std_logic;
[10957]37      DENABLE    : OUT    std_logic                       := '0';
38      DSRCLK     : OUT    std_logic_vector (3 DOWNTO 0)   := (others => '0');
39      DWRITE     : OUT    std_logic                       := '0';
40      D_A        : OUT    std_logic_vector (3 DOWNTO 0)   := (others => '0');
41      D_T        : OUT    std_logic_vector (7 DOWNTO 0)   := (OTHERS => '0');
42      D_T2       : OUT    std_logic_vector (1 DOWNTO 0)   := (others => '0');
[10123]43      EE_CS      : OUT    std_logic;
44      GREEN_LED  : OUT    std_logic;
[10957]45      MOSI       : OUT    std_logic                       := '0';
[10123]46      OE_ADC     : OUT    STD_LOGIC;
47      RED_LED    : OUT    std_logic;
48      RS485_C_DE : OUT    std_logic;
49      RS485_C_DO : OUT    std_logic;
50      RS485_C_RE : OUT    std_logic;
51      RS485_E_DE : OUT    std_logic;
[10129]52      RS485_E_DO : OUT    std_logic;
[10123]53      RS485_E_RE : OUT    std_logic;
[10957]54      RSRLOAD    : OUT    std_logic                       := '0';
55      SRIN       : OUT    std_logic                       := '0';
[10123]56      S_CLK      : OUT    std_logic;
[10129]57      TCS        : OUT    std_logic_vector (3 DOWNTO 0);
[10957]58      TRG_V      : OUT    std_logic                       := '0';
[10123]59      W_A        : OUT    std_logic_vector (9 DOWNTO 0);
[10957]60      W_CS       : OUT    std_logic                       := '1';
61      W_RD       : OUT    std_logic                       := '1';
62      W_RES      : OUT    std_logic                       := '1';
63      W_T        : OUT    std_logic_vector ( 3 DOWNTO 0 ) := (others => '0');
64      W_WR       : OUT    std_logic                       := '1';
[10123]65      MISO       : INOUT  std_logic;
66      W_D        : INOUT  std_logic_vector (15 DOWNTO 0)
[9912]67   );
68
69-- Declarations
70
71END FAD_Board ;
72
73--
74-- VHDL Architecture FACT_FAD_lib.FAD_Board.struct
75--
76-- Created:
[10957]77--          by - daqct3.UNKNOWN (IHP110)
[11173]78--          at - 15:01:20 24.06.2011
[9912]79--
[10957]80-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
[9912]81--
82LIBRARY ieee;
83USE ieee.std_logic_1164.all;
84USE ieee.std_logic_arith.all;
85USE IEEE.NUMERIC_STD.all;
86USE ieee.std_logic_unsigned.all;
87
88LIBRARY FACT_FAD_lib;
89USE FACT_FAD_lib.fad_definitions.all;
90
91LIBRARY FACT_FAD_lib;
92
93ARCHITECTURE struct OF FAD_Board IS
94
95   -- Architecture declarations
96
97   -- Internal signal declarations
[10180]98   SIGNAL ADC_CLK               : std_logic;
[10129]99   SIGNAL CLK_50                : std_logic;
[10883]100   -- for debugging
101   SIGNAL DG_state              : std_logic_vector(7 DOWNTO 0);
[10129]102   SIGNAL SRCLK                 : std_logic                     := '0';
103   SIGNAL adc_data_array        : adc_data_array_type;
104   SIGNAL alarm_refclk_too_high : std_logic                     := '0';
105   SIGNAL alarm_refclk_too_low  : std_logic                     := '0';
106   SIGNAL board_id              : std_logic_vector(3 DOWNTO 0);
107   SIGNAL counter_result        : std_logic_vector(11 DOWNTO 0) := (others => '0');
108   SIGNAL crate_id              : std_logic_vector(1 DOWNTO 0);
[10957]109   SIGNAL dac_cs1               : std_logic;
[10729]110   SIGNAL debug_data_ram_empty  : std_logic;
111   SIGNAL debug_data_valid      : std_logic;
[10129]112   SIGNAL led                   : std_logic_vector(7 DOWNTO 0)  := (OTHERS => '0');
[10744]113   SIGNAL mem_manager_state     : std_logic_vector(3 DOWNTO 0);                        -- state is encoded here ... useful for debugging.
[10957]114   SIGNAL mosi1                 : std_logic;
115   SIGNAL sclk                  : std_logic;
116   SIGNAL sensor_cs             : std_logic_vector(3 DOWNTO 0);
[10883]117   SIGNAL socket_tx_free_out    : std_logic_vector(16 DOWNTO 0);                       -- 17bit value .. that's true
[11122]118   SIGNAL trigger_veto          : std_logic                     := '1';
[10729]119   SIGNAL w5300_state           : std_logic_vector(7 DOWNTO 0);                        -- state is encoded here ... useful for debugging.
[9912]120
[10957]121   -- Implicit buffer signal declarations
122   SIGNAL TRG_V_internal : std_logic;
[9912]123
[10957]124
[9912]125   -- Component Declarations
126   COMPONENT FAD_main
127   GENERIC (
128      RAMADDRWIDTH64b : integer := 12
129   );
130   PORT (
[10180]131      CLK                   : IN     std_logic ;
132      D_T_in                : IN     std_logic_vector (1 DOWNTO 0);
[10462]133      FTM_RS485_rx_d        : IN     std_logic ;
[10180]134      SROUT_in_0            : IN     std_logic ;
135      SROUT_in_1            : IN     std_logic ;
136      SROUT_in_2            : IN     std_logic ;
137      SROUT_in_3            : IN     std_logic ;
138      adc_data_array        : IN     adc_data_array_type ;
139      adc_otr_array         : IN     std_logic_vector (3 DOWNTO 0);
140      board_id              : IN     std_logic_vector (3 DOWNTO 0);
141      crate_id              : IN     std_logic_vector (1 DOWNTO 0);
142      drs_refclk_in         : IN     std_logic ;                                     -- used TO check if DRS REFCLK exsists, if not DENABLE inhibit
143      plllock_in            : IN     std_logic_vector (3 DOWNTO 0);                  -- high level, if dominowave is running and DRS PLL locked
144      trigger               : IN     std_logic ;
145      wiz_int               : IN     std_logic ;
146      ADC_CLK               : OUT    std_logic ;
147      CLK_25_PS             : OUT    std_logic ;
148      CLK_50                : OUT    std_logic ;
[10883]149      -- for debugging
150      DG_state              : OUT    std_logic_vector (7 DOWNTO 0);
[10462]151      FTM_RS485_rx_en       : OUT    std_logic ;
152      FTM_RS485_tx_d        : OUT    std_logic ;
153      FTM_RS485_tx_en       : OUT    std_logic ;
[10180]154      RSRLOAD               : OUT    std_logic                     := '0';
155      SRCLK                 : OUT    std_logic                     := '0';
156      SRIN_out              : OUT    std_logic                     := '0';
157      adc_oeb               : OUT    std_logic                     := '1';
158      alarm_refclk_too_high : OUT    std_logic ;
159      alarm_refclk_too_low  : OUT    std_logic ;
160      amber                 : OUT    std_logic ;
161      counter_result        : OUT    std_logic_vector (11 DOWNTO 0);
162      dac_cs                : OUT    std_logic ;
[10729]163      debug_data_ram_empty  : OUT    std_logic ;
164      debug_data_valid      : OUT    std_logic ;
[10180]165      denable               : OUT    std_logic                     := '0';           -- default domino wave off
166      drs_channel_id        : OUT    std_logic_vector (3 DOWNTO 0) := (others => '0');
167      drs_dwrite            : OUT    std_logic                     := '1';
168      green                 : OUT    std_logic ;
169      led                   : OUT    std_logic_vector (7 DOWNTO 0) := (OTHERS => '0');
[10744]170      mem_manager_state     : OUT    std_logic_vector (3 DOWNTO 0);                  -- state is encoded here ... useful for debugging.
[10180]171      mosi                  : OUT    std_logic                     := '0';
172      red                   : OUT    std_logic ;
173      sclk                  : OUT    std_logic ;
174      sensor_cs             : OUT    std_logic_vector (3 DOWNTO 0);
[10883]175      socket_tx_free_out    : OUT    std_logic_vector (16 DOWNTO 0);                 -- 17bit value .. that's true
[10462]176      trigger_veto          : OUT    std_logic                     := '1';
[10729]177      w5300_state           : OUT    std_logic_vector (7 DOWNTO 0);                  -- state is encoded here ... useful for debugging.
[10180]178      wiz_addr              : OUT    std_logic_vector (9 DOWNTO 0);
179      wiz_cs                : OUT    std_logic                     := '1';
180      wiz_rd                : OUT    std_logic                     := '1';
181      wiz_reset             : OUT    std_logic                     := '1';
182      wiz_wr                : OUT    std_logic                     := '1';
183      sio                   : INOUT  std_logic ;
184      wiz_data              : INOUT  std_logic_vector (15 DOWNTO 0)
[9912]185   );
186   END COMPONENT;
187
188   -- Optional embedded configurations
189   -- pragma synthesis_off
190   FOR ALL : FAD_main USE ENTITY FACT_FAD_lib.FAD_main;
191   -- pragma synthesis_on
192
193
194BEGIN
195   -- Architecture concurrent statements
[10129]196   -- HDL Embedded Text Block 1 SRCLK
197   DSRCLK <= ( SRCLK, SRCLK,SRCLK,SRCLK);
[9912]198
199   -- HDL Embedded Text Block 2 ADC_CLK
[10180]200   A_CLK <= (
201   ADC_CLK,
202   ADC_CLK,
203   ADC_CLK,
204   ADC_CLK
205   );
[9912]206
207   -- HDL Embedded Text Block 3 ADC_DATA
[10129]208   adc_data_array <= ( A0_D, A1_D, A2_D, A3_D );
[9912]209
[10129]210   -- HDL Embedded Text Block 4 eb_ID
211   -- hard-wired IDs
212   board_id <= LINE(5 downto 2);
213   crate_id <= LINE(1 downto 0);
[9912]214
215   -- HDL Embedded Text Block 9 eb3
[10129]216   -- testpins D_T2 are used as MAX3485 outputs.
[9912]217   
[10129]218   --D_T <= (others => '0');
[10729]219   D_T <= w5300_state;
[10957]220   --D_T2(0) <= debug_data_valid;
221   D_T2(0) <= debug_data_ram_empty;
222   --D_T2(1) <= socket_tx_free_out(16);
223   
224   D_T2(1) <= TRG_V_internal;
[10129]225   --D_T2 <= ( others => '0' );
[10729]226   
[10121]227   
[10957]228   A0_T <= (others => '0');
229   A1_T <= (others => '1');
[10883]230   
231   
232   --A0_T <= DG_state;
[10957]233   W_T(3 downto 0) <= mem_manager_state;
[10883]234   --A1_T(7 downto 4) <= "1100";
235   
[10957]236   --A0_T <= socket_tx_free_out(7 downto 0);
237   --A0_T <= spi_debug_16bit(7 downto 0);
238   --A1_T <= spi_debug_16bit(15 downto 8);
239   --A1_T <= socket_tx_free_out(15 downto 8);
[10883]240   
[10957]241   -- check SPI interfac
242   --A1_T(7) <= sclk;
243   --A1_T(6) <= MISO;
244   --A1_T(5) <= mosi1;
245   
246   --A1_T(4) <= dac_cs1;
247   --A1_T( 3 downto 0) <= sensor_cs;
248   
249   
[10729]250   --D_T(3 downto 0) <=  counter_result ( 11 downto 8);
251   --D_T(4) <= alarm_refclk_too_low;
252   --D_T(5) <= alarm_refclk_too_high;
253   --D_T(6) <= '0';
254   --D_T(7) <= '0';
[10121]255   
[9912]256   
[10883]257   
[10129]258   -- additional MAX3485 is switched to shutdown mode
259   RS485_C_RE <= '1';  --inverted logic
260   RS485_C_DE <= '0';   
261   RS485_C_DO <= '0';
262   -- MAX3485 receiver out pit is fed out... should be HIGH-Z
263   
[10729]264   
[10129]265   -- EEPROM is not used on FAD. CS is always high.
266   EE_CS <= '1';
[9912]267
268
[10957]269   -- ModuleWare code(v1.9) for instance 'I0' of 'assignment'
270   DAC_CS <= dac_cs1;
271
272   -- ModuleWare code(v1.9) for instance 'I1' of 'assignment'
273   TCS <= sensor_cs;
274
275   -- ModuleWare code(v1.9) for instance 'I2' of 'assignment'
276   S_CLK <= sclk;
277
278   -- ModuleWare code(v1.9) for instance 'I3' of 'assignment'
279   MOSI <= mosi1;
280
[11122]281   -- ModuleWare code(v1.9) for instance 'I4' of 'assignment'
282   TRG_V_internal <= trigger_veto;
283
[9912]284   -- Instance port mappings.
285   I_board_main : FAD_main
286      GENERIC MAP (
287         RAMADDRWIDTH64b => LOG2_OF_RAM_SIZE_64B
288      )
289      PORT MAP (
[10180]290         CLK                   => X_50M,
291         D_T_in                => D_T_in,
[10462]292         FTM_RS485_rx_d        => RS485_E_DI,
[10180]293         SROUT_in_0            => D0_SROUT,
294         SROUT_in_1            => D1_SROUT,
295         SROUT_in_2            => D2_SROUT,
296         SROUT_in_3            => D3_SROUT,
297         adc_data_array        => adc_data_array,
298         adc_otr_array         => A_OTR,
299         board_id              => board_id,
300         crate_id              => crate_id,
301         drs_refclk_in         => REFCLK,
302         plllock_in            => D_PLLLCK,
303         trigger               => TRG,
304         wiz_int               => W_INT,
305         ADC_CLK               => ADC_CLK,
306         CLK_25_PS             => OPEN,
307         CLK_50                => CLK_50,
[10883]308         DG_state              => DG_state,
[10462]309         FTM_RS485_rx_en       => RS485_E_RE,
310         FTM_RS485_tx_d        => RS485_E_DO,
311         FTM_RS485_tx_en       => RS485_E_DE,
[10180]312         RSRLOAD               => RSRLOAD,
313         SRCLK                 => SRCLK,
314         SRIN_out              => SRIN,
315         adc_oeb               => OE_ADC,
316         alarm_refclk_too_high => alarm_refclk_too_high,
317         alarm_refclk_too_low  => alarm_refclk_too_low,
318         amber                 => AMBER_LED,
319         counter_result        => counter_result,
[10957]320         dac_cs                => dac_cs1,
[10729]321         debug_data_ram_empty  => debug_data_ram_empty,
322         debug_data_valid      => debug_data_valid,
[10180]323         denable               => DENABLE,
324         drs_channel_id        => D_A,
325         drs_dwrite            => DWRITE,
[11122]326         green                 => GREEN_LED,
[10180]327         led                   => led,
[10744]328         mem_manager_state     => mem_manager_state,
[10957]329         mosi                  => mosi1,
[11122]330         red                   => RED_LED,
[10957]331         sclk                  => sclk,
332         sensor_cs             => sensor_cs,
[10883]333         socket_tx_free_out    => socket_tx_free_out,
[11122]334         trigger_veto          => trigger_veto,
[10729]335         w5300_state           => w5300_state,
[10180]336         wiz_addr              => W_A,
337         wiz_cs                => W_CS,
338         wiz_rd                => W_RD,
339         wiz_reset             => W_RES,
340         wiz_wr                => W_WR,
341         sio                   => MISO,
342         wiz_data              => W_D
[9912]343      );
344
[10957]345   -- Implicit buffered output assignments
346   TRG_V <= TRG_V_internal;
347
[9912]348END struct;
Note: See TracBrowser for help on using the repository browser.