<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ift.wiki.uib.no/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=St09909</id>
	<title>ift - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://ift.wiki.uib.no/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=St09909"/>
	<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/Special:Contributions/St09909"/>
	<updated>2026-05-17T19:15:54Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1033</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1033"/>
		<updated>2009-12-18T14:13:40Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Related documents for BusyBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
=====Revision 31=====&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
======Versioning======&lt;br /&gt;
The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. &lt;br /&gt;
A register for the version number exists in the ctrl_regs module.&lt;br /&gt;
&lt;br /&gt;
=====Revision 41=====&lt;br /&gt;
======Non functional FW changes======&lt;br /&gt;
# Signal names used globally in the design have been renamed: clocka =&amp;gt; clk200, clockb =&amp;gt; clk40, areset =&amp;gt; rst40 /rst200&lt;br /&gt;
# All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. &lt;br /&gt;
# Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal.&lt;br /&gt;
# Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V)&lt;br /&gt;
&lt;br /&gt;
======Event verification module (event_validator_top)======&lt;br /&gt;
This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging.&lt;br /&gt;
The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs.&lt;br /&gt;
&lt;br /&gt;
======Serial decoder======&lt;br /&gt;
The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit.&lt;br /&gt;
The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation.&lt;br /&gt;
&lt;br /&gt;
======DCS arbiter and address decoder======&lt;br /&gt;
The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master.&lt;br /&gt;
&lt;br /&gt;
======Registers======&lt;br /&gt;
Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]]&lt;br /&gt;
In short:&lt;br /&gt;
#Number of implemented channels. This number is actually the same as the generic g_num_channels.&lt;br /&gt;
#Current Trigger Event Info&lt;br /&gt;
#Current Trigger Event Error&lt;br /&gt;
#Newest Trigger Event Info&lt;br /&gt;
#Newest Trigger Event Error&lt;br /&gt;
&lt;br /&gt;
======Download======&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)]&lt;br /&gt;
&amp;lt;!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--&amp;gt;&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
#[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)]&lt;br /&gt;
#[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1032</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1032"/>
		<updated>2009-12-18T10:47:03Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Compiled BusyBox Firmware Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
=====Revision 31=====&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
======Versioning======&lt;br /&gt;
The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. &lt;br /&gt;
A register for the version number exists in the ctrl_regs module.&lt;br /&gt;
&lt;br /&gt;
=====Revision 41=====&lt;br /&gt;
======Non functional FW changes======&lt;br /&gt;
# Signal names used globally in the design have been renamed: clocka =&amp;gt; clk200, clockb =&amp;gt; clk40, areset =&amp;gt; rst40 /rst200&lt;br /&gt;
# All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. &lt;br /&gt;
# Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal.&lt;br /&gt;
# Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V)&lt;br /&gt;
&lt;br /&gt;
======Event verification module (event_validator_top)======&lt;br /&gt;
This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging.&lt;br /&gt;
The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs.&lt;br /&gt;
&lt;br /&gt;
======Serial decoder======&lt;br /&gt;
The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit.&lt;br /&gt;
The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation.&lt;br /&gt;
&lt;br /&gt;
======DCS arbiter and address decoder======&lt;br /&gt;
The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master.&lt;br /&gt;
&lt;br /&gt;
======Registers======&lt;br /&gt;
Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]]&lt;br /&gt;
In short:&lt;br /&gt;
#Number of implemented channels. This number is actually the same as the generic g_num_channels.&lt;br /&gt;
#Current Trigger Event Info&lt;br /&gt;
#Current Trigger Event Error&lt;br /&gt;
#Newest Trigger Event Info&lt;br /&gt;
#Newest Trigger Event Error&lt;br /&gt;
&lt;br /&gt;
======Download======&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
*[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
#[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1031</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1031"/>
		<updated>2009-12-18T10:42:36Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Revision 41 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
=====Revision 31=====&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
======Versioning======&lt;br /&gt;
The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. &lt;br /&gt;
A register for the version number exists in the ctrl_regs module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;Revision 35&lt;br /&gt;
;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V)&lt;br /&gt;
;:* Added &amp;quot;number of channels&amp;quot; status register.&lt;br /&gt;
;:* Added Stress test mode for testing only. (Disabled by default.)&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====Revision 41=====&lt;br /&gt;
======Non functional FW changes======&lt;br /&gt;
# Signal names used globally in the design have been renamed: clocka =&amp;gt; clk200, clockb =&amp;gt; clk40, areset =&amp;gt; rst40 /rst200&lt;br /&gt;
# All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. &lt;br /&gt;
# Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal.&lt;br /&gt;
# Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V)&lt;br /&gt;
&lt;br /&gt;
======Event verification module (event_validator_top)======&lt;br /&gt;
This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging.&lt;br /&gt;
The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs.&lt;br /&gt;
&lt;br /&gt;
======Serial decoder======&lt;br /&gt;
The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit.&lt;br /&gt;
The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation.&lt;br /&gt;
&lt;br /&gt;
======DCS arbiter and address decoder======&lt;br /&gt;
The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master.&lt;br /&gt;
&lt;br /&gt;
======Registers======&lt;br /&gt;
Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]]&lt;br /&gt;
In short:&lt;br /&gt;
#Number of implemented channels. This number is actually the same as the generic g_num_channels.&lt;br /&gt;
#Current Trigger Event Info&lt;br /&gt;
#Current Trigger Event Error&lt;br /&gt;
#Newest Trigger Event Info&lt;br /&gt;
#Newest Trigger Event Error&lt;br /&gt;
&lt;br /&gt;
======Download======&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
#[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1029</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=1029"/>
		<updated>2009-12-14T15:47:22Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Related documents for BusyBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;Revision 35&lt;br /&gt;
;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V)&lt;br /&gt;
;:* Added &amp;quot;number of channels&amp;quot; status register.&lt;br /&gt;
;:* Added Stress test mode for testing only. (Disabled by default.)&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
#[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=967</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=967"/>
		<updated>2009-11-25T15:25:58Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - 0x0 &amp;amp; RequestID(3:0) &amp;amp; OrbitID(23:16)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - OrbitID(15:0)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - 0x0 BunchCountID(11:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - DRORCID(7:0) &amp;amp; ChannelNumber(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 40&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Info(12:0)&lt;br /&gt;
|0x2050&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(24:16)&lt;br /&gt;
|0x2051&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(15:0)&lt;br /&gt;
|0x2052&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Info(12:0)&lt;br /&gt;
|0x2054&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Error(24:16)&lt;br /&gt;
|0x2055&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Error(15:0)&lt;br /&gt;
|0x2056&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x3051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=966</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=966"/>
		<updated>2009-11-25T15:24:54Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - 0x0 &amp;amp; RequestID(3:0) &amp;amp; OrbitID(23:16)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - OrbitID(15:0)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - 0x0 BunchCountID(11:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - DRORCID(7:0) &amp;amp; ChannelNumber(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Info(12:0)&lt;br /&gt;
|0x2050&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(24:16)&lt;br /&gt;
|0x2051&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(15:0)&lt;br /&gt;
|0x2052&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Info(12:0)&lt;br /&gt;
|0x2054&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Error(24:16)&lt;br /&gt;
|0x2055&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest Trigger Event Error(15:0)&lt;br /&gt;
|0x2056&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x3051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=965</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=965"/>
		<updated>2009-11-25T15:22:52Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - 0x0 &amp;amp; RequestID(3:0) &amp;amp; OrbitID(23:16)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - OrbitID(15:0)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - 0x0 BunchCountID(11:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - DRORCID(7:0) &amp;amp; ChannelNumber(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Info(12:0)&lt;br /&gt;
|0x2050&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(24:16)&lt;br /&gt;
|0x2051&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(15:0)&lt;br /&gt;
|0x2052&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Info(12:0)&lt;br /&gt;
|0x2054&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(24:16)&lt;br /&gt;
|0x2055&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current Trigger Event Error(15:0)&lt;br /&gt;
|0x2056&lt;br /&gt;
|R&lt;br /&gt;
|Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x3051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=943</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=943"/>
		<updated>2009-11-19T14:12:32Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - 0x0 &amp;amp; RequestID(3:0) &amp;amp; OrbitID(23:16)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - OrbitID(15:0)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - 0x0 BunchCountID(11:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - DRORCID(7:0) &amp;amp; ChannelNumber(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x3051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=890</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=890"/>
		<updated>2009-11-09T09:00:10Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x3051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x3054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=858</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=858"/>
		<updated>2009-10-28T09:28:00Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Compiled BusyBox Firmware Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
;Revision 35&lt;br /&gt;
;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V)&lt;br /&gt;
;:* Added &amp;quot;number of channels&amp;quot; status register.&lt;br /&gt;
;:* Added Stress test mode for testing only. (Disabled by default.)&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=856</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=856"/>
		<updated>2009-10-22T12:42:05Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Compiled BusyBox Firmware Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
;Revision 35&lt;br /&gt;
;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V)&lt;br /&gt;
;:* Added &amp;quot;number of channels&amp;quot; status register.&lt;br /&gt;
;:* Added Stress test mode for testing only. (Disabled by default.)&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=855</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=855"/>
		<updated>2009-10-22T12:17:48Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;90&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot;|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|RW&lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|Control               &lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot;|0x3001    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|R&lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|L1_Latency            &lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info      &lt;br /&gt;
|0x4051    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;10&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x4053    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;16&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x4054    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;9&amp;quot;|&lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=854</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=854"/>
		<updated>2009-10-22T11:41:25Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Control Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name                  &lt;br /&gt;
!Address   &lt;br /&gt;
!Mode  &lt;br /&gt;
!width=&amp;quot;120&amp;quot;|Bit slice  &lt;br /&gt;
!Description&lt;br /&gt;
|----&lt;br /&gt;
|Control               &lt;br /&gt;
|0x3000    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:13]    &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[12]       &lt;br /&gt;
|Trigger Input Mask Enable. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[11]       &lt;br /&gt;
|L1a message mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[10]       &lt;br /&gt;
|L2 Timeout FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[9]        &lt;br /&gt;
|L2r FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[8]        &lt;br /&gt;
|L2a FIFO storage mask. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|Unused&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[3]        &lt;br /&gt;
|L0 support. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[2]        &lt;br /&gt;
|Enable RoI decoding. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[1]        &lt;br /&gt;
|Disable_error_masking. Default=0&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B channel on/off. Default=1&lt;br /&gt;
|----&lt;br /&gt;
|Control               &lt;br /&gt;
|0x3001    &lt;br /&gt;
|      &lt;br /&gt;
|[15:8]     &lt;br /&gt;
|Trigger Receiver Version. Default=0x13&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[7:4]      &lt;br /&gt;
|CDH version. Default=0x2&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[3]        &lt;br /&gt;
|Not Used&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[2]        &lt;br /&gt;
|Busy (receiving sequence) -&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[1]        &lt;br /&gt;
|Run Active -&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|      &lt;br /&gt;
|[0]        &lt;br /&gt;
|Bunch_counter overflow -&lt;br /&gt;
|----&lt;br /&gt;
|Module Reset          &lt;br /&gt;
|0x3002    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Reset Module&lt;br /&gt;
|----&lt;br /&gt;
|Reset Counters        &lt;br /&gt;
|0x3008    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Write to this registers will reset the counters in the module&lt;br /&gt;
|----&lt;br /&gt;
|Issue Testmode        &lt;br /&gt;
|0x300A    &lt;br /&gt;
|T     &lt;br /&gt;
|N/A        &lt;br /&gt;
|Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature.&lt;br /&gt;
|----&lt;br /&gt;
|L1_Latency            &lt;br /&gt;
|0x300C    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:12]    &lt;br /&gt;
|Uncertainty region +- N. default value 0x2 (50 ns) &lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|RW    &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Latency from L0 to L1. default value 0x0D4 (5.3 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MAX        &lt;br /&gt;
|0x300E    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L2. default value 0x4E20 (500 us)&lt;br /&gt;
|----&lt;br /&gt;
|L2_Latency MIN        &lt;br /&gt;
|0x300F    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L2. default value 0x0C80 (80 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MAX    &lt;br /&gt;
|0x3012    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Max Latency from BC0 to L1 msg. default value 0x0028 (1 us)&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_latency MIN    &lt;br /&gt;
|0x3013    &lt;br /&gt;
|RW    &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us)&lt;br /&gt;
|----&lt;br /&gt;
|Pre_pulse_counter     &lt;br /&gt;
|0x3016    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of decoded pre-pulses.&lt;br /&gt;
|----&lt;br /&gt;
|BCID_Local            &lt;br /&gt;
|0x3018    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Number of bunchcrossings at arrival of L1 trigger.&lt;br /&gt;
|----&lt;br /&gt;
|L0_counter            &lt;br /&gt;
|0x301A    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L0 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_counter            &lt;br /&gt;
|0x301C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of L1 triggers&lt;br /&gt;
|----&lt;br /&gt;
|L1_msg_counter        &lt;br /&gt;
|0x301E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L1 messages&lt;br /&gt;
|----&lt;br /&gt;
|L2a_counter           &lt;br /&gt;
|0x3020    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2a messages&lt;br /&gt;
|----&lt;br /&gt;
|L2r_counter           &lt;br /&gt;
|0x3022    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of successfully decoded L2r messages&lt;br /&gt;
|----&lt;br /&gt;
|Bunchcounter          &lt;br /&gt;
|0x3026    &lt;br /&gt;
|R     &lt;br /&gt;
|[11:0]     &lt;br /&gt;
|Debug: Number of bunchcrossings&lt;br /&gt;
|----&lt;br /&gt;
|SingleHammingErrorCnt &lt;br /&gt;
|0x302C    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of single bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|DoubleHammingErrorCnt &lt;br /&gt;
|0x302D    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of double bit hamming errors&lt;br /&gt;
|----&lt;br /&gt;
|MsgDecodingErrorCnt   &lt;br /&gt;
|0x302E    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of message decoding errors&lt;br /&gt;
|----&lt;br /&gt;
|SeqTimoutErrorCnt     &lt;br /&gt;
|0x302F    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Number of errors related to sequence and timeouts.&lt;br /&gt;
|----&lt;br /&gt;
|Buffered_events       &lt;br /&gt;
|0x3040    &lt;br /&gt;
|R     &lt;br /&gt;
|[4:0]      &lt;br /&gt;
|Number of events stored in the FIFO.&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3042    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header01          &lt;br /&gt;
|0x3043    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 1 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3044    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header02          &lt;br /&gt;
|0x3045    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 2 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3046    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header03          &lt;br /&gt;
|0x3047    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 3 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3048    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header04          &lt;br /&gt;
|0x3049    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 4 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304a    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header05          &lt;br /&gt;
|0x304b    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 5 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304c    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header06          &lt;br /&gt;
|0x304d    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 6 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304e    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [15:0]&lt;br /&gt;
|----&lt;br /&gt;
|DAQ_Header07          &lt;br /&gt;
|0x304f    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest received DAQ Header 7 [31:16]&lt;br /&gt;
|----&lt;br /&gt;
|Event_info[17:0]      &lt;br /&gt;
|0x4028    &lt;br /&gt;
|R     &lt;br /&gt;
|[12:0]     &lt;br /&gt;
|Latest Received Event information:&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Include payload&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Event has L2 Accept trigger&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Event has L2 Reject trigger&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|Calibration trigger event&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|Software trigger event&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[4:7]      &lt;br /&gt;
|Calibration/SW trigger type (= RoC)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|NA(=‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Region of Interest announced (=ESR)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|NA(=’0’)&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x4029    &lt;br /&gt;
|R     &lt;br /&gt;
|[15:0]     &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[15]       &lt;br /&gt;
|L1 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[14]       &lt;br /&gt;
|Missing L1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[13]       &lt;br /&gt;
|Boundary L1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[12]       &lt;br /&gt;
|Spurious L1&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[11]       &lt;br /&gt;
|Missing L0&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[10]       &lt;br /&gt;
|Spurious L0&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[9]        &lt;br /&gt;
|TTCrx Address Error (not X”0003”)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|Incomplete L2a Message&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|Incomplete L1 Message&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Unknown Message Address Received&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|Double Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|Single Bit Hamming Error Broadcast.&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|Double Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|Single Bit Hamming Error Individually Addr.&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|Serial B Stop Bit Error&lt;br /&gt;
|----&lt;br /&gt;
|Event_error           &lt;br /&gt;
|0x4029    &lt;br /&gt;
|R     &lt;br /&gt;
|[8:0]      &lt;br /&gt;
|Latest Received Event error conditions:&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[8]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[7]        &lt;br /&gt;
|L2 message content error&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[6]        &lt;br /&gt;
|L1 message content error&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[5]        &lt;br /&gt;
|Prepulse error (=0; possible future use)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[4]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[3]        &lt;br /&gt;
|NA (= ‘0’)&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[2]        &lt;br /&gt;
|L2 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[1]        &lt;br /&gt;
|L2 message arrives outside legal timeslot&lt;br /&gt;
|----&lt;br /&gt;
|&lt;br /&gt;
|          &lt;br /&gt;
|R     &lt;br /&gt;
|[0]        &lt;br /&gt;
|L1 message missing/timeout&lt;br /&gt;
|----&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=853</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=853"/>
		<updated>2009-10-22T08:29:11Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot; |Control(15:0)&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot; |0x3000&lt;br /&gt;
|RW&lt;br /&gt;
|[0] Serial B on/off&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[1] Disable error masking&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[2] Enable RoI Decoding&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[3] L0 Support&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[4:7] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[8] L2Accept Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[9] L2Reject Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[10] L2Timeout Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[11] L1message mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[12] Trigger Input Mask Enable&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[13:15] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; |Control(7:0)&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; |0x3001&lt;br /&gt;
|R&lt;br /&gt;
|[0] Bunschcounter overflow&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[1] Run Active&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[2] Busy receiving trigger sequence&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[3] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[7:4] CDH version&lt;br /&gt;
|0x2&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[15:8] Trigger Receiver version&lt;br /&gt;
|0x13&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Reset Counters&lt;br /&gt;
|0x3002&lt;br /&gt;
|T&lt;br /&gt;
|[0] Reset all counters in the Trigger Receiver&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=851</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=851"/>
		<updated>2009-10-21T10:12:34Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Busy Box Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7:0 is TX data.&lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;| Trigger Receiver Module Status and Contol Registers&lt;br /&gt;
|-&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot; |Control(15:0)&lt;br /&gt;
|rowspan=&amp;quot;11&amp;quot; |0x3000&lt;br /&gt;
|RW&lt;br /&gt;
|[0] Serial B on/off&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[1] Disable error masking&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[2] Enable RoI Decoding&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[3] L0 Support&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[4:7] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[8] L2Accept Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[9] L2Reject Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[10] L2Timeout Event FIFO storage mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[11] L1message mask&lt;br /&gt;
|1&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[12] Trigger Input Mask Enable&lt;br /&gt;
|0&lt;br /&gt;
|-&lt;br /&gt;
|RW&lt;br /&gt;
|[13:15] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; |Control(7:0)&lt;br /&gt;
|rowspan=&amp;quot;6&amp;quot; |0x3001&lt;br /&gt;
|R&lt;br /&gt;
|[0] Bunschcounter overflow&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[1] Run Active&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[2] Busy receiving trigger sequence&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[3] Unused&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[7:4] CDH version&lt;br /&gt;
|0x2&lt;br /&gt;
|-&lt;br /&gt;
|R&lt;br /&gt;
|[15:8] Trigger Receiver version&lt;br /&gt;
|0x13&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
|Reset Counters&lt;br /&gt;
|0x3002&lt;br /&gt;
|T&lt;br /&gt;
|[0] Reset all counters in the Trigger Receiver&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=850</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=850"/>
		<updated>2009-10-21T09:06:20Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Busy Box Status and Contol Registers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; |colspan=&amp;quot;5&amp;quot;|&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; |colspan=&amp;quot;5&amp;quot;|&lt;br /&gt;
====Busy Box Status and Contol Registers====&lt;br /&gt;
|-&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|TX module(15:0)&lt;br /&gt;
|For sending messages to DRORCs.  &lt;br /&gt;
* Bit 7:0 is TX data.  &lt;br /&gt;
* Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x1000-0x1FFF&lt;br /&gt;
|RW&lt;br /&gt;
|RX memory&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses:&lt;br /&gt;
* Address ending &amp;quot;00&amp;quot; - DRORC Message(47:32)&lt;br /&gt;
* Address ending &amp;quot;01&amp;quot; - DRORC Message(31:16)&lt;br /&gt;
* Address ending &amp;quot;10&amp;quot; - DRORC Message(15:0)&lt;br /&gt;
* Address ending &amp;quot;11&amp;quot; - Receiving Channel number(7:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|RX memory pointer(13:0)&lt;br /&gt;
|Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|EventID FIFO count(3:0)&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(35:32)&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(31:16)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(15:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(35:32)&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(31:16)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(15:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|L0 Trigger Timeout(15:0)&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Busy Condition(15:0)&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 11:8 - Unused&lt;br /&gt;
* Bit 7:4 - Current MEB count.&lt;br /&gt;
* Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|Halt FSM matching(0)&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. &lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Force match(0)&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Re-Request Timeout(15:0)&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Current RequestID(3:0)&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Retry Count(15:0)&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(31:16)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(15:0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|RX mem filter(15:0)&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory. &lt;br /&gt;
*Bit 7:0 is the pattern that will be matched with the channelnumber of the message. &lt;br /&gt;
*Bit 15:8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2014&lt;br /&gt;
|R&lt;br /&gt;
|Number of Channels&lt;br /&gt;
|Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal. &lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=849</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=849"/>
		<updated>2009-10-21T08:40:40Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; |colspan=&amp;quot;5&amp;quot;|&lt;br /&gt;
====Busy Box Status and Contol Registers====&lt;br /&gt;
|-&lt;br /&gt;
!Address&lt;br /&gt;
!Mode&lt;br /&gt;
!width=&amp;quot;170&amp;quot;|Name&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|TX module&lt;br /&gt;
|For sending messages to DRORCs.&lt;br /&gt;
* Bit 7-0 is TX data.&lt;br /&gt;
* Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x1XXX&lt;br /&gt;
|RW&lt;br /&gt;
|RX memory&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|RX memory pointer&lt;br /&gt;
|Holds the value where the next message will be written in RX memory.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|EventID FIFO count&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(35-32)&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID which is currently being matched.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(31-16)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(15- 0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(35-32)&lt;br /&gt;
|rowspan=&amp;quot;3&amp;quot;|The EventID most recently received from the Trigger system.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(31-16)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(15- 0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|L0 Trigger Timeout&lt;br /&gt;
|Time in 10 us resolution the &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|0x000A&lt;br /&gt;
|-&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|Busy Condition&lt;br /&gt;
|Status and control registers concerning the BUSY generation&lt;br /&gt;
* Bit 15 - Busy because TTCrx_ready is low.&lt;br /&gt;
* Bit 14 - Busy because MEB count &amp;gt;= MEB limit&lt;br /&gt;
* Bit 13 - Busy because L0 timeout is active.&lt;br /&gt;
* Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence.&lt;br /&gt;
* Bit 7-4 - Current MEB count.&lt;br /&gt;
* Bit 3-0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|Halt FSM matching&lt;br /&gt;
|If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs.&lt;br /&gt;
|0x0001&lt;br /&gt;
|-&lt;br /&gt;
|0x200B&lt;br /&gt;
|T&lt;br /&gt;
|Force match&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect.&lt;br /&gt;
|N/A&lt;br /&gt;
|-&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Re-Request Timeout&lt;br /&gt;
|Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs.&lt;br /&gt;
|0x07FF&lt;br /&gt;
|-&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Current RequestID&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Retry Count(15-0)&lt;br /&gt;
|Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(31-16)&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|Holds value of counter for number of clock cycles BUSY has been asserted.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(15-0)&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|RX mem filter&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory.&lt;br /&gt;
*Bit 7-0 is the pattern that will be matched with the channelnumber of the message.&lt;br /&gt;
*Bit 15-8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x2015&lt;br /&gt;
|R&lt;br /&gt;
|Firmware Revision&lt;br /&gt;
|Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34&lt;br /&gt;
|0x0022&lt;br /&gt;
|-&lt;br /&gt;
|0x2016&lt;br /&gt;
|RW&lt;br /&gt;
|Stresstest Enable(0)&lt;br /&gt;
|Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available.&lt;br /&gt;
|0x0000&lt;br /&gt;
|-&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal.&lt;br /&gt;
*Bit 0 is enable(1)/disable(0)&lt;br /&gt;
*Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|0x0001&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=848</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=848"/>
		<updated>2009-10-20T15:11:35Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=847</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=847"/>
		<updated>2009-10-20T15:10:15Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[BusyBox Registers]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=846</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=846"/>
		<updated>2009-10-20T15:09:42Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
See [[BusyBoxRegisters]] for latest updated information on firmware registers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBoxRegisters&amp;diff=845</id>
		<title>Busy Box and related/BusyBoxRegisters</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBoxRegisters&amp;diff=845"/>
		<updated>2009-10-20T15:06:12Z</updated>

		<summary type="html">&lt;p&gt;St09909: moved Busy Box and related/BusyBoxRegisters to Busy Box and related/BusyBox Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Busy Box and related/BusyBox Registers]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=844</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=844"/>
		<updated>2009-10-20T15:06:12Z</updated>

		<summary type="html">&lt;p&gt;St09909: moved Busy Box and related/BusyBoxRegisters to Busy Box and related/BusyBox Registers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot;|&lt;br /&gt;
====Busy Box Status and Contol Registers====&lt;br /&gt;
|-&lt;br /&gt;
!Address&lt;br /&gt;
!Read/Write&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|TX module&lt;br /&gt;
|For sending messages to DRORCs. Bit 7-0 is TX data. Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x1XXX&lt;br /&gt;
|RW&lt;br /&gt;
|RX memory&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|RX memory pointer&lt;br /&gt;
|Holds the value where the next message will be written in RX memory.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|EventID count&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(35-32)&lt;br /&gt;
|The EventID which is currently being matched.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(31-16)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(15- 0)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(35-32)&lt;br /&gt;
|The EventID most recently received from the TTC system.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(31-16)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(15- 0)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|L0 trigger timeout&lt;br /&gt;
|Number of clock cycles &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|FEE buffers available&lt;br /&gt;
|Config: Holds the number buffers assumed on the FEE.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|Halt FW matching&lt;br /&gt;
|If LSB is set to 1 the internal FSM will halt in a wait state.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200B&lt;br /&gt;
|w&lt;br /&gt;
|Force match&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Re-Request Timeout&lt;br /&gt;
|Number of clock cycles to wait in between sending requests to the DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Current RequestID&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Retry Count&lt;br /&gt;
|Number of times requests have been sent to DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(31-16)&lt;br /&gt;
|Holds value of counter for number of clock&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(15- 0)&lt;br /&gt;
|cycles BUSY has been asserted.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|RX mem filter&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory. Bit 7-0 is the pattern that will be matched with the channelnumber of the message. Bit 15-8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal. Bit 0 is enable/disable (0/1) Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|TBD&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=843</id>
		<title>Busy Box and related/BusyBox Registers</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related/BusyBox_Registers&amp;diff=843"/>
		<updated>2009-10-20T15:02:49Z</updated>

		<summary type="html">&lt;p&gt;St09909: Created page with &amp;#039;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; |colspan=&amp;quot;5&amp;quot;| ====Busy Box Status and Contol Registers==== |- !Address !Read/Write !Name !Description !Default Value |- |0x0001 |RW ...&amp;#039;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;5&amp;quot;|&lt;br /&gt;
====Busy Box Status and Contol Registers====&lt;br /&gt;
|-&lt;br /&gt;
!Address&lt;br /&gt;
!Read/Write&lt;br /&gt;
!Name&lt;br /&gt;
!Description&lt;br /&gt;
!Default Value&lt;br /&gt;
|-&lt;br /&gt;
|0x0001&lt;br /&gt;
|RW&lt;br /&gt;
|TX module&lt;br /&gt;
|For sending messages to DRORCs. Bit 7-0 is TX data. Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x1XXX&lt;br /&gt;
|RW&lt;br /&gt;
|RX memory&lt;br /&gt;
|Memory where all messages received from DRORCs will be stored.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2000&lt;br /&gt;
|R&lt;br /&gt;
|RX memory pointer&lt;br /&gt;
|Holds the value where the next message will be written in RX memory.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2001&lt;br /&gt;
|R&lt;br /&gt;
|EventID count&lt;br /&gt;
|Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2002&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(35-32)&lt;br /&gt;
|The EventID which is currently being matched.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2003&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(31-16)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2004&lt;br /&gt;
|R&lt;br /&gt;
|Current EventID(15- 0)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2005&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(35-32)&lt;br /&gt;
|The EventID most recently received from the TTC system.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2006&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(31-16)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2007&lt;br /&gt;
|R&lt;br /&gt;
|Newest EventID(15- 0)&lt;br /&gt;
|&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2008&lt;br /&gt;
|RW&lt;br /&gt;
|L0 trigger timeout&lt;br /&gt;
|Number of clock cycles &#039;busy&#039; will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2009&lt;br /&gt;
|RW&lt;br /&gt;
|FEE buffers available&lt;br /&gt;
|Config: Holds the number buffers assumed on the FEE.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200A&lt;br /&gt;
|RW&lt;br /&gt;
|Halt FW matching&lt;br /&gt;
|If LSB is set to 1 the internal FSM will halt in a wait state.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200B&lt;br /&gt;
|w&lt;br /&gt;
|Force match&lt;br /&gt;
|Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200C&lt;br /&gt;
|RW&lt;br /&gt;
|Re-Request Timeout&lt;br /&gt;
|Number of clock cycles to wait in between sending requests to the DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200D&lt;br /&gt;
|R&lt;br /&gt;
|Current RequestID&lt;br /&gt;
|Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x200E&lt;br /&gt;
|R&lt;br /&gt;
|Retry Count&lt;br /&gt;
|Number of times requests have been sent to DRORCs.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2010&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(31-16)&lt;br /&gt;
|Holds value of counter for number of clock&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2011&lt;br /&gt;
|R&lt;br /&gt;
|Busy time(15- 0)&lt;br /&gt;
|cycles BUSY has been asserted.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x2012&lt;br /&gt;
|RW&lt;br /&gt;
|RX mem filter&lt;br /&gt;
|Allows filtering of messages that are stored in RX memory. Bit 7-0 is the pattern that will be matched with the channelnumber of the message. Bit 15-8 allows enableing matching of individual bits 7-0.&lt;br /&gt;
|TBD&lt;br /&gt;
|-&lt;br /&gt;
|0x21XX&lt;br /&gt;
|RW&lt;br /&gt;
|Channel Registers&lt;br /&gt;
|&#039;XX&#039; in the address gives the channelnumber in hexadecimal. Bit 0 is enable/disable (0/1) Bit 1 indicates that the current EventID has been matched on this channel.&lt;br /&gt;
|TBD&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=837</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=837"/>
		<updated>2009-10-14T11:34:07Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BusyBox FPGAs====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[#BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=836</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=836"/>
		<updated>2009-10-14T11:31:31Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Compiled BusyBox Firmware Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== BusyBox FPGAs ====&lt;br /&gt;
&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
;:* Using Trigger Receiver Module v.1.3&lt;br /&gt;
;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info.&lt;br /&gt;
;:;Download&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=835</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=835"/>
		<updated>2009-10-14T11:10:01Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* DCS board firmware for BusyBox */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
====== BusyBox FPGAs ======&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
===== DCS board firmware for BusyBox =====&lt;br /&gt;
The DCS board in the BusyBox uses special firmware. See&lt;br /&gt;
[[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]]&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=834</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=834"/>
		<updated>2009-10-14T09:58:08Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Generating FPGA configuration files from source code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
====== BusyBox FPGAs ======&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#: Example with DOS for loop: &amp;lt;tt&amp;gt;D:\busybox_firmware\trunk\source\cores&amp;gt;FOR %i IN (*.xco) DO coregen -b %i&amp;lt;/tt&amp;gt;&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=833</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=833"/>
		<updated>2009-10-14T09:40:37Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Firmware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
====== BusyBox FPGAs ======&lt;br /&gt;
There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with &#039;busybox_fpga1_solo.bit&#039;. If two FPGAs are present then use &#039;busybox_fpga1.bit&#039; and &#039;busybox_fpga2.bit&#039;. Alternatively fpga2 can be prgrammed with &#039;dummy.bit&#039;.&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&lt;br /&gt;
====Generating FPGA configuration files from source code====&lt;br /&gt;
# Check out the desired revision from the SVN repository.&lt;br /&gt;
# Navigate to .../busybox_firmware/trunk/ISE_projects&lt;br /&gt;
# Run the TCL script named bbiseproject.tcl with Xilinx&#039; TCL interpreter. The script takes three commandline arguments :&amp;lt;br&amp;gt;&lt;br /&gt;
#*&amp;lt;tt&amp;gt;fpga_version&amp;lt;/tt&amp;gt; - see [[BusyBox FPGAs]]&lt;br /&gt;
#*&amp;lt;tt&amp;gt;source_dir&amp;lt;/tt&amp;gt; - where the source code is located. Including constraints and cores.&lt;br /&gt;
#*&amp;lt;tt&amp;gt;project_dir&amp;lt;/tt&amp;gt; - location where project is created. Note folder has to exist and should not already contain an ISE project.&lt;br /&gt;
#:Example: &amp;lt;code&amp;gt;D:\busybox_firmware\trunk\ISE_projects&amp;gt;xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test&amp;lt;br&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#Generate the cores with CoreGen (If it not already done)&lt;br /&gt;
#:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores&amp;lt;/tt&amp;gt;.&lt;br /&gt;
#: For batch mode : &amp;lt;tt&amp;gt;.../busybox_firmware/trunk/source/cores/coregen -b &#039;core&#039;.xco&amp;lt;/tt&amp;gt; replace &#039;core&#039; with real name for all *.xco-files.&lt;br /&gt;
#Open the project with ISE Project Navigator.&lt;br /&gt;
#Run process &#039;Generate Programming File&#039;&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=832</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=832"/>
		<updated>2009-10-14T08:13:11Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Download Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=831</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=831"/>
		<updated>2009-10-14T08:12:33Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* BusyBox Hardware tests at UiB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&amp;lt;br&amp;gt;&lt;br /&gt;
===== Components in LAB setup : =====&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
See Also [[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download Section ===&lt;br /&gt;
[[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=830</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=830"/>
		<updated>2009-10-14T08:06:15Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Compiled BusyBox Firmware Versions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&lt;br /&gt;
Components in LAB setup :&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
[[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
=== Version history ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0 &#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Magne Munkejord &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download Section ===&lt;br /&gt;
[[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
==== DCS board firmware for BusyBox ====&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&lt;br /&gt;
== Related documents for BusyBox ==&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
#[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
#[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
#[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=829</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=829"/>
		<updated>2009-10-14T08:01:33Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* Download Section */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&lt;br /&gt;
Components in LAB setup :&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
[[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
=== Version history ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0 &#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Magne Munkejord &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== BusyBox Firmware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download Section ===&lt;br /&gt;
[[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Source Code Repositories ====&lt;br /&gt;
&lt;br /&gt;
*[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository]&lt;br /&gt;
*[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Compiled BusyBox Firmware Versions ====&lt;br /&gt;
&lt;br /&gt;
;Revision 31&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
:    [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&lt;br /&gt;
DCS board firmware for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related documents for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=828</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=828"/>
		<updated>2009-10-14T07:45:00Z</updated>

		<summary type="html">&lt;p&gt;St09909: /* How to run the RCU - DRORC - Busybox setup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
== BusyBox Hardware tests at UiB ==&lt;br /&gt;
In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.&lt;br /&gt;
Components in LAB setup :&lt;br /&gt;
* Local Trigger Crate (LTU)&lt;br /&gt;
* Readout Control Unit (RCU) with Front End Cards (FEC)&lt;br /&gt;
* Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software.&lt;br /&gt;
* BusyBox with 2 FPGAs but only 1U rack.&lt;br /&gt;
&lt;br /&gt;
[[How to run the RCU - DRORC - Busybox setup]]&lt;br /&gt;
&lt;br /&gt;
=== Version history ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0 &#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Magne Munkejord &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download Section ===&lt;br /&gt;
Specification document:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source files:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BusyBox firmware:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Revision 31 : &#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VHDL source code for Trigger Receiver module:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DCS board firmware for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related documents for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=821</id>
		<title>Busy Box and related</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=Busy_Box_and_related&amp;diff=821"/>
		<updated>2009-10-09T14:56:23Z</updated>

		<summary type="html">&lt;p&gt;St09909: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
[[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal)&lt;br /&gt;
&lt;br /&gt;
Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module.&lt;br /&gt;
&lt;br /&gt;
Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs.&lt;br /&gt;
&lt;br /&gt;
The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data.&lt;br /&gt;
&lt;br /&gt;
The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full.&lt;br /&gt;
&lt;br /&gt;
Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART.&lt;br /&gt;
&lt;br /&gt;
The BusyBoxes are located in the DAQ counting rom.&lt;br /&gt;
&lt;br /&gt;
=== [[How to run the RCU - DRORC - Busybox setup]] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Version history ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.0 &#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Magne Munkejord &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Download Section ===&lt;br /&gt;
Specification document:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source files:&amp;lt;br&amp;gt;&lt;br /&gt;
[http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BusyBox firmware:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;&#039;Revision 31 : &#039;&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit]&lt;br /&gt;
[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VHDL source code for Trigger Receiver module:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DCS board firmware for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]]&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related documents for BusyBox:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Alice]]&lt;br /&gt;
[[Category:Trigger]]&lt;/div&gt;</summary>
		<author><name>St09909</name></author>
	</entry>
</feed>