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 @@ ...@@ -13,7 +13,7 @@
height="313.81104" height="313.81104"
id="svg2" id="svg2"
version="1.1" version="1.1"
inkscape:version="0.48.4 r9939" inkscape:version="0.48.3.1 r9886"
sodipodi:docname="conv-sys-bd.svg"> sodipodi:docname="conv-sys-bd.svg">
<defs <defs
id="defs4"> id="defs4">
...@@ -81,18 +81,18 @@ ...@@ -81,18 +81,18 @@
borderopacity="1.0" borderopacity="1.0"
inkscape:pageopacity="0.0" inkscape:pageopacity="0.0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1.4" inkscape:zoom="1.979899"
inkscape:cx="335.33808" inkscape:cx="268.39298"
inkscape:cy="182.46555" inkscape:cy="131.39287"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="true" showgrid="true"
showguides="true" showguides="true"
inkscape:guide-bbox="true" inkscape:guide-bbox="true"
inkscape:window-width="1920" inkscape:window-width="1855"
inkscape:window-height="1138" inkscape:window-height="1176"
inkscape:window-x="-8" inkscape:window-x="65"
inkscape:window-y="-8" inkscape:window-y="24"
inkscape:window-maximized="1" inkscape:window-maximized="1"
fit-margin-top="0" fit-margin-top="0"
fit-margin-left="0" fit-margin-left="0"
...@@ -368,14 +368,14 @@ ...@@ -368,14 +368,14 @@
sodipodi:linespacing="125%" sodipodi:linespacing="125%"
id="text6416" id="text6416"
y="194.09735" 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" 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 xml:space="preserve"><tspan
y="194.09735" y="194.09735"
x="271.58524" x="272.83466"
id="tspan6418" id="tspan6418"
sodipodi:role="line" sodipodi:role="line"
style="text-align:end;text-anchor:end">monitoring</tspan></text> style="text-align:end;text-anchor:end">diagnostics</tspan></text>
</g> </g>
<rect <rect
y="198.42519" 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 @@ ...@@ -65,7 +65,7 @@
05-08-2013 & 1.04 & Memory map is now appendix \\ 05-08-2013 & 1.04 & Memory map is now appendix \\
23-12-2013 & 1.05 & Added remote reprogramming support \\ 23-12-2013 & 1.05 & Added remote reprogramming support \\
10-01-2014 & 1.06 & Added SNMP access sub-section \\ 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 \hline
\end{tabular} \end{tabular}
} }
...@@ -136,6 +136,7 @@ pulses (see Section~\ref{sec:pulse-def}). The main features of the board are: ...@@ -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 counters
\item input pulse time-tagging \item input pulse time-tagging
\item manual pulse triggering \item manual pulse triggering
\item remotely reset the FPGA logic
\end{itemize} \end{itemize}
\item Remote reprogramming over I$^2$C lines on VME P1 connector \item Remote reprogramming over I$^2$C lines on VME P1 connector
\item Status LEDs \item Status LEDs
...@@ -562,9 +563,9 @@ a pulse will be generated on the output.}} ...@@ -562,9 +563,9 @@ a pulse will be generated on the output.}}
\subsection{Pulse jitter and delay} \subsection{Pulse jitter and delay}
\label{sec:pulse-jit} \label{sec:pulse-jit}
Figure~\ref{fig:tpd-jit} defines propagation delay from input to output and output Figure~\ref{fig:tpd-jit} defines propagation delay from input to output (measured visually
jitter and shows how propagation delay was measured per each signal type. using an oscilloscope with cursors placed on the signals as shown in the figure) and output
Table~\ref{tbl:pulse-tpd-jit} presents the characteristics measured on jitter. Table~\ref{tbl:pulse-tpd-jit} presents the characteristics measured on
the CONV-TTL-BLO. the CONV-TTL-BLO.
The PG block incorporates a glitch filter that can prevent pulses being generated as a 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. ...@@ -623,7 +624,7 @@ can be left in the \textbf{OFF} position.
$t_j$ & Leading edge jitter & & \\ $t_j$ & Leading edge jitter & & \\
& \hspace{2mm} Without glitch filter & 0 & ns \\ & \hspace{2mm} Without glitch filter & 0 & ns \\
& \hspace{2mm} With glitch filter & 50 & 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 TTL & 40 & ns \\
& \hspace{2mm} TTL to blocking & 80 & ns \\ & \hspace{2mm} TTL to blocking & 80 & ns \\
& \hspace{2mm} Blocking to TTL & 80 & ns \\ & \hspace{2mm} Blocking to TTL & 80 & ns \\
...@@ -637,7 +638,8 @@ can be left in the \textbf{OFF} position. ...@@ -637,7 +638,8 @@ can be left in the \textbf{OFF} position.
} }
\end{table} \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 % 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 ...@@ -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}} \\ \multicolumn{1}{c}{\textbf{Command}} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline \hline
writereg \textit{slot addr val} & Writes the \textit{hex} value \textit{val} to hex address 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 writemregs \textit{slot addr v1 .. v8} & Allows writing up to eight different values
to the same register. The values are given in hexadecimal 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 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 \hline
\end{tabular} \end{tabular}
} }
...@@ -705,7 +707,7 @@ data to the board. As names suggest, \textit{readreg} reads a board register, w ...@@ -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 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 \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}. if the board is present in slot 2, the command should yield the ASCII string \textbf{TBLO}.
\begin{verbatim} \begin{verbatim}
...@@ -742,7 +744,7 @@ An example of writing the value \textbf{0xabcde} to a register at address \textb ...@@ -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. 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 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}, 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} \begin{verbatim}
Connected to some-crate.cern.ch. 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" ...@@ -785,8 +787,8 @@ iso.3.6.1.4.1.37968.1.1.8.2.2.1.2.1 = STRING: "54424C4F"
\end{verbatim} \end{verbatim}
Here, the \textit{snmpget} command is used with a version 2c SNMP protocol (the 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). \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 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 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 values, only two are relevant to the user. These values are presented in
Figure~\ref{fig:oid}. Figure~\ref{fig:oid}.
...@@ -811,8 +813,7 @@ An example of writing the value \textbf{0xabcde} to a register ...@@ -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 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 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 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 is implemented at address \textbf{0x1c4}, it may not be writable.
writable.
\begin{verbatim} \begin{verbatim}
%> snmpset -v2c -c admin-password some-crate \ %> snmpset -v2c -c admin-password some-crate \
...@@ -1032,12 +1033,12 @@ value. ...@@ -1032,12 +1033,12 @@ value.
& \multicolumn{1}{c}{\textbf{Description}} \\ & \multicolumn{1}{c}{\textbf{Description}} \\
\hline \hline
WR & 8~ns & \textbf{\textit{Currently not implemented}} \newline 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 Obtained and configurable via WR \newline
Resolution: \textbf{8~ns} \\ Resolution: \textbf{8~ns} \\
Local & 8~ns & Local, unsynchronized time-tag \newline Local & 8~ns & Local, unsynchronized time-tag \newline
Obtained by counting the ticks of a 125~MHz clock signal \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} \\ Resolution: \textbf{8~ns} \\
\hline \hline
\end{tabular} \end{tabular}
...@@ -1075,11 +1076,19 @@ advance. A full read cycle of a FIFO sample should look like this: ...@@ -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 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 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 \begin{figure}[h]
and the F bit will be set. Note that the USED field will indicate 0 samples stored \centerline{\includegraphics[width=.7\textwidth]{fig/timetag-delay}}
at this time. \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 % SUBSEC: Remote reset
...@@ -1131,24 +1140,23 @@ here for formatting reasons and to keep to the rules of the Linux command-line. ...@@ -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 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, 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 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" In order to manually trigger a pulse, the user should write five bytes to the board's control
(the "password") to the MPT (manual pulse trigger) field in the board's control register at address \textbf{0x004} (CR -- see Appendix~\ref{app:conv-regs-cr}), as shown in
register at address 0x004 (CR -- see Appendix~\ref{app:conv-regs-cr}). The MPT Figure~\ref{tbl:man-trig}. The MPT field is dual-purpose, as shown in
field is dual-purpose, as shown in Figure~\ref{fig:cr-mpt}. As shown in Figure~\ref{fig:cr-mpt}. Until the magic sequence is input, it should be written with the
Table~\ref{tbl:man-trig-magic}, prior to sending a pulse, the MPT field should be written bytes in the magic sequence. After that, it should be written with the channel number.
with the magic sequence, followed by a channel number in the range \textbf{1..6}.
\begin{figure}[h] \begin{figure}[h]
\centerline{\includegraphics[width=\textwidth]{fig/cr-mpt}} \centerline{\includegraphics[width=.85\textwidth]{fig/cr-mpt}}
\caption{MPT field in the CR} \caption{MPT field in the CR}
\label{fig:cr-mpt} \label{fig:cr-mpt}
\end{figure} \end{figure}
\begin{table}[h] \begin{table}[h]
\caption{Write sequence to initiate manual pulse triggering} \caption{Write sequence to initiate manual pulse triggering}
\label{tbl:man-trig-magic} \label{tbl:man-trig}
\centerline \centerline
{ {
%\rowcolors{2}{white}{gray!25} %\rowcolors{2}{white}{gray!25}
...@@ -1156,26 +1164,22 @@ with the magic sequence, followed by a channel number in the range \textbf{1..6} ...@@ -1156,26 +1164,22 @@ with the magic sequence, followed by a channel number in the range \textbf{1..6}
\hline \hline
\textbf{Byte 0} & \textbf{Byte 1} & \textbf{Byte 2} & \textbf{Byte 3} & \textbf{Byte 4}\\ \textbf{Byte 0} & \textbf{Byte 1} & \textbf{Byte 2} & \textbf{Byte 3} & \textbf{Byte 4}\\
\hline \hline
0xde & 0xad & 0xbe & 0xef & Channel number in range \textbf{1..6} \\ 0xde & 0xad & 0xbe & 0xef & Channel number in range 1..6 \\
\hline \hline
\end{tabular} \end{tabular}
} }
\end{table} \end{table}
Note that in order for a pulse to be triggered, five write cycles to the MPT must be Figure~\ref{fig:man-trig-fsm} shows the manual pulse triggering logic. In order for a
done. If the fifth cycle is a channel number in the range \textbf{1..6}, one and only pulse to be triggered, five write cycles to the MPT field must be done. If the fifth cycle is
one pulse is generated on the channel outputs (both TTL and blocking). After that, a channel number in the range 1..6, one and only one pulse is generated by the PG
should it be desired to generate another pulse on the channel, the magic sequence block (see Figure~\ref{fig:pulse-rep}). After that, should it be desired to generate
must be input again. If the channel number is not in the range \textbf{1..6}, no another pulse on the channel, the magic sequence must be input again. If the channel
pulse is generated on any channel and no error is reported. number is not in the range 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.
\begin{figure}[h] \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} \caption{Manual pulse triggering logic}
\label{fig:man-trig-fsm} \label{fig:man-trig-fsm}
\end{figure} \end{figure}
...@@ -1328,21 +1332,6 @@ data. The user can access this space via the FAR register. Note that in order to ...@@ -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 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}. 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] \begin{table}[h]
\caption{Scripts needed for remote reprogramming} \caption{Scripts needed for remote reprogramming}
\label{tbl:reprog-scripts} \label{tbl:reprog-scripts}
...@@ -1363,6 +1352,21 @@ needed to run the script. ...@@ -1363,6 +1352,21 @@ needed to run the script.
} }
\end{table} \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, The \textit{multiboot.py} script communicates to the reprogramming logic on the FPGA,
giving the user access to the following: 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