Commit 6602f10f authored by Theodor-Adrian Stana's avatar Theodor-Adrian Stana

Continued work on pts_hdlguide

Also cleaned up some constants in top-level file.
parent c47eecf9
<?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="197.59723"
height="447.10938"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="body.pdf">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3905"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.8,0.8)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3908"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.4,0.4)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="45.668721"
inkscape:cy="260.21341"
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" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-118.28683,-192.98573)">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 125.37344,204.12669 0,45.66929"
id="path2989"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="117.85714"
y="639.95349"
id="text4389"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4391"
x="117.85714"
y="639.95349"
style="font-weight:bold">end</tspan></text>
<text
xml:space="preserve"
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"
x="144.30203"
y="232.02812"
id="text4399"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4401"
x="144.30203"
y="232.02812">125 MHz clock, reset</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4421"
d="m 125.37344,257.2763 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4423"
y="285.17773"
x="144.30203"
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="285.17773"
x="144.30203"
id="tspan4425"
sodipodi:role="line">I<tspan
style="font-size:65.00091553%;baseline-shift:super"
id="tspan4538">2</tspan>C bridge and crossbar</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 125.37344,310.4259 0,45.66929"
id="path4427"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="144.30203"
y="333.04657"
id="text4429"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4431"
x="144.30203"
y="333.04657">PTS general-purpose registers</tspan><tspan
sodipodi:role="line"
x="144.30203"
y="345.54657"
id="tspan4540">instantiation</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4433"
d="m 125.37344,363.57551 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4435"
y="391.47696"
x="144.30203"
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="391.47696"
x="144.30203"
sodipodi:role="line"
id="tspan4542">Thermometer test logic</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4439"
y="200.58339"
x="118.28683"
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="200.58339"
x="118.28683"
id="tspan4441"
sodipodi:role="line"
style="font-weight:bold">begin</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 125.37344,416.72512 0,45.66929"
id="path4544"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="144.30203"
y="439.34576"
id="text4546"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4548"
x="144.30203"
y="439.34576">TTL and blocking pulse generation</tspan><tspan
id="tspan4550"
sodipodi:role="line"
x="144.30203"
y="451.84576">test logic</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4554"
d="m 125.37344,469.87472 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4556"
y="497.77615"
x="144.30203"
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="497.77615"
x="144.30203"
sodipodi:role="line"
id="tspan4560">PLL and DAC test logic</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 125.37344,523.02433 0,45.66929"
id="path4564"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="144.30203"
y="550.92578"
id="text4566"
sodipodi:linespacing="125%"><tspan
id="tspan4568"
sodipodi:role="line"
x="144.30203"
y="550.92578">SFP EEPROM and SFP test logic</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4570"
d="m 125.37344,576.17393 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4572"
y="604.07544"
x="144.30203"
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="604.07544"
x="144.30203"
sodipodi:role="line"
id="tspan4574">LEDs test logic</tspan></text>
</g>
</svg>
<?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="210.30273"
height="250.03427"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="declarative.svg">
<defs
id="defs4">
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3905"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.8,0.8)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3908"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.4,0.4)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="196.06729"
inkscape:cy="73.114217"
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" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-118.28683,-184.40738)">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 124.28571,202.36218 0,45.66929"
id="path2989"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="117.85714"
y="192.00504"
id="text4389"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4391"
x="117.85714"
y="192.00504"><tspan
style="font-weight:bold"
id="tspan4397">architecture </tspan>behav <tspan
style="font-weight:bold"
id="tspan4395">of </tspan>conv_ttl_blo_v2 <tspan
style="font-weight:bold"
id="tspan4393">is</tspan></tspan></text>
<text
xml:space="preserve"
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"
x="143.21429"
y="230.26361"
id="text4399"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4401"
x="143.21429"
y="230.26361">Type declarations</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4421"
d="m 124.28571,255.11809 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4423"
y="283.01953"
x="143.21429"
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="283.01953"
x="143.21429"
id="tspan4425"
sodipodi:role="line">Constant declarations</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)"
d="m 124.28571,308.26769 0,45.66929"
id="path4427"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
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"
x="143.21429"
y="336.16916"
id="text4429"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4431"
x="143.21429"
y="336.16916">Component declarations</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4433"
d="m 124.28571,361.4173 0,45.66929"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#TriangleOutL)" />
<text
sodipodi:linespacing="125%"
id="text4435"
y="389.31879"
x="143.21429"
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="389.31879"
x="143.21429"
id="tspan4437"
sodipodi:role="line">Signal declarations</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4439"
y="432.28345"
x="117.85714"
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="432.28345"
x="117.85714"
id="tspan4441"
sodipodi:role="line"
style="font-weight:bold">begin</tspan></text>
</g>
</svg>
@misc{StandardBlocking,
author = "C. Gil Soriano",
title = {{Standard Blocking Output Signal Definition for CTDAH board}},
month = sep,
@misc{onewire,
author = {Iztok Jeras},
title = {{sockit\_owm, 1-wire (onewire) master}},
year = 2011,
note = "{\url{http://www.ohwr.org/documents/109}}"
note = {\url{http://opencores.org/websvn,filedetails?repname=sockit_owm&path=%2Fsockit_owm%2Ftrunk%2Fdoc%2Fsockit_owr.pdf}}
}
@misc{sysmon-i2c,
author = "{ELMA}",
title = {{Access to board data using SNMP and I2C}},
howpublished = {\url{http://www.ohwr.org/documents/227}}
@misc{spi,
author = {Simon Srot},
title = {{SPI Master Core Specification}},
year = 2004,
note = {\url{http://opencores.org/websvn,filedetails?repname=spi&path=%2Fspi%2Ftrunk%2Fdoc%2Fspi.pdf}}
}
@TECHREPORT{UG380,
institution = "Xilinx Inc.",
title = {{Spartan-6 FPGA Configuration User Guide}},
month = jul,
year = 2011,
number = "UG380 v2.3",
note = "{\url{http://www.xilinx.com/support/documentation/user_guides/ug380.pdf}}"
}
@misc{rtm-ident,
title = {{RTM detection}},
howpublished = {\url{http://www.ohwr.org/projects/conv-ttl-blo/wiki/RTM_board_detection}}
@misc{i2c-master,
author = {Richard Herveille},
title = {{I$2$C Master Core Specification}},
year = 2003,
note = {\url{http://opencores.org/websvn,filedetails?repname=i2c&path=%2Fi2c%2Ftrunk%2Fdoc%2Fi2c_specs.pdf}}
}
@misc{flyback,
title = {{Under the Hood of Flyback SMPS Designs}},
howpublished = {\url{http://focus.ti.com/asia/download/Topic_1_Picard_42pages.pdf}}
@misc{coding-guidelines,
author = "Patrick Loschmidt and Nata{\v s}a Simani\'c and C\'esar Prados and Pablo Alvarez and Javier Serrano",
title = {{Guidelines for VHDL Coding}},
month = 04,
year = 2011,
note = {\url{http://www.ohwr.org/documents/24}}
}
No preview for this file type
......@@ -47,10 +47,14 @@ BE-CO-HT\\
\section*{List of abbreviations}
\begin{tabular}{l l}
\textit{DAC} & Digital-to-Analog Converter \\
\textit{FPGA} & Field-Programmable Gate Array \\
\textit{PTS} & Production Test Suite \\
\textit{HDL} & High-level Description Language \\
\textit{SFP} & Small form-factor pluggable (in the context of SFP connectors) \\
\textit{PTS} & Production Test Suite \\
\textit{RTM} & Rear-Transition Module \\
\textit{PLL} & Phase-Locked Loop \\
\textit{SFP} & Small Form-factor Pluggable (in the context of SFP connectors) \\
\textit{SPI} & Serial Peripheral Interface \\
\end{tabular}
......@@ -73,8 +77,6 @@ the OHWR git repository for the Conv-TTL-Blo PTS project at the following link:
\textcolor{red}{link ohwr repo}
\textcolor{red}{\cite{StandardBlocking}}
\textcolor{red}{REFERENCE THE OTHER DOCUMENTS}
%======================================================================================
......@@ -164,7 +166,7 @@ board ID register at offset 0x4 (see Table~\ref{tbl:pts_regs}). Both registers a
\end{table}
The board ID register contains 32 read-and-writable bits which can be
used to identify the board as the CONV-TTL-BLO. It is by default set to
used to identify the board as the Conv-TTL-Blo. It is by default set to
read as the ASCII string \textbf{BLO2}, the hex value 0x424C4F32.
\begin{figure}[h]
......@@ -211,6 +213,288 @@ The RTM field in the CSR can be used to read the status of the RTM detection
lines and is relevant within the context of the blocking pulse and RTM interface
test.
%======================================================================================
% SEC: One-wire master
%======================================================================================
\pagebreak
\section{One-Wire Master}
\label{sec:onewire}
This one-wire master module can be used to communicate to the DS18B20U+
thermometer (IC12). Two registers are implemented as part of this module.
These registers and the functionality of the one-wire master module
are described in the module's documentation \cite{onewire}.
%======================================================================================
% SEC: SPI master
%======================================================================================
\pagebreak
\section{SPI Master}
\label{sec:spi}
The two Analog Devices DACs (IC17, IC18) on the Conv-TTL-Blo board can be controlled via
a 3-wire SPI interface. The OpenCores SPI master module is used to implement this
interface. More information can be found in the SPI master core's documentation \cite{spi}.
%======================================================================================
% SEC: SPI master
%======================================================================================
\pagebreak
\section{Clock Information Counters}
\label{sec:clk-info}
Two clock information counter modules are used to test that the clocks are reacting
to changes in DAC and PLL values. The counters can be controlled and checked by
means of six registers, shown in Table~\ref{tbl:clk-info}. An extra register at
offset 0x1C can be used to check correct communication with the clock info counter
module. This register is a read-only register which should return the hex value
0xC000FFEE when read.
\begin{table}[h]
\caption{Clock information counter registers}
\label{tbl:clk-info}
\centerline
{
\begin{tabular}{l l c p{.5\textwidth}}
\hline
\multicolumn{1}{c}{\textbf{Offset}} & \multicolumn{1}{c}{\textbf{Name}} &
\textbf{Access} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
0x00 & Counter full & R & Bit 0 set signals a full counter \\
0x04 & Clock error & R & Bit 0 set signals a clock error occured \\
0x08 & \textit{Unused} & -- & Unused in PTS \\
0x0C & Max value & R/W & Maximum value of the counter \\
0x10 & Current value & R/W & Current value of the counter \\
0x14 & Counter reset & R/W & Setting bit 0 clears the counter to 0 \\
0x18 & Counter enable & R/W & bit 0 set enables up-counting \newline
bit 0 cleared disables up-counting \\
0x1C & Module check & R & Should return 0xC000FFEE when read \\
\hline
\end{tabular}
}
\end{table}
%======================================================================================
% SEC: I2C master
%======================================================================================
\pagebreak
\section{I$2$C Master}
\label{sec:clk-info}
An I$2$C master interface is implemented to send commands to the SFP EEPROM. The
OpenCores I$2$C master core is used to implement the interface. More details about the
module and the access registers can be found via its online documentation \cite{i2c-master}.
%======================================================================================
% SEC: Pulse counters
%======================================================================================
\pagebreak
\section{Pulse Counters}
\label{sec:pulse-cnt}
This module is used to count the number of sent and received pulses. It is useful in
the context of the TTL and blocking pulse repetition test. On the Conv-TTL-Blo board,
there are six TTL channels, four INV-TTL channels and six blocking channels, which are
seen as sixteen pulse channels in the pulse counter module.
Two counters are implemented per each channel, one to count the number of input pulses,
and another to count the output pulses. A counter counts up whenever a rising edge
occurs on the channel it is associated to. The pulse counter Wishbone module implements
32 registers to store the current values of the counters for all these sixteen channels.
The registers are stacked up starting from offset zero, with the TTL CH1 output pulse
counter occupying address offset 0x00, the TTL CH1 input counter offset 0x04, followed
by TTL CH2 output at 0x08 and TTL CH2 input at 0x0C, and so on, up to blocking CH6 input
counter, which is located at address offset 0x64. Table~\ref{tbl:pulse-cnt} shows
a the pulse counter address map.
\begin{table}
\caption{Pulse counter registers}
\label{tbl:pulse-cnt}
\centerline
{
\begin{tabular}{l l c p{.5\textwidth}}
\hline
\multicolumn{1}{c}{\textbf{Offset}} & \multicolumn{1}{c}{\textbf{Name}} &
\textbf{Access} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
0x00 & \textit{ch1\_out} & R/W & TTL channel 1 output counter \\
0x04 & \textit{ch1\_in} & R/W & TTL channel 1 input counter \\
0x08 & \textit{ch2\_out} & R/W & TTL channel 2 output counter \\
0x0C & \textit{ch2\_in} & R/W & TTL channel 2 input counter \\
0x10 & \textit{ch3\_out} & R/W & TTL channel 3 output counter \\
0x14 & \textit{ch3\_in} & R/W & TTL channel 3 input counter \\
0x18 & \textit{ch4\_out} & R/W & TTL channel 4 output counter \\
0x1C & \textit{ch4\_in} & R/W & TTL channel 4 input counter \\
0x20 & \textit{ch5\_out} & R/W & TTL channel 5 output counter \\
0x24 & \textit{ch5\_in} & R/W & TTL channel 5 input counter \\
0x28 & \textit{ch6\_out} & R/W & TTL channel 6 output counter \\
0x2C & \textit{ch6\_in} & R/W & TTL channel 6 input counter \\
0x30 & \textit{ch7\_out} & R/W & INV-TTL channel A output counter \\
0x34 & \textit{ch7\_in} & R/W & INV-TTL channel A input counter \\
0x38 & \textit{ch8\_out} & R/W & INV-TTL channel B output counter \\
0x3C & \textit{ch8\_in} & R/W & INV-TTL channel B input counter \\
0x40 & \textit{ch9\_out} & R/W & INV-TTL channel C output counter \\
0x44 & \textit{ch9\_in} & R/W & INV-TTL channel C input counter \\
0x48 & \textit{ch10\_out} & R/W & INV-TTL channel D output counter \\
0x4C & \textit{ch10\_in} & R/W & INV-TTL channel D input counter \\
0x50 & \textit{ch11\_out} & R/W & Blocking channel 1 output counter \\
0x54 & \textit{ch11\_in} & R/W & Blocking channel 1 input counter \\
0x58 & \textit{ch12\_out} & R/W & Blocking channel 2 output counter \\
0x5C & \textit{ch12\_in} & R/W & Blocking channel 2 input counter \\
0x60 & \textit{ch13\_out} & R/W & Blocking channel 3 output counter \\
0x64 & \textit{ch13\_in} & R/W & Blocking channel 3 input counter \\
0x68 & \textit{ch14\_out} & R/W & Blocking channel 4 output counter \\
0x6C & \textit{ch14\_in} & R/W & Blocking channel 4 input counter \\
0x70 & \textit{ch15\_out} & R/W & Blocking channel 5 output counter \\
0x74 & \textit{ch15\_in} & R/W & Blocking channel 5 input counter \\
0x78 & \textit{ch16\_out} & R/W & Blocking channel 6 output counter \\
0x7C & \textit{ch16\_in} & R/W & Blocking channel 6 input counter \\
\hline
\end{tabular}
}
\end{table}
%======================================================================================
% SEC: Folder structure
%======================================================================================
\pagebreak
\section{Folder Structure}
\label{sec:fold-struct}
The folder structure used within the PTS firmware is presented below
\renewcommand{\labelitemi}{$\rightarrow$}
\renewcommand{\labelitemii}{$\rightarrow$}
\renewcommand{\labelitemiii}{$\rightarrow$}
\renewcommand{\labelitemiv}{$\rightarrow$}
\begin{itemize}
\item ip\_cores/
\item Conv-TTL-Blo/hdl/
\begin{itemize}
\item bicolor\_led\_ctrl/
\begin{itemize}
\item \textit{bicolor\_led\_ctrl.vhd}
\item \textit{bicolor\_led\_ctrl\_pkg.vhd}
\end{itemize}
\item glitch\_filt/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{glitch\_filt.vhd}
\end{itemize}
\end{itemize}
\textbf{
\item pts/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{clk\_info\_wb\_slave.vhd}
\item \textit{incr\_counter.vhd}
\item \textit{pts\_regs.vhd}
\item \textit{pulse\_cnt\_wb.vhd}
\end{itemize}
\item top/
\begin{itemize}
\item \textit{conv\_ttl\_blo\_v2.vhd}
\item \textit{conv\_ttl\_blo\_v2.ucf}
\end{itemize}
\end{itemize}
}
\item ctb\_pulse\_gen/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{ctb\_pulse\_gen.vhd}
\end{itemize}
\end{itemize}
\item ctb\_pulse\_gen\_gp/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{ctb\_pulse\_gen\_gp.vhd}
\end{itemize}
\end{itemize}
\item reset\_gen/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{reset\_gen.vhd}
\end{itemize}
\end{itemize}
\item vme64x\_i2c/
\begin{itemize}
\item rtl/
\begin{itemize}
\item \textit{i2c\_slave.vhd}
\item \textit{vme64x\_i2c.vhd}
\end{itemize}
\end{itemize}
\end{itemize}
\end{itemize}
The ip\_cores folder contains repository files that the firmware uses, such
as the OpenCores SPI (see \ref{sec:spi})and one-wire masters (see \ref{sec:onewire}).
The modules that have been developed as part of the Conv-TTL-Blo project and can be
used in both PTS and other firmware are present in their own folders as sub-nodes of the
\textit{conv-ttl-blo/hdl/} folder. In general, the module files are present under an \textit{rtl/}
sub-folder. The \textit{pts/} folder is the main folder in the case of the PTS suite, as can
be seen from the fact that it is bolded in the folder structure above. It contains
top-level files in the \textit{top/} folder (HDL and UCF file for pin definitions) and
other PTS-specific modules in the \textit{rtl/} folder. The \textit{ctb\_pulse\_gen\_gp} module
implements the general-purpose fixed-width, fixed-frequency-and-delay pulse generator used to
generate pulses on CH10 in the TTL pulse repetition test and the pulses on the blocking output
channels for the blocking pulse test. The \textit{ctb\_pulse\_gen} module is the module used to
generate fixed-width pulses when a trigger is received; it is the same pulse generator used in
the release version of the firmware.
%======================================================================================
% SEC: Getting Around the Code
%======================================================================================
\pagebreak
\section{Getting Around the Code}
\label{sec:get-around}
All of the PTS-specific firmware can be found in the \textit{conv-ttl-blo/hdl/pts/}
folder. The top-level file, \textit{conv-ttl-blo.vhd}, is the main-part of the firmware
and thus shall be the topic of this short section, where its structure and guidelines
for making changes are given. Most of the top-level ports of the file have been named
according to the schematic file netlist names. The exceptions from this are due to
either net names that could not be syntactically represented in VHDL, or net names
that have been made clearer in VHDL code. Input ports are assigned to
architecture signals and signals are assigned to output ports in each code section,
as appropriate. Ports and signals usually follow the coding guidelines at
\cite{coding-guidelines}.
\begin{figure}[h]
\centerline{\includegraphics[scale=.9]{fig/declarative}}
\caption{Declarative part of VHDL architecture}
\label{fig:declarative}
\end{figure}
The top module architecture is divided into sections, delimited by visible
comments. For example, code pertaining to a certain test, code pertaining
to more than one test, or general top-level code can go into a code section.
The declarative part of the architecture is organized as shown in Fig.~\ref{fig:declarative}.
Types are declared right after the architecture declaration, followed by con-
stant declarations, followed by component declarations, after which the var-
ious signals are declared.
\begin{figure}[h]
\centerline{\includegraphics[scale=.7]{fig/body}}
\caption{Body of VHDL architecture}
\label{fig:body}
\end{figure}
The body of the architecture is organised as showin in Fig.~\ref{fig:body}. It begins
by instantiating a differential buffer for the 125~MHz system clock and instantiating the
\textit{reset\_gen} component. Then, the \textit{vme64x\_i2c} bridge module is instantiated
along with the Wishbone crossbar that offers access to the rest of the Wishbone modules in
the design. Next, the general-purpose PTS register (see Sec.~\ref{sec:pts_regs}) module is
instantiated, followed by logic necessary for each of the tests comprising PTS.
\pagebreak
\bibliographystyle{ieeetr}
\bibliography{pts_hdlguide}
......
......@@ -144,17 +144,6 @@ architecture behav of conv_ttl_blo_v2 is
--============================================================================
-- Type declarations
--============================================================================
type t_pts_state is
(
ST_IDLE,
ST_TTLTEST,
ST_BLOTEST_1,
ST_BLOTEST_2,
ST_PLLTEST,
ST_LEDTEST_1,
ST_LEDTEST_2
);
type t_ttl_pulse_counter is array (10 downto 1)
of unsigned(31 downto 0);
......@@ -631,8 +620,6 @@ architecture behav of conv_ttl_blo_v2 is
-- PTS register signals
signal pts_state : t_pts_state;
signal pts_crrt_test_slv : std_logic_vector(3 downto 0);
signal pts_crrt_test : unsigned(3 downto 0);
signal cnt_halfsec : unsigned(25 downto 0);
signal rst_fr_reg : std_logic;
......@@ -883,10 +870,6 @@ begin
pts_id_bits_o => open
);
-- Assign the unsigned current test signal
pts_crrt_test <= unsigned(pts_crrt_test_slv);
--============================================================================
-- Thermometer test logic
--============================================================================
......
<?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="840.22742"
height="198.04344"
id="svg3004"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-addr.svg">
<defs
id="defs3006" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="416.77169"
inkscape:cy="240.75229"
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"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata3009">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-24.294083,7.0127622)">
<text
xml:space="preserve"
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"
x="23.432755"
y="100.17881"
id="text3046"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3048"
x="23.432755"
y="100.17881"
style="font-size:12px;font-weight:bold">SDA</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3050"
y="153.32841"
x="23.432755"
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
style="font-size:12px;font-weight:bold"
y="153.32841"
x="23.432755"
sodipodi:role="line"
id="tspan3054">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="210.57225"
y="190.88908"
id="text3111"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3113"
x="210.57225"
y="190.88908">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3115"
y="190.88908"
x="320.41476"
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="190.88908"
x="320.41476"
id="tspan3117"
sodipodi:role="line">2</tspan></text>
<text
xml:space="preserve"
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"
x="426.71396"
y="190.88908"
id="text3119"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3121"
x="426.71396"
y="190.88908">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3123"
y="49.156792"
x="207.02895"
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="49.156792"
x="207.02895"
id="tspan3125"
sodipodi:role="line"
style="font-style:italic">MSB</tspan></text>
<g
id="g3226"
transform="translate(12.147042,0.14137699)">
<g
id="g3058">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 53.149606,131.10234 70.866144,0 17.71653,35.43307 17.71654,0 17.71653,0 17.71654,-35.43307 17.71654,0 17.71653,35.43307 53.14961,0 17.71653,-35.43307 17.71654,0 17.71653,35.43307 53.14961,0 17.71653,-35.43307 17.71654,0 17.71654,35.43307 17.71653,0"
id="path3040"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 460.62992,166.53541 17.71654,0"
id="path3044"
inkscape:connector-curvature="0" />
</g>
<text
sodipodi:linespacing="125%"
id="text3088"
y="166.53542"
x="496.06299"
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
style="font-size:12px;font-weight:bold"
y="166.53542"
x="496.06299"
id="tspan3090"
sodipodi:role="line">...</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3141"
d="m 531.49606,166.53541 35.43307,0 17.71654,-35.43307 17.71653,0 17.71654,35.43307 53.14961,0 17.71653,-35.43307 17.71654,0 17.71653,35.43307 53.14961,0 17.71653,-35.43307 17.71654,0 17.71654,35.43307 17.71653,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<text
sodipodi:linespacing="125%"
id="text3143"
y="190.88908"
x="600.336"
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="190.88908"
x="600.336"
id="tspan3145"
sodipodi:role="line">7</tspan></text>
<text
xml:space="preserve"
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"
x="710.17853"
y="190.88908"
id="text3147"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3149"
x="710.17853"
y="190.88908">8</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3151"
y="190.88908"
x="816.47772"
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="190.88908"
x="816.47772"
id="tspan3153"
sodipodi:role="line">9</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 65.296647,78.094116 17.716536,0 17.716537,35.433064 17.71654,0"
id="path3038"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text3084"
y="113.52718"
x="508.21002"
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
style="font-size:12px;font-weight:bold"
y="113.52718"
x="508.21002"
id="tspan3086"
sodipodi:role="line">...</tspan></text>
<text
xml:space="preserve"
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"
x="596.79272"
y="49.156792"
id="text3173"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3175"
x="596.79272"
y="49.156792"
style="font-style:italic">LSB</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3177"
y="49.156792"
x="703.09192"
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
style="font-style:italic"
y="49.156792"
x="703.09192"
id="tspan3179"
sodipodi:role="line">R/W</tspan></text>
<text
xml:space="preserve"
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"
x="334.76797"
y="7.2279682"
id="text3181"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3183"
x="334.76797"
y="7.2279682">Master drives address bits</tspan></text>
<text
xml:space="preserve"
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"
x="813.58173"
y="7.2279682"
id="text3189"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="813.58173"
y="7.2279682"
id="tspan3261"
style="text-align:center;text-anchor:middle">Slave ACK</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 177.81207,36.72493 0,-10.101525 480.32753,0 0,10.101525"
id="path3263"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3265"
d="m 663.19037,36.72493 0,-10.101525 97.79559,0 0,10.101525"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 766.22593,36.72493 0,-10.101525 97.79559,0 0,10.101525"
id="path4037"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text3185"
y="0.58489406"
x="717.68262"
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="0.58489406"
x="719.27441"
id="tspan3187"
sodipodi:role="line"
style="text-align:center;text-anchor:middle">Master drives </tspan><tspan
y="13.084894"
x="717.68262"
sodipodi:role="line"
id="tspan3259"
style="text-align:center;text-anchor:middle">R/W bit</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 711.53112,4.7173712 c 6.5453,0 6.5453,0 6.5453,0"
id="path4039"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 106.29921,673.22834 53.14961,0 17.71653,-35.43307 301.18111,0"
id="path4131"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 531.49606,637.79527 230.31496,0 17.71654,35.43307 53.14961,0 17.71653,-35.43307"
id="path4133"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 159.44882,673.22834 70.86614,0 17.71654,-35.43307"
id="path4135"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 265.74803,637.79527 17.71654,35.43307 53.1496,0 17.71654,-35.43307"
id="path4141"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 372.04724,637.79527 17.71654,35.43307 53.14961,0 17.71653,-35.43307"
id="path4143"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 549.2126,637.79527 17.71653,35.43307 53.14961,0 17.71654,-35.43307"
id="path4145"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 655.51181,637.79527 17.71654,35.43307 53.1496,0 17.71654,-35.43307"
id="path4147"
inkscape:connector-curvature="0"
transform="translate(12.147041,-559.70116)" />
<path
inkscape:connector-curvature="0"
id="path4163"
d="m 716.73504,40.724875 c 6.5453,0 6.5453,0 6.5453,0"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
</g>
</svg>
<?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="513.25293"
height="172.24207"
id="svg5725"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-bitlevel.svg">
<defs
id="defs5727" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="360.61373"
inkscape:cy="71.153224"
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"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<metadata
id="metadata5730">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(12.270655,-83.87603)">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 212.48847,237.90156 35.43307,0 0,0 17.71653,-35.43307 17.71654,0 17.71653,35.43307 35.43307,0"
id="path5749"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
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"
x="-13.131983"
y="153.18704"
id="text5755"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5757"
x="-13.131983"
y="153.18704"
style="font-size:12px;font-weight:bold">SDA</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5759"
y="224.05318"
x="-13.131983"
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
style="font-size:12px;font-weight:bold"
y="224.05318"
x="-13.131983"
id="tspan5761"
sodipodi:role="line">SCL</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 53.149606,201.96848 70.866144,0 17.71653,35.43307 17.71654,0"
id="path6292"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path6294"
d="m 496.063,201.96848 -70.86615,0 -17.71653,35.43307 -17.71654,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 53.149606,131.10234 35.433071,0 17.716533,35.43307 53.14961,0"
id="path6296"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path6298"
d="m 496.063,131.10234 -35.43307,0 -17.71654,35.43307 -53.14961,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:0.75;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8, 8;stroke-dashoffset:0"
id="rect6300"
width="35.714287"
height="141.73228"
x="80"
y="113.3858" />
<rect
y="113.3858"
x="435.06863"
height="141.73228"
width="35.714287"
id="rect6302"
style="opacity:0.75;fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:8, 8;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="106.08603"
y="91.473686"
id="text6304"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="107.67783"
y="91.473686"
id="tspan3003"
style="text-align:center;text-anchor:middle">Start (S) or repeated start (Sr) </tspan><tspan
sodipodi:role="line"
x="106.08603"
y="103.97369"
style="text-align:center;text-anchor:middle"
id="tspan3026">condition</tspan></text>
<text
sodipodi:linespacing="125%"
id="text6308"
y="98.312073"
x="229.80971"
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="98.312073"
x="229.80971"
id="tspan6310"
sodipodi:role="line">Valid bit transfer</tspan></text>
<text
xml:space="preserve"
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"
x="412.64731"
y="97.342827"
id="text6312"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6314"
x="412.64731"
y="97.342827">Stop condition (P)</tspan></text>
<path
style="opacity:0.75;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0"
d="m 247.92154,113.88581 0,141.73229"
id="path6320"
inkscape:connector-curvature="0" />
<path
style="opacity:0.75;fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0"
d="m 301.07114,113.88581 0,141.73229"
id="path6322"
inkscape:connector-curvature="0" />
<g
id="g4484"
transform="matrix(1,0,0,-0.98588871,-0.10995786,295.78773)">
<path
inkscape:connector-curvature="0"
id="path5747"
d="m 212.59843,166.53541 17.71653,0 17.71654,-35.43307 53.1496,0 17.71654,35.43307 17.71653,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path6324"
d="m 230.31496,166.53541 88.58268,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>
<?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="670.83484"
height="171.04564"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-bus.svg">
<defs
id="defs4">
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="DotM"
style="overflow:visible">
<path
id="path3919"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,2.96,0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="DotL"
orient="auto"
refY="0"
refX="0"
id="DotL"
style="overflow:visible">
<path
id="path3916"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.8,0,0,0.8,5.92,0.8)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path3997"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.8,0.8)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="361.58523"
inkscape:cy="13.732151"
inkscape:document-units="px"
inkscape:current-layer="g5584"
showgrid="false"
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" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-46.146796,-151.86218)">
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutL)"
d="m 46.646796,285.47662 637.582414,0 0,-110.1323"
id="path3824"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3826"
d="m 46.720354,320.75841 665.243586,0 0,-145.69767"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutL)" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3847"
width="9.8145132"
height="33.082497"
x="679.14044"
y="193.26805" />
<rect
y="193.26805"
x="706.66711"
height="33.082497"
width="9.8145132"
id="rect3849"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<g
id="g5497">
<rect
y="152.36218"
x="48"
height="107.14286"
width="91.428574"
id="rect2985"
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<g
transform="translate(-1.5013046,0)"
id="g5486">
<text
xml:space="preserve"
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"
x="69.95192"
y="209.50783"
id="text3755"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3757"
x="69.95192"
y="209.50783"
style="font-weight:bold">Master 1 </tspan></text>
<g
id="g5475">
<path
inkscape:connector-curvature="0"
id="path5433"
d="m 73.449747,259.59912 c 0,25.93933 0,25.93933 0,25.93933"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)"
d="m 115.77118,259.78154 c 0,60.91628 0,60.91628 0,60.91628"
id="path5435"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5437"
y="255.1864"
x="65.593384"
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
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic"
y="255.1864"
x="65.593384"
id="tspan5439"
sodipodi:role="line">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="107.73624"
y="255.1864"
id="text5441"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5443"
x="107.73624"
y="255.1864"
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic">SDA</tspan></text>
</g>
</g>
</g>
<g
id="g5510"
transform="translate(115.66247,0)">
<g
id="g5534"
transform="translate(8.2600479,0)">
<rect
y="152.36218"
x="48"
height="107.14286"
width="91.428574"
id="rect5512"
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<g
transform="translate(-1.5013046,0)"
id="g5514">
<text
xml:space="preserve"
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"
x="69.95192"
y="209.50783"
id="text5516"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5518"
x="69.95192"
y="209.50783"
style="font-weight:bold">Master 2 </tspan></text>
<g
id="g5520">
<path
inkscape:connector-curvature="0"
id="path5522"
d="m 73.449747,259.59912 c 0,25.93933 0,25.93933 0,25.93933"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)"
d="m 115.77118,259.78154 c 0,60.91628 0,60.91628 0,60.91628"
id="path5524"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5526"
y="255.1864"
x="65.593384"
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
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic"
y="255.1864"
x="65.593384"
id="tspan5528"
sodipodi:role="line">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="107.73624"
y="255.1864"
id="text5530"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5532"
x="107.73624"
y="255.1864"
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic">SDA</tspan></text>
</g>
</g>
</g>
<g
id="g5547"
transform="translate(132.83506,0)">
<g
id="g5551"
transform="translate(-1.5013046,0)">
<g
id="g5572"
transform="translate(-0.65250397,0)">
<rect
y="152.36218"
x="48"
height="107.14286"
width="91.428574"
id="rect5549"
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
transform="translate(1.5013046,0)" />
<text
xml:space="preserve"
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"
x="74.632095"
y="209.50783"
id="text5553"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5555"
x="74.632095"
y="209.50783"
style="font-weight:bold">Slave 1</tspan></text>
<g
id="g5557">
<path
inkscape:connector-curvature="0"
id="path5559"
d="m 73.449747,259.59912 c 0,25.93933 0,25.93933 0,25.93933"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)"
d="m 115.77118,259.78154 c 0,60.91628 0,60.91628 0,60.91628"
id="path5561"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5563"
y="255.1864"
x="65.593384"
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
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic"
y="255.1864"
x="65.593384"
id="tspan5565"
sodipodi:role="line">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="107.73624"
y="255.1864"
id="text5567"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5569"
x="107.73624"
y="255.1864"
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic">SDA</tspan></text>
</g>
</g>
<g
id="g5584"
transform="translate(125.76399,0)">
<g
id="g5660"
transform="translate(-2.4939651,0)">
<rect
transform="translate(1.5013046,0)"
y="152.36218"
x="48"
height="107.14286"
width="91.428574"
id="rect5586"
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="74.632095"
y="209.50783"
id="text5588"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5590"
x="74.632095"
y="209.50783"
style="font-weight:bold">Slave 2</tspan></text>
<g
id="g5592">
<path
inkscape:connector-curvature="0"
id="path5594"
d="m 73.449747,259.59912 c 0,25.93933 0,25.93933 0,25.93933"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)"
d="m 115.77118,259.78154 c 0,60.91628 0,60.91628 0,60.91628"
id="path5596"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5598"
y="255.1864"
x="65.593384"
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
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic"
y="255.1864"
x="65.593384"
id="tspan5600"
sodipodi:role="line">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="107.73624"
y="255.1864"
id="text5602"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5604"
x="107.73624"
y="255.1864"
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic">SDA</tspan></text>
</g>
</g>
<g
id="g5672"
transform="translate(121.42856,0)">
<g
id="g5694">
<rect
transform="translate(1.5013046,0)"
y="152.36218"
x="48"
height="107.14286"
width="91.428574"
id="rect5674"
style="fill:none;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="74.632095"
y="209.50783"
id="text5676"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5678"
x="74.632095"
y="209.50783"
style="font-weight:bold">Slave 3</tspan></text>
<g
id="g5680">
<path
inkscape:connector-curvature="0"
id="path5682"
d="m 73.449747,259.59912 c 0,25.93933 0,25.93933 0,25.93933"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#DotM)"
d="m 115.77118,259.78154 c 0,60.91628 0,60.91628 0,60.91628"
id="path5684"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5686"
y="255.1864"
x="65.593384"
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
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic"
y="255.1864"
x="65.593384"
id="tspan5688"
sodipodi:role="line">SCL</tspan></text>
<text
xml:space="preserve"
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"
x="107.73624"
y="255.1864"
id="text5690"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5692"
x="107.73624"
y="255.1864"
style="font-size:8px;font-style:italic;-inkscape-font-specification:Sans Italic">SDA</tspan></text>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
<?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="459.73666"
height="87.908813"
id="svg5817"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-ports.svg">
<defs
id="defs5819">
<marker
inkscape:stockid="DotM"
orient="auto"
refY="0"
refX="0"
id="DotM"
style="overflow:visible">
<path
id="path6698"
d="m -2.5,-1 c 0,2.76 -2.24,5 -5,5 -2.76,0 -5,-2.24 -5,-5 0,-2.76 2.24,-5 5,-5 2.76,0 5,2.24 5,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="matrix(0.4,0,0,0.4,2.96,0.4)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="183.77749"
inkscape:cy="72.704189"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:snap-global="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" />
<metadata
id="metadata5822">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-98.606537,-31.118387)">
<g
id="g7142">
<path
inkscape:connector-curvature="0"
id="path5844"
d="m 177.16535,60.236198 35.43308,17.716536 -35.43308,17.716535 z"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5848"
d="m 141.73228,77.952734 35.43307,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5854"
d="m 212.59843,77.952734 70.86614,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5856"
d="m 141.73228,35.433049 53.14961,0 0,33.714845"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5860"
d="m 248.0315,77.952734 0,35.433066 -106.29922,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM)" />
<text
sodipodi:linespacing="125%"
id="text7095"
y="80.823746"
x="115.56454"
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="80.823746"
x="115.56454"
id="tspan7097"
sodipodi:role="line">scl_o</tspan></text>
<text
xml:space="preserve"
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"
x="119.29501"
y="116.6688"
id="text7099"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7101"
x="119.29501"
y="116.6688">scl_i</tspan></text>
<text
xml:space="preserve"
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"
x="98.064545"
y="38.716045"
id="text7103"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7105"
x="98.064545"
y="38.716045">scl_en_o</tspan></text>
<text
xml:space="preserve"
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"
x="288.55316"
y="80.823746"
id="text7119"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7121"
x="288.55316"
y="80.823746">SCL</tspan></text>
</g>
<g
id="g7127"
transform="translate(249.16504,-106.28063)">
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 177.16535,166.53541 35.43308,17.71654 -35.43308,17.71653 z"
id="path5846"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5850"
d="m 141.73228,184.25195 35.43307,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path5852"
d="m 212.59843,184.25195 70.86614,0"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 141.73228,141.73226 53.14961,0 0,33.71485"
id="path5858"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#DotM)"
d="m 248.0315,184.25195 0,35.43307 -106.29922,0"
id="path7074"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
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"
x="110.26124"
y="187.10439"
id="text7107"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7109"
x="110.26124"
y="187.10439">sda_o</tspan></text>
<text
sodipodi:linespacing="125%"
id="text7111"
y="222.94943"
x="113.99171"
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="222.94943"
x="113.99171"
id="tspan7113"
sodipodi:role="line">sda_i</tspan></text>
<text
sodipodi:linespacing="125%"
id="text7115"
y="144.99667"
x="92.761246"
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="144.99667"
x="92.761246"
id="tspan7117"
sodipodi:role="line">sda_en_o</tspan></text>
<text
sodipodi:linespacing="125%"
id="text7123"
y="186.13214"
x="288.55316"
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="186.13214"
x="288.55316"
id="tspan7125"
sodipodi:role="line">SDA</tspan></text>
</g>
</g>
</svg>
<?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="594.13599"
height="195.80174"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-slave-bd.svg">
<defs
id="defs4">
<marker
inkscape:stockid="EmptyTriangleOutS"
orient="auto"
refY="0.0"
refX="0.0"
id="EmptyTriangleOutS"
style="overflow:visible">
<path
id="path4443"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;fill:#FFFFFF;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.2) translate(-3.0,0)" />
</marker>
<marker
inkscape:stockid="TriangleOutS"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutS"
style="overflow:visible">
<path
id="path4425"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
transform="scale(0.2)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="TriangleInM"
style="overflow:visible">
<path
id="path3946"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(-0.4,-0.4)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="TriangleOutM"
orient="auto"
refY="0"
refX="0"
id="TriangleOutM"
style="overflow:visible">
<path
id="path3955"
d="m 5.77,0 -8.65,5 0,-10 8.65,5 z"
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
transform="scale(0.4,0.4)"
inkscape:connector-curvature="0" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="291.59117"
inkscape:cy="7.3374424"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="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">
<inkscape:grid
type="xygrid"
id="grid4937"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
units="mm"
spacingx="1mm"
spacingy="1mm" />
</sodipodi:namedview>
<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
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-18.559723,-166.07548)">
<rect
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2987"
width="53.149609"
height="35.433071"
x="124.85893"
y="220.14494" />
<rect
y="273.29456"
x="124.85893"
height="35.433071"
width="53.149609"
id="rect3757"
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="124.01575"
y="216.14172"
id="text3759"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3761"
x="124.01575"
y="216.14172"
style="font-weight:bold">glitch filt</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3763"
y="269.29132"
x="124.01575"
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="269.29132"
x="124.01575"
id="tspan3765"
sodipodi:role="line"
style="font-weight:bold">glitch_filt</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleOutM);marker-end:url(#TriangleOutM)"
d="m 71.709332,291.01108 49.606298,0"
id="path3767"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleOutM);marker-end:url(#TriangleOutM)"
d="m 71.709329,237.86147 49.606301,0"
id="path3769"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 178.00854,237.86147 155.90552,0"
id="path3771"
inkscape:connector-curvature="0" />
<rect
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3773"
width="53.149605"
height="35.433067"
x="248.87468"
y="273.29456" />
<rect
y="273.29456"
x="479.18964"
height="35.433067"
width="53.149605"
id="rect3775"
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="263.90652"
y="293.74057"
id="text3777"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3779"
x="263.90652"
y="293.74057"
style="font-weight:bold">rxsr</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3781"
y="294.45102"
x="494.65359"
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="294.45102"
x="494.65359"
id="tspan3783"
sodipodi:role="line"
style="font-weight:bold">txsr</tspan></text>
<rect
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3785"
width="106.29921"
height="194.88188"
x="337.45737"
y="166.99533" />
<text
xml:space="preserve"
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"
x="43.362873"
y="294.55438"
id="text3798"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3800"
x="43.362873"
y="294.55438">sda_i</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3802"
y="241.40479"
x="46.906181"
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="241.40479"
x="46.906181"
id="tspan3804"
sodipodi:role="line">scl_i</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 178.00854,291.01108 67.32284,0"
id="path4614"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 302.02428,291.01108 31.88977,0"
id="path4616"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 337.45736,333.07084 -63.77953,0 0,-21.25982"
id="path4618"
inkscape:connector-curvature="0" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 443.75659,333.53076 70.86613,0 0,-21.25984"
id="path4620"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5350"
y="268.07642"
x="378.61234"
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
style="font-weight:bold"
y="268.07642"
x="378.61234"
id="tspan5352"
sodipodi:role="line">FSM</tspan></text>
<path
inkscape:connector-curvature="0"
id="path5354"
d="m 443.75657,291.01108 31.88977,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)" />
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 532.33924,291.01108 31.88977,0"
id="path5356"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5358"
y="294.55438"
x="567.77234"
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="294.55438"
x="567.77234"
id="tspan5360"
sodipodi:role="line">sda_o</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 443.75656,344.16069 120.47245,0"
id="path5362"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
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"
x="567.77234"
y="347.70398"
id="text5364"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5366"
x="567.77234"
y="347.70398">sda_en_o</tspan></text>
<text
xml:space="preserve"
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"
x="270.13452"
y="305.1843"
id="text5368"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5370"
x="270.13452"
y="305.1843"
style="font-size:6px">en</tspan></text>
<text
sodipodi:linespacing="125%"
id="text5372"
y="305.1843"
x="511.07941"
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
style="font-size:6px"
y="305.1843"
x="511.07941"
id="tspan5374"
sodipodi:role="line">en</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 337.45735,344.16068 7.08662,3.54331 -7.08662,3.54331"
id="path5376"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path5380"
d="m 71.709329,184.71187 262.204731,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleOutM);marker-end:url(#TriangleOutM)" />
<path
inkscape:connector-curvature="0"
id="path5564"
d="m 443.75656,184.71187 120.47245,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)" />
<text
sodipodi:linespacing="125%"
id="text5566"
y="188.25517"
x="567.77234"
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="188.25517"
x="567.77234"
id="tspan5568"
sodipodi:role="line">op_o</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)"
d="m 443.75657,202.4284 120.47245,0"
id="path5570"
inkscape:connector-curvature="0" />
<text
xml:space="preserve"
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"
x="567.77234"
y="205.97171"
id="text5572"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5574"
x="567.77234"
y="205.97171">done_o</tspan></text>
<text
xml:space="preserve"
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"
x="18.559723"
y="188.25517"
id="text5576"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5578"
x="18.559723"
y="188.25517">i2c_addr_i</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleOutM);marker-end:url(#TriangleOutM)"
d="m 71.709329,202.4284 262.204731,0"
id="path5599"
inkscape:connector-curvature="0" />
<text
sodipodi:linespacing="125%"
id="text5601"
y="205.97171"
x="32.732952"
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="205.97171"
x="32.732952"
id="tspan5603"
sodipodi:role="line">ack_n_i</tspan></text>
<path
inkscape:connector-curvature="0"
id="path6535"
d="m 493.36287,312.27092 0,10.62992 -49.6063,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#TriangleInM)" />
<text
xml:space="preserve"
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"
x="489.81958"
y="305.1843"
id="text6537"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan6539"
x="489.81958"
y="305.1843"
style="font-size:6px">ld</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 277.22114,273.29454 0,-7.08661 3.5433,0 -7.08661,-7.08662 -7.08661,7.08662 3.5433,0 0,7.08661"
id="path4911"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path4913"
d="m 500.44948,259.12132 0,7.08661 -3.5433,0 7.08661,7.08662 7.08661,-7.08662 -3.5433,0 0,-7.08661"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
xml:space="preserve"
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"
x="228.21429"
y="82.944603"
id="text4915"
sodipodi:linespacing="125%"
transform="translate(18.559723,166.07548)"><tspan
sodipodi:role="line"
id="tspan4917"
x="228.21429"
y="82.944603" /></text>
<text
xml:space="preserve"
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"
x="252.41798"
y="255.578"
id="text4919"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4921"
x="252.41798"
y="255.578">rx_byte_o</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4923"
y="255.578"
x="482.73294"
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="255.578"
x="482.73294"
sodipodi:role="line"
id="tspan4927">tx_byte_i</tspan></text>
<path
inkscape:connector-curvature="0"
id="path4931"
d="m 443.75657,220.14494 120.47245,0"
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#TriangleOutM)" />
<text
sodipodi:linespacing="125%"
id="text4933"
y="223.68825"
x="567.77234"
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="223.68825"
x="567.77234"
id="tspan4935"
sodipodi:role="line">stat_o</tspan></text>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
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="585.14569"
height="105.26435"
id="svg2"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="i2c-transf.svg">
<defs
id="defs4">
<linearGradient
id="linearGradient3759"
osb:paint="solid">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3761" />
</linearGradient>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.979899"
inkscape:cx="232.78705"
inkscape:cy="102.65196"
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"
inkscape:snap-grids="true"
inkscape:snap-to-guides="true"
inkscape:snap-nodes="true"
inkscape:snap-global="true"
showguides="true"
inkscape:guide-bbox="true"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0" />
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(-70.616142,-59.986198)">
<rect
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect2987"
width="17.716536"
height="17.716536"
x="70.866142"
y="60.236198" />
<rect
y="60.236198"
x="88.58268"
height="17.716536"
width="141.73228"
id="rect2989"
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
y="60.236198"
x="230.31496"
height="17.716536"
width="17.716536"
id="rect3773"
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
y="103.82822"
x="70.866142"
height="17.716536"
width="17.716536"
id="rect3794"
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3796"
width="17.716536"
height="17.716536"
x="70.866142"
y="121.54476" />
<text
xml:space="preserve"
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"
x="95"
y="116.41451"
id="text3798"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3800"
x="95"
y="116.41451">From master to slave</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3802"
y="134.13104"
x="95"
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="134.13104"
x="95"
id="tspan3804"
sodipodi:role="line">From slave to master</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3806"
width="17.716536"
height="17.716536"
x="248.03149"
y="60.236198" />
<rect
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3808"
width="70.866158"
height="17.716536"
x="265.74802"
y="60.236198" />
<rect
y="60.236198"
x="336.61417"
height="17.716536"
width="17.716536"
id="rect3810"
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
y="60.236198"
x="70.866142"
height="17.716536"
width="17.716536"
id="rect3812"
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
y="60.236198"
x="354.33072"
height="17.716536"
width="17.716536"
id="rect3814"
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3816"
width="141.73228"
height="17.716536"
x="372.04724"
y="60.236198" />
<rect
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3818"
width="17.716536"
height="17.716536"
x="513.77954"
y="60.236198" />
<rect
style="fill:#d9d9d9;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3820"
width="17.716536"
height="17.716536"
x="354.33072"
y="60.236198" />
<rect
y="60.236198"
x="549.21259"
height="17.716536"
width="70.866158"
id="rect3822"
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3824"
width="17.716536"
height="17.716536"
x="620.07874"
y="60.236198" />
<rect
y="60.236198"
x="637.79529"
height="17.716536"
width="17.716536"
id="rect3828"
style="fill:#d9d9d9;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<rect
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3830"
width="17.716536"
height="17.716536"
x="70.866142"
y="139.26129" />
<text
xml:space="preserve"
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"
x="95"
y="152.60895"
id="text3832"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3834"
x="95"
y="152.60895">Either master to slave, or</tspan><tspan
sodipodi:role="line"
x="95"
y="165.10895"
id="tspan3836">slave to master</tspan></text>
<text
xml:space="preserve"
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"
x="77.144333"
y="72.006577"
id="text3838"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3840"
x="77.144333"
y="72.006577"
style="font-size:8px">S</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3842"
y="72.010475"
x="643.9856"
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="72.010475"
x="643.9856"
id="tspan3844"
sodipodi:role="line"
style="font-size:8px">P</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3846"
y="72.076889"
x="131.45273"
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="72.076889"
x="131.45273"
id="tspan3848"
sodipodi:role="line"
style="font-size:8px">Slave address</tspan></text>
<text
xml:space="preserve"
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"
x="230.82361"
y="71.639389"
id="text3850"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3852"
x="230.82361"
y="71.639389"
style="font-size:8px">R/W</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3854"
y="72.010483"
x="254.15538"
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
style="font-size:8px"
y="72.010483"
x="254.15538"
id="tspan3856"
sodipodi:role="line">A</tspan></text>
<text
xml:space="preserve"
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"
x="291.59906"
y="71.953842"
id="text3858"
sodipodi:linespacing="125%"><tspan
style="font-size:8px"
sodipodi:role="line"
id="tspan3860"
x="291.59906"
y="71.953842">Data</tspan></text>
<text
xml:space="preserve"
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"
x="338.65213"
y="71.639381"
id="text3862"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3864"
x="338.65213"
y="71.639381"
style="font-size:8px">A/A</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3872"
y="71.639381"
x="338.65213"
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
style="font-size:8px"
y="71.639381"
x="338.65213"
id="tspan3874"
sodipodi:role="line">A/A</tspan></text>
<rect
style="fill:#ededed;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
id="rect3876"
width="17.716536"
height="17.716536"
x="336.61417"
y="60.236198" />
<text
sodipodi:linespacing="125%"
id="text3882"
y="71.639381"
x="338.65213"
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
style="font-size:8px"
y="71.639381"
x="338.65213"
id="tspan3884"
sodipodi:role="line">A/A</tspan></text>
<text
xml:space="preserve"
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"
x="574.98572"
y="71.953842"
id="text3886"
sodipodi:linespacing="125%"><tspan
style="font-size:8px"
sodipodi:role="line"
id="tspan3888"
x="574.98572"
y="71.953842">Data</tspan></text>
<text
xml:space="preserve"
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"
x="622.03882"
y="71.639381"
id="text3890"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3892"
x="622.03882"
y="71.639381"
style="font-size:8px">A/A</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3894"
y="72.006577"
x="358.74173"
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
style="font-size:8px"
y="72.006577"
x="358.74173"
id="tspan3896"
sodipodi:role="line">Sr</tspan></text>
<text
xml:space="preserve"
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"
x="415.02417"
y="72.076889"
id="text3898"
sodipodi:linespacing="125%"><tspan
style="font-size:8px"
sodipodi:role="line"
id="tspan3900"
x="415.02417"
y="72.076889">Slave address</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3902"
y="71.639389"
x="514.39502"
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
style="font-size:8px"
y="71.639389"
x="514.39502"
id="tspan3904"
sodipodi:role="line">R/W</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 239.91123,64.938067 6.25032,0"
id="path3906"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3908"
d="m 347.52347,64.938067 4.53516,0"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 630.87413,64.938067 4.53516,0"
id="path3912"
inkscape:connector-curvature="0" />
<rect
y="60.236198"
x="531.49603"
height="17.716536"
width="17.716536"
id="rect3916"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
<text
xml:space="preserve"
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"
x="537.61993"
y="72.010483"
id="text3918"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3920"
x="537.61993"
y="72.010483"
style="font-size:8px">A</tspan></text>
<path
inkscape:connector-curvature="0"
id="path3924"
d="m 523.55983,64.938067 6.25032,0"
style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<path
style="fill:none;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 269.20565,80.772982 0,4.747203 80.79435,0 0,-5"
id="path3950"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path3952"
d="m 554.20565,80.772982 0,4.747203 80.79435,0 0,-5"
style="fill:none;stroke:#000000;stroke-width:0.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
<text
xml:space="preserve"
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"
x="309.37576"
y="94.515022"
id="text3954"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
x="310.33084"
y="94.515022"
id="tspan3968"
style="font-size:6px;text-align:center;text-anchor:middle">One or more bytes of </tspan><tspan
sodipodi:role="line"
x="309.37576"
y="102.01502"
style="font-size:6px;text-align:center;text-anchor:middle"
id="tspan3975">data and ACK/NACK</tspan></text>
<text
xml:space="preserve"
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"
x="267.5"
y="39.862183"
id="text3960"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan3962"
x="267.5"
y="39.862183"></tspan></text>
<text
sodipodi:linespacing="125%"
id="text3977"
y="94.515022"
x="594.37579"
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
style="font-size:6px;text-align:center;text-anchor:middle"
id="tspan3979"
y="94.515022"
x="595.33087"
sodipodi:role="line">One or more bytes of </tspan><tspan
id="tspan3981"
style="font-size:6px;text-align:center;text-anchor:middle"
y="102.01502"
x="594.37579"
sodipodi:role="line">data and ACK/NACK</tspan></text>
</g>
</svg>
@misc{i2c-spec,
title = {{I2C Bus Specification, version 2.1}},
month = jan,
year = 2000,
note = "{\url{http://www.nxp.com/documents/other/39340011.pdf}}"
}
\ No newline at end of file
%==============================================================================
% Document header
%==============================================================================
\documentclass[a4paper,11pt]{article}
\usepackage[pdfborder= 0 0 0 1]{hyperref}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{rotating}
\usepackage{multirow}
\usepackage{color}
%==============================================================================
% Start of document
%==============================================================================
\begin{document}
\title{I$^2$C Slave Core}
\author
{
Theodor-Adrian Stana \\
CERN, BE-CO-HT \\
}
\date{\today}
\maketitle
\thispagestyle{empty}
\begin{figure}
\begin{center}
\includegraphics[scale=.25,keepaspectratio]{fig/cern-logo.png}
\end{center}
\end{figure}
% Break page
\pagebreak
% Generate TOC and pagebreak after it
\tableofcontents
\pagebreak
%==============================================================================
% SEC: Intro
%==============================================================================
\section{Introduction}
\label{sec:intro}
This document presents the \textit{i2c\_slave} VHDL module, implementing a simple I$^2$C
slave core capable of responding to I$^2$C transfers generated by a master. The module
is conceived to be controlled by an external module. Basic shifting of bits into the
module is handled during read transfers (from the slave's point of view), at the end of
which the user is presented with the received byte. Similarly, in the case of a write
transfer, the user inputs a byte to be sent, and the module handles shifting out of each
of the bits.
The \textit{i2c\_slave} module does not implement clock stretching, all information
provided by the module should be handled externally within the time span of an I$^2$C
bit transfer.
%==============================================================================
% SEC: I2C bus
%==============================================================================
\section{I$^2$C Bus Protocol}
The I$^2$C bus protocol is a two-wire protocol defined by Philips/NXP. The original
specification \cite{i2c-spec} defines all aspects of the protocol, from hardware
connections on the bus, to bit- and byte-level data transfers and electrical
characteristics of the bus. A summary about the widely-used protocol is given here.
Devices on the I$^2$C bus are connected together via two pins on the bus: the SCL
(serial clock) and SDA (serial data) pins. The I$^2$C bus uses a master-slave topology,
with I$^2$C masters driving the SCL line to send or receive bits on the SDA line. Both
the SCL and SDA lines on an I$^2$C device must be open-collector outputs.
As Fig.~\ref{fig:i2c-bus} shows, one pull-up resistor on the bus connects the line to
VCC and I$^2$C devices connect the SCL and SDA lines to ground when they drive the lines.
In this way, a device can set a logic low level on the bus by driving the pin and a logic
high level by releasing the pin.
\begin{figure}[b]
\begin{center}
\includegraphics[width=\textwidth]{fig/i2c-bus}
\caption{I$^2$C bus topology}
\label{fig:i2c-bus}
\end{center}
\end{figure}
To initiate a transfer, a master on the bus generates a start condition, driving the SDA
line low while the SCL line is high. Then, a series of SCL pulses is used to send or
receive bits on the bus, with one SCL pulse sent for each bit. The signal on the SDA line
must be stable for the duration of the SCL high pulse for the bit to be properly received
at the receiver side. When the master has finished transferring bits it must release control
of the bus by issuing a stop condition. This is done by releasing the SDA line while the SCL
line is high. Alternatively, if the master has finished the transfer and still wants to
continue sending data, it can issue a repeated start condition, which is identical to the
start condition. The various types of bit-level transfers are summarized in
Figure~\ref{fig:i2c-bitlevel}.
\begin{figure}
\begin{center}
\includegraphics[width=\textwidth]{fig/i2c-bitlevel}
\caption{Bit-level transfers on the I$^2$C bus}
\label{fig:i2c-bitlevel}
\end{center}
\end{figure}
Since there can be more than one slave on the bus, each bus is assigned an address to which
it responds when addressed. Two forms of addressing are defined in the I$^2$C bus specification,
a 7-bit addressing mode and a 10-bit addressing mode. Of the two, the 7-bit addressing mode is
the most widely used and also the only mode that the \textit{i2c\_slave} module supports.
\begin{figure}[b]
\begin{center}
\includegraphics[width=\textwidth]{fig/i2c-addr}
\caption{Sending of the address byte by the master}
\label{fig:i2c-addr}
\end{center}
\end{figure}
By this mode, after the master issues the start condition on the bus, it sends a series of
seven address bits MSB-first on the bus, followed by an eighth bit stating whether the master
wishes to read from ('1') or write to ('0') the slave. After this series of eight bits, if a
slave with this address exists on the bus, it must acknowledge (ACK) the transfer by driving the
SDA line low. If no master with this address exists, the SDA line remains high
(not acknowledge--NACK) and the master aborts the transfer. Figure~\ref{fig:i2c-addr} shows
how a master sends the address byte to the slave and how a slave acknowledges the transfer.
After a slave acknowledges its address, actual data transfer can begin. Based on the
R/$\bar{W}$ bit, the master either reads or writes a byte from/to the slave. After the byte is
written, the receiver (master or slave) must acknowledge the byte in the same manner as a slave
acknowledges its address. A low level on the 9$^{th}$ SCL cycle means an ACK, while a high
level on the 9$^{th}$ SCL cycle means an NACK. Any number of bytes can be sent between
transmitter and receiver. The transfer ends with the master sending a stop condition on the bus,
after the ACK/NACK bit has been sent. The master can issue a stop condition as a result of both
an ACK and an NACK. A stop condition can however not follow a start condition without
transferring data.
An example data transfer is shown in Figure~\ref{fig:i2c-transf}. The master first issues a
start condition and sends the address, which is acknowledged by the slave. Data transfer then
starts, with either the master or the slave sending data. At one point, the master decides to
reverse the order of data transfer and issues a repeated start with the R/$\bar{W}$ bit flipped.
A number of data bytes are transferred, and the master ends the transfer with the stop condition.
\begin{figure}
\begin{center}
\includegraphics[width=\textwidth]{fig/i2c-transf}
\caption{Bytes transferred on the I$^2$C bus}
\label{fig:i2c-transf}
\end{center}
\end{figure}
%==============================================================================
% SEC: Instantiation
%==============================================================================
\section{Instantiation}
\label{sec:instantiation}
This section offers information useful for instantiating the \textit{i2c\_slave} core module.
Table~\ref{tbl:ports} presents a list of ports of the \textit{i2c\_slave} module.
I$^2$C-specific ports should be instantiated as outlined in Figure~\ref{fig:i2c-ports}, via
tri-state buffers enabled by the \textit{scl\_en\_o} lines \textit{sda\_en\_o}.
\begin{figure}[h]
\begin{center}
\includegraphics[width=.75\textwidth]{fig/i2c-ports}
\caption{Connecting the I$^2$C ports}
\label{fig:i2c-ports}
\end{center}
\end{figure}
\pagebreak
To instantiate a tri-state buffer in VHDL:
\footnotesize
\begin{verbatim}
SCL <= scl_o when (scl_en_o = '1') else
'Z';
scl_i <= SCL;
SDA <= sda_o when (sda_en_o = '1') else
'Z';
sda_i <= SDA;
\end{verbatim}
\normalsize
\noindent and in Verilog:
\footnotesize
\begin{verbatim}
assign SCL = (scl_en_o) ? scl_o : 1'bz;
assign scl_i = SCL;
assign SDA = (sda_en_o) ? sda_o : 1'bz;
assign sda_i = SDA;
\end{verbatim}
\normalsize
The rest of the ports should be connected in a normal manner to an external controlling module. A
component declaration of the \textit{i2c\_slave} module is readily available in the
\textit{i2c\_slave\_pkg.vhd} package file. The package also defines constants for the
statuses readable at the \textit{stat\_o} pin. Refer to Section~\ref{sec:oper} for details
about the details regarding the various statuses.
\begin{table}[h]
\caption{Ports of \textit{i2c\_slave} module}
\label{tbl:ports}
\begin{center}
\begin{tabular}{l c p{.65\textwidth}}
\hline
\multicolumn{1}{c}{\textbf{Name}} & \multicolumn{1}{c}{\textbf{Size}} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
clk\_i & 1 & Clock input \\
rst\_n\_i & 1 & Active-low reset input \\
scl\_i & 1 & SCL line input \\
scl\_o & 1 & SCL line output \\
scl\_en\_o & 1 & SCL line output enable \\
sda\_i & 1 & SDA line input \\
sda\_o & 1 & SDA line output \\
sda\_en\_o & 1 & SDA line output enable \\
i2c\_addr\_i & 7 & I$^2$C slave address of the module, compaired against received address \\
ack\_n\_i & 1 & ACK to be sent to the master in case of master write transfers \\
op\_o & 1 & State of the R/$\bar{W}$ bit at the end of the address byte \\
tx\_byte\_i & 8 & Byte of data to be sent over I$^2$C \\
rx\_byte\_o & 8 & Byte received over I$^2$C \\
done\_p\_o & 1 & One \textit{clk\_i} cycle-wide pulse, signaling the slave module
has performed a valid transfer \\
stat\_o & 3 & Current state of communication \\
\hline
\end{tabular}
\end{center}
\end{table}
%==============================================================================
% SEC: Operation
%==============================================================================
\pagebreak
\section{Operation}
\label{sec:oper}
The \textit{i2c\_slave} waits for a start condition to be performed on the I$^2$C bus by a
master module. The address is shifted in and if it matches the slave address set via
the \textit{i2c\_addr\_i} input, the \textit{done\_p\_o} output is set for one \textit{clk\_i}
cycle and the \textit{stat\_o} output signals an address match. Based on the eighth
bit of the first I2C transfer byte, the module then starts shifting in or out each byte
in the transfer, setting the \textit{done\_p\_o} output for one clock cycle after each
received/sent byte. The \textit{stat\_o} output can be checked to see the byte has been
sent/received correctly.
As can be seen from the above description, \textit{done\_p\_o} is high after every completed
I$^2$C transfer. As a general rule, it should be checked periodically and when high, the
\textit{stat\_o} (possibly together with the \textit{op\_o}) output should be checked to see
the appropriate action to be taken. The various statuses possible at the
\textit{stat\_o} output are listed in Table~\ref{tbl:stat}.
\begin{table}[h]
\caption{Statuses at the \textit{stat\_o} pin}
\label{tbl:stat}
\centerline
{
\begin{tabular}{c p{.65\textwidth}}
\hline
\multicolumn{1}{c}{\textbf{\textit{stat\_o}}} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
00 & Slave idle, waiting for start condition \\
01 & Address sent by the master matches that at \textit{i2c\_addr\_i}; \textit{op\_o}
valid \\
10 & Read done, waiting for ACK/NACK to send to master \\
11 & Write done, waiting for next byte to send to master \\
\hline
\end{tabular}
}
\end{table}
The \textit{ack\_n\_i} port is used for sending the ACK to the master. The polarity of the bit
is that of the I$^2$C ACK signal ('0' -- ACK, '1' -- NACK). A '0' should be set
at the input also when the address is ACKed, otherwise the slave will not acknowledge its own
address. This implies that the \textit{ack\_n\_i} pin can be used to isolate the slave from the
bus.
\subsection{Read mode}
When the eighth bit of the address byte is low (R/$\bar{W}$ = '0'), the slave goes into read
mode. Each bit of the byte sent by the master is shifted in on the falling edge of SCL. After
eight bits have been shifted in, \textit{done\_p\_o} is set for one \textit{clk\_i} cycle and
the status signals a successful read ("10"). The received byte should be read from the
\textit{rx\_byte\_o} output and an ACK ('0') or NACK~('1') should be sent to the master via the
\textit{ack\_n\_i} pin. The \textit{i2c\_slave} module does not implement clock stretching,
so the \textit{ack\_n\_i} pin should be set before the SCL line goes high.
Following are the steps that should be performed to read one or more bytes sent by the master:
\begin{enumerate}
\item Wait for \textit{done\_p\_o} to go high, signaling the I$^2$C address of the slave
has been read.
\item Check that \textit{stat\_o} is "01" (address good) and that \textit{op\_o} is '0'
(master write, slave read). Set a '0' at the \textit{ack\_n\_i} input to send the
ACK to the address; if \textit{ack\_n\_i} is '1', the slave does not acknowledge its
own address.
\item Wait for \textit{done\_p\_o} to go high.
\item Check that \textit{stat\_o} is "10" (read done), read the received byte from
\textit{rx\_byte\_o} and write a '0' at \textit{ack\_n\_i} to send an ACK, or a
'1' to send an NACK.
\item The transfer is repeated until the master sends a stop condition.
\end{enumerate}
\subsection{Write mode}
When a master reads from the slave, the eighth bit of the address byte is high
(R/$\bar{W}$ = '1'). In this case, the \textit{i2c\_slave} module goes in write mode, where
the byte at the \textit{tx\_byte\_i} port is sent to the master. When the byte has been
successfully sent, the \textit{done\_p\_o} is high for one clock cycle and the \textit{stat\_o}
port has the value "11", signaling the slave has successfully sent a byte and is
awaiting the loading of another byte.
Below are the steps which should be followed to write one or more bytes to a master:
\begin{enumerate}
\item Wait for \textit{done\_p\_o} to go high, signaling the I$^2$C address of the slave
has been read.
\item Check that \textit{stat\_o} is "01" (address good) and \textit{op\_o} is '1'
(master read, slave write). Set the byte to be sent to the master at the
\textit{tx\_byte\_i} input. Set a '0' at \textit{ack\_n\_i} to send the ACK to the address;
if \textit{ack\_n\_i} is '1', the slave does not acknowledge its own address.
\item Wait for \textit{done\_p\_o} to go high.
\item Check that \textit{stat\_o} is "11" (write done) and set the next byte to be
sent at the \textit{tx\_byte\_i} port.
\item If the master acknowledges the transfer, the next byte is sent, otherwise, the master
will send a stop condition, so the \textit{i2c\_slave} module is reset.
\end{enumerate}
%==============================================================================
% SEC: Implementation
%==============================================================================
\section{Implementation}
\label{sec:implem}
This section presents implementation details of the \textit{i2c\_slave} module. A simplified
block diagram of the module is presented in Figure~\ref{fig:i2c-slave-bd}.
Deglitched versions of the SCL and SDA lines control operation of the central finite-state
machine (FSM), which sets the outputs and controls the rest of the components in the module.
\begin{figure}[h]
\begin{center}
\includegraphics[width=\textwidth]{fig/i2c-slave-bd}
\caption{Block diagram of \textit{i2c\_slave} module}
\label{fig:i2c-slave-bd}
\end{center}
\end{figure}
The FSM is sensitive to start and stop conditions and falling edges of the SCL line. It
controls how outputs are set, when the reception and transmission shift registers (RXSR/TXSR)
are loaded and when they shift, and acknowledging to the address and bytes sent by the
master. Table~\ref{tbl:fsm} lists the states of the FSM and the operations performed
in each state.
\begin{table}
\caption{\textit{i2c\_slave} module state machine}
\label{tbl:fsm}
\centerline
{
\begin{tabular}{l p{.65\textwidth}}
\hline
\multicolumn{1}{c}{\textbf{State}} & \multicolumn{1}{c}{\textbf{Description}} \\
\hline
\textit{IDLE} & Idle state, FSM default state after reset and the state returned to after
reception of a stop condition. \\
\textit{STA} & State reached after a start condition is received. On the falling edge
of SCL, the FSM transitions to \textit{ADDR} state. \\
\textit{ADDR} & Shift in 7 address bits and R/$\bar{W}$ bit and go to \textit{ADDR\_ACK}
state. Each bit is shifted in on the falling edge of SCL. If the
received address matches, \textit{op\_o} is set and \textit{done\_p\_o}
as well. \\
\textit{ADDR\_ACK} & Check received address and send ACK if it corresponds to
\textit{i2c\_addr\_i}. If the R/$\bar{W}$ bit is high,
go to \textit{RD} state, otherwise go to \textit{WR\_LOAD\_TXSR} state.
If received address does not match, NACK and go to \textit{IDLE}
state. \\
\textit{RD} & Shift in eight bits sent by master and go to \textit{RD\_ACK} state. Each bit
is shifted in on the falling edge of SCL. When eight bits have been shifted in,
set \textit{done\_p\_o}. \\
\textit{RD\_ACK} & Read \textit{ack\_n\_i} and forward it to \textit{sda\_o} (ACK/NACK
from external controller). If \textit{ack\_n\_i} is '0', then go back to
\textit{RD} state, else to \textit{IDLE} state. \\
\textit{WR\_LOAD\_TXSR} & Load TX shift register with data at \textit{tx\_byte\_i} input
and go to \textit{WR} state. \\
\textit{WR} & Shift out the eight bits of the TXSR starting with MSB and go to
\textit{WR\_ACK} state. TXSR shifts left on falling edge of SCL. When
eight bits have been shifted out, \textit{done\_p\_o} is set.\\
\textit{WR\_ACK} & Clear \textit{done\_p\_o}. Read ACK bit sent by master.
If '0', go back to \textit{WR} state, otherwise go to \textit{IDLE}
state. \\
\hline
\end{tabular}
}
\end{table}
%==============================================================================
% Bibliography
%==============================================================================
\pagebreak
\bibliographystyle{ieeetr}
\bibliography{i2c_slave}
\end{document}
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