forked from M-Labs/artiq
1
0
Fork 0

doc: update slides with new API

This commit is contained in:
Sebastien Bourdeauducq 2015-07-01 23:50:11 +02:00
parent e5e035d031
commit 984e82b82a
2 changed files with 16 additions and 12 deletions

View File

@ -91,18 +91,19 @@ inner sep=.3mm] at (current page.south east) {%
\begin{minted}[frame=leftline]{python} \begin{minted}[frame=leftline]{python}
trigger.sync() # wait for trigger input trigger.sync() # wait for trigger input
start = now() # capture trigger time start = now_mu() # capture trigger time
for i in range(3): for i in range(3):
delay(5*us) delay(5*us)
dds.pulse(900*MHz, 7*us) # first pulse 5 µs after trigger dds.pulse(900*MHz, 7*us) # first pulse 5 µs after trigger
at(start + 1*ms) # re-reference time-line # re-reference time-line
at(start + seconds_to_mu(1*ms))
dds.pulse(200*MHz, 11*us) # exactly 1 ms after trigger dds.pulse(200*MHz, 11*us) # exactly 1 ms after trigger
\end{minted} \end{minted}
\begin{itemize} \begin{itemize}
\item Written in a subset of Python \item Written in a subset of Python
\item Executed on a CPU embedded on a FPGA (the \emph{core device}) \item Executed on a CPU embedded on a FPGA (the \emph{core device})
\item \verb!now(), at(), delay()! describe time-line of an experiment \item \verb!now_mu(), at_mu(), delay_mu(), delay()! describe time-line of an experiment
\item Exact time is kept in an internal variable \item Exact time is kept in an internal variable
\item That variable only loosely tracks the execution time of CPU instructions \item That variable only loosely tracks the execution time of CPU instructions
\item The value of that variable is exchanged with the RTIO fabric that \item The value of that variable is exchanged with the RTIO fabric that
@ -148,11 +149,12 @@ dds.on(f, phase=0) # must round to integer tuning word
for i in range(n): for i in range(n):
delay(dt) # must round to native cycles delay(dt) # must round to native cycles
dt_raw = time_to_cycles(dt) # integer number of cycles dt_raw = seconds_to_mu(dt) # integer number of cycles
f_raw = dds.frequency_to_ftw(f) # integer frequency tuning word f_raw = dds.frequency_to_ftw(f) # integer frequency tuning word
# determine correct phase despite accumulation of rounding errors # determine correct (to FP precision) phase
phi = n*cycles_to_time(dt_raw)*dds.ftw_to_frequency(f_raw) # despite accumulation of rounding errors
phi = mu_to_seconds(n*dt_raw)*dds.ftw_to_frequency(f_raw)
\end{minted} \end{minted}
\begin{itemize} \begin{itemize}

View File

@ -105,18 +105,19 @@ inner sep=.3mm] at (current page.south east) {%
\begin{minted}[frame=leftline]{python} \begin{minted}[frame=leftline]{python}
trigger.sync() # wait for trigger input trigger.sync() # wait for trigger input
start = now() # capture trigger time start = now_mu() # capture trigger time
for i in range(3): for i in range(3):
delay(5*us) delay(5*us)
dds.pulse(900*MHz, 7*us) # first pulse 5 µs after trigger dds.pulse(900*MHz, 7*us) # first pulse 5 µs after trigger
at(start + 1*ms) # re-reference time-line # re-reference time-line
at_mu(start + seconds_to_mu(1*ms))
dds.pulse(200*MHz, 11*us) # exactly 1 ms after trigger dds.pulse(200*MHz, 11*us) # exactly 1 ms after trigger
\end{minted} \end{minted}
\begin{itemize} \begin{itemize}
\item Written in a subset of Python \item Written in a subset of Python
\item Executed on a CPU embedded on a FPGA (the \emph{core device}) \item Executed on a CPU embedded on a FPGA (the \emph{core device})
\item \verb!now(), at(), delay()! describe time-line of an experiment \item \verb!now_mu(), at_mu(), delay_mu(), delay()! describe time-line of an experiment
\item Exact time is kept in an internal variable \item Exact time is kept in an internal variable
\item That variable only loosely tracks the execution time of CPU instructions \item That variable only loosely tracks the execution time of CPU instructions
\item The value of that variable is exchanged with the RTIO fabric that \item The value of that variable is exchanged with the RTIO fabric that
@ -162,11 +163,12 @@ dds.on(f, phase=0) # must round to integer tuning word
for i in range(n): for i in range(n):
delay(dt) # must round to native cycles delay(dt) # must round to native cycles
dt_raw = time_to_cycles(dt) # integer number of cycles dt_raw = seconds_to_mu(dt) # integer number of cycles
f_raw = dds.frequency_to_ftw(f) # integer frequency tuning word f_raw = dds.frequency_to_ftw(f) # integer frequency tuning word
# determine correct phase despite accumulation of rounding errors # determine correct (to FP precision) phase
phi = n*cycles_to_time(dt_raw)*dds.ftw_to_frequency(f_raw) # despite accumulation of rounding errors
phi = n*mu_to_seconds(dt_raw)*dds.ftw_to_frequency(f_raw)
\end{minted} \end{minted}
\begin{itemize} \begin{itemize}