source: firmware/FTM/FTM_top.vhd@ 10188

Last change on this file since 10188 was 10067, checked in by weitzel, 14 years ago
Skeleton of FTM_top and FTM_top_tb added
File size: 9.3 KB
Line 
1----------------------------------------------------------------------------------
2-- Company: ETH Zurich, Institute for Particle Physics
3-- Engineer: P. Vogler, Q. Weitzel
4--
5-- Create Date: 08 December 2010
6-- Design Name:
7-- Module Name: FTM_top - Behavioral
8-- Project Name:
9-- Target Devices:
10-- Tool versions:
11-- Description: Top level entity for FTM firmware
12--
13--
14-- Dependencies:
15--
16-- Revision:
17-- Revision 0.01 - File Created
18-- Additional Comments:
19--
20----------------------------------------------------------------------------------
21
22library IEEE;
23use IEEE.STD_LOGIC_1164.ALL;
24use IEEE.STD_LOGIC_ARITH.ALL;
25use IEEE.STD_LOGIC_UNSIGNED.ALL;
26
27---- Uncomment the following library declaration if instantiating
28---- any Xilinx primitives in this code.
29--library UNISIM;
30--use UNISIM.VComponents.all;
31
32
33entity FTM_top is
34 port(
35
36 -- Clock
37 clk : IN STD_LOGIC; -- external clock from oscillator U47
38
39 -- connection to the WIZnet W5300 ethernet controller
40 -- on IO-Bank 1
41 -------------------------------------------------------------------------------
42 -- W5300 data bus
43 W_D : inout STD_LOGIC_VECTOR(15 downto 0); -- 16-bit data bus to W5300
44
45 -- W5300 address bus
46 W_A : out STD_LOGIC_VECTOR(9 downto 1); -- there is NO net W_A0 because
47 -- the W5300 is operated in the
48 -- 16-bit mode
49
50 -- W5300 control signals
51 -- the signals W_INT, W_RD, W_WR and W_RES also go to testpoints T17
52 -- W_CS is also routed to testpoint JP7
53 W_CS : out STD_LOGIC; -- W5300 chip select
54 W_INT : IN STD_LOGIC; -- interrupt
55 W_RD : out STD_LOGIC; -- read
56 W_WR : out STD_LOGIC; -- write
57 W_RES : out STD_LOGIC; -- reset W5300 chip
58
59 -- W5300 buffer ready indicator
60 W_BRDY : in STD_LOGIC_VECTOR(3 downto 0);
61
62 -- testpoints (T18) associated with the W5300 on IO-bank 1
63 W_T : inout STD_LOGIC_VECTOR(3 downto 0);
64
65
66 -- SPI Interface
67 -- connection to the EEPROM U36 (AL25L016M) and
68 -- temperature sensors U45, U46, U48 and U49 (all MAX6662)
69 -- on IO-Bank 1
70 -------------------------------------------------------------------------------
71 S_CLK : out STD_LOGIC; -- SPI clock
72
73 -- EEPROM
74 -- MOSI : out STD_LOGIC; -- master out slave in
75 -- MISO : in STD_LOGIC; -- master in slave out
76 -- EE_CS : out STD_LOGIC; -- EEPROM chip select
77
78 -- temperature sensors U45, U46, U48 and U49
79 SIO : inout STD_LOGIC; -- serial IO
80 TS_CS : out STD_LOGIC_VECTOR(3 downto 0); -- temperature sensors chip select
81
82
83 -- Trigger primitives inputs
84 -- on IO-Bank 2
85 -------------------------------------------------------------------------------
86 Trig_Prim_A : in STD_LOGIC_VECTOR(9 downto 0); -- crate 0
87 Trig_Prim_B : in STD_LOGIC_VECTOR(9 downto 0); -- crate 1
88 Trig_Prim_C : in STD_LOGIC_VECTOR(9 downto 0); -- crate 2
89 Trig_Prim_D : in STD_LOGIC_VECTOR(9 downto 0); -- crate 3
90
91
92 -- NIM inputs
93 ------------------------------------------------------------------------------
94 -- on IO-Bank 3
95 ext_Trig : in STD_LOGIC_VECTOR(2 downto 1); -- external trigger input
96 Veto : in STD_LOGIC; -- trigger veto input
97 NIM_In : in STD_LOGIC_VECTOR(2 downto 0); -- auxiliary inputs
98
99 -- on IO-Bank 0
100 -- alternative external clock input for FPGA
101 NIM_In3_GCLK : in STD_LOGIC; -- input with global clock buffer available
102
103
104 -- LEDs on IO-Banks 0 and 3
105 -------------------------------------------------------------------------------
106 LED_red : out STD_LOGIC_VECTOR(3 downto 0); -- red
107 LED_ye : out STD_LOGIC_VECTOR(1 downto 0); -- yellow
108 LED_gn : out STD_LOGIC_VECTOR(1 downto 0); -- green
109
110
111 -- Clock conditioner LMK03000
112 -- on IO-Bank 3
113 -------------------------------------------------------------------------------
114 CLK_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface serial clock
115 LE_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface latch enable
116 DATA_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface data
117
118 SYNC_Clk_Cond : out STD_LOGIC; -- global clock synchronization
119 LD_Clk_Cond : in STD_LOGIC; -- lock detect, should be checked for
120
121
122 -- various RS-485 Interfaces
123 -- on IO-Bank 3
124 -------------------------------------------------------------------------------
125 -- Bus 1: FTU slow control
126 Bus1_Tx_En : out STD_LOGIC; -- bus 1: transmitter enable
127 Bus1_Rx_En : out STD_LOGIC; -- bus 1: receiver enable
128
129 Bus1_RxD_0 : in STD_LOGIC; -- crate 0
130 Bus1_TxD_0 : out STD_LOGIC;
131
132 Bus1_RxD_1 : in STD_LOGIC; -- crate 1
133 Bus1_TxD_1 : out STD_LOGIC;
134
135 Bus1_RxD_2 : in STD_LOGIC; -- crate 2
136 Bus1_TxD_2 : out STD_LOGIC;
137
138 Bus1_RxD_3 : in STD_LOGIC; -- crate 3
139 Bus1_TxD_3 : out STD_LOGIC;
140
141
142 -- Bus 2: Trigger-ID to FAD boards
143 Bus2_Tx_En : out STD_LOGIC; -- bus 2: transmitter enable
144 Bus2_Rx_En : out STD_LOGIC; -- bus 2: receiver enable
145
146 Bus2_RxD_0 : in STD_LOGIC; -- crate 0
147 Bus2_TxD_0 : out STD_LOGIC;
148
149 Bus2_RxD_1 : in STD_LOGIC; -- crate 1
150 Bus2_TxD_1 : out STD_LOGIC;
151
152 Bus2_RxD_2 : in STD_LOGIC; -- crate 2
153 Bus2_TxD_2 : out STD_LOGIC;
154
155 Bus2_RxD_3 : in STD_LOGIC; -- crate 3
156 Bus2_TxD_3 : out STD_LOGIC;
157
158
159 -- auxiliary access
160 -- Aux_Rx_D : in STD_LOGIC;
161 -- Aux_Tx_D : out STD_LOGIC;
162 -- Aux_Rx_En : out STD_LOGIC; -- Rx- and Tx enable
163 -- Aux_Tx_En : out STD_LOGIC; -- also for auxiliary Trigger-ID
164
165
166 -- auxiliary Trigger-ID (i.e. to send the Trigger-ID to the counting hut/house/container)
167 -- TrID_Rx_D : in STD_LOGIC;
168 -- TrID_Tx_D : out STD_LOGIC;
169
170
171 -- Crate-Resets
172 -- on IO-Bank 3
173 -------------------------------------------------------------------------------
174 Crate_Res0 : out STD_LOGIC;
175 Crate_Res1 : out STD_LOGIC;
176 Crate_Res2 : out STD_LOGIC;
177 Crate_Res3 : out STD_LOGIC;
178
179
180 -- Busy signals from the FAD boards
181 -- on IO-Bank 3
182 -------------------------------------------------------------------------------
183 Busy0 : in STD_LOGIC;
184 Busy1 : in STD_LOGIC;
185 Busy2 : in STD_LOGIC;
186 Busy3 : in STD_LOGIC;
187
188
189 -- NIM outputs
190 -- on IO-Bank 0
191 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
192 -------------------------------------------------------------------------------
193 -- calibration
194 -- Cal_NIM1_p : out STD_LOGIC; -- Cal_NIM1+
195 -- Cal_NIM1_n : out STD_LOGIC; -- Cal_NIM1-
196 -- Cal_NIM2_p : out STD_LOGIC; -- Cal_NIM2+
197 -- Cal_NIM2_n : out STD_LOGIC; -- Cal_NIM2-
198
199 -- auxiliarry / spare NIM outputs
200 -- NIM_Out0_p : out STD_LOGIC; -- NIM_Out0+
201 -- NIM_Out0_n : out STD_LOGIC; -- NIM_Out0-
202 -- NIM_Out1_p : out STD_LOGIC; -- NIM_Out1+
203 -- NIM_Out1_n : out STD_LOGIC; -- NIM_Out1-
204
205
206 -- fast control signal outputs
207 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
208 -------------------------------------------------------------------------------
209 RES_p : out STD_LOGIC; -- RES+ Reset
210 RES_n : out STD_LOGIC; -- RES- IO-Bank 0
211
212 TRG_p : out STD_LOGIC; -- TRG+ Trigger
213 TRG_n : out STD_LOGIC; -- TRG- IO-Bank 0
214
215 TIM_Run_p : out STD_LOGIC; -- TIM_Run+ Time Marker
216 TIM_Run_n : out STD_LOGIC; -- TIM_Run- IO-Bank 2
217 TIM_Sel : out STD_LOGIC; -- Time Marker selector on IO-Bank 2
218
219 -- CLD_FPGA : in STD_LOGIC; -- DRS-Clock feedback into FPGA
220
221
222 -- LVDS calibration outputs
223 -- on IO-Bank 0
224 -------------------------------------------------------------------------------
225 -- to connector J13
226 -- for light pulsar in the mirror dish
227 Cal_0_p : out STD_LOGIC;
228 Cal_0_n : out STD_LOGIC;
229 Cal_1_p : out STD_LOGIC;
230 Cal_1_n : out STD_LOGIC;
231 Cal_2_p : out STD_LOGIC;
232 Cal_2_n : out STD_LOGIC;
233 Cal_3_p : out STD_LOGIC;
234 Cal_3_n : out STD_LOGIC;
235
236 -- to connector J12
237 -- for light pulsar inside shutter
238 Cal_4_p : out STD_LOGIC;
239 Cal_4_n : out STD_LOGIC;
240 Cal_5_p : out STD_LOGIC;
241 Cal_5_n : out STD_LOGIC;
242 Cal_6_p : out STD_LOGIC;
243 Cal_6_n : out STD_LOGIC;
244 Cal_7_p : out STD_LOGIC;
245 Cal_7_n : out STD_LOGIC
246
247
248 -- Testpoints
249 -------------------------------------------------------------------------------
250 -- TP : inout STD_LOGIC_VECTOR(32 downto 0);
251 -- TP_in : in STD_LOGIC_VECTOR(34 downto 33); -- input only
252
253 -- Board ID - inputs
254 -- local board-ID "solder programmable"
255 -- all on 'input only' pins
256 -------------------------------------------------------------------------------
257 -- brd_id : in STD_LOGIC_VECTOR(7 downto 0) -- input only
258
259 );
260end FTM_top;
261
262architecture Behavioral of FTM_top is
263
264begin
265
266end Behavioral;
267
268
269
270
Note: See TracBrowser for help on using the repository browser.