Commit c379545f authored by Theodor-Adrian Stana's avatar Theodor-Adrian Stana

gw-submod: Update gateware to v2.0 with user guide update

Signed-off-by: Theodor-Adrian Stana's avatarTheodor Stana <t.stana@cern.ch>
parent 3ced8fbf
conv-ttl-blo-gw @ b7a79518
Subproject commit 64f1a25527c425d9fa2646899a265702fbf160f8
Subproject commit b7a79518f2ec59c7a802f049fff0d7e841d27c4d
......@@ -13,7 +13,7 @@
height="313.81104"
id="svg2"
version="1.1"
inkscape:version="0.48.4 r9939"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="conv-sys-bd.svg">
<defs
id="defs4">
......@@ -81,18 +81,18 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="335.33808"
inkscape:cy="182.46555"
inkscape:zoom="1.979899"
inkscape:cx="268.39298"
inkscape:cy="131.39287"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1920"
inkscape:window-height="1138"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-width="1855"
inkscape:window-height="1176"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
......@@ -368,14 +368,14 @@
sodipodi:linespacing="125%"
id="text6416"
y="194.09735"
x="271.58524"
x="272.83466"
style="font-size:10px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
y="194.09735"
x="271.58524"
x="272.83466"
id="tspan6418"
sodipodi:role="line"
style="text-align:end;text-anchor:end">monitoring</tspan></text>
style="text-align:end;text-anchor:end">diagnostics</tspan></text>
</g>
<rect
y="198.42519"
......
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="665.78235"
height="298.79001"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="timetag-delay.svg">
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.98994949"
inkscape:cx="194.19745"
inkscape:cy="35.213476"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1855"
inkscape:window-height="1176"
inkscape:window-x="65"
inkscape:window-y="24"
inkscape:window-maximized="1"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
showguides="true"
inkscape:guide-bbox="true">
<inkscape:grid
originy="-191.23925mm"
originx="-6.2425349mm"
spacingy="1mm"
spacingx="1mm"
units="mm"
snapvisiblegridlinesonly="true"
enabled="true"
visible="true"
empspacing="5"
id="grid3004"
type="xygrid" />
</sodipodi:namedview>
<defs
id="defs4">
<marker
style="overflow:visible"
id="TriangleInM"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleInM">
<path
transform="scale(-0.4,-0.4)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path3945"
inkscape:connector-curvature="0" />
</marker>
<marker
style="overflow:visible"
id="TriangleOutM"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutM">
<path
inkscape:connector-curvature="0"
transform="scale(0.4,0.4)"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path3939" />
</marker>
<marker
style="overflow:visible"
id="TriangleInMP"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleInMP">
<path
transform="scale(-0.4,-0.4)"
style="fill:#cccccc;fill-rule:evenodd;stroke:#cccccc;stroke-width:1pt"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path4442"
inkscape:connector-curvature="0" />
</marker>
<marker
style="overflow:visible"
id="TriangleOutMJ"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="TriangleOutMJ">
<path
inkscape:connector-curvature="0"
transform="scale(0.4,0.4)"
style="fill:#cccccc;fill-rule:evenodd;stroke:#cccccc;stroke-width:1pt"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
id="path4445" />
</marker>
</defs>
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-22.119217,-75.952715)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<path
style="fill:none;stroke:#cccccc;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
d="m 460.62992,77.952715 0,230.314965"
id="path3799"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3801"
d="m 354.33071,77.952715 0,230.314965"
style="fill:none;stroke:#cccccc;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<path
sodipodi:nodetypes="cc"
transform="translate(95.610931,79.465469)"
inkscape:connector-curvature="0"
id="path3779"
d="m 471.3182,-1.5127535 0,230.3149635"
style="fill:none;stroke:#cccccc;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
transform="translate(95.610931,79.465469)"
y="-1.5127535"
x="46.121349"
height="230.31496"
width="106.29921"
id="rect3003"
style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:none" />
<path
sodipodi:nodetypes="cccccccccccccccccccccccc"
inkscape:connector-curvature="0"
id="path3006"
d="m 106.29921,290.55116 35.43307,0 0,-53.14961 53.14961,0 0,53.14961 53.1496,0 0,-53.14961 53.14961,0 0,53.14961 53.14961,0 0,-53.14961 53.1496,0 0,53.14961 53.14961,0 0,-53.14961 53.14961,0 0,53.14961 53.1496,0 0,-53.14961 53.14961,0 0,53.14961 53.14961,0 -10e-6,-53.14963 14.17323,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
id="path3776"
d="m 106.29921,201.96848 106.29921,0 0,-53.1496 474.80315,-2e-5"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text3778"
y="88.582634"
x="244.48819"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
id="tspan3786"
style="font-size:14px;text-align:end;text-anchor:end"
y="88.582634"
x="244.48819"
sodipodi:role="line">Asynchronous</tspan><tspan
id="tspan3001"
style="font-size:14px;text-align:end;text-anchor:end"
y="106.08263"
x="248.94522"
sodipodi:role="line">pulse </tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path3788"
d="m 212.59842,109.8425 0,28.34645"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)"
d="m 248.0315,340.1574 0,-24.80311"
id="path4234"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="248.03149"
y="354.33063"
id="text4236"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="248.03149"
y="354.33063"
id="tspan4238"
style="font-size:14px;text-align:center;text-anchor:middle">Pulse sampled</tspan><tspan
sodipodi:role="line"
x="248.03149"
y="371.83063"
style="font-size:14px;text-align:center;text-anchor:middle"
id="tspan4240">by 8ns clock</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4242"
d="m 566.92913,340.1574 0,-24.80311"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutM)" />
<text
sodipodi:linespacing="125%"
id="text4244"
y="354.33063"
x="566.92914"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
id="tspan4248"
style="font-size:14px;text-align:center;text-anchor:middle"
y="354.33063"
x="566.92914"
sodipodi:role="line">Time-tag stored</tspan><tspan
id="tspan4252"
style="font-size:14px;text-align:center;text-anchor:middle"
y="371.83063"
x="566.92914"
sodipodi:role="line">in FIFO</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3781"
y="168.41125"
x="21.259842"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
xml:space="preserve"><tspan
style="font-size:20px;font-weight:bold"
y="168.41125"
x="21.259842"
id="tspan3783"
sodipodi:role="line">Pulse</tspan><tspan
style="font-size:20px;font-weight:bold"
id="tspan3785"
y="193.41125"
x="21.259842"
sodipodi:role="line">input</tspan></text>
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="21.259842"
y="258.75662"
id="text3787"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="21.259842"
y="258.75662"
id="tspan3791"
style="font-size:20px;font-weight:bold">8ns </tspan><tspan
id="tspan3795"
sodipodi:role="line"
x="21.259842"
y="283.75662"
style="font-size:20px;font-weight:bold">clock</tspan></text>
<path
transform="translate(36.292442,77.452716)"
inkscape:connector-curvature="0"
id="path3803"
d="m 328.66819,120.9724 85.03937,0"
style="fill:none;stroke:#cccccc;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleInMP);marker-end:url(#TriangleOutMJ)"
sodipodi:nodetypes="cc" />
<g
id="g4519"
transform="translate(-6.4697266e-6,74.215784)">
<g
id="g4524"
transform="translate(2.454367,0)">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:none"
id="rect4517"
width="49.606293"
height="21.259842"
x="346.38474"
y="36.126694"
transform="translate(36.292442,77.452716)" />
<text
xml:space="preserve"
style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
x="387.30942"
y="131.29594"
id="text4513"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4515"
x="387.30942"
y="131.29594"
style="font-size:20px;font-weight:bold;fill:#cccccc;fill-opacity:1">8ns</tspan></text>
</g>
</g>
</g>
</svg>
......@@ -65,7 +65,7 @@
05-08-2013 & 1.04 & Memory map is now appendix \\
23-12-2013 & 1.05 & Added remote reprogramming support \\
10-01-2014 & 1.06 & Added SNMP access sub-section \\
14-02-2014 & 2.00 & Added diagnostics section \\
06-03-2014 & 2.00 & Added support for diagnostics \\
\hline
\end{tabular}
}
......@@ -136,6 +136,7 @@ pulses (see Section~\ref{sec:pulse-def}). The main features of the board are:
\item input pulse counters
\item input pulse time-tagging
\item manual pulse triggering
\item remotely reset the FPGA logic
\end{itemize}
\item Remote reprogramming over I$^2$C lines on VME P1 connector
\item Status LEDs
......@@ -562,9 +563,9 @@ a pulse will be generated on the output.}}
\subsection{Pulse jitter and delay}
\label{sec:pulse-jit}
Figure~\ref{fig:tpd-jit} defines propagation delay from input to output and output
jitter and shows how propagation delay was measured per each signal type.
Table~\ref{tbl:pulse-tpd-jit} presents the characteristics measured on
Figure~\ref{fig:tpd-jit} defines propagation delay from input to output (measured visually
using an oscilloscope with cursors placed on the signals as shown in the figure) and output
jitter. Table~\ref{tbl:pulse-tpd-jit} presents the characteristics measured on
the CONV-TTL-BLO.
The PG block incorporates a glitch filter that can prevent pulses being generated as a
......@@ -623,7 +624,7 @@ can be left in the \textbf{OFF} position.
$t_j$ & Leading edge jitter & & \\
& \hspace{2mm} Without glitch filter & 0 & ns \\
& \hspace{2mm} With glitch filter & 50 & ns \\
$t_{PD}$ & Propagation delay (1) & & \\
$t_{PD}$ & Propagation delay (1) (2) & & \\
& \hspace{2mm} TTL to TTL & 40 & ns \\
& \hspace{2mm} TTL to blocking & 80 & ns \\
& \hspace{2mm} Blocking to TTL & 80 & ns \\
......@@ -637,7 +638,8 @@ can be left in the \textbf{OFF} position.
}
\end{table}
\noindent Note 1: If the glitch filter is enabled, it adds an extra 350~ns delay to $t_{PD}$.
\noindent Note 1: If the glitch filter is enabled, it adds an extra 350~ns delay to $t_{PD}$. \\
\noindent Note 2: Measured visually using cursors on an oscilloscope.
%======================================================================================
% SEC: Communicating to the CONV-TTL-BLO
......@@ -692,12 +694,12 @@ data to the board. As names suggest, \textit{readreg} reads a board register, w
\multicolumn{1}{c}{\textbf{Command}} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
writereg \textit{slot addr val} & Writes the \textit{hex} value \textit{val} to hex address
\textit{addr} of board in slot number \textit{slot} \\
\textit{addr} of board in slot number \textit{slot}. \\
writemregs \textit{slot addr v1 .. v8} & Allows writing up to eight different values
to the same register. The values are given in hexadecimal
format and are separate by spaces \\
format and are separated by spaces. \\
readreg \textit{slot addr} & Returns the value of register at hex address \textit{addr} of
board in slot number \textit{slot} \\
board in slot number \textit{slot}. \\
\hline
\end{tabular}
}
......@@ -705,7 +707,7 @@ data to the board. As names suggest, \textit{readreg} reads a board register, w
An example of retrieving the CONV-TTL-BLO ID of a CONV-TTL-BLO plugged into VME slot 2 of the crate
\textit{some-crate} is given below. The converter board ID can be retrieved from the board ID
register at address 0x000 (BIDR -- see Appendix~\ref{app:conv-regs-bidr}),
register at address \textbf{0x000} (BIDR -- see Appendix~\ref{app:conv-regs-bidr}),
if the board is present in slot 2, the command should yield the ASCII string \textbf{TBLO}.
\begin{verbatim}
......@@ -742,7 +744,7 @@ An example of writing the value \textbf{0xabcde} to a register at address \textb
a board in VME slot 11 and then reading it back to check for correct write is given below.
Note that this example does not normally yield a similar result if performed on the
CONV-TTL-BLO, since even if a register is implemented at address \textbf{0x1c4},
it may be that not all of its bits are writable.
it may not be writable.
\begin{verbatim}
Connected to some-crate.cern.ch.
......@@ -785,8 +787,8 @@ iso.3.6.1.4.1.37968.1.1.8.2.2.1.2.1 = STRING: "54424C4F"
\end{verbatim}
Here, the \textit{snmpget} command is used with a version 2c SNMP protocol (the
\textit{-v} parameter) and using the public community string (the -c parameter).
The OID (the last parameter of the \textit{snmpget command}) contains multiple
\textit{-v} parameter) and using the public community string (the \textit{-c} parameter).
The OID (the last parameter of the \textit{snmpget} command) contains multiple
values that inform the MIB compiler how to parse the MIB object tree. Of these
values, only two are relevant to the user. These values are presented in
Figure~\ref{fig:oid}.
......@@ -811,8 +813,7 @@ An example of writing the value \textbf{0xabcde} to a register
at address \textbf{0x1c4} of a board in VME slot 11 and then reading it back to
check for correct write is given below. Note that this example does not normally
yield a similar result if performed on the CONV-TTL-BLO, since even if a register
is implemented at address \textbf{0x1c4}, it may be that not all of its bits are
writable.
is implemented at address \textbf{0x1c4}, it may not be writable.
\begin{verbatim}
%> snmpset -v2c -c admin-password some-crate \
......@@ -1032,12 +1033,12 @@ value.
& \multicolumn{1}{c}{\textbf{Description}} \\
\hline
WR & 8~ns & \textbf{\textit{Currently not implemented}} \newline
Precise, centralized and synchronized time-tag \newline
Precise, centralized and synchronized time-tag \newline
Obtained and configurable via WR \newline
Resolution: \textbf{8~ns} \\
Local & 8~ns & Local, unsynchronized time-tag \newline
Obtained by counting the ticks of a 125~MHz clock signal \newline
Can be set remotely by writing the TAI value registers (TVL/HR) \newline
Configurable by writing the TAI value registers (TVL/HR) \newline
Resolution: \textbf{8~ns} \\
\hline
\end{tabular}
......@@ -1075,11 +1076,19 @@ advance. A full read cycle of a FIFO sample should look like this:
The E (empty) or F (full) bits of the TFCSR can be used to know when to stop reading
the FIFO. Of the two, it is recommended to use the E bit and read the FIFO while
this bit is cleared ('0').
this bit is cleared ('0'). When the FIFO is full of samples, the FPGA will not store
any more samples and the F bit will be set. Note that the USED field will indicate 0
samples stored at this time.
When the FIFO is full of samples, the FPGA will not store any more samples
and the F bit will be set. Note that the USED field will indicate 0 samples stored
at this time.
\begin{figure}[h]
\centerline{\includegraphics[width=.7\textwidth]{fig/timetag-delay}}
\caption{Time-tag storage delay}
\label{fig:timetag-delay}
\end{figure}
Due to the internal logic of the FPGA, there is a delay of three to four 8~ns cycles
between the moment when a pulse arrives on the channel input and the moment when
a time-tag is stored to the FIFO. This delay is shown in Figure~\ref{fig:timetag-delay}.
%------------------------------------------------------------------------------
% SUBSEC: Remote reset
......@@ -1131,24 +1140,23 @@ here for formatting reasons and to keep to the rules of the Linux command-line.
It is possible to remotely trigger a pulse on a channel of choice. This feature
should only be used when debugging the connection between two CONV-TTL-BLO boards,
or between a CONV-TTL-BLO and another receiver. This is why manual pulse
triggering is "password" protected.
triggering is password-protected.
In order to manually trigger a pulse, a user should write a four-byte "magic sequence"
(the "password") to the MPT (manual pulse trigger) field in the board's control
register at address 0x004 (CR -- see Appendix~\ref{app:conv-regs-cr}). The MPT
field is dual-purpose, as shown in Figure~\ref{fig:cr-mpt}. As shown in
Table~\ref{tbl:man-trig-magic}, prior to sending a pulse, the MPT field should be written
with the magic sequence, followed by a channel number in the range \textbf{1..6}.
In order to manually trigger a pulse, the user should write five bytes to the board's control
register at address \textbf{0x004} (CR -- see Appendix~\ref{app:conv-regs-cr}), as shown in
Figure~\ref{tbl:man-trig}. The MPT field is dual-purpose, as shown in
Figure~\ref{fig:cr-mpt}. Until the magic sequence is input, it should be written with the
bytes in the magic sequence. After that, it should be written with the channel number.
\begin{figure}[h]
\centerline{\includegraphics[width=\textwidth]{fig/cr-mpt}}
\centerline{\includegraphics[width=.85\textwidth]{fig/cr-mpt}}
\caption{MPT field in the CR}
\label{fig:cr-mpt}
\end{figure}
\begin{table}[h]
\caption{Write sequence to initiate manual pulse triggering}
\label{tbl:man-trig-magic}
\label{tbl:man-trig}
\centerline
{
%\rowcolors{2}{white}{gray!25}
......@@ -1156,26 +1164,22 @@ with the magic sequence, followed by a channel number in the range \textbf{1..6}
\hline
\textbf{Byte 0} & \textbf{Byte 1} & \textbf{Byte 2} & \textbf{Byte 3} & \textbf{Byte 4}\\
\hline
0xde & 0xad & 0xbe & 0xef & Channel number in range \textbf{1..6} \\
0xde & 0xad & 0xbe & 0xef & Channel number in range 1..6 \\
\hline
\end{tabular}
}
\end{table}
Note that in order for a pulse to be triggered, five write cycles to the MPT must be
done. If the fifth cycle is a channel number in the range \textbf{1..6}, one and only
one pulse is generated on the channel outputs (both TTL and blocking). After that,
should it be desired to generate another pulse on the channel, the magic sequence
must be input again. If the channel number is not in the range \textbf{1..6}, no
pulse is generated on any channel and no error is reported.
Figure~\ref{fig:man-trig-fsm} shows the logic of the manual pulse triggering
mechanism. As can be seen from the figure, if one of the bytes of the magic
sequence is not as expected, the logic returns to waiting for the first byte
of the magic sequence.
Figure~\ref{fig:man-trig-fsm} shows the manual pulse triggering logic. In order for a
pulse to be triggered, five write cycles to the MPT field must be done. If the fifth cycle is
a channel number in the range 1..6, one and only one pulse is generated by the PG
block (see Figure~\ref{fig:pulse-rep}). After that, should it be desired to generate
another pulse on the channel, the magic sequence must be input again. If the channel
number is not in the range 1..6, no pulse is generated on any channel and no
error is reported.
\begin{figure}[h]
\centerline{\includegraphics[width=.6\textwidth]{fig/man-trig-fsm}}
\centerline{\includegraphics[width=.45\textwidth]{fig/man-trig-fsm}}
\caption{Manual pulse triggering logic}
\label{fig:man-trig-fsm}
\end{figure}
......@@ -1328,21 +1332,6 @@ data. The user can access this space via the FAR register. Note that in order to
data to the flash, a special sequence of commands should be sent. The flash write sequence
is given in the datasheet of the flash chip~\cite{m25p32}.
%--------------------------------------------------------------------------------------
% SUBSEC: Example script
%--------------------------------------------------------------------------------------
\subsection{The \textit{multiboot.py} script}
\label{sec:reprog-example-script}
An example Python script is provided to access the MultiBoot logic on the CONV-TTL-BLO.
The script can be found under the \textit{software/multiboot/} folder in the project
repository~\cite{ctb-repo}. The script implements the workflow in
Table~\ref{tbl:reprog-workflow} and can be used either as \textit{the} means of remotely
reprogramming the flash chip, or as an example for users to write their own tools.
Table~\ref{tbl:reprog-scripts} shows the files in the \textit{software/} repository folder
needed to run the script.
\begin{table}[h]
\caption{Scripts needed for remote reprogramming}
\label{tbl:reprog-scripts}
......@@ -1363,6 +1352,21 @@ needed to run the script.
}
\end{table}
%--------------------------------------------------------------------------------------
% SUBSEC: Example script
%--------------------------------------------------------------------------------------
\subsection{The \textit{multiboot.py} script}
\label{sec:reprog-example-script}
An example Python script is provided to access the MultiBoot logic on the CONV-TTL-BLO.
The script can be found under the \textit{software/multiboot/} folder in the project
repository~\cite{ctb-repo}. The script implements the workflow in
Table~\ref{tbl:reprog-workflow} and can be used either as \textit{the} means of remotely
reprogramming the flash chip, or as an example for users to write their own tools.
Table~\ref{tbl:reprog-scripts} shows the files in the \textit{software/} repository folder
needed to run the script.
The \textit{multiboot.py} script communicates to the reprogramming logic on the FPGA,
giving the user access to the following:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment