AMC13Tool Common Procedures

Update Firmware

  • 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
    
       Invalid file name: AMC13T1v0x00gy_6slx130t.mcs
       Version number is not a hex integer!
    
       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
  • Hit enter 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 enter (or 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 'en' followed by the list of inputs to be enabled and a set of desired initialization conditions (which are specified here), e.g.
       Pick an action (h for menu): en 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: 03002013
         DAQ Link Down
         DAQ Link Almost Full
         Memory in fifo for ev ovfl
         L1A Overflow Warning
       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]:          0000c1ac
                             Run time [0048]: 00000000 03889192
                           Ready time [004a]: 00000000 0388cd14
                            Busy time [004c]: 00000000 00000001
                   L1A ovfl warn time [0050]: 00000000 00000001
       AMC Counters:
                                              <---Link 04-----> <---Link 10----->
                          AMC Ctr ACK [000e]: 00000000 00000712 00000000 00000713
                               Resend [004a]: 00000000 00000001 00000000 00000001
                           Ctr Accept [004e]: 00000000 0000071d 00000000 0000071d
                            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

Reading out Events

  • After you have initialized your AMC13, 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
       
  • 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 | r5 < r4 < r3 < r2 | Backlinks | Raw View | Raw edit | More topic actions...
Topic revision: r3 - 25 Sep 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