Block Preview

Introduction

Principle of Operation

AFE5550 is the bulk front-door of a DT5550 design: one block, 32 output pins, each carrying the digitised samples of one analog input channel, registered on the board’s readout clock.

It is the “take everything” alternative to placing 32 individual Analog Input board pins. Both routes end up in the same place - the two share a single instance of the board’s ADC subsystem - but this block gives you the whole array in one symbol and you simply leave unwired the channels you do not care about.

   4x ADC devices ──► adcs_top ──► inversion stage ──► CH0..CH31 (16 bit @ READOUT_CLK)
                                                        │
                                     MapAFECh remap ────┤
                                                        ▼
                                            ADC_A0 .. ADC_A31 pins
  

Pin Description

ADC_A0 Output 16 bit BIT VECTOR
Samples of physical AFE channel 9 (the board plug-in remaps ADC_A0 to ADC_A9 in MapAFECh). Bit 9 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A1 Output 16 bit BIT VECTOR
Samples of physical AFE channel 5 (the board plug-in remaps ADC_A1 to ADC_A5 in MapAFECh). Bit 5 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A2 Output 16 bit BIT VECTOR
Samples of physical AFE channel 7 (the board plug-in remaps ADC_A2 to ADC_A7 in MapAFECh). Bit 7 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A3 Output 16 bit BIT VECTOR
Samples of physical AFE channel 1 (the board plug-in remaps ADC_A3 to ADC_A1 in MapAFECh). Bit 1 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A4 Output 16 bit BIT VECTOR
Samples of physical AFE channel 3 (the board plug-in remaps ADC_A4 to ADC_A3 in MapAFECh). Bit 3 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A5 Output 16 bit BIT VECTOR
Samples of physical AFE channel 2 (the board plug-in remaps ADC_A5 to ADC_A2 in MapAFECh). Bit 2 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A6 Output 16 bit BIT VECTOR
Samples of physical AFE channel 0 (the board plug-in remaps ADC_A6 to ADC_A0 in MapAFECh). Bit 0 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A7 Output 16 bit BIT VECTOR
Samples of physical AFE channel 6 (the board plug-in remaps ADC_A7 to ADC_A6 in MapAFECh). Bit 6 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A8 Output 16 bit BIT VECTOR
Samples of physical AFE channel 4 (the board plug-in remaps ADC_A8 to ADC_A4 in MapAFECh). Bit 4 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A9 Output 16 bit BIT VECTOR
Samples of physical AFE channel 11 (the board plug-in remaps ADC_A9 to ADC_A11 in MapAFECh). Bit 11 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A10 Output 16 bit BIT VECTOR
Samples of physical AFE channel 10 (the board plug-in remaps ADC_A10 to ADC_A10 in MapAFECh). Bit 10 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A11 Output 16 bit BIT VECTOR
Samples of physical AFE channel 8 (the board plug-in remaps ADC_A11 to ADC_A8 in MapAFECh). Bit 8 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A12 Output 16 bit BIT VECTOR
Samples of physical AFE channel 15 (the board plug-in remaps ADC_A12 to ADC_A15 in MapAFECh). Bit 15 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A13 Output 16 bit BIT VECTOR
Samples of physical AFE channel 14 (the board plug-in remaps ADC_A13 to ADC_A14 in MapAFECh). Bit 14 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A14 Output 16 bit BIT VECTOR
Samples of physical AFE channel 13 (the board plug-in remaps ADC_A14 to ADC_A13 in MapAFECh). Bit 13 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A15 Output 16 bit BIT VECTOR
Samples of physical AFE channel 12 (the board plug-in remaps ADC_A15 to ADC_A12 in MapAFECh). Bit 12 of the fixed inversion mask is clear, so this channel is delivered as digitised. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A16 Output 16 bit BIT VECTOR
Samples of physical AFE channel 19 (the board plug-in remaps ADC_A16 to ADC_A19 in MapAFECh). Bit 19 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A17 Output 16 bit BIT VECTOR
Samples of physical AFE channel 18 (the board plug-in remaps ADC_A17 to ADC_A18 in MapAFECh). Bit 18 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A18 Output 16 bit BIT VECTOR
Samples of physical AFE channel 17 (the board plug-in remaps ADC_A18 to ADC_A17 in MapAFECh). Bit 17 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A19 Output 16 bit BIT VECTOR
Samples of physical AFE channel 16 (the board plug-in remaps ADC_A19 to ADC_A16 in MapAFECh). Bit 16 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A20 Output 16 bit BIT VECTOR
Samples of physical AFE channel 23 (the board plug-in remaps ADC_A20 to ADC_A23 in MapAFECh). Bit 23 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A21 Output 16 bit BIT VECTOR
Samples of physical AFE channel 22 (the board plug-in remaps ADC_A21 to ADC_A22 in MapAFECh). Bit 22 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A22 Output 16 bit BIT VECTOR
Samples of physical AFE channel 21 (the board plug-in remaps ADC_A22 to ADC_A21 in MapAFECh). Bit 21 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A23 Output 16 bit BIT VECTOR
Samples of physical AFE channel 20 (the board plug-in remaps ADC_A23 to ADC_A20 in MapAFECh). Bit 20 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A24 Output 16 bit BIT VECTOR
Samples of physical AFE channel 26 (the board plug-in remaps ADC_A24 to ADC_A26 in MapAFECh). Bit 26 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A25 Output 16 bit BIT VECTOR
Samples of physical AFE channel 27 (the board plug-in remaps ADC_A25 to ADC_A27 in MapAFECh). Bit 27 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A26 Output 16 bit BIT VECTOR
Samples of physical AFE channel 24 (the board plug-in remaps ADC_A26 to ADC_A24 in MapAFECh). Bit 24 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A27 Output 16 bit BIT VECTOR
Samples of physical AFE channel 25 (the board plug-in remaps ADC_A27 to ADC_A25 in MapAFECh). Bit 25 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A28 Output 16 bit BIT VECTOR
Samples of physical AFE channel 30 (the board plug-in remaps ADC_A28 to ADC_A30 in MapAFECh). Bit 30 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A29 Output 16 bit BIT VECTOR
Samples of physical AFE channel 31 (the board plug-in remaps ADC_A29 to ADC_A31 in MapAFECh). Bit 31 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A30 Output 16 bit BIT VECTOR
Samples of physical AFE channel 28 (the board plug-in remaps ADC_A30 to ADC_A28 in MapAFECh). Bit 28 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.
ADC_A31 Output 16 bit BIT VECTOR
Samples of physical AFE channel 29 (the board plug-in remaps ADC_A31 to ADC_A29 in MapAFECh). Bit 29 of the fixed inversion mask is set, so this channel is delivered inverted: x"3FFF" - sample. Safe to leave unconnected - the board plug-in only emits a signal and an assignment for pads that are actually wired.

Properties

(none) (none)
The AFE5550 block has no configurable properties - its property list is empty. Channel count, channel remap, sample width, readout clock and the inversion mask are all fixed by the DT5550 board plug-in and by adcs_top; none of them is exposed here.

⚙️ Detailed Operation

The block emits nothing itself

Component_AFE55550.CompileHDL contains no code - it returns True with an empty body. What makes the block work is one line in its constructor:

vb
  ComponentInfo.DelegateCompile = "board_plugin"
  

The compiler (diagramc_compile.vb) sees delegate_compile = "board_plugin" in the node tag, and hands the block - designator, pad array and all - to the board plug-in’s CompileIO instead. On the DT5550 that is the If type = "AFE5550" branch of bDT5550.vb, keyed on the component’s sub-type.

The practical consequence: all the real behaviour of this block lives in the board plug-in, and a board that has no AFE5550 branch in CompileIO silently generates nothing for it.

What the board plug-in does

  1. Instantiates the ADC subsystem, once. It first tests whether the architecture text already contains the marker comment --NI ADCs istantiation; if not, it calls IstantiateAdc, which adds the ADC top-level ports, the adcs_top instance, the ADC clock constraints and the ADC_READY / ADC_STATUS signals. Because the marker is a plain string sentinel, an Analog Input block and this block share one single adcs_top - whichever is compiled first creates it.

  2. Declares one signal per connected output pad (and skips the rest).

  3. Remaps the channel. For each connected pad it calls MapAFECh, which translates the block pin name into the physical AFE channel that actually carries it, and emits <pad signal> <= <physical channel>;. See the pin list below for the full table - it is not the identity permutation.

  4. Forces the inversion mask:

      ANALOG_INPUT_INVERSION <= x"FFFF0220";
      

    overriding the template default of x"00000000".

The inversion mask

Inside adcs_top each channel passes a final stage clocked by READOUT_CLK:

vhdl
  if inversion(n) = '0' then
    CHn <= iCHn;
else
    CHn <= x"3FFF" - iCHn;
end if;
  

The mask the board forces, x"FFFF0220", has bits 5, 9 and 16 to 31 set. Those are physical channel indices, so after the MapAFECh remap the block pins delivered inverted are ADC_A0, ADC_A1 and ADC_A16 … ADC_A31; pins ADC_A2 … ADC_A15 come through as digitised. The per-pin notes below spell this out.

Sample format

The pins are 16 bits wide, but the inversion arithmetic subtracts from x"3FFF", which places the ADC code in the low 14 bits (0 … 16383) of the word. The exact meaning of the upper bits is not stated in these sources; treat the sample as a 14-bit unsigned code unless your own measurements say otherwise.

Timing

  • The output stage of adcs_top is registered on READOUT_CLK, which the board maps to CLK_80(0) - the 80 MHz readout clock. All 32 channels are updated on the same edge.
  • There is no data-valid pin: the buses are free-running, one new sample per readout clock. Blocks that need a DV should generate it themselves (a constant '1', or a gate on ADC Ready).
  • The block adds no latency of its own - it is a set of assignments.

Companion block

The ADC_READY / ADC_STATUS signals created by the same IstantiateAdc call are what the ADC Ready block reads. Since this block is one of the two things that create them, an AFE5550 in the design is enough to make an ADC Ready block legal. Use it to hold your processing chain off until the four ADCs have finished their configuration sequence - before that, the sample buses carry whatever the untrained SERDES produces.

Board availability

Offered only on the DT5550 (board plug-in GUID 413F904B-7FD0-43EF-B127-74278C23F1A5).

SupportedBoard also lists DT5550SE, but no board plug-in in the repository declares itself as that model, and the toolbox visibility filter in Form1_plugins.vb implements a BOARD_MODELS.DT5550 branch only. Unlike its three siblings in this plug-in, this block does not list DT5560.

Resources & Timing

  • Latency: No latency added by the block. Samples are registered once in the adcs_top output/inversion stage, on READOUT_CLK (the board maps it to CLK_80(0)).

  • Throughput: 32 channels, one 16-bit sample each per readout clock, free running (no data-valid pin).

  • Costs nothing by itself: the block compiles to signal declarations and concurrent assignments only, and only for the pads you actually wire.
  • Shares one adcs_top instance with the Analog Input board pins; the board plug-in guards against a second instantiation with the --NI ADCs istantiation marker string.
  • Creates the ADC_READY / ADC_STATUS signals that the ADC Ready block reads.