Update Firmware using AMC13Tool2
Make sure that you have the latest firmware files for both the Spartan and Kintex chips by downloading the latest '.mcs' files from
here
. To be safe, download all of the MCS files for the latest versions (the tool will pick the correct file where there is more than one choice). Put the firmware files in your current directory.
Use the
pk command to program the T1 (Kintex) and
ps to program the T2 (Spartan). Then use
reconfigureFPGAs to force a reload from flash.
Here is an example session where we program the Kintex and Spartan and then reload:
[ehazen@cms1 amc13_mcs]$ ../tools/bin/AMC13Tool2.exe -c ../amc13/etc/amc13/connectionSN43.xml
Using AMC13 software ver:30757
>fv # check current firmware versions
Connected AMC13s
*0: SN: 43 T1v: 0209 T2v: 0021 cf: ../amc13/etc/amc13/connectionSN43.xml
>pk # program the Kintex
chip_type not specified, using default from serial number...
Searching for files with T1 and 7K325T...
1. AMC13T1v0x020d_7k325t.mcs
Enter number for MCS file to select (0 to exit): 1
Programming against file: AMC13T1v0x020d_7k325t.mcs...
Programming AMC13T1v0x020d_7k325t.mcs to flash address 0x400000...
Erasing flash sector at address 0x400000
Erasing flash sector at address 0x440000
...
programming flash at address 0xee9e00
programming flash at address 0xe2e700 % done = 6
programming flash at address 0xd72f00 % done = 13
...
programming flash at address 0x564700 % done = 87
programming flash at address 0x4a8f00 % done = 94
>ps # program the Spartan
chip_type not specified, using default from serial number...
Searching for files with T2, and 6SLX25T...
1. AMC13T2v0x0021_6slx25t.mcs
Enter number for MCS file to select (0 to exit): 1
Programming against file: AMC13T2v0x0021_6slx25t.mcs...
Programming AMC13T2v0x0021_6slx25t.mcs to flash address 0x200000...
Erasing flash sector at address 0x200000
Erasing flash sector at address 0x240000
...
programming flash at address 0x2c3b00
programming flash at address 0x208400 % done = 97
>reconfigureFPGAs # force reload from flash
Best exit/restart tool after 10s or so
>q
[ehazen@cms1 amc13_mcs]$ ../tools/bin/AMC13Tool2.exe -c ../amc13/etc/amc13/connectionSN43.xml
Using AMC13 software ver:30757
>fv # check versions again
Connected AMC13s
*0: SN: 43 T1v: 020d T2v: 0021 cf: ../amc13/etc/amc13/connectionSN43.xml
>
Initialize AMC13
- Before enabling your AMC13, it is a good idea to reset both chips and all counters:
Pick an action (h for menu): rg
*** Both chips have been issued a reset ***
Pick an action (h for menu): rc
*** Virtex Counters have been issued a reset ***
- To enable the AMC13 from a list of inputs, use the command
'i'
followed by the list of inputs to be enabled and a set of desired initialization conditions (which are specified here).
- Check the status of the AMC13 counters and Control registers. It should look something like this (but not exactly):
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 0300000b
DAQ Link Down
DAQ Link Almost Full
Monitor Buffer Empty
Control 1: 00174001
MonBuff full stops EVB
Run Mode
AMC Link Status: 04100410
AMC Enabled Inputs: 04, 10
AMC Input links locked: 04, 10
AMC Port Status: 0be90000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 03, 05, 06, 07, 08, 09, 11
EVB Counters:
LSCDAQ status [001b]: 000031ac
Run time [0048]: 00000000 04307312
Ready time [004a]: 00000000 0430ab94
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
AMC Counters:
<---Link 04-----> <---Link 10----->
AMC Ctr ACK [000e]: 00000000 00000860 00000000 00000861
Resend [004a]: 00000000 00000001 00000000 00000001
Ctr Accept [004e]: 00000000 0000086b 00000000 0000086c
AMC13 ACK [0050]: 00000000 00000001 00000000 00000001
- As you can see, 'Run Mode' is enabled and our 'Run time' counter is ticking away. We are now ready to accept triggers and create events
- A complete list and description of the AMC13 registers, counters, and control bits can be found here
Send Local L1As
- Make sure that the proper functionalities are enabled on the AMC13
- Send Periodic Local L1As
- Set the Orbit/Bunch-count/random Number spacing between L1A generations.
- Enable local L1As:
Pick an action (h for menu): lt e
You should now see the AMC13 L1A counter (register 0x46) incrementing
- To disable periodically generated local L1As:
Pick an action (h for menu): lt d
The AMC13 L1A counter should now stop incrementing
- Send Single non-periodic L1As
- Use the lt command followed by the number of non-periodic triggers you want to send (default to 1):
Pick an action (h for menu): lt 100
Sending Data Over the DAQLink
Recipe based on Mr. Wu instructions and spec file:
AMC13XG_DAQLDCK0xfbS0x1c.txt
(the file name has T2 with version 0x1c, but use the latest T2, which as of 2014/8/8 is 0x21)
- Make sure receiving and sending boards have up-to-date firmware
- Receiving boards needs special DAQLDC firmware
- (various firmware include these special firmware located in Wu's Directory
) (as of July 10,2014 the latest DAQLDC firmware: AMC13T1v0x00fb_7k325t.mcs
)
- Sending board should have latest "normal" firmware
- Connect hardware correctly
- The DAQ Link optical fiber cable should be connected to the SFP slot on the sending AMC13 module (in this example SFP2 slot, 3rd from top, may be labelled DAQ2 or Spare) (NOTE: in xdaq software 12.0.1 or newer SFP0 (top) will be automatically enable, so please us that)
- If an AMC13 is also being used as the receiving module, the other end of the DAQ Link optical fiber cable should be connected to the SFP0 (top slot, may be labelled DAQ0 or DAQ1) on that receiving AMC13 module
- The sender module should also be setup to receive triggers and build events. The below example will use internal L1As and fake events, so you will only need to have a loopback in the TTC SFP (in order to send L1As to itself).
- Initialize your sender AMC13 (detailed information found here) with the
'd'
flag (in addition to other desired init flags) to enable the DAQ link. For example:
Pick an action (h for menu): en 0-11 f t l d
Enabling AMC inputs from list: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
Link status: 04100fff
Enable DAQ Link
Enable Fake Event Generator
Enable Local TTC Input Signal
Enable Local L1A generation
'CONTROL1': 00208187
- (sender) Enable SFP that is connected (in this example SFP2) (NOTE: in the newest xdaq software 12.0.1, SFP0 is automatically enable w/ 'd' option from above command):
Pick an action (h for menu): wv 3 0x4fff
Writing to T1:
00000003: 00004fff
- Reload the receiver AMC13 firmware to reset defaults (DAQLDC enable and run mode on)
Pick an action (h for menu): L
WARNING: you are about to reconfigure both spartan and virtex from flash memory. Are you sure? (y) y
- If you check register address 1 now, the lowest two bits should be set (hex digit 3):
Pick an action (h for menu): rv 1
Reading T1:
00000001: 00fb0003
- (receiver) Enable SFP that is connected (in this example top SFP, SFP0):
Pick an action (h for menu): wv 3 0x1000
Writing to T1:
00000003: 00001000
- Reset receiver AMC13 then reset sender AMC13: (In receiver):
Pick an action (h for menu): wv 0 1
(Now do the same for the sender)
- (In receiver AMC13) Setup SFP for receiving
wv 0x80 0x80010006
wv 0x81 0
- At this point, if everything has been setup correctly, you can check the DAQlink is up in the sender module (first hex digit in reg address 0x3 should no longer read 0x7):
rv 0x3
Reading T1:
00000003: 30003fff
(The left most hex digit (3) in this example signifies that SFP2 is up [bits are set if links are down])
- (sender) Send triggers (example sending 5 L1As):
Pick an action (h for menu): lt 5
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 5d000000
Control 1: 01090187
TTS out is TTC signal out
Create fake event at L1A
Generate Internal L1A
DAQ Link Enabled
Run Mode
AMC Link Status: 30001fff
AMC13 Enabled Inputs: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11
--No AMC links locked--
AMC Port Status: 0fff0000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11
AMC Bc0 Status: 00000018
--No BC0s locked--
Local Trigger Control: 00000000
Periodic L1A every 0x1 orbit at BX = 500
0x1 trigger per burst
EVB Counters:
SDRAM Word Ct [000d]: 0000183e
Unread SDRAM Evts [000e]: 00000005
L1A Ctr [0046]: 00000000 00000005
Run time [0048]: 00000006 1b1fe710
Ready time [004a]: 00000006 1b20d212
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
Tot evs monitored [0056]: 00000000 00000005
- Check that events are in receiver AMC13:
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 68000020
TTC Not Ready
Control 1: 00fb0003
DAQ Link Enabled
Run Mode
AMC Link Status: 00001000
--No AMC inputs enabled--
--No AMC links locked--
AMC Port Status: 0fff0000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11
AMC Bc0 Status: 00000018
--No BC0s locked--
EVB Counters:
SDRAM Word Ct [000d]: 0000183e
Unread SDRAM Evts [000e]: 00000005
Run time [0048]: 0000000a 2fb6a60f
Ready time [004a]: 0000000a 2fb79791
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
Reading out Events
ATTENTION: All owners of AMC13XG boards: Please upgrade your firmware to the latest build. All Virtex firmware versions older than 0x94 have a bug in the DDR readout controller, which may cause an IPBus transaction failure during block reads and consequently, while reading out (dumping) events.
- After you have initialized your AMC13 (as instructed here), you are ready to receive triggers and read out events.
- In the status display in the Initialize AMC13 section, the SDRAM buffer is empty, indicating that no events have been received.
- After sending 100 L1As (instructions on how to generate local triggers here), the status display should now look something like (but not exactly):
Pick an action (h for menu): st
*****AMC13 Status*****
Status display detail level: 1
Control 0: 03000003
DAQ Link Down
DAQ Link Almost Full
Control 1: 00174001
MonBuff full stops EVB
Run Mode
AMC Link Status: 04100410
AMC Enabled Inputs: 04, 10
AMC Input links locked: 04, 10
AMC Port Status: 0be90000
--All AMC Link Versions Correct--
Unsynced AMC Ports: 00, 03, 05, 06, 07, 08, 09, 11
EVB Counters:
SDRAM Word Ct [000d]: 00000086
Unread SDRAM Evts [000e]: 00000064
LSCDAQ status [001b]: 0000c1ac
L1A Ctr [0046]: 00000000 00000064
Run time [0048]: 00000010 78f86712
Ready time [004a]: 00000010 78f8af94
Busy time [004c]: 00000000 00000001
L1A ovfl warn time [0050]: 00000000 00000001
Tot evs monitored [0056]: 00000000 00000064
AMC Counters:
<---Link 04-----> <---Link 10----->
AMC Accept [0000]: 00000000 00000064 00000000 00000064
AMC ACK [0002]: 00000000 00000064 00000000 00000064
AMC EvN Mismatch [0006]: 00000000 00000064 00000000 00000064
AMC OrN Mismatch [0008]: 00000000 00000064 00000000 00000064
AMC BcN Mismatch [000a]: 00000000 0000005f 00000000 0000004d
AMC Received Ev [000c]: 00000000 00000064 00000000 00000064
AMC Ctr ACK [000e]: 00000000 0020cf2a 00000000 0020cf26
AMC Ev Buf near full time [0016]: 00000000 00003d18 00000000 00003d38
Total Words [0040]: 00000000 00002ee0 00000000 00002ee0
Resend [004a]: 00000000 00000001 00000000 00000001
AMC13 Accept [004c]: 00000000 00000064 00000000 00000064
Ctr Accept [004e]: 00000000 0020cf36 00000000 0020cf32
AMC13 ACK [0050]: 00000000 00000065 00000000 00000065
Received Evts [0052]: 00000000 00000064 00000000 00000064
Read Evts [0054]: 00000000 00000064 00000000 00000064
- Descriptions of the AMC13 registers, counters, and control bits, can be found here
- You can see that we now have '0x64' events in the SDRAM buffer, ready to be read out
- In order to read out these events to a file for examination and further analysis use the
'df'
command (whose specifics can be found here):
Pick an action (h for menu): df test.dat
Number of events to be dumped not specified
Starting to dump 2048 events to file test.dat
2000 events to go, current size= 134
Wrote 100 to file 'test.dat'
- This writes the events to the file 'test.dat' in binary format. The
'df'
command also offers other kinds of file dumps, which are specified here
Building Events from uHTR
- Step-by-step recipe for high rates (5Gb) test w/ AMC13 and uHTR using TTT on RatesTest page
--
CharlieHill - 19 Sep 2012