Programming the DAC for threshold generation is simple: A standard SPI interface takes 32 Bit of data, the device is chainable. A Perl software module cares about the data content, a simple VHDL core outputs the data and controls the CS signal.
-The slow-control interface:
+\paragraph*{Slow Control Interface}
\begin{itemize*}
\item 32 Bit Data Memory: 0xd400 - 0xd40f, Chain select mask 0xd410, Length register 0xd411
\item Transfer is started when the length register (counting 32 Bit words) is written.
\item Interface speed: e.g. 6.25 MHz -> max. 80us for 16 chips
\end{itemize*}
+\paragraph*{Configuration File}
The software takes a text file as input and generates the correct SPI sequence to load and activate the DAC.
The ASCII format is shown below, the commands can be found in table~\ref{ltc2600cmd}.
\begin{verbatim}
f333 1 4 0 0 3 0x3450
f333 1 4 0 1 3 0x1230
f333 1 4 1 0 3 0x6780
- f333 1 4 2 0 3 0x3450
+!Reference 2500
+ f333 1 4 2 0 3 1250
\end{verbatim}
\begin{itemize*}
\item DAC: The DAC number in the chain, counting from 0 to 15
\item Channel: The Channel of the DAC (0..7)
\item Value: The value to load. 16 Bit value. Note that we are using LTC2620 which are 12 Bit only, the lower 4 Bit are "don't care" in this case and should be 0
+ \item The "!Reference" keyword is used to set a reference for all following values. E.g. one can set the reference voltage used on the DAC and give all subsequent values in plain voltages. The format can be (almost) any number: integer, float or hex. The use is optional, if no reference is given, the upper limit is assumed to be 65536.
\end{itemize*}
\begin{table}
\label{ltc2600cmd}
\end{table}
+\paragraph*{Files}
+\begin{itemize*}
+ \item Implementation: trbnet/special/spi\_ltc2600.vhd
+ \item Testbench: trbnet/testbenches/tb\_ltc2600.vhd
+ \item Software: trbsoft/trb3/dac\_program.pl
+ \item Example Configuration: trbsoft/trb3/dac\_configuration.txt
+\end{itemize*}
+
+
\ No newline at end of file