source: firmware/FTM/FTM_top_tb.vhd@ 20068

Last change on this file since 20068 was 10879, checked in by weitzel, 14 years ago
FTM: new light pulser interface, new timing constraint in .ucf file
File size: 21.7 KB
Line 
1--------------------------------------------------------------------------------
2-- Company: ETH Zurich, Institute for Particle Physics
3-- Engineer: Q. Weitzel, P. Vogler
4--
5-- Create Date: 08.12.2010
6-- Design Name:
7-- Module Name: FTM_top_tb.vhd
8-- Project Name:
9-- Target Device:
10-- Tool versions:
11-- Description: Testbench for FTM firmware
12--
13-- VHDL Test Bench Created by ISE for module: FTM_top
14--
15-- Dependencies:
16--
17-- Revision:
18-- Revision 0.01 - File Created
19-- Additional Comments:
20--
21-- Notes:
22-- This testbench has been automatically generated using types std_logic and
23-- std_logic_vector for the ports of the unit under test. Xilinx recommends
24-- that these types always be used for the top-level I/O of a design in order
25-- to guarantee that the testbench will bind correctly to the post-implementation
26-- simulation model.
27--------------------------------------------------------------------------------
28library IEEE;
29use IEEE.STD_LOGIC_1164.ALL;
30use IEEE.STD_LOGIC_UNSIGNED.ALL;
31use IEEE.NUMERIC_STD.ALL;
32
33library UNISIM;
34use UNISIM.VComponents.all;
35
36entity FTM_top_tb is
37end FTM_top_tb;
38
39architecture behavior of FTM_top_tb is
40
41 -- Component Declaration for the Unit Under Test (UUT)
42
43 component FTM_top
44 port(
45
46 -- Clock
47 clk : IN STD_LOGIC; -- external clock from oscillator U47
48
49 -- connection to the WIZnet W5300 ethernet controller
50 -------------------------------------------------------------------------------
51 -- W5300 data bus
52 W_D : inout STD_LOGIC_VECTOR(15 downto 0); -- 16-bit data bus to W5300
53
54 -- W5300 address bus
55 W_A : out STD_LOGIC_VECTOR(9 downto 0); -- there is no real net W_A0 because
56 -- the W5300 is operated in the
57 -- 16-bit mode
58 -- -> W_A<0> assigned to unconnected pin
59
60 -- W5300 control signals
61 -- the signals W_INT, W_RD, W_WR and W_RES also go to testpoints T17
62 -- W_CS is also routed to testpoint JP7
63 W_CS : out STD_LOGIC; -- W5300 chip select
64 W_INT : IN STD_LOGIC; -- interrupt
65 W_RD : out STD_LOGIC; -- read
66 W_WR : out STD_LOGIC; -- write
67 W_RES : out STD_LOGIC; -- reset W5300 chip
68
69 -- W5300 buffer ready indicator
70 -- W_BRDY : in STD_LOGIC_VECTOR(3 downto 0);
71
72 -- testpoints (T18) associated with the W5300
73 -- W_T : inout STD_LOGIC_VECTOR(3 downto 0);
74
75
76 -- SPI Interface
77 -- connection to the EEPROM U36 (AL25L016M) and
78 -- temperature sensors U45, U46, U48 and U49 (all MAX6662)
79 -------------------------------------------------------------------------------
80 -- S_CLK : out STD_LOGIC; -- SPI clock
81
82 -- EEPROM
83 -- MOSI : out STD_LOGIC; -- master out slave in
84 -- MISO : in STD_LOGIC; -- master in slave out
85 -- EE_CS : out STD_LOGIC; -- EEPROM chip select
86
87 -- temperature sensors U45, U46, U48 and U49
88 -- SIO : inout STD_LOGIC; -- serial IO
89 -- TS_CS : out STD_LOGIC_VECTOR(3 downto 0); -- temperature sensors chip select
90
91
92 -- Trigger primitives inputs
93 -------------------------------------------------------------------------------
94 Trig_Prim_A : in STD_LOGIC_VECTOR(9 downto 0); -- crate 0
95 Trig_Prim_B : in STD_LOGIC_VECTOR(9 downto 0); -- crate 1
96 Trig_Prim_C : in STD_LOGIC_VECTOR(9 downto 0); -- crate 2
97 Trig_Prim_D : in STD_LOGIC_VECTOR(9 downto 0); -- crate 3
98
99
100 -- NIM inputs
101 ------------------------------------------------------------------------------
102 ext_Trig : in STD_LOGIC_VECTOR(2 downto 1); -- external trigger input
103 Veto : in STD_LOGIC; -- trigger veto input
104 -- NIM_In : in STD_LOGIC_VECTOR(2 downto 0); -- auxiliary inputs
105
106 -- alternative external clock input for FPGA
107 -- NIM_In3_GCLK : in STD_LOGIC; -- input with global clock buffer available
108
109
110 -- LEDs
111 -------------------------------------------------------------------------------
112 LED_red : out STD_LOGIC_VECTOR(3 downto 0); -- red
113 LED_ye : out STD_LOGIC_VECTOR(1 downto 0); -- yellow
114 LED_gn : out STD_LOGIC_VECTOR(1 downto 0); -- green
115
116
117 -- Clock conditioner LMK03000
118 -------------------------------------------------------------------------------
119 CLK_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface serial clock
120 LE_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface latch enable
121 DATA_Clk_Cond : out STD_LOGIC; -- MICROWIRE interface data
122
123 SYNC_Clk_Cond : out STD_LOGIC; -- global clock synchronization
124 LD_Clk_Cond : in STD_LOGIC; -- lock detect, should be checked for
125
126
127 -- various RS-485 Interfaces
128 -------------------------------------------------------------------------------
129 -- Bus 1: FTU slow control
130 Bus1_Tx_En : out STD_LOGIC; -- bus 1: transmitter enable
131 Bus1_Rx_En : out STD_LOGIC; -- bus 1: receiver enable
132
133 Bus1_RxD_0 : in STD_LOGIC; -- crate 0
134 Bus1_TxD_0 : out STD_LOGIC;
135
136 Bus1_RxD_1 : in STD_LOGIC; -- crate 1
137 Bus1_TxD_1 : out STD_LOGIC;
138
139 Bus1_RxD_2 : in STD_LOGIC; -- crate 2
140 Bus1_TxD_2 : out STD_LOGIC;
141
142 Bus1_RxD_3 : in STD_LOGIC; -- crate 3
143 Bus1_TxD_3 : out STD_LOGIC;
144
145
146 -- Bus 2: Trigger-ID to FAD boards
147 Bus2_Tx_En : out STD_LOGIC; -- bus 2: transmitter enable
148 Bus2_Rx_En : out STD_LOGIC; -- bus 2: receiver enable
149
150 Bus2_RxD_0 : in STD_LOGIC; -- crate 0
151 Bus2_TxD_0 : out STD_LOGIC;
152
153 Bus2_RxD_1 : in STD_LOGIC; -- crate 1
154 Bus2_TxD_1 : out STD_LOGIC;
155
156 Bus2_RxD_2 : in STD_LOGIC; -- crate 2
157 Bus2_TxD_2 : out STD_LOGIC;
158
159 Bus2_RxD_3 : in STD_LOGIC; -- crate 3
160 Bus2_TxD_3 : out STD_LOGIC;
161
162
163 -- auxiliary access
164 -- Aux_Rx_D : in STD_LOGIC;
165 -- Aux_Tx_D : out STD_LOGIC;
166 -- Aux_Rx_En : out STD_LOGIC; -- Rx- and Tx enable
167 -- Aux_Tx_En : out STD_LOGIC; -- also for auxiliary Trigger-ID
168
169
170 -- auxiliary Trigger-ID (i.e. to send the Trigger-ID to the counting hut/house/container)
171 -- TrID_Rx_D : in STD_LOGIC;
172 -- TrID_Tx_D : out STD_LOGIC;
173
174
175 -- Crate-Resets
176 -------------------------------------------------------------------------------
177 Crate_Res0 : out STD_LOGIC;
178 Crate_Res1 : out STD_LOGIC;
179 Crate_Res2 : out STD_LOGIC;
180 Crate_Res3 : out STD_LOGIC;
181
182
183 -- Busy signals from the FAD boards
184 -------------------------------------------------------------------------------
185 Busy0 : in STD_LOGIC;
186 Busy1 : in STD_LOGIC;
187 Busy2 : in STD_LOGIC;
188 Busy3 : in STD_LOGIC;
189
190
191 -- NIM outputs
192 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
193 -------------------------------------------------------------------------------
194 -- calibration
195 -- Cal_NIM1_p : out STD_LOGIC; -- Cal_NIM1+
196 -- Cal_NIM1_n : out STD_LOGIC; -- Cal_NIM1-
197 -- Cal_NIM2_p : out STD_LOGIC; -- Cal_NIM2+
198 -- Cal_NIM2_n : out STD_LOGIC; -- Cal_NIM2-
199
200 -- auxiliarry / spare NIM outputs
201 -- NIM_Out0_p : out STD_LOGIC; -- NIM_Out0+
202 -- NIM_Out0_n : out STD_LOGIC; -- NIM_Out0-
203 -- NIM_Out1_p : out STD_LOGIC; -- NIM_Out1+
204 -- NIM_Out1_n : out STD_LOGIC; -- NIM_Out1-
205
206
207 -- fast control signal outputs
208 -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
209 -------------------------------------------------------------------------------
210 RES_p : out STD_LOGIC; -- RES+ Reset
211 RES_n : out STD_LOGIC; -- RES-
212
213 TRG_p : out STD_LOGIC; -- TRG+ Trigger
214 TRG_n : out STD_LOGIC; -- TRG-
215
216 TIM_Run_p : out STD_LOGIC; -- TIM_Run+ Time Marker
217 TIM_Run_n : out STD_LOGIC; -- TIM_Run-
218 TIM_Sel : out STD_LOGIC; -- Time Marker selector
219
220 -- CLD_FPGA : in STD_LOGIC; -- DRS-Clock feedback into FPGA
221
222
223 -- LVDS calibration outputs
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 );
260 end component;
261
262 --Inputs
263 signal clk_sig : STD_LOGIC := '0';
264 signal W_INT_sig : STD_LOGIC := '0';
265 signal W_BRDY_sig : STD_LOGIC_VECTOR(3 downto 0) := (others => '0');
266 signal Trig_Prim_A_sig : STD_LOGIC_VECTOR(9 downto 0) := (others => '0');
267 signal Trig_Prim_B_sig : STD_LOGIC_VECTOR(9 downto 0) := (others => '0');
268 signal Trig_Prim_C_sig : STD_LOGIC_VECTOR(9 downto 0) := (others => '0');
269 signal Trig_Prim_D_sig : STD_LOGIC_VECTOR(9 downto 0) := (others => '0');
270 signal ext_Trig_sig : STD_LOGIC_VECTOR(2 downto 1) := (others => '0');
271 signal Veto_sig : STD_LOGIC := '0';
272 signal NIM_In_sig : STD_LOGIC_VECTOR(2 downto 0) := (others => '0');
273 signal NIM_In3_GCLK_sig : STD_LOGIC := '0';
274 signal LD_Clk_Cond_sig : STD_LOGIC := '1';
275 signal Bus1_RxD_0_sig : STD_LOGIC := '1';
276 signal Bus1_RxD_1_sig : STD_LOGIC := '1';
277 signal Bus1_RxD_2_sig : STD_LOGIC := '1';
278 signal Bus1_RxD_3_sig : STD_LOGIC := '1';
279 signal Bus2_RxD_0_sig : STD_LOGIC := '1';
280 signal Bus2_RxD_1_sig : STD_LOGIC := '1';
281 signal Bus2_RxD_2_sig : STD_LOGIC := '1';
282 signal Bus2_RxD_3_sig : STD_LOGIC := '1';
283 signal Busy0_sig : STD_LOGIC := '0';
284 signal Busy1_sig : STD_LOGIC := '0';
285 signal Busy2_sig : STD_LOGIC := '0';
286 signal Busy3_sig : STD_LOGIC := '0';
287
288 --Input/Output Pins
289 signal W_D_sig : STD_LOGIC_VECTOR(15 downto 0) := (others => '0');
290 signal W_T_sig : STD_LOGIC_VECTOR(3 downto 0) := (others => '0');
291 signal SIO_sig : STD_LOGIC := '0';
292 signal TP_sig : STD_LOGIC_VECTOR(32 downto 0) := (others => '0');
293
294 --Outputs
295 signal W_A_sig : STD_LOGIC_VECTOR(9 downto 0);
296 signal W_CS_sig : STD_LOGIC;
297 signal W_RD_sig : STD_LOGIC;
298 signal W_WR_sig : STD_LOGIC;
299 signal W_RES_sig : STD_LOGIC;
300 signal S_CLK_sig : STD_LOGIC;
301 signal TS_CS_sig : STD_LOGIC_VECTOR(3 downto 0);
302 signal LED_red_sig : STD_LOGIC_VECTOR(3 downto 0);
303 signal LED_ye_sig : STD_LOGIC_VECTOR(1 downto 0);
304 signal LED_gn_sig : STD_LOGIC_VECTOR(1 downto 0);
305 signal CLK_Clk_Cond_sig : STD_LOGIC;
306 signal LE_Clk_Cond_sig : STD_LOGIC;
307 signal DATA_Clk_Cond_sig : STD_LOGIC;
308 signal SYNC_Clk_Cond_sig : STD_LOGIC;
309 signal Bus1_Tx_En_sig : STD_LOGIC;
310 signal Bus1_Rx_En_sig : STD_LOGIC;
311 signal Bus1_TxD_0_sig : STD_LOGIC;
312 signal Bus1_TxD_1_sig : STD_LOGIC;
313 signal Bus1_TxD_2_sig : STD_LOGIC;
314 signal Bus1_TxD_3_sig : STD_LOGIC;
315 signal Bus2_Tx_En_sig : STD_LOGIC;
316 signal Bus2_Rx_En_sig : STD_LOGIC;
317 signal Bus2_TxD_0_sig : STD_LOGIC;
318 signal Bus2_TxD_1_sig : STD_LOGIC;
319 signal Bus2_TxD_2_sig : STD_LOGIC;
320 signal Bus2_TxD_3_sig : STD_LOGIC;
321 signal Crate_Res0_sig : STD_LOGIC;
322 signal Crate_Res1_sig : STD_LOGIC;
323 signal Crate_Res2_sig : STD_LOGIC;
324 signal Crate_Res3_sig : STD_LOGIC;
325 signal RES_p_sig : STD_LOGIC;
326 signal RES_n_sig : STD_LOGIC;
327 signal TRG_p_sig : STD_LOGIC;
328 signal TRG_n_sig : STD_LOGIC;
329 signal TIM_Run_p_sig : STD_LOGIC;
330 signal TIM_Run_n_sig : STD_LOGIC;
331 signal TIM_Sel_sig : STD_LOGIC;
332 signal Cal_0_p_sig : STD_LOGIC;
333 signal Cal_0_n_sig : STD_LOGIC;
334 signal Cal_1_p_sig : STD_LOGIC;
335 signal Cal_1_n_sig : STD_LOGIC;
336 signal Cal_2_p_sig : STD_LOGIC;
337 signal Cal_2_n_sig : STD_LOGIC;
338 signal Cal_3_p_sig : STD_LOGIC;
339 signal Cal_3_n_sig : STD_LOGIC;
340 signal Cal_4_p_sig : STD_LOGIC;
341 signal Cal_4_n_sig : STD_LOGIC;
342 signal Cal_5_p_sig : STD_LOGIC;
343 signal Cal_5_n_sig : STD_LOGIC;
344 signal Cal_6_p_sig : STD_LOGIC;
345 signal Cal_6_n_sig : STD_LOGIC;
346 signal Cal_7_p_sig : STD_LOGIC;
347 signal Cal_7_n_sig : STD_LOGIC;
348
349 -- Clock period definitions
350 constant clk_period : TIME := 25 ns; -- 40 MHZ oscillator U47
351 --constant baud_rate_period : TIME := 4 us; -- 250 kHz baud rate
352 constant baud_rate_period : TIME := 100 ns; -- 10 MHz baud rate
353
354begin
355
356 -- Instantiate the Unit Under Test (UUT)
357 uut: FTM_top
358 port map(
359 clk => clk_sig,
360 W_D => W_D_sig,
361 W_A => W_A_sig,
362 W_CS => W_CS_sig,
363 W_INT => W_INT_sig,
364 W_RD => W_RD_sig,
365 W_WR => W_WR_sig,
366 W_RES => W_RES_sig,
367-- W_BRDY => W_BRDY_sig,
368-- W_T => W_T_sig,
369-- S_CLK => S_CLK_sig,
370-- SIO => SIO_sig,
371-- TS_CS => TS_CS_sig,
372 Trig_Prim_A => Trig_Prim_A_sig,
373 Trig_Prim_B => Trig_Prim_B_sig,
374 Trig_Prim_C => Trig_Prim_C_sig,
375 Trig_Prim_D => Trig_Prim_D_sig,
376 ext_Trig => ext_Trig_sig,
377 Veto => Veto_sig,
378-- NIM_In => NIM_In_sig,
379-- NIM_In3_GCLK => NIM_In3_GCLK_sig,
380 LED_red => LED_red_sig,
381 LED_ye => LED_ye_sig,
382 LED_gn => LED_gn_sig,
383 CLK_Clk_Cond => CLK_Clk_Cond_sig,
384 LE_Clk_Cond => LE_Clk_Cond_sig,
385 DATA_Clk_Cond => DATA_Clk_Cond_sig,
386 SYNC_Clk_Cond => SYNC_Clk_Cond_sig,
387 LD_Clk_Cond => LD_Clk_Cond_sig,
388 Bus1_Tx_En => Bus1_Tx_En_sig,
389 Bus1_Rx_En => Bus1_Rx_En_sig,
390 Bus1_RxD_0 => Bus1_RxD_0_sig,
391 Bus1_TxD_0 => Bus1_TxD_0_sig,
392 Bus1_RxD_1 => Bus1_RxD_1_sig,
393 Bus1_TxD_1 => Bus1_TxD_1_sig,
394 Bus1_RxD_2 => Bus1_RxD_2_sig,
395 Bus1_TxD_2 => Bus1_TxD_2_sig,
396 Bus1_RxD_3 => Bus1_RxD_3_sig,
397 Bus1_TxD_3 => Bus1_TxD_3_sig,
398 Bus2_Tx_En => Bus2_Tx_En_sig,
399 Bus2_Rx_En => Bus2_Rx_En_sig,
400 Bus2_RxD_0 => Bus2_RxD_0_sig,
401 Bus2_TxD_0 => Bus2_TxD_0_sig,
402 Bus2_RxD_1 => Bus2_RxD_1_sig,
403 Bus2_TxD_1 => Bus2_TxD_1_sig,
404 Bus2_RxD_2 => Bus2_RxD_2_sig,
405 Bus2_TxD_2 => Bus2_TxD_2_sig,
406 Bus2_RxD_3 => Bus2_RxD_3_sig,
407 Bus2_TxD_3 => Bus2_TxD_3_sig,
408 Crate_Res0 => Crate_Res0_sig,
409 Crate_Res1 => Crate_Res1_sig,
410 Crate_Res2 => Crate_Res2_sig,
411 Crate_Res3 => Crate_Res3_sig,
412 Busy0 => Busy0_sig,
413 Busy1 => Busy1_sig,
414 Busy2 => Busy2_sig,
415 Busy3 => Busy3_sig,
416 RES_p => RES_p_sig,
417 RES_n => RES_n_sig,
418 TRG_p => TRG_p_sig,
419 TRG_n => TRG_n_sig,
420 TIM_Run_p => TIM_Run_p_sig,
421 TIM_Run_n => TIM_Run_n_sig,
422 TIM_Sel => TIM_Sel_sig,
423 Cal_0_p => Cal_0_p_sig,
424 Cal_0_n => Cal_0_n_sig,
425 Cal_1_p => Cal_1_p_sig,
426 Cal_1_n => Cal_1_n_sig,
427 Cal_2_p => Cal_2_p_sig,
428 Cal_2_n => Cal_2_n_sig,
429 Cal_3_p => Cal_3_p_sig,
430 Cal_3_n => Cal_3_n_sig,
431 Cal_4_p => Cal_4_p_sig,
432 Cal_4_n => Cal_4_n_sig,
433 Cal_5_p => Cal_5_p_sig,
434 Cal_5_n => Cal_5_n_sig,
435 Cal_6_p => Cal_6_p_sig,
436 Cal_6_n => Cal_6_n_sig,
437 Cal_7_p => Cal_7_p_sig,
438 Cal_7_n => Cal_7_n_sig,
439 TP => TP_sig
440 );
441
442 -- Stimulus process for clock
443 clk_proc: process
444 begin
445 clk_sig <= '0';
446 wait for clk_period/2;
447 clk_sig <= '1';
448 wait for clk_period/2;
449 end process clk_proc;
450
451 -- Stimulus process for busy signals
452 busy_proc: process
453 begin
454 wait for 500us;
455 Busy0_sig <= '1';
456 wait for 100us;
457 Busy0_sig <= '0';
458-- wait for 1ms;
459-- Busy0_sig <= '1';
460-- wait for 500us;
461-- Busy0_sig <= '0';
462 wait;
463 end process busy_proc;
464
465 -- Stimulus process for trigger
466 trigger_proc: process
467 begin
468 ---------------------------------------------------------------------------
469 -- FTUs not yet initialized
470 ---------------------------------------------------------------------------
471 wait for 10us;
472 Trig_Prim_A_sig(0) <= '1';
473 wait for 100ns;
474 Trig_Prim_A_sig(0) <= '0';
475 wait for 99us;
476 Trig_Prim_B_sig(0) <= '1';
477 wait for 100ns;
478 Trig_Prim_B_sig(0) <= '0';
479 wait for 1us;
480 Trig_Prim_B_sig(0) <= '1';
481 wait for 100ns;
482 Trig_Prim_B_sig(0) <= '0';
483 ---------------------------------------------------------------------------
484 -- now FTUs are initialized
485 ---------------------------------------------------------------------------
486 wait for 2200us;
487 Trig_Prim_A_sig(0) <= '1';
488 Trig_Prim_B_sig(0) <= '1';
489 wait for 100ns;
490 Trig_Prim_A_sig(0) <= '0';
491 Trig_Prim_B_sig(0) <= '0';
492 wait for 4us;
493 Trig_Prim_A_sig(0) <= '1';
494 wait for 100ns;
495 Trig_Prim_A_sig(0) <= '0';
496 wait for 22us;
497 Trig_Prim_B_sig(0) <= '1';
498 wait for 100ns;
499 Trig_Prim_B_sig(0) <= '0';
500 wait;
501 end process trigger_proc;
502
503 -- Stimulus process for RS485 of crate 0
504 rs485_0_proc: process
505
506 procedure assign_rs485_0 (data: std_logic_vector(7 downto 0)) is
507 begin
508 Bus1_RxD_0_sig <= '0'; --start bit
509 wait for baud_rate_period;
510 Bus1_RxD_0_sig <= data(0); --bit 0
511 wait for baud_rate_period;
512 Bus1_RxD_0_sig <= data(1); --bit 1
513 wait for baud_rate_period;
514 Bus1_RxD_0_sig <= data(2); --bit 2
515 wait for baud_rate_period;
516 Bus1_RxD_0_sig <= data(3); --bit 3
517 wait for baud_rate_period;
518 Bus1_RxD_0_sig <= data(4); --bit 4
519 wait for baud_rate_period;
520 Bus1_RxD_0_sig <= data(5); --bit 5
521 wait for baud_rate_period;
522 Bus1_RxD_0_sig <= data(6); --bit 6
523 wait for baud_rate_period;
524 Bus1_RxD_0_sig <= data(7); --bit 7
525 wait for baud_rate_period;
526 Bus1_RxD_0_sig <= '1'; --stop bit
527 wait for baud_rate_period;
528 Bus1_RxD_0_sig <= '1'; --stop bit
529 wait for baud_rate_period;
530 end assign_rs485_0;
531
532 begin
533 ---------------------------------------------------------------------------
534 -- time of FTU answer
535 ---------------------------------------------------------------------------
536 wait for 1.24ms;
537 ---------------------------------------------------------------------------
538 -- data package of FTU answer (28 byte)
539 ---------------------------------------------------------------------------
540 assign_rs485_0(X"40"); --start delimiter
541 wait for 0us;
542 assign_rs485_0(X"C0"); --FTM address
543 wait for 0ns;
544 assign_rs485_0(X"00"); --FTU address
545 wait for 0ns;
546 assign_rs485_0(X"01"); --FTM firmware ID
547 wait for 0ns;
548 assign_rs485_0(X"02"); --instruction
549 wait for 0us;
550 assign_rs485_0(X"00"); --data byte 01
551 wait for 0ns;
552 assign_rs485_0(X"F0"); --data byte 02
553 wait for 0ns;
554 assign_rs485_0(X"00"); --data byte 03
555 wait for 0ns;
556 assign_rs485_0(X"00"); --data byte 04
557 wait for 0ns;
558 assign_rs485_0(X"00"); --data byte 05
559 wait for 0ns;
560 assign_rs485_0(X"00"); --data byte 06
561 wait for 0ns;
562 assign_rs485_0(X"00"); --data byte 07
563 wait for 0ns;
564 assign_rs485_0(X"00"); --data byte 08
565 wait for 0ns;
566 assign_rs485_0(X"00"); --data byte 09
567 wait for 0ns;
568 assign_rs485_0(X"00"); --data byte 10
569 wait for 0ns;
570 assign_rs485_0(X"00"); --data byte 11
571 wait for 0ns;
572 assign_rs485_0(X"00"); --data byte 12
573 wait for 0ns;
574 assign_rs485_0(X"00"); --data byte 13
575 wait for 0ns;
576 assign_rs485_0(X"00"); --data byte 14
577 wait for 0ns;
578 assign_rs485_0(X"00"); --data byte 15
579 wait for 0ns;
580 assign_rs485_0(X"00"); --data byte 16
581 wait for 0ns;
582 assign_rs485_0(X"00"); --data byte 17
583 wait for 0ns;
584 assign_rs485_0(X"00"); --data byte 18
585 wait for 0ns;
586 assign_rs485_0(X"00"); --data byte 19
587 wait for 0ns;
588 assign_rs485_0(X"00"); --data byte 20
589 wait for 0ns;
590 assign_rs485_0(X"00"); --data byte 21
591 wait for 0ns;
592 assign_rs485_0(X"00"); --CRC error counter (not used)
593 wait for 0ns;
594 assign_rs485_0(X"98"); --check sum for rates
595 --assign_rs485_0(X"A5"); --check sum for ping
596 ---------------------------------------------------------------------------
597 -- don't forget final wait!
598 ---------------------------------------------------------------------------
599 wait;
600
601 end process rs485_0_proc;
602
603end;
Note: See TracBrowser for help on using the repository browser.