XRM(2)-DAC-D4/1G User Guide
V2.2 - Mar 8, 2018
ignored. At the end of the transfer process the data read from the devices is registered on the read data port at
the end of the handshake sequence. This data is held until the next read sequence is triggered.
Initialisation sequences normally use only the address and data values specified in the initialisation table
contained in sampck_synth_init.vhd. However, the configuration sequence for the DAC requires that part of this
initialisation sequence can be varied in order to configure the DLL control bits correctly, so an additional port is
used to provide this information for the instantiations driving the DACs; this port is ignored by the synthesiser
instantiation which uses the same piece of VHDL code.
A further port is used specify the "device type" which controls the width of each field in the serial stream to suit
the device being programmed. This must also be programmable in order to preserve code commonality, since
the sequences for each of the DACs is slightly different and the field widths of the serial stream differ between
the DAC and the synthesiser.
3.2.5 Digital I/O
The digital I/O pins use signalling levels of 3.3 volts and can be driven directly by the host from a dedicated
register bit, one for each port, or be used as inputs. Ports can be individually configured as inputs or outputs. In
addition the ARB waveform generator synchronisation marker can be output via these ports. All signals on these
ports are clocked using the FABRCLK clock.
3.2.6 General Purpose I/O
The general purpose I/O pins, which are connected to J6 and J7, can be read or written as single-ended signals
in the example code. Write bits are mapped to register bits with associated output enables. Direction defaults to
inputs, with the state of the signal at the FPGA pins being read back in the same way as other signals.
These can also be configured to be used as a single differential signal input/output if required.
Suitable cableforms can be obtained from Samtec or Hirose director from a number of distributors (e.g. Farnell
168-8079, 168-8067).
3.2.7 Host Access via Local Bus
Data register addresses are defined in xrm_dac_d4_1g_pkg.vhd (and replicated in hwdefs.h for use by the C
application) for both types of bus.Address decoding in the VHDL is divided into two parts - page addresses and
register addresses within that space. The address ranges required to align register addresses on 128-bit or
32-bit boundaries as required by each card are defined in the appropriate 'xrc_build_pkg' library for the FPGA
card being used. The 'xrc_build_pkg' definitions also contain FPGA type definitions (e.g. USE_XRC6_BOARD
etc.) which are used to control FPGA-specific build options within the VHDL code via generate statements.
All registers are accessed using offsets from the base address of the memory space, which is returned by
software functions provided in the SDK. Data can be read and written via calls using dedicated functions in the
SDK or by directly de-referencing the fpgaSpace pointer.
Additional SDK functions are used to configure the FPGA with the specific bit file, set various system clocks and
pass command-line parameters.
The application also provides low-level test and diagnostic routines.
The PARLOCBUS_IF (Virtex4, Virtex5 and OCPBUS_IF (Virtex6, Virtex7, Kintex7) provide a standard interface
for address decoding, irrespective of the type of local bus being implemented.
3.2.7.1 Virtex4, Virtex5
All registers are 32 bits wide; addresses A1 and A0 are unused, with the PLXDSSM component embedded in the
PARLOCBUS_IF component doing most of the work involved in decoding local bus signals and generating the
signals to ensure correct timing for reads and writes.
Page 20
VHDL Structure
xrm-dac-d4-1g-manual_v2_2.pdf