AMC13Tool Common Procedures

Actions
Update Firmware
Initialize AMC13
Send Local Triggers
Send Data over the DAQLink
Read Out Data

Update Firmware using AMC13Tool

  • Make sure that you have the latest firmware files for both the Spartan and Virtex chips by downloading the latest '.mcs' files from here, if needed e.g.
       cd ~/amc13_mcs
       wget http://physics.bu.edu/~wusx/download/AMC13/AMC13T1v0x0017_6vlx130t.mcs
       
  • Go to the directory which contains the desired firmware files and run AMC13Tool from this directory e.g.
       cd ~/amc13_mcs 
       AMC13Tool.exe
       
  • Program the new firmware to flash memory and then load the flash to both chips:
       Pick an action (h for menu): pv
       Current Virtex firmware version: 0x14
    
       1) AMC13T1v0x000f_6vlx130t.mcs
       2) AMC13T1v0x0010_6vlx130t.mcs
       3) AMC13T1v0x0012_6vlx130t.mcs
       4) AMC13T1v0x0013_6v130t.mcs
       5) AMC13T1v0x0014_6vlx130t.mcs
       6) **AMC13T1v0x0017_6vlx130t.mcs**
    
       Select desired MCS file. Hit <CR> to select best highlighted option
       Type '1-6' to select or '0' for menu: 
       
  • Check to make sure that the Current Virtex Firmware Version is not already the latest! If it is, then your firmware does not need to be updated; type '0' to return to the main menu
  • Type <CR> to select the highlighted file, which is the latest-version firmware file found in the current directory
        ./AMC13T1v0x0017_6vlx130t.mcs
        WARNING: you are about to reprogram flash memory. Are you sure? (y)
       
  • Type 'y' to program the flash or hit any other key to quit flash programming
  • After the flash has been programmed, you should see the following message:
       Flash successfully programmed and verified.
       Load the new flash memory to the chips to complete firmware update
       
  • This message indicates that the flash has been successfully programmed and verified! You are now ready to load the new firmware to the chip from flash memory.
  • The same exact process should be followed to program the Spartan Flash memory, using the initial command:
        Pick an action (h for menu): ps
       
  • Now that your flash memory has been successfully programmed, you are ready to load the flash to your Spartan and Virtex FPGAs:
       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
       Wait 10 seconds to ensure the reconfiguration's completion:  0 
       Spartan and Virtex have been reconfigured from flash
       
  • Finally, to check and make sure that the flash has been successfully loaded to the AMC13:
       Pick an action (h for menu): fv
       Virtex Firmware Version: 0x17
       Spartan Firmware Version: 0xb
       
  • As we can see, the Virtex Firmware version has been updated to 0x17. Our AMC13 now has new Firmware!

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).
    • For example, to initialize AMCs 4 and 10 and to assert TTS backpressure, the command looks like:
         Pick an action (h for menu): i 4 10 b
         Enabling AMC inputs from list: 4, 10
         Link status: 04100410
         Stop EvB when Mon Buf Full
         'CONTROL1': 00174001
         
  • 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
    • To enable local triggers (and all AMC ports):
               Pick an action (h for menu): en 0-11 L
               
    • To use the local TTC signal, loop back an optical fiber cable to the bottom-most SFP connection on the AMC13 and enable the input, as well as local triggers:
               Pick an action (h for menu): en 0-11 T L
               
    • If you are not using the local signal, make sure that your external TTC fiber optic cable properly connected to the bottom-most SFP site on the front panel of your AMC13
  • Send Periodic Local L1As
    1. Set the Orbit/Bunch-count/random Number spacing between L1A generations.
      • For example to send an L1A every 0x100th orbit:
                    Pick an action (h for menu): tsp 0x100
                    
        As you can see, 0x100 has been written to register 0x1c, which controls OrN trigger spacing
    2. Enable local L1As:
               Pick an action (h for menu): lt e
               
      You should now see the AMC13 L1A counter (register 0x46) incrementing
    3. 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
    1. 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

  • Connect the hardware correctly
    • The DAQ Link optical fiber cable should be connected to the second-from-the-top SFP on the sending AMC13 module
    • 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 top-most SFP on that receiving AMC13 module
    • A single AMC13 can be used as both the sending and receiving DAQ module, with the optical fiber cable looped from the second-to-the-top SFP to the topmost SFP on that AMC13
  • Initialize your 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
          
  • Enable the DAQ Link from the receiving module!! If your receiving module is an AMC13, enable the module and the DAQ link using the commands:
          Pick an action (h for menu): en
          No AMC inputs specified. No AMC links will be enabled.
          Link status: 00000000
    
          Pick an action (h for menu): de
            DAQ Link Enabled
          
  • If your receiving module is an AMC13 , use the following command from the receiving module to save incoming DAQ data to the SDRAM buffer:
          Pick an action (h for menu): dsv e
            Saving incoming DAQ data to SDRAM
          
  • You should now be ready to send events over the DAQ Link. For example:
    1. Send 100 local triggers on the sending AMC13 module
               Pick an action (h for menu): lt 100
               
    2. Check the Link Status Display DAQLSC Counters on the sending AMC13 module. Make sure the Events sent equals the number of L1As generated
               Pick an action (h for menu): lst
      
               ***AMC13 SFP Status***
               [...]
               DAQLSC Counters:
                                          ACK [0010]: 000002bd
                                 Packets Seen [0011]: 000002bc
                                       Events [0013]: 00000064
                                        Words [0014]: 0004bc1c
               [...]
               
    3. If your receiving module is also an AMC13, you can check its Link Status Display to make sure its DAQLDC Counters match the sender's LSC Counters
               Pick an action (h for menu): lst
      
               ***AMC13 SFP Status***
               [...]
               DAQLDC Counters:
                                        Words [0090]: 0004bc1c
                              Control Counter [0091]: 000000c8
                                       Events [0092]: 00000064
                               Words Received [0093]: 0004bc1c
                            Controls Received [0094]: 000000c8
                              Events Received [0095]: 00000064
                                  ACK Counter [0099]: 000002be
                                Valid Packets [009a]: 000002bd
                                Total Packets [009b]: 00000252
               [...]
               

Reading out 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

-- CharlieHill - 19 Sep 2012

Edit | Attach | Watch | Print version | History: r24 | r14 < r13 < r12 < r11 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r12 - 31 Jan 2013 - CharlieHill
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback