This is a short specification to help the firmware developer to integrate the DaqMux in his firmware.
The DaqMux was originally developed as an oscilloscope to transmit streams from the FPGA to software for debugging purposes. Then it started being used as a data streamer by the application to software, and it's configurations were exported to EPICS/software.
The DaqMux can perform the following functionalities
Figure 1 shows the DaqMux instantiated in the Common platform firmware in the application side.
Figure 1: Common platform firmware top-level
Table 1: DaqMux generics list and description
Generic name | default value | Description |
---|---|---|
TPD_G | 1 | Simulation variable; register clock to output delay in nanoseconds |
DECIMATOR_EN_G | True | Decimator enable |
WAVEFORM_TDATA_BYTES_G | 4 | Output lane width in bytes |
FRAME_BWIDTH_G | 10 | Power of two, which defines AXI stream transaction size in words (4 bytes)(i.e. when FRAME_BWIDTH_G = 12 → 210 x 4 = 4096 bytes) |
BAY_INDEX_G | - | Index of the DaqMux |
N_DATA_IN_G | 16 | Number of input data lanes |
N_DATA_OUT_G | 4 | Number of output data lanes |
Table 2: IO port list and description
Name | Direction | Clock domain | Width | Description |
---|---|---|---|---|
Clock logic | ||||
axiClk | Input | - | 1 | AXI Lite clock |
axiRst | Input | axiClk | 1 | AXI Lite reset |
devClk_i | Input | - | 1 | Development clock |
devRst_i | Input | Synced to devClk_i in DaqMux (for some reason) | 1 | Development logic reset |
wfClk_i | Input | - | Ouput lanes' clock | |
wfRst_i | Input | wfClk_i | Output lanes' reset | |
DaqMux control signals and timing information | ||||
trigHw_i | Input | Synced to devClk_i in DaqMux | 1 | Trigger signal to start the DaqMux streaming
|
trigCasc_i | Input | Synced to devClk_i in DaqMux | 1 | Cascaded trigger input. Can be used along with trigHw_i when enabled in the register file
|
trigCasc_o | Output | devClk_i | 1 | Output trigger signal connected to the SW Trigger Enable control register
|
armCasc_i | Input | Synced to devClk_i in DaqMux | 1 | Cascaded trigger Arm. Arms the trigger and prepares DaqMux for trigger arrival
|
armCasc_o | Output | - | 1 | Output cascade signal connected to the Arm HW Trigger control register
|
freezeHw_i | Input | Synced to devClk_i in DaqMux | 1 | Adds invalid flag to the streams that are forwarded, and they will be discarded in one of the posterior blocks in the pipeline
|
timeStamp_i | Input | Synced to devClk_i in DaqMux | 64 | Time stamp coming from the AMC carrier core |
bsa_i | Input | Synced to devClk_i in DaqMux | 128 | BSA information coming from the AMC carrier core |
dmod_i | Input | Synced to devClk_i in DaqMux | 192 | Dmod timing information coming from the AMC carrier core |
AXI Lite register memory mapped interface | ||||
axilReadMaster | Input | axiClk | 1 | AXI Lite record containing Read Address channel
Read data channel
|
axilReadSlave | Output | axiClk | 1 | AXI Lite record containing Read Address channel
Read data channel
|
axilWriteMaster | Input | axiClk | 1 | AXI Lite record containing Write address channel
Write data channel
Write ack channel
|
axilWriteSlave | Output | axiClk | 1 | AXI Lite record containing Write address channel
Write data channel
Write ack channel
|
Input lane array | ||||
sampleDataArr_i | Input | |||
sampleValidVec_i | Input | |||
linkReadyVec_i | Input | |||
Output lane array | ||||
rxAxisMasterArr_o | Output | wfClk_i | ||
rxAxisSlaveArr_i | Input | wfClk_i | ||
rxAxisCtrlArr_i | Input | wfClk_i |
rxAxisMasterArr_o