<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.opencircuits.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Adams+Quinn</id>
	<title>OpenCircuits - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.opencircuits.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Adams+Quinn"/>
	<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Special:Contributions/Adams_Quinn"/>
	<updated>2026-04-22T00:24:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=TVI_Electronics&amp;diff=22184</id>
		<title>TVI Electronics</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=TVI_Electronics&amp;diff=22184"/>
		<updated>2011-12-27T22:50:38Z</updated>

		<summary type="html">&lt;p&gt;Adams Quinn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=right&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
[[Image:TVIElectronics_small_logo.gif|TVI Electronics]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
TVI Electronics is a designer and manufacturer of custom and standard controllers for Optrex F-51320, F-51553, F-51852, F-55472 128x64 dot pixel (COG) STN Monochrome Graphic LCDs, F-51854 160x128 F-STN Monochrome Transflective Graphic LCD, F-51405 and F-51851 240x64 STN Monochrome Graphic LCDs, F-51900 QVGA 320x240 CSTN Transmissive Color Graphic LCD with Touch Screen and a worldwide supplier of resistive and surface acoustic wave (SAW) touch screens and USB/RS232 touchscreen controllers.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Manufacturer Info:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.tvielectronics.com www.tvielectronics.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Contact Info:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.tvielectronics.com www.tvielectronics.com]&lt;br /&gt;
&lt;br /&gt;
[[Category:Suppliers]]&lt;br /&gt;
[[Category:Manufacturers]]&lt;br /&gt;
&lt;br /&gt;
[http://essayfast.com/ custom essay writing]&lt;/div&gt;</summary>
		<author><name>Adams Quinn</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=Relay_CPU&amp;diff=22183</id>
		<title>Relay CPU</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=Relay_CPU&amp;diff=22183"/>
		<updated>2011-12-27T22:50:22Z</updated>

		<summary type="html">&lt;p&gt;Adams Quinn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Main-G5Q-14.jpg|right]]&lt;br /&gt;
A '''relay CPU''' is a CPU built mostly or entirely out of [[relays]].&lt;br /&gt;
&lt;br /&gt;
While at one time relays were the best available component for building a computer,&lt;br /&gt;
nowadays one of the few advantages of a relay CPU over other CPU implementations is that you can see it working (very educational) --&lt;br /&gt;
building a CPU on a FPGA or other integrated chip makes it use less power, run faster, cost less, etc. than a relay CPU.&lt;br /&gt;
&lt;br /&gt;
Harry Porter built his&lt;br /&gt;
[http://web.cecs.pdx.edu/~harry/Relay/ &amp;quot;Relay Computer&amp;quot;]&lt;br /&gt;
out of 415 Relays, all identical 4PDT.&lt;br /&gt;
&lt;br /&gt;
Jon Stanley built &lt;br /&gt;
[http://www.electronixandmore.com/project/relaycomputertwo/index.html &amp;quot;Relay Computer Two&amp;quot;],&lt;br /&gt;
a relay computer built from 281 relays.&lt;br /&gt;
&lt;br /&gt;
Is it possible to build a relay CPU from significantly fewer relays?&lt;br /&gt;
In particular, is it possible to build a relay CPU&lt;br /&gt;
from 256 relays or less?&lt;br /&gt;
From 100 relays or less?&lt;br /&gt;
&lt;br /&gt;
Perhaps we should have 2 categories:&lt;br /&gt;
* What's the minimum number of relays in a relay-only CPU?&lt;br /&gt;
* What's the minimum number of relays in a diode-relay CPU?&lt;br /&gt;
&lt;br /&gt;
== lots of miscellaneous tibits that seem kind of related to building a relay CPU ==&lt;br /&gt;
&lt;br /&gt;
What is a good simulator for a relay computer?&lt;br /&gt;
&lt;br /&gt;
Tofu relay circuit simulator.&lt;br /&gt;
[http://meatfighter.com/tofu/]&lt;br /&gt;
[http://meatfighter.com/tofu/tutorial/index.html]&lt;br /&gt;
&lt;br /&gt;
http://en.wikipedia.org/wiki/Quite_Universal_Circuit_Simulator&lt;br /&gt;
&lt;br /&gt;
tkgate open-source gate-level schematic entry and simulator&lt;br /&gt;
[http://www.tkgate.org/]&lt;br /&gt;
&lt;br /&gt;
http://electronics.stackexchange.com/questions/7022/circuit-simulation-software&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bouncing is not a problem inside a relay CPU,&lt;br /&gt;
but it can be a problem when you try to interface a relay CPU to a semiconductor RAM.&lt;br /&gt;
What is a good method for&lt;br /&gt;
[http://www.ganssle.com/debouncing.pdf debouncing]?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.kk.org/thetechnium/archives/2009/02/amish_hackers_a.php &amp;quot;Amish Hackers&amp;quot;]&lt;br /&gt;
claims that &lt;br /&gt;
&amp;lt;q&amp;gt;The Amish call this pneumatic system &amp;quot;Amish electricity.&amp;quot;&amp;lt;/q&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of the commenters said &amp;quot;... there are pneumatic equivalents to electrical devices. Air - is there anything it can’t do?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I wonder how difficult it would be to build a CPU that, instead of being built of ICs or discrete transistors or relays, was built from pneumatically-powered devices.&lt;br /&gt;
&lt;br /&gt;
Then, of course, put it in a case that looks like this:&lt;br /&gt;
&amp;quot;Steampunk Frankenstein computer casemod&amp;quot;&lt;br /&gt;
http://blog.makezine.com/archive/2009/02/frankenstein_casemod.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.fastchip.net/howcomputerswork/p1.html &amp;quot;How Computers Work&amp;quot;]&lt;br /&gt;
by Roger Young&lt;br /&gt;
uses a relay computer in many examples.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some nice features that will make it easier to find and fix the inevitable mistakes people make when wiring up something as complicated as a CPU:&lt;br /&gt;
* single-step-ability&lt;br /&gt;
* breakpoints&lt;br /&gt;
* lots of LEDs (If you make the traditional hard-wired diode array for microcode, building it out of LEDs might be cool)&lt;br /&gt;
* minimum # of chips to wire together&lt;br /&gt;
&lt;br /&gt;
* testability: single-step, breakpoints on program address, breakpoints on data address, breakpoints on data write address ... what other testability things are useful?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You need to balance:&lt;br /&gt;
* Many programmers appreciate lots of general-purpose registers, rather than needing to remember a bunch of quirks associated with each register. Since memory is slow, keeping the &amp;quot;working set&amp;quot; of data in registers helps reduce the pressure on the memory interface (von Neumann bottleneck).&lt;br /&gt;
* Fewer registers&lt;br /&gt;
--&amp;gt; directly easier to build because you don't have to build and test those registers.&lt;br /&gt;
--&amp;gt; indirectly easier to build because there is less stuff (microcode, etc) needing to select *which* register.&lt;br /&gt;
* instructions that only work with *some* registers (quirky) --&amp;gt; less stuff needed to select *which* register.&lt;br /&gt;
&lt;br /&gt;
On the other hand, if you implement the registers in a small SRAM,&lt;br /&gt;
having more than a minimum number is also helpful:&lt;br /&gt;
* no need for complicated indirect indexed addressing modes&lt;br /&gt;
--&amp;gt; indirectly easier to build because fewer addressing modes to build and test.&lt;br /&gt;
&lt;br /&gt;
Also,&lt;br /&gt;
* more registers makes the &amp;quot;carry bit&amp;quot; or other status bits less necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
building a computer (except for the RAM and program storage) out of relays:&lt;br /&gt;
we have 2 slightly-contradictory desires:&lt;br /&gt;
&lt;br /&gt;
(a) It would be nice to use the fewest number of relays, because each relay will need&lt;br /&gt;
to be hand-wired, and each &amp;quot;on&amp;quot; coil dissipates power.&lt;br /&gt;
&lt;br /&gt;
(b) It would be nice to do a bunch of work on each clock cycle, so we can get the&lt;br /&gt;
same amount of work done in fewer clock cycles, reducing wear-and-tear on&lt;br /&gt;
the relays ... and if the relays are optimally driven (approximate with &amp;quot;snubber&amp;quot; in series with coil, where the snubber is a parallel RC), it takes less power&lt;br /&gt;
to &amp;quot;hold&amp;quot; the relay than to switch states.&lt;br /&gt;
&lt;br /&gt;
I suspect that balancing these 2 requirements is very similar to optimizing&lt;br /&gt;
similar requirements for minimizing power in purely solid-state logic.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
relay computer&lt;br /&gt;
&lt;br /&gt;
2008-05-22:&lt;br /&gt;
DAV:&lt;br /&gt;
thinking about building a cpu out of relays.&lt;br /&gt;
standard 4 phase clock should work.&lt;br /&gt;
But can relays support the setup and hold time requirements for 2 phase clock?&lt;br /&gt;
&lt;br /&gt;
Say we have a series of transparent latches.&lt;br /&gt;
(They will have some combinational logic between them -- I'll ignore the combinational logic while trying to answer this question).&lt;br /&gt;
&lt;br /&gt;
Each &amp;quot;layer&amp;quot; of transparent latches is transparent on the &amp;quot;opposite&amp;quot; phase.&lt;br /&gt;
&lt;br /&gt;
On the falling edge of the clock:&lt;br /&gt;
low-transparent latches become transparent, letting their inputs flow through to their outputs. (They may switch states).&lt;br /&gt;
hi-transparent latches go into &amp;quot;hold&amp;quot; state, maintaining that bit until the rising edge of the clock. (They don't switch states).&lt;br /&gt;
&lt;br /&gt;
So ... for 2 phase clock to work,&lt;br /&gt;
the low-transparent latches need to hold their &amp;quot;hold&amp;quot; bit long enough for the hi-transparent latches to grab it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
one teensy glitch:&lt;br /&gt;
during transitions, with a break-before-make relay,&lt;br /&gt;
there is a short time when the output is &amp;quot;disconnected&amp;quot; -- typically representing &amp;quot;0&amp;quot;.&lt;br /&gt;
Is that going to cause a problem?&lt;br /&gt;
No.&lt;br /&gt;
      +------------+&lt;br /&gt;
      |            |&lt;br /&gt;
 0 --|0\           |&lt;br /&gt;
     &amp;gt;  &amp;gt;--+       |&lt;br /&gt;
 1 --|1/   |       |&lt;br /&gt;
          +--|0\   |&lt;br /&gt;
             &amp;gt;  &amp;gt;--+------- Q&lt;br /&gt;
 D ----------|1/&lt;br /&gt;
              |&lt;br /&gt;
 CLK ---------+&lt;br /&gt;
&lt;br /&gt;
This is a CLK-Hi-transparent latch.&lt;br /&gt;
&lt;br /&gt;
 CLK _____/---------\_________&lt;br /&gt;
&lt;br /&gt;
 D ________XXXXXXXX-----------&lt;br /&gt;
&lt;br /&gt;
 Q _____________________/-----&lt;br /&gt;
&lt;br /&gt;
I suspect relays will have a pretty high latency -- after the CLK (driving the coil) changes state, it will be a while before the contact is broken.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So:&lt;br /&gt;
transparent-to-hold transition:&lt;br /&gt;
&lt;br /&gt;
C relay coil changes state.&lt;br /&gt;
Sometime later, the D contact breaks contact, and Q become the &amp;quot;not connected&amp;quot; state.&lt;br /&gt;
Sometime after that, the Q contact makes contact, and Q becomes the held state.&lt;br /&gt;
Hopefully the time between the break and the make is short enough that the short glitch at the Q relay coil isn't enough for it to change state.&lt;br /&gt;
&lt;br /&gt;
After the D contact breaks contact, clearly the D contact is in the &amp;quot;don't care&amp;quot; state.&lt;br /&gt;
&lt;br /&gt;
hold-to-transparent transition:&lt;br /&gt;
C relay coil changes state.&lt;br /&gt;
Sometime later, the Q contact breaks contact, and Q becomes the &amp;quot;not connected&amp;quot; state.&lt;br /&gt;
Sometime after that, the D contact makes contact, and Q becomes the transparent state.&lt;br /&gt;
Hopefully the time between the break and make is short enough that the short glitch at the Q output isn't enough to affect stuff downstream.&lt;br /&gt;
&lt;br /&gt;
master-slave bit:&lt;br /&gt;
first latch transparent-to-hold, 2nd latch hold-to-transparent transition:&lt;br /&gt;
... doesn't seem to be a problem.&lt;br /&gt;
&lt;br /&gt;
first latch hold-to-transparent, 2nd latch transparent-to-hold:&lt;br /&gt;
Both C relay coils change state.&lt;br /&gt;
Sometime later, there is a break in the contact, and the internal Q and the outer Q both become the &amp;quot;not connected&amp;quot; state.&lt;br /&gt;
Sometime after that, the 2nd latch Q contact makes contact, and Q becomes the held state.&lt;br /&gt;
Hopefully the time between the break and the make is short enough that the short glitch at the 2nd Q relay coil isn't enough for it to change state.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2010-09-22:DAV:&lt;br /&gt;
Would the ideal computer for&lt;br /&gt;
implementing Wheeler's diverse double compiling (&amp;quot;DDC&amp;quot;)&lt;br /&gt;
( wheeler-trusting-trust-ddc.pdf )&lt;br /&gt;
be a relay computer?&lt;br /&gt;
Especially for Wheeler's comment that&lt;br /&gt;
&amp;quot;Future potential work includes recompiling an entire operating system as the compiler-under-test&amp;quot;.&lt;br /&gt;
There are 2 operations that need to be trustworthy:&lt;br /&gt;
* compiling some ancestor source code to a compiler executable&lt;br /&gt;
* comparisons.&lt;br /&gt;
&lt;br /&gt;
Perhaps it would be better to build 2 separate relay machines,&lt;br /&gt;
each one dedicated to a different part:&lt;br /&gt;
* a &amp;quot;compare&amp;quot; relay machine:&lt;br /&gt;
Compares every byte on 2 MMC/SD cards and confirms that they are identical.&lt;br /&gt;
Perhaps gives some sort of display to indicate which byte is different.&lt;br /&gt;
* a &amp;quot;compile&amp;quot; relay machine:&lt;br /&gt;
runs a compiler executable (from one SD/MMC card?),&lt;br /&gt;
with the source code to some ancestor compiler (on another SD/MMC card?),&lt;br /&gt;
and store the resulting executable (to a third SD/MMC card?).&lt;br /&gt;
&lt;br /&gt;
Then the DDC process is something like:&lt;br /&gt;
* somehow (?) create a trustworthy compiler executable, in relay computer machine code, on one MMC/SD card&lt;br /&gt;
* somehow (?) store a compiler source code on another MMC/SD card&lt;br /&gt;
* plug both cards and an output blank card into the relay computer, and&lt;br /&gt;
generate the ancestor compiler&lt;br /&gt;
plus the boot code and everything else required to start a working environment&lt;br /&gt;
(targeted to the fast computer).&lt;br /&gt;
* plug the ancestor SD/MMC card into a fast computer, and boot off that card.&lt;br /&gt;
Use that trustworthy environment&lt;br /&gt;
to more rapidly executed the later stages of the DDC process, and&lt;br /&gt;
to inspect source code.&lt;br /&gt;
&lt;br /&gt;
So does this necessarily mean the relay computer needs to be able to run a C compiler?&lt;br /&gt;
(perhaps TCC or the bootstrap for GCC)?&lt;br /&gt;
Or is it possible for it to run, say, a Forth compiler?&lt;br /&gt;
(I suspect that would require less RAM on the relay machine).&lt;br /&gt;
That seems  to require that a bootstrap C compiler be written&lt;br /&gt;
with its source code in Forth.&lt;br /&gt;
(Either that Forth source is compiled on the relay machine,&lt;br /&gt;
or that Forth source is compiled on the fast computer).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2011-03-10:DAV:&lt;br /&gt;
I come across yet another relay computer:&lt;br /&gt;
http://nablaman.com/relay/&lt;br /&gt;
&lt;br /&gt;
3 x 8-bit accumulator registers,&lt;br /&gt;
2 x 12-bit registers (for index, addresses and jumps)&lt;br /&gt;
plus a 12 bit program counter and 12 bit stack register.&lt;br /&gt;
&lt;br /&gt;
DAV: I think it would be interesting to&lt;br /&gt;
re-arrange the 3 x 8-bit register bits to make 2 x 12-bit registers,&lt;br /&gt;
so &amp;quot;everything&amp;quot; is 12 bits.&lt;br /&gt;
&lt;br /&gt;
Another non-multiple-of-8 machine I came across today:&lt;br /&gt;
The Six Bit Machine&lt;br /&gt;
by Jack Eisenmann&lt;br /&gt;
http://web.me.com/teisenmann/sixbit/main.html&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2008-12-15:DAV:&lt;br /&gt;
Yet another idea for a relay computer:&lt;br /&gt;
wacky mix of relays and 74x ICs.&lt;br /&gt;
* use 74x shift registers to hold bits (registers, PC, IR, interrupt request, perhaps carry bit)&lt;br /&gt;
* use relays to guide the bits in the correct direction -- in particular, the output of one shift register to the input of the &amp;quot;deeper&amp;quot; register when doing a &amp;quot;push&amp;quot;; the output of one register to the input of a shallower register when doing a &amp;quot;pop&amp;quot;.&lt;br /&gt;
* Use a random mix of relays and 74x 4:1 muxes to implement more complex logic.&lt;br /&gt;
During operation,&lt;br /&gt;
* one big *chunk* as IR is latched and relay configuration is set up.&lt;br /&gt;
* then 8 (or perhaps 12 or 16 or 24 or 48) quiet (or quieter) pulses as bits are shuffled out of some registers and into other registers.&lt;br /&gt;
&lt;br /&gt;
Hopefully building it as a &amp;quot;serial computer&amp;quot; will make it smaller.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2008-08-22:DAV:&lt;br /&gt;
Applications for a relay computer:&lt;br /&gt;
* cryptographic applications -- because I can *see* it work, it's far more difficult for malware or keyloggers.&lt;br /&gt;
** AES encryption and decryption&lt;br /&gt;
** public/private key generation&lt;br /&gt;
** public/private key encryption and decryption&lt;br /&gt;
&lt;br /&gt;
What sorts of operations do we need to support to be able to do AES reasonably efficiently?&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
2009-02-03:DAV:&lt;br /&gt;
&lt;br /&gt;
Inspired by &lt;br /&gt;
Magic-1 http://www.homebrewcpu.com/&lt;br /&gt;
&lt;br /&gt;
I make my own goals for my relay computer:&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
&lt;br /&gt;
* Touch the magic. Gain a deeper understanding of how computers work.&lt;br /&gt;
&lt;br /&gt;
* Compactness. Physically small and simple.&lt;br /&gt;
Unlike Bill, I'm not so interested in the &amp;quot;density&amp;quot; of each opcode&lt;br /&gt;
individually (Huffman-like compression).&lt;br /&gt;
I'm even more interested in the &amp;quot;density&amp;quot; of the instruction&lt;br /&gt;
set as a whole (LZ77-like compression), so I insist on extremely low overhead&lt;br /&gt;
for subroutines.&lt;br /&gt;
&lt;br /&gt;
* TTL and transistors and relays rather than FPGA.&lt;br /&gt;
FPGAs do sound fun, but I want a system where I can touch and see and hear&lt;br /&gt;
everything it is doing, rather than a mysterious black box -- I want&lt;br /&gt;
(literally) every bit&lt;br /&gt;
visible.&lt;br /&gt;
Perhaps FPGA for the next one.&lt;br /&gt;
&lt;br /&gt;
* simplicity.&lt;br /&gt;
&lt;br /&gt;
* Build something real.&lt;br /&gt;
&lt;br /&gt;
Like Bill, &amp;quot;At the end of the day, I wanted a working, and useful, machine&lt;br /&gt;
that I understood completely.  Oh, and it had to have a real front panel with&lt;br /&gt;
lots and lots of cool blinky lights.&amp;quot;&lt;br /&gt;
-- Bill Buzbee&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[relay computer]&lt;br /&gt;
&lt;br /&gt;
2008-10-19:&lt;br /&gt;
found even cheaper relays at All Electronics:&lt;br /&gt;
&lt;br /&gt;
$0.50 24 VDC SPDT PC MOUNT POWER RELAY; 480 Ohm coil; completely uncovered so I can see what's going on.&lt;br /&gt;
http://www.allelectronics.com/make-a-store/item/RLY-275/24-VDC-SPDT-PC-MOUNT-POWER-RELAY/-/1.html&lt;br /&gt;
&lt;br /&gt;
2009-11-30:&lt;br /&gt;
$1.00 5VDC DPDT SUB-MINI RELAY; 14.9 x 7.4 x 9.7mm high. PC pins.; 178 Ohm coil; CAT# RLY-538 (All Electronics 2009)&lt;br /&gt;
$1.00 24VDC DPDT DIP RELAY; 0.63&amp;quot; x 0.38&amp;quot; x 0.31&amp;quot; high. ( 16 x 9.7 x 7.9 mm ); 2850 Ohm; CAT# RLY-505 (All Electronics 2009)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jon Stanley suggests saving money by getting relays using eBay.&lt;br /&gt;
&lt;br /&gt;
I am surprised that reed relays cost more than PCB relays,&lt;br /&gt;
since it seems that reed relays have fewer parts and so would cost less.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2008-08-10:DAV:&lt;br /&gt;
what about &amp;quot;latching relays&amp;quot; ?&lt;br /&gt;
Wouldn't that implement a register array in fewer relays than non-latching relays?&lt;br /&gt;
Does it make sense to build Mueller C-elements for asynchronous computing out of latching relays?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
wire spring relay&lt;br /&gt;
http://en.wikipedia.org/wiki/Wire_spring_relay&lt;br /&gt;
claims that&lt;br /&gt;
&amp;quot;Reed relays are better suited to data storage.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
reed relay&lt;br /&gt;
http://en.wikipedia.org/wiki/Reed_relay&lt;br /&gt;
claims that&lt;br /&gt;
&amp;quot;reed relays can switch much faster than relays with armatures&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
2008-09-06:DAV:&lt;br /&gt;
I discover&lt;br /&gt;
&amp;quot;Relay Computer Two&amp;quot;&lt;br /&gt;
by Jon Stanley&lt;br /&gt;
http://www.electronixandmore.com/project/relaycomputertwo/index.html&lt;br /&gt;
a relay computer built from 281 relays&lt;br /&gt;
...&lt;br /&gt;
That is far fewer relays than I thought were needed.&lt;br /&gt;
&lt;br /&gt;
Registers:&lt;br /&gt;
All registers are &amp;quot;transparent&amp;quot;.&lt;br /&gt;
(&amp;quot;master/slave&amp;quot; would require twice as many registers).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAV: (Would it make any sense to re-arrange the muxes so that&lt;br /&gt;
PC1 is hard-wired to the incrementer,&lt;br /&gt;
the incrementer is hard-wired to the address bus,&lt;br /&gt;
and the address bus is muxed between PC2 or MAR?&lt;br /&gt;
Chuck Moore seems to like that arrangement ...&lt;br /&gt;
because it is obviously simpler.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  .&lt;br /&gt;
  . +-&amp;lt;---[increment]-------&amp;lt;-+&lt;br /&gt;
  . |                         |&lt;br /&gt;
  . +-&amp;gt;-&amp;gt;[PCR1]-&amp;gt;[PCR2]-&amp;gt;|\   |&lt;br /&gt;
  .                      | &amp;gt;-&amp;gt;+----&amp;gt; RAM address&lt;br /&gt;
  .         ...-&amp;gt;[MAR ]-&amp;gt;|/&lt;br /&gt;
  .                       |&lt;br /&gt;
  .                      LSB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Things it lacks that I wish it had:&lt;br /&gt;
* it's difficult to lookup A = B[C], because there are are no indexed loads.&lt;br /&gt;
* it's difficult to lookup A[B] = C, because there are no indexed stores.&lt;br /&gt;
Those 2 things can be done if we &amp;quot;cheat&amp;quot; and write self-modifying code ... which this architecture makes fairly easy to do.&lt;br /&gt;
&lt;br /&gt;
* Subroutine calls look unncessarily difficult.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* One solution to the &amp;quot;backdriving&amp;quot; problem:&lt;br /&gt;
use lots of diodes -- perhaps LEDs. If every input to a block of logic goes through a diode, then it's impossible for that block to &amp;quot;backdrive&amp;quot; current through that diode.&lt;br /&gt;
Since relays pull ~40 mA, pick LEDs that can handle 40 mA ... or pair up cheaper 20 mA LEDs.&lt;br /&gt;
Since some (typical?) LEDs can block max 5V reverse,&lt;br /&gt;
(a) use 5V relays and also (b) make sure we put flyback diodes (the same kind of LED is fine) on every coil.&lt;br /&gt;
&lt;br /&gt;
Say we go even futher and try to build &amp;quot;diode-relay logic&amp;quot; -- would that save a significant number of relays?&lt;br /&gt;
DAV: diode-relay logic could be something like this:&lt;br /&gt;
every block of logic has a SPDT or 4PDT relay near the output.&lt;br /&gt;
The &amp;quot;common&amp;quot; of the switch connected to +24V.&lt;br /&gt;
The other 2 lines (the NO and the NC terminals) of the switch are the 2 outputs, the signal and its negation.&lt;br /&gt;
Many functions can be built using just that one SPDT relay and a bunch of input diodes ORed together to the coil, where each diode is connected to some signal, or to the negation of that signal -- that gives us OR and NOR outputs, and arbitrary inverts on each input -- so it can implement AND and NAND also. 2 layers of such logic give any possible Boolean function on the inputs.&lt;br /&gt;
For example, 3-in XOR requires 5 SPDT relays.&lt;br /&gt;
Is there a better way to build &amp;quot;diode-relay logic&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
Probably, since all possible 3-input logic gates (including 3-in XOR) can be built using only 3 relays and no diodes:&lt;br /&gt;
Each input connects to its respective coil (the other end of the coils connect to ground), so there is no backdriving problem.&lt;br /&gt;
The first relay is 4PDT.&lt;br /&gt;
Its 8 inputs (NC and NO terminals) arbitrarily connected to either nothing or +24V in order to select which particular 3-input logic gate we are implementing today.&lt;br /&gt;
The second relay is 2PDT.&lt;br /&gt;
The 2 common outputs of the 2PDT relay feed into the 2 inputs (NC and NO) of the third (final) SPDT relay.&lt;br /&gt;
The common output of the final SPDT relay is the output signal.&lt;br /&gt;
(Alas, it only generates the signal, and not also its complement).&lt;br /&gt;
(yeah, a lot of words; a schematic would be better).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Consider:&lt;br /&gt;
eliminating the 16 bit MAR register,&lt;br /&gt;
and adding 8 bits to the A, B, and C registers&lt;br /&gt;
(for a net addition of 8 bits).&lt;br /&gt;
Then you have a &amp;quot;pure&amp;quot; 16 bit machine (more or less).&lt;br /&gt;
Make &amp;quot;load&amp;quot; always use the C as the address register, while &amp;quot;store&amp;quot; always uses A as the address register.&lt;br /&gt;
Because *before* we do a calculation, C is usually free (it will be overwritten by the result of the calculation) -- but *after* we do the calculation, C holds the result we usually want to store, and so we can save 1 instruction in the program by using something other than C for the temporary address register.&lt;br /&gt;
&lt;br /&gt;
I'm hoping that losing MAB will be compensated for by making indexed addressing easier -- in particular, pointer dereferencing and array dereferencing and simple memory copies.&lt;br /&gt;
(Such addressing uses load and store, but suppresses the load of C and instead uses the address already in C).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-----&lt;br /&gt;
&lt;br /&gt;
[consider building]&lt;br /&gt;
DAV:&lt;br /&gt;
as warm-up for building a relay computer,&lt;br /&gt;
consider building a relay clock.&lt;br /&gt;
&lt;br /&gt;
Perhaps&lt;br /&gt;
use the 60 Hz line frequency as input.&lt;br /&gt;
Does toggling the relay at 60 Hz wear it out too quickly?&lt;br /&gt;
... Perhaps, an LCR + relay oscillator running at 1 or 2 Hz would last much longer ... perhaps with a bit of input from the 60 Hz line frequency to phase-lock it.&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
If we have a ring oscillator of relays, with (say) 12 relays tuned to give (say) 5 Hz for the rest of the clock --&lt;br /&gt;
with a small amount of 60 Hz line frequency to phase-lock --&lt;br /&gt;
does that merely postpone wearout by a factor of 12?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[relay computers]&lt;br /&gt;
http://www.juliantrubin.com/bigten/zusecomputer.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAV: Does it make sense to write software to semi-automatically &amp;quot;optimize&amp;quot; a relay computer design?&lt;br /&gt;
... peephole optimizations: 2 relays driven by one signal can sometimes be combined into one relay ... Generating A and /A can be done in several ways ... wired-or can *sometimes* be done -- a computer program can automatically test and see if those conditions are met ... 4 independent copies of A can be generated in a 4PST relay -- this may require fewer relays than a single copy of A that is carefully buffered in many places ...&lt;br /&gt;
&lt;br /&gt;
global optimizations: given a single global clock signal, what is the maximum number of states that a set of n relays can step through before repeating a state? Can that be used to generate a state counter or program counter that uses fewer relays than the &amp;quot;classic&amp;quot; designs?&lt;br /&gt;
(This is similar to the &amp;quot;busy beaver&amp;quot; problem).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
[relay computer]&lt;br /&gt;
2008-12-21:DAV:&lt;br /&gt;
&lt;br /&gt;
What if we&lt;br /&gt;
(a) store all bits in ICs (say, a MMC card, a Ramtron FRAM, and a bunch of shift registers), but&lt;br /&gt;
(b) did everything else (ALU ops, IR latch control signal decoding, etc.) with relays?&lt;br /&gt;
&lt;br /&gt;
Well, clearly we must have some sort of IC-to-relay and some sort of relay-to-IC interface.&lt;br /&gt;
&lt;br /&gt;
Relay-to-IC is pretty simple: either use 5 V supplies for both, or else use a resistor divider / diode clipping to convert 12 V or 24 V relay output to 5V or 3.3 V IC input.&lt;br /&gt;
The tricky bit is relay bounce, and that is irrelevant for everything except the clock input. Perhaps somehow use 2 wire clock (which is immune to relay bounce) and somehow convert to a clean 1 wire clock for the ICs.&lt;br /&gt;
&lt;br /&gt;
IC-to-relay is a bit trickier.&lt;br /&gt;
Traditional approach is to use a transistor per IC output.&lt;br /&gt;
&lt;br /&gt;
What about, in particular, the&lt;br /&gt;
$2.41 TPIC6595 8-Bit Shift Register?&lt;br /&gt;
&lt;br /&gt;
It has one special output:&lt;br /&gt;
SER OUT seems to be rated at only 0.020 A (but both source and drain), and restricted to slightly beyond 0 to 5.0 V.&lt;br /&gt;
So a minimum resistance of R=V/I = 5 V / 0.020 A = 250 Ohms.&lt;br /&gt;
&lt;br /&gt;
Eight Power DMOS Transistor Outputs of&lt;br /&gt;
0.25 A Continuous Current -- at 24 V, that implies an output load of a minimum of R=V/I = 24 V / 0.25 A = 96 Ohms (minimum) -- so plenty powerful enough to drive a 480 Ohm 24 V coil. (I think the inductance of the coil is irrelevant to this IC, as long as the coil has a proper flyback diode).&lt;br /&gt;
1.5 A Pulsed Current Per Output (for up to 1 ms at 10% duty cycle)&lt;br /&gt;
(open drain -- this constrains me to using &amp;quot;open&amp;quot; and &amp;quot;GND&amp;quot; to represent 1 and 0 or 0 and 1.&lt;br /&gt;
);&lt;br /&gt;
when &amp;quot;open&amp;quot;, it tolerates drain-source voltage up to 45 V (so apparently it could directly drive 24 V relays ... if the other side of the coil is connected to +24 V).&lt;br /&gt;
&lt;br /&gt;
One special power input:&lt;br /&gt;
Logic supply voltage: must be about 5.0 V.&lt;br /&gt;
&lt;br /&gt;
5 signal inputs:&lt;br /&gt;
0.85 Vcc or above for 1,&lt;br /&gt;
0.15 Vcc or below for 0.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
forth on relay computer?&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Put 1 LED at each coil for easier visibility?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DAV:&lt;br /&gt;
I keep thinking in terms of &amp;quot;registers&amp;quot; ...&lt;br /&gt;
but to minimize the number of relays, I think I'm going to have to minimize the number of registers.&lt;br /&gt;
And yet ... I want some sort of indexed load and indexed store,&lt;br /&gt;
which makes programming much simpler (stacks, arrays, etc.).&lt;br /&gt;
So I think we have only 3 choices:&lt;br /&gt;
* keep the index (and the PC) in special registers&lt;br /&gt;
* keep the index (and the PC) in the same main memory (serial FRAM?) as everything else&lt;br /&gt;
* keep the index in some other memory other than the main memory.&lt;br /&gt;
&lt;br /&gt;
If we keep our &amp;quot;no registers in the relays, all data stored in the serial FRAM (perhaps in the FRAM address register)&amp;quot; concept,&lt;br /&gt;
then perhaps our minimum cycle time is:&lt;br /&gt;
&lt;br /&gt;
indexed store:&lt;br /&gt;
* clock &amp;quot;load&amp;quot; opcode out of program memory into instruction register IR&lt;br /&gt;
* clock immediate address of the index out of program memory into address register&lt;br /&gt;
* clock address from the address register into data memory&lt;br /&gt;
* clock data into data memory&lt;br /&gt;
&lt;br /&gt;
indexed load:&lt;br /&gt;
* clock &amp;quot;load&amp;quot; opcode out of program memory&lt;br /&gt;
* clock immediate address of the index out of program memory into address register&lt;br /&gt;
* clock address from the address register into data memory&lt;br /&gt;
* clock data from data memory&lt;br /&gt;
&lt;br /&gt;
[relay computer]&lt;br /&gt;
&amp;quot;How to pick a relay&amp;quot;&lt;br /&gt;
http://www.leachintl2.com/english/english2/vol6/properties/how4.htm&lt;br /&gt;
&amp;quot;There is no relay contact that can be used for switching all load levels.&lt;br /&gt;
Each load level requires tailoring of the contacts for that specific application.&lt;br /&gt;
Contacts rated as capable of handling &amp;quot;dry circuit to 2A&amp;quot; loads will do so.&lt;br /&gt;
They cannot, however, handle loads that go from 2A to dry circuit levels.&lt;br /&gt;
Knowing this might have prevented one misapplication that luckily had only embarrassing consequences.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[relay computer]&lt;br /&gt;
Relay General Application Guidelines&lt;br /&gt;
http://www.tai-shing.com.tw/technical/relay.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[build a relay computer]&lt;br /&gt;
While using SPNO relays (single-pole, single-throw, normally open relays)&lt;br /&gt;
may be the smallest and cheapest way to store&lt;br /&gt;
register bits ...&lt;br /&gt;
SPNO relays are not &amp;quot;universal&amp;quot;.&lt;br /&gt;
Perhaps it would be interesting to use&lt;br /&gt;
DPDT or 4PDT registers to store register bits.&lt;br /&gt;
(a) Using a single kind of relay for everything requires using a universal relay.&lt;br /&gt;
(b) Using a relay with more than 1 pole gives me a *separate* input and output for a register,&lt;br /&gt;
so I can directly hook the output to a data bus&lt;br /&gt;
without worrying about &amp;quot;backfeeding&amp;quot; signals flipping bits in the register.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;In this world there are few people working on making computers simple to understand, simple to build, and simple to program.&amp;quot;&lt;br /&gt;
-- Jeff Fox http://www.ultratechnology.com/forth.htm&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[http://e-writer.org/ essay writers]&lt;/div&gt;</summary>
		<author><name>Adams Quinn</name></author>
		
	</entry>
	<entry>
		<id>http://www.opencircuits.com/index.php?title=CUI&amp;diff=22182</id>
		<title>CUI</title>
		<link rel="alternate" type="text/html" href="http://www.opencircuits.com/index.php?title=CUI&amp;diff=22182"/>
		<updated>2011-12-27T22:50:09Z</updated>

		<summary type="html">&lt;p&gt;Adams Quinn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| align=right&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
[[Image:CUI-Logo.gif|CUI Inc]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;b&amp;gt;Description:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; CUI is a mfg of good quality, resonably priced power supplies and interconnects. [[Digikey]] stocks their stuff. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Website:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cui.com www.cui.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Contact Info:&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
Not available&lt;br /&gt;
&lt;br /&gt;
[[Category:Manufacturers]]&lt;br /&gt;
[http://resume-online.com/ resume online]&lt;/div&gt;</summary>
		<author><name>Adams Quinn</name></author>
		
	</entry>
</feed>