GEX thesis source code, full text, references
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 
 
 
gex-thesis/ch.unit.dac.tex

104 lignes
2.8 KiB

\section{DAC Unit}
The digital/analog unit works with the two-channel \gls{DAC} hardware peripheral. It can be used in two modes: \gls{DC} output, and waveform generation.
The waveform mode implements direct digital synthesis (explained in \cref{sec:theory_dac_dds}) of a sine, rectangle, sawtooth or triangle wave. The generated frequency can be set with a sub-hertz precision up to the lower tens of kHz. The two outputs can use a different waveform shape, can be synchronized, and their phase offset and frequency are dynamically adjustable.
\subsection{DAC Configuration}
\begin{inicode}
[DAC:dac@13]
# Enabled channels (1:A4, 2:A5)
ch1_enable=Y
ch2_enable=Y
# Enable output buffer
ch1_buff=Y
ch2_buff=Y
# Superimposed noise type (NONE,WHITE,TRIANGLE) and nbr. of bits (1-12)
ch1_noise=NONE
ch1_noise-level=3
ch2_noise=NONE
ch2_noise-level=3
\end{inicode}
\subsection{DAC Commands}
Channels are specified in all commands as a bit map:
\begin{itemize}[nosep]
\item 0x01 -- channel 1
\item 0x02 -- channel 2
\item 0x03 -- both channels affected at once
\end{itemize}
\begin{cmdlist}
0 & \cname{WAVE\_DC}
Set a \gls{DC} level, disable \gls{DDS} for the channel
& \begin{cmdreq}
\cfield{u8} channels
\cfield{u16} level (0--4095)
\end{cmdreq} \\
1 & \cname{WAVE\_SINE}
Start a sine waveform
& \begin{cmdreq}
\cfield{u8} channels
\end{cmdreq} \\
2 & \cname{WAVE\_TRIANGLE}
Start a symmetrical triangle waveform
& \begin{cmdreq}
\cfield{u8} channels
\end{cmdreq} \\
3 & \cname{WAVE\_SAWTOOTH\_UP}
Start a rising sawtooth waveform
& \begin{cmdreq}
\cfield{u8} channels
\end{cmdreq} \\
4 & \cname{WAVE\_SAWTOOTH\_DOWN}
Start a dalling sawtooth waveform
& \begin{cmdreq}
\cfield{u8} channels
\end{cmdreq} \\
5 & \cname{WAVE\_RECTANGLE}
Start a rectangle waveform
& \begin{cmdreq}
\cfield{u8} channels
\cfield{u16} on-time (0--8191)
\cfield{u16} high level (0--4095)
\cfield{u16} low level (0--4095)
\end{cmdreq} \\
10 & \cname{SYNC}
Synchronize the two channels. The phase accumulator is reset to zero.
& \\
20 & \cname{SET\_FREQUENCY}
Set the channel frequency
& \begin{cmdreq}
\cfield{u8} channels
\cfield{float} frequency
\end{cmdreq} \\
21 & \cname{SET\_PHASE}
Set a channel's phase. It is recommended to only set the phase of one channel, leaving the other at 0°.
& \begin{cmdreq}
\cfield{u8} channels
\cfield{u16} phase (0--8191)
\end{cmdreq} \\
22 & \cname{SET\_DITHER}
Control the dithering function of the \gls{DAC} block. A high noise amplitude can cause an overflow to the other end of the output range due to a bug in the \gls{DAC} peripheral. Use value 255 to leave the parameter unchanged.
& \begin{cmdreq}
\cfield{u8} channels
\cfield{u8} noise type (0--none, 1--white, 2--triangle)
\cfield{u8} number of noise bits (1--12)
\end{cmdreq} \\
\end{cmdlist}