Commit 1d3f43d3 authored by Dimitris Lampridis's avatar Dimitris Lampridis

[doc] add section on reference Nodes

parent 5f841531
<mxfile modified="2019-07-19T11:30:00.330Z" host="www.draw.io" agent="Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0" etag="dVAsjTgn41owFf55ERsg" version="11.0.0" type="device"><diagram id="YKdj9BhTBNf1aPVHSjrr" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
......@@ -4,28 +4,17 @@
Reference Nodes
---------------
.. _spec150t_ref_adc:
WRTD provides so-called "reference" :ref:`Nodes <node>` for the most common use-cases.
SPEC150T-based FMC-ADC
======================
Currently these include:
.. figure:: graphics/wrtd_ref_design_spec_adc.png
:name: fig-ref_spec_adc
:align: center
:alt: alternate text
:figclass: align-center
#. :ref:`spec150t_ref_adc`: A four channel, 100MHz, 14bit PCIe-based ADC capable of triggering via
WRTD.
#. :ref:`svec_ref_tdc_fd`: A pulse-in/pulse-out WRTD Node in VME format, for generic trigger
distribution applications.
SPEC150T-based FMC-ADC reference WRTD Node
.. toctree::
:hidden:
.. _svec_ref_tdc_fd:
SVEC-based TDC+FDELAY
=====================
.. figure:: graphics/wrtd_ref_design_svec_list.png
:name: fig-ref_svec_list
:align: center
:alt: alternate text
:figclass: align-center
SVEC-based TDC+FDELAY reference WRTD Node
ref_spec_fmc_adc
ref_svec_tdc_fd
.. _spec150t_ref_adc:
SPEC150T-based FMC-ADC
======================
+----------------------------------------+------------+
| **Parameter** | **Value** |
+========================================+============+
| # of :ref:`Applications <application>` | 1 |
+----------------------------------------+------------+
| Name | wrtd-adc |
+----------------------------------------+------------+
| Local input Channels | 5 |
+----------------------------------------+------------+
| Local output Channels | 1 |
+----------------------------------------+------------+
| Maximum :ref:`Rules <rule>` | 16 |
+----------------------------------------+------------+
| Maximum :ref:`Alarms <alarm>` | 1 |
+----------------------------------------+------------+
| Average input to Message latency | 10μs (TBC) |
+----------------------------------------+------------+
| Average Message to output latency | 10μs (TBC) |
+----------------------------------------+------------+
| Can receive Messages over WR | YES |
+----------------------------------------+------------+
| Can send Messages over WR | YES |
+----------------------------------------+------------+
This is a WRTD :ref:`node` based on the `Simple PCIe FMC Carrier (SPEC)
<https://www.ohwr.org/project/spec/wikis/home>`_ and the `FMC ADC 100M 14b 4cha (FMC-ADC)
<https://www.ohwr.org/project/fmc-adc-100m14b4cha/wikis/home>`_.
.. important:: This :ref:`node` does not use the standard SPEC, because the FPGA (XC6SLX45T) is not
large enough for the complete design. Instead it uses the pin-compatible XC6SLX150T
FPGA (the rest of the board is exactly the same, only the FPGA chip is
different). This special version is available from the manufacturers of the SPEC
board upon request.
This :ref:`node` provides the possibility to generate WRTD :ref:`Messages <message>` based on
trigger events of the FMC-ADC, as well as to trigger the FMC-ADC from incoming WRTD :ref:`Messages
<message>`.
.. figure:: graphics/wrtd_ref_design_spec_adc_simple.png
:name: fig-ref_spec_adc
:width: 400pt
:align: center
:alt: alternate text
:figclass: align-center
SPEC150T-based FMC-ADC reference WRTD Node
The architecture of the :ref:`node` can be seen in :numref:`fig-ref_spec_adc`. The user communicates
with the :ref:`node` using one of the methods mentioned in :numref:`usage`. At the same time, the
user accesses the FMC-ADC core to configure everything not related to WRTD (acquisition parameters,
trigger source selection, data retrieval, etc.) using the existing `ADC library
<https://www.ohwr.org/project/adc-lib/wikis/home>`_. Internally, the :ref:`node` is running one
:ref:`application`, responsible for configuring the WRTD-related aspects of the FMC-ADC.
The five :ref:`Local Input Channels <local_channel>` are mapped as follows:
+-------------+---------------------------------+
| **Channel** | **Function** |
+=============+=================================+
| ``LC-I1`` | ADC Channel #1 internal trigger |
+-------------+---------------------------------+
| ``LC-I2`` | ADC Channel #2 internal trigger |
+-------------+---------------------------------+
| ``LC-I3`` | ADC Channel #3 internal trigger |
+-------------+---------------------------------+
| ``LC-I4`` | ADC Channel #4 internal trigger |
+-------------+---------------------------------+
| ``LC-I5`` | External trigger input |
+-------------+---------------------------------+
.. note:: In order for any of the :ref:`Local Input Channels <local_channel>` to produce an
:ref:`event`, the user must also properly configure the trigger source of the FMC-ADC via
the ADC library. This falls outside the the scope of WRTD library.
The single :ref:`Local Output Channel <local_channel>` (``LC-O1``) is mapped to the "WRTD" trigger
input of the FMC-ADC.
.. note:: In order for :ref:`Local Output Channel <local_channel>` to trigger the FMC-ADC, the user
must also properly configure the trigger source of the FMC-ADC via the ADC library, to
enable triggering from the "WRTD" trigger input. This falls outside the scope of WRTD
library.
.. hint:: The User Application and the WRTD Application access different and separate parts of the
FMC-ADC, so there is no danger of accessing the same resources simultaneously.
.. _svec_ref_tdc_fd:
SVEC-based TDC+FD
=================
+----------------------------------------+------------+------------+
| **Parameter** | **Value** |
+========================================+============+============+
| # of :ref:`Applications <application>` | 2 |
+----------------------------------------+------------+------------+
| | **App #1** | **App #2** |
+----------------------------------------+------------+------------+
| Name | wrtd-tdc | wrtd-fd |
+----------------------------------------+------------+------------+
| Local input Channels | 5 | 0 |
+----------------------------------------+------------+------------+
| Local output Channels | 0 | 4 |
+----------------------------------------+------------+------------+
| Maximum :ref:`Rules <rule>` | 16 | 16 |
+----------------------------------------+------------+------------+
| Maximum :ref:`Alarms <alarm>` | 0 | 1 |
+----------------------------------------+------------+------------+
| Average input to Message latency | 20μs (TBC) | N.A. |
+----------------------------------------+------------+------------+
| Average Message to output latency | N.A. | 40μs (TBC) |
+----------------------------------------+------------+------------+
| Can receive Messages over WR | NO | YES |
+----------------------------------------+------------+------------+
| Can send Messages over WR | YES | NO |
+----------------------------------------+------------+------------+
This is a WRTD :ref:`node` based on the `Simple VME FMC Carrier (SVEC)
<https://www.ohwr.org/project/svec/wikis/home>`_, the `FMC Time to Digital Converter (FMC-TDC)
<https://www.ohwr.org/project/fmc-tdc-1ns-5cha-hw/wikis/home>`_ and the `FMC Fine Delay generator
(FMC-FD) <https://www.ohwr.org/project/fmc-delay-1ns-8cha/wikis/home>`_.
.. important:: The FMC-TDC should always be attached to "FMC Slot 1" of the SVEC, and the FMC-FD
should always be attached to "FMC Slot 2". It is not necessary though to have both
the FMCs attached, the :ref:`Node` will work if only one of the two (TDC or FD) is
present, as long as it is connected to the correct FMC slot.
The basic principle of this :ref:`node` is simple: It takes in external pulses on its FMC-TDC
inputs, timestamps them using WR time and converts them to WRTD :ref:`Messages <message>`, to be
sent over the WR network. Conversely, the :ref:`node` also receives WRTD :ref:`Messages <message>`
which are then used to generate pulses at a predefined moment on one of the FMC-FD outputs. As such,
it can be seen as a "pulse-to-message" and "message-to-pulse" converter with apllications in the
field of pulse distribution, trigger syncrhonisation, etc.
.. figure:: graphics/wrtd_ref_design_svec_list_simple.png
:name: fig-ref_svec_list
:width: 400pt
:align: center
:alt: alternate text
:figclass: align-center
SVEC-based TDC+FD reference WRTD Node
The architecture of the :ref:`node` can be seen in :numref:`fig-ref_svec_list`. The user
communicates with the :ref:`node` using one of the methods mentioned in :numref:`usage`. Internally,
the :ref:`node` is running two :ref:`Applications <application>`, each on a dedicated CPU. One is
responsible for the FMC-TDC peripheral, while the other handles the FMC-FD.
The five :ref:`Local Input Channels <local_channel>` are mapped to the five inputs of the
FMC-TDC. Thus, :ref:`event_id` ``LC-I1`` corresponds to the first FMC-TDC channel, ``LC-I2`` to the
second one, and so on, up to ``LC-I5``.
The four :ref:`Local Output Channels <local_channel>` are mapped to the four outputs of the
FMC-FD. :ref:`event_id` ``LC-O1`` corresponds to the first FMC-FD output, and so on, up to
``LC-O4``.
.. hint:: It is possible for the User Application in :numref:`fig-ref_svec_list` to access directly
the FMC-TDC and FMC-FD cores by means of their respective libraries (not shown in
:numref:`fig-ref_svec_list`), in order to fine-tune them and/or change their default
behaviour. However this should be done with extreme care, as it could lead to a race
condition between the User Application and the WRTD Applications running inside the FPGA.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment