ROC readout in DABC

Changes in Knut library

  1. Correct calculation of "gap" between lost packets
  2. New ptherad_condition in SysCoreBoard class to be used from dabc side for waiting of the next portion of data
  3. Correctly destroy mutex and condition in SysCoreBoard destructor
  4. Implement method CheckCreditsStatus() which send new credit to the ROC if required
  5. Modify getNextData() method that it returns false when no data is available
  6. Comment out packetHistory list - was a reason for high memory consumption
  7. New getFrontPacket(unsigned* size) and popFrontPacket() methods to access to the udp data packet as whole.
  8. Make several methods in SysCoreData class inline to improve speed.
  9. Add several setters methods in SysCoreData to be able to change some values

-- LinevSergey - 13 Aug 2008

DABC classes design

  1. Implementation based on DataTransport classes where ReadBegin - ReadComplete interface should be implemented
  2. Waiting of the new portion of data implemented in ReadBegin, if no data comes in 0.01 s - call will be repeated by DABC as soon as possible
  3. In case when no data coming during 5 seconds, client tries to reset credit counter

Some facts about syscoreshell

  1. CPU clock time is 250 MHz and one timer ticks exactly 250M times in second
  2. XTime_GetTime function takes about 0.16 us to be called
  3. Network fifo is only 4K big
  4. Test of net fifo status (methods XTemac_FifoGetFreeBytes and XTemac_FifoGetFreeBytes) takes about 0.5 us
  5. Test of recv/send status (TemacGetRxStatus and TemacGetTxStatus) takes about 1 us
  6. There are two methods to read data from FPGA - burst (~3M msgs/s) and OCM (~22.7M msgs/s)
  7. After syscoreshell.ld adjustments one can allocate ~110 MB of dynamic memory

-- LinevSergey - 15 Aug 2008
Topic revision: r9 - 2008-10-10, LinevSergey
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback | Legal notice | Privacy Policy (german)