AMC13Tool Common Procedures

Actions
Update Firmware
Initialize AMC13
Send Local Triggers
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 
       ~/src/11_5_3/hcal/hcalUpgrade/amc13/bin/linux/x86_64_slc5/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, enable fake data, and enable local triggers, the command looks like:
         Pick an action (h for menu): en 4 10 b f l
         Enabling AMC inputs from list: 4, 10
         Link status: 00000410
         Enable Fake Event Generator
         Enable Local L1A generation
         Stop EvB when Mon Buf Full
         'CONTROL1': 00214085
         
  • 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: 0400002b
         DAQLSC Link Down
         DAQLSC Almost Full
         Monitor Buffer Empty
         TTC Not Ready
       Control 1: 00214085
         MonBuff full stops EVB
         Create fake event at L1A
         Generate Internal L1A
         Run Mode
       Control 2: 00000000  (All bits read 0x0)
       AMC Link Status: 00000410
         AMC Enabled Inputs: 04, 10
         --No AMC links locked--
       AMC Port Status: 0ffb0000
         --All AMC Link Versions Correct--
         Unsynced AMC Ports: 00, 01, 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:  (All 32-bit counters read 0x0)
                             Run time [0048]: 00000000 0d626312
                           Ready time [004a]: 00000000 0d62d214
                            Busy time [004c]: 00000000 00000001
                   L1A ovfl warn time [0050]: 00000000 00000001
       AMC Counters:
                                              <---Link 04-----> <---Link 10----->
                                              *******All counters read 0x0*******
    
       
  • 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

  • Use local TTC signal for TTS input
    • Loop back an optical fiber to the bottom-most SFP connection on the front panel of your AMC13
    • Enable the local TTC input when initializing the AMC13 by including the flag 't' after the command 'en'. For instance, to initialize the AMC13 by enabling AMC ports 4 and 10, the local TTC input, and local triggers:
               Pick an action (h for menu): en 4 10 t l
               Enabling AMC inputs from list: 4, 10
               Link status: 04100410
               Enable Local TTC Input Signal
               Enable Local L1A generation
               'CONTROL1': 00208105
               
  • Use external TTC input
    • Connect TTC fiber optic cable to the bottom-most SFP on the front panel of your AMC13
    • To check whether the connection is sound, use the command 'lst'. You should see no TTC SFP connection errors:
            Pick an action (h for menu): lst
      
            ***AMC13 SFP Status***
            [...]
            TTC Link Errors:  (All bits read 0x0)
            [...]
            
  • Send Periodic Local L1As
    1. Make sure that your AMC13 is receiving a TTS input via the bottom-most SFP connection
    2. Set the Orbit/Bunch-crossing/random number spacing between L1A generations.
      • For example, to send an L1A every 0x100th orbit, do:
                 Pick an action (h for menu): tsp o 100
                   OrN spacing: 0x64
                 Pick an action (h for menu): st
        
                 *****AMC13 Status*****
                 [...]
                 Local Trigger Control: 00000063
                   Periodic L1A every 0x64 orbit at BX = 500
                   0x1 trigger per burst
                 [...]
                 
      • As another example, to send random L1As an average of every 100 orbits, do:
                 Pick an action (h for menu): tsp r 100
                   Random avg spacing: 0x64
                 Pick an action (h for menu): st
        
                 *****AMC13 Status*****
                 [...]
                 Local Trigger Control: c0000063
                   Random L1As with average frequency 0x64
                   Trigger Rules 1-4 enforced
                   0x1 trigger per burst
                 [...]
                 
    3. Enable periodic local L1As:
               Pick an action (h for menu): lt e
               
      You should now see the AMC13 L1A counter (register 0x46) incrementing
    4. 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
               

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, 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 t 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 | r9 < r8 < r7 < r6 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r7 - 15 Nov 2012 - CharlieHill
 
  • Edit
  • Attach
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback