<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://zeus.phys.uconn.edu/wiki/index.php?action=history&amp;feed=atom&amp;title=Programming_the_ADC</id>
	<title>Programming the ADC - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://zeus.phys.uconn.edu/wiki/index.php?action=history&amp;feed=atom&amp;title=Programming_the_ADC"/>
	<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;action=history"/>
	<updated>2026-04-17T16:07:40Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=4605&amp;oldid=prev</id>
		<title>Senderovich at 01:52, 7 October 2009</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=4605&amp;oldid=prev"/>
		<updated>2009-10-07T01:52:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 01:52, 7 October 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The VHDL files can be found [http://zeus.phys.uconn.edu/halld/tagger/electronics/design-6-2007/ADC_VHDL.zip here].&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Interface ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Interface ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Senderovich</name></author>
	</entry>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2457&amp;oldid=prev</id>
		<title>Senderovich: /* Interface */</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2457&amp;oldid=prev"/>
		<updated>2007-08-20T21:21:35Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Interface&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:21, 20 August 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot; &gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, analog input range is 0 to V&amp;lt;sub&amp;gt;Reg&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, analog input range is 0 to V&amp;lt;sub&amp;gt;Reg&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is two's complement&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is two's complement &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;[http://en.wikipedia.org/wiki/Two%27s_complement]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal (BCD)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal (BCD)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Senderovich</name></author>
	</entry>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2456&amp;oldid=prev</id>
		<title>Senderovich: /* Interface */</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2456&amp;oldid=prev"/>
		<updated>2007-08-20T21:18:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Interface&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:18, 20 August 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot; &gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, analog input range is 0 to V&amp;lt;sub&amp;gt;Reg&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, analog input range is 0 to V&amp;lt;sub&amp;gt;Reg&amp;lt;/sub&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;twos-&lt;/del&gt;complement&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;two's &lt;/ins&gt;complement&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal (BCD)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal (BCD)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l52&quot; &gt;Line 52:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 52:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;where an X is a don't-care state.  Since the first case is almost all don't-care states, we can send the same data (last 11 bits) as in the second case, but append a zero to the front instead of a 1; this simplifies the logic involved.  The don't-care states in bits 9 and 2 we can set to zero.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;where an X is a don't-care state.  Since the first case is almost all don't-care states, we can send the same data (last 11 bits) as in the second case, but append a zero to the front instead of a 1; this simplifies the logic involved.  The don't-care states in bits 9 and 2 we can set to zero.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The data flowing back to the FPGA from the ADC will be voltage data from the channel set in the previous conversation.  We are going to use &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;twos-&lt;/del&gt;complement format for the data, but it can be set to BCD by changing the last bit in the control register to a one.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The data flowing back to the FPGA from the ADC will be voltage data from the channel set in the previous conversation.  We are going to use &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;two's &lt;/ins&gt;complement format for the data, but it can be set to BCD by changing the last bit in the control register to a one.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The control interface to the FPGA core will be:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The control interface to the FPGA core will be:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Senderovich</name></author>
	</entry>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2455&amp;oldid=prev</id>
		<title>Senderovich: /* Interface */</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2455&amp;oldid=prev"/>
		<updated>2007-08-20T21:15:58Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Interface&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:15, 20 August 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l40&quot; &gt;Line 40:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Coding: set to zero&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is twos-complement&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 0, output is twos-complement&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;** if 1, output is binary-coded decimal &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;(BCD)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Thus a conversation to read the voltage only (and not update the control register would look like&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Thus a conversation to read the voltage only (and not update the control register would look like&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Senderovich</name></author>
	</entry>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2454&amp;oldid=prev</id>
		<title>Senderovich: /* Interface */</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2454&amp;oldid=prev"/>
		<updated>2007-08-20T21:08:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Interface&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:08, 20 August 2007&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot; &gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 11:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ''D_in'': Serial data in line, for communications from the FPGA to the ADC.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* ''D_in'': Serial data in line, for communications from the FPGA to the ADC.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On startup the ADC requires two &amp;quot;dummy&amp;quot; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;conversation &lt;/del&gt;that write all ones to the ADC and read garbage data from the ADC.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;On startup the ADC requires two &amp;quot;dummy&amp;quot; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;conversations &lt;/ins&gt;that write all ones to the ADC and read garbage data from the ADC.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A typical conversation lasts for 16 clock cycles, sends 12 bits to the ADC, and receives 12 bits from the ADC.  The 12-bit control register has the following format:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A typical conversation lasts for 16 clock cycles, sends 12 bits to the ADC, and receives 12 bits from the ADC.  The 12-bit control register has the following format:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Senderovich</name></author>
	</entry>
	<entry>
		<id>https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2094&amp;oldid=prev</id>
		<title>Krueger at 18:47, 17 July 2007</title>
		<link rel="alternate" type="text/html" href="https://zeus.phys.uconn.edu/wiki/index.php?title=Programming_the_ADC&amp;diff=2094&amp;oldid=prev"/>
		<updated>2007-07-17T18:47:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The VHDL files can be found [http://zeus.phys.uconn.edu/halld/tagger/electronics/design-6-2007/ADC_VHDL.zip here].&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
&lt;br /&gt;
The AD7928 ADC has several features that we do not need: the shadow/sequencer and the multiple power modes.  They could be useful for more advanced or efficient functioning of the system, but are not needed.  Thus we will simplify the interface by turning these features off and running the ADC is the most basic mode.&lt;br /&gt;
&lt;br /&gt;
The ADC has a four-wire interface that is compatible with the SPI bus protocol.  The four lines are:&lt;br /&gt;
* ''/CS'': Active-low chip select.  This line is high when the ADC is idle and goes low for 16 cycles during a conversation.  As this is active-low and the only other chip on the bus (the temperature sensor) has an active-high chip select line, it is possible to use a single chip select.  That would cause one or the other chip to always be running, which would be more information than we need or than we can send across Ethernet, but it is a possible design decision.&lt;br /&gt;
* ''SCLK'': A serial clock.&lt;br /&gt;
* ''D_out'': Serial data out line, for communications from the ADC to the FPGA.  This line idles in high-Z.&lt;br /&gt;
* ''D_in'': Serial data in line, for communications from the FPGA to the ADC.&lt;br /&gt;
&lt;br /&gt;
On startup the ADC requires two &amp;quot;dummy&amp;quot; conversation that write all ones to the ADC and read garbage data from the ADC.&lt;br /&gt;
&lt;br /&gt;
A typical conversation lasts for 16 clock cycles, sends 12 bits to the ADC, and receives 12 bits from the ADC.  The 12-bit control register has the following format:&lt;br /&gt;
&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;1&amp;quot; border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;1&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
|- style=&amp;quot;font-size:smaller; height:10px&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:8.33%&amp;quot; |11 || style=&amp;quot;width:8.33%&amp;quot; |10 || style=&amp;quot;width:8.33%&amp;quot; |09 || style=&amp;quot;width:8.33%&amp;quot; |08 || style=&amp;quot;width:8.33%&amp;quot; |07 || style=&amp;quot;width:8.33%&amp;quot; |06 || style=&amp;quot;width:8.33%&amp;quot; |05 || style=&amp;quot;width:8.33%&amp;quot; |04 || style=&amp;quot;width:8.33%&amp;quot; |03 || style=&amp;quot;width:8.33%&amp;quot; |02 || style=&amp;quot;width:8.33%&amp;quot; |01 || style=&amp;quot;width:8.33%&amp;quot; |00&lt;br /&gt;
|-&lt;br /&gt;
| Write || Seq || DC || Addr&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; || Addr&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || Addr&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; || Pow&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || Pow&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; || Shadow || DC || Range || Coding&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The sections of the control register are:&lt;br /&gt;
* Write:&lt;br /&gt;
** if 0, do not update the remaining 11 bits of the control register&lt;br /&gt;
** if 1, write new data to the control register&lt;br /&gt;
* Seq: used for a feature we don't need: set to zero&lt;br /&gt;
* DC: don't care&lt;br /&gt;
* Addr(2:0): 3-bit address of channel to report on during next conversation&lt;br /&gt;
* Pow(1:0): used for changing power modes: set to &amp;quot;11&amp;quot;&lt;br /&gt;
* Shadow: used for a feature we don't need: set to zero&lt;br /&gt;
* DC: don't care&lt;br /&gt;
* Range: set to zero&lt;br /&gt;
** if 0, analog input range is 0 to 2*V&amp;lt;sub&amp;gt;Ref&amp;lt;/sub&amp;gt;&lt;br /&gt;
** if 1, analog input range is 0 to V&amp;lt;sub&amp;gt;Reg&amp;lt;/sub&amp;gt;&lt;br /&gt;
* Coding: set to zero&lt;br /&gt;
** if 0, output is twos-complement&lt;br /&gt;
** if 1, output is binary-coded decimal&lt;br /&gt;
&lt;br /&gt;
Thus a conversation to read the voltage only (and not update the control register would look like&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15px&amp;quot; | 0 || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | X&lt;br /&gt;
|}&lt;br /&gt;
and a conversation to set up a read on channel A(2:0) would look like&lt;br /&gt;
{| align=&amp;quot;center&amp;quot; cellpadding=&amp;quot;4&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;text-align:center&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:15px&amp;quot; | 1 || style=&amp;quot;width:15px&amp;quot; | 0 || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | A&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; || style=&amp;quot;width:15px&amp;quot; | A&amp;lt;sub&amp;gt;1&amp;lt;/sub&amp;gt; || style=&amp;quot;width:15px&amp;quot; | A&amp;lt;sub&amp;gt;0&amp;lt;/sub&amp;gt; || style=&amp;quot;width:15px&amp;quot; | 1 || style=&amp;quot;width:15px&amp;quot; | 1 || style=&amp;quot;width:15px&amp;quot; | 0 || style=&amp;quot;width:15px&amp;quot; | X || style=&amp;quot;width:15px&amp;quot; | 0 || style=&amp;quot;width:15px&amp;quot; | 0&lt;br /&gt;
|}&lt;br /&gt;
where an X is a don't-care state.  Since the first case is almost all don't-care states, we can send the same data (last 11 bits) as in the second case, but append a zero to the front instead of a 1; this simplifies the logic involved.  The don't-care states in bits 9 and 2 we can set to zero.&lt;br /&gt;
&lt;br /&gt;
The data flowing back to the FPGA from the ADC will be voltage data from the channel set in the previous conversation.  We are going to use twos-complement format for the data, but it can be set to BCD by changing the last bit in the control register to a one.&lt;br /&gt;
&lt;br /&gt;
The control interface to the FPGA core will be:&lt;br /&gt;
* ''Clk'': input: Clock line&lt;br /&gt;
* ''Rst'': input: Asynchronous, active-low reset line&lt;br /&gt;
* ''Go'': input: Pulse to begin transmission&lt;br /&gt;
* ''Wr'': input: Flag whether or not to write new data to control register&lt;br /&gt;
* ''A(2:0)'': input: Address to write to control register&lt;br /&gt;
* ''C(2:0)'': output: Address of data coming from ADC&lt;br /&gt;
* ''D(11:0)'': output: Data from ADC&lt;br /&gt;
* ''Done'': output: Flag to tell core that new data is ready&lt;br /&gt;
&lt;br /&gt;
== Emulator ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ADC Emulator Block.JPG|thumb|ADC emulator functional block diagram]]&lt;br /&gt;
&lt;br /&gt;
The functional block diagram for the emulator is shown to the right.  The blocks are:&lt;br /&gt;
* '''shift in 16'''&lt;br /&gt;
** This block is a 16-bit shift-in register with asynchronous, active-low reset and shift enable.  Custom outputs select the write bit and the data bits from the input string.  This register is designed to shift all 16 cycles of a transfer, but only make use of the first 12 bits of the input.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''En'': shift enable&lt;br /&gt;
*** ''D'': data in line&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q_W'': the write bit from the input string&lt;br /&gt;
*** ''Q_D'': the 11 data bits from the input string&lt;br /&gt;
* '''control reg'''&lt;br /&gt;
** This block is an 11-bit register with asynchronous, active-low reset and a clock enable line.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''En'': read enable&lt;br /&gt;
*** ''D'': data in&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q'': data out&lt;br /&gt;
* '''3-to-8 demux'''&lt;br /&gt;
** This block is a 3-to-8 demultiplexer.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''D'': data to be demuxed&lt;br /&gt;
*** ''S'': 3-bit select&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q'': 8-bit output&lt;br /&gt;
* '''error flag'''&lt;br /&gt;
** This block generates a flag to ensure that data in the control register is in the right format (to help verify synchronization).  The format is: d00ddd110000, where a &amp;quot;d&amp;quot; is a don't-care state (0 or 1).&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''D'': data in&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Err'': active-high error flag&lt;br /&gt;
* '''shift out 15'''&lt;br /&gt;
** This block is a 15-bit shift-out register with asynchronous, active-low reset and a shift/load toggle.  Custom inputs load the address (MSB first) as the first 3 bits and the data as the last 12 bits.  Idle output is a zero.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''Sh/Ld'': shift/load toggle; active-high shift enable, active-low load enable&lt;br /&gt;
*** ''D'': data in&lt;br /&gt;
*** ''A'': address in&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q'': data out&lt;br /&gt;
&lt;br /&gt;
== Controller ==&lt;br /&gt;
&lt;br /&gt;
[[Image:ADC Controller Block.JPG|thumb|ADC controller functional block diagram]]&lt;br /&gt;
&lt;br /&gt;
The functional block diagram for the controller is shown to the right.  The blocks are:&lt;br /&gt;
* '''counter'''&lt;br /&gt;
** This block is a 5-bit counter.  It counts out 17 cycles: from the idle state, a pulse on the Go line begins a count of 16 cycles (during which time CS is low), then on the 17th cycle re-enters the idle state to await another pulse on Go.  The Go line is ignored during a 17-cycle run.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''Go'': pulse to leave idle state&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''CS'': active-low chip select&lt;br /&gt;
* '''delayer'''&lt;br /&gt;
** This block is a single-cycle signal delayer.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''D'': signal to be delayed&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q'': delayed signal&lt;br /&gt;
* '''shift out 12'''&lt;br /&gt;
** This block is a 12-bit shift-out register with asynchronous, active-low reset and a shift/load toggle.  Custom inputs load the write bit and address bits, then fill in the remaining bits (W00AAA110000).  The register drags a trailing zero.  The output idles at zero when output is not enabled.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''Sh/Ld'': shift/load toggle; active-high shift enable, active-low load enable&lt;br /&gt;
*** ''D_W'': write bit input&lt;br /&gt;
*** ''D_A'': address bits input&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''Q'': serial output&lt;br /&gt;
* '''shift in 15'''&lt;br /&gt;
** This block is a 15-bit shift-in register with asynchronous, active-low reset and shift enable.  Custom outputs select the address bits and data bits.&lt;br /&gt;
** inputs&lt;br /&gt;
*** ''CLK'': clock&lt;br /&gt;
*** ''Rst'': asynchronous, active-low reset&lt;br /&gt;
*** ''Sh'': shift enable&lt;br /&gt;
*** ''D'': data in&lt;br /&gt;
** outputs&lt;br /&gt;
*** ''A'': address out&lt;br /&gt;
*** ''Q'': data out&lt;/div&gt;</summary>
		<author><name>Krueger</name></author>
	</entry>
</feed>