• Please review our updated Terms and Rules here

non-binary DRAM

Thrashbarg

Experienced Member
Joined
Apr 7, 2005
Messages
168
Location
Adelaide
Hi,

I'm playing around with the idea of memory (even a computer?) that isn't based on the binary system.

What I've come up with is a method for storing, say, 5 discrete levels of voltage in a capacitor. I plan to expand this to several capacitors on a refresh system. The upshot of this method is you can store two binary bits of information per physical memory location with approximately the same number of transistors, maybe a little more.

I would like to hear peoples thoughts on this. Has it been done before? It'd put me out of my misery to hear if it had because I'd have something to reference. ;)

Cheers.

Thrashbarg
 
Rghto, it works nicely! I've got it to store four separate 5 level digits in four capacitors, based around a refresh system. The system could easily be expended to work on a Decimal system (10 levels from 0-9) but I don't have enough op-amps at the moment.

Does anyone have any ideas or comments?
 
I don't have a specific reference for you, but many early machines before the 60s used non-binary storage systems. I believe they were usually decimal.

One of the reasons that things shifted to binary is that it is very easy to define logic that adds and subtracts in binary - the rules for 2s complement arithmetic are very easy to implement. The hardware to operate in other bases was more complex, and thus fell out of favor.

You should find a book called "IBM's Early Computers" from the MIT press. It is a fascinating read, and not because it describes the early innovators in IBM. The thing that really makes the book interesting for me is the detailed discussion of the technologies in use at the time:

- Williams CRT tubes for random access memory
- drum memory
- core memory
- vacuum columns for tape drives

It will give you a good idea of what the early pioneers in the industry were fighting against.

These are the same guys that gravitated toward binary. :)
 
Thanks for the response! I'll be looking into these machines more.

By 'decimal' do you mean bi-quinary? From what I gather it was used extensively in early computing. I don't see it as a decimal system, but a binary system that is configured differently. Instead of each digit representing 8, 4, 2 and 1 they represent 5, 4, 2 and 1, or even 5 'bits' representing 0 to 4 and a 6th bit representing the 5's column. I.e. 0-4 the highest bit is off, 5-9 the highest bit is on.

Or is it that they use a few discrete voltage levels (off, on and a few in between) to represent the number? This is what I'm playing with.

Thanks.
 
I have to go reread those sections of the book - I'm not sure how the decimal was encoded.

The early machines were based on the mechanical tabulators, which were decimal and cam driven. The newest of the mechanical tabulators were partly electronic - the ALU was replaced by vacuum tubes. They still had to store numbers like the old cam driven hardware, but switched much faster with the tubes obviously. I'll dig it out and scan a few pages for you.
 
Well, the system works now at 8 levels per digit and can store 8 digits. This could quite easily become a register for a simple adding machine. I'd just use op-amps to perform the addition or subtraction and use a zener diode to detect the carry.

http://kaput.homeunix.org/~thrashbarg/dstore.jpg

The lower trace is the clock signal used to step through the circuit to refresh the capacitors. The upper trace is the output of the refresh circuit which shows the levels of the capacitors sequentially.
 
Quite interesting although way above my head. Do you have a document or documentation you'd like to share on how this works?

I don't know enough to figure out in my own head how to do math with electricity yet so I've heard of TTL, TRL, and RRL logic but never (CCL?) logic so this is quite interesting to see you having success playing around with low level computing like this.

I'm also trying to figure out the reflection in your oscilliscope which has a neat science fiction look ;o)
 
And if you need a flash rom to go with it!.....

Ah, they call it MLS or Multi-Level Storage. Thanks for that.


barythrin said:
Quite interesting although way above my head. Do you have a document or documentation you'd like to share on how this works?

Sure, I'll draw it up. Been documenting my work for once, but on paper ;)

And yes, it's just my hand in the reflection.

EDIT: Here's the schematic of the Number Store (as I call it...) and the Full Adder. I'm yet to actually build the full adder, I will tomorrow when I get some more components. But I've got a half adder working on the breadboard at the moment.

Also, I have drawn the Store with JFET's as the switches for the capacitors. I am actually using 4016 bilateral switches at the moment. Again I need to get more components. If the JFET's don't work (they should, they're bilateral too) then I'll update the diagram.

http://kaput.homeunix.org/~thrashbarg/Analogue/NumberStore.png
http://kaput.homeunix.org/~thrashbarg/Analogue/FullAdder.png

Another Edit: Updated the schematics to reflect my working prototype on breadboard.
 
Last edited:
Now, the thought occurs to have a subtraction function as well as an addition function. I've just about finished the addition circuit and I don't really want to make a subtraction circuit because it would be cumbersome.

When a computer subtracts it complements the negative number, adds one and adds it to the first number. This is called two's complement. I figured the system should work as well on decimal as it does on binary. And it does. Let me explain.

First, to complement a base 10 digit you subtract it from the highest digit allowed, in this case 9. So 9 becomes 0, 8 is 1, 7 is 2, 6 is 3 and so on.

If I wanted to subtract 180 from 97 I would expect -83. So, what we do is complement 180 with leading zero's to become 999819. I'll keep it at six digits. 97 + 999819 is 999916. As this is a negative signed number we could just leave it to be operated on again. But if we wanted it to be human readable we complement it and put a negative in front of it. The complement of 999916 is -00083 which is the answer we were expecting. :)

The only time this doesn't work perfectly is when the result is a positive number. Suppose we reversed it so we wanted to subtract 97 from 180. We would expect 83 as the result. So let's complement 97 to become 999902. 180 + 999902 is 1000082. This isn't quite the result. If however the carry was stripped and added to the result it would be 83 which is the answer. This can easily be done with electronics, just add the carry to the result after a subtraction operation.

So, would this be called 5's complement or something? I don't know.
 
I'm travelling for work today and I'm going to bring the book with me, so I'll have those pages for you in a day or so depending on how exciting the flight is. :)
 
I think i know why it's not working....
The 2s compliment of a number is the inverse plus 1,
the 10s compliment is the inverse plus 1 too,
That way your results will be 1 different, and correct for a positive result, but if you get a negative number as a result , you have to 10s compliment it to get a human readable "positive" number, which corrects for the error of 1... try it!

also the leading "carry 1" in the negative result is the same as in binary subtraction, its just that it "disappears off the end" when you're working with a limited number of bits / digits
 
I'm behind, but I finally managed to do some reading.

The early IBM tabulators used 'accumulators', which a collection of decimal wheels. Typical widths were 8 or 9 digitals. The wheels had relays and contacts for reading. The position of the wheels in the accumulator determined the value. The displays would look exactly like a digit based counter display.

In the late 30s there were two types of computing going on. There were 'difference engines', which can best be described as analog devices. Voltages were used to represent numbers, angles, etc. Setup time was long and difficult, and the precision of the machine was limited by the physical attributes of the machine. These machines were the electronic equivalents of slide rules, although with the setup capability they could do more complex things.

There was also 'digital computing' - scientists using accounting equipment as fast calculators. The accounting equipment of the day used punch cards and was decimal based.

IBM did a few custom machines for the government and universities. One of the more advanced ones built on the electromechanical accumulators was the ASCC. It had 72 accumulators, each holding 24 digits. (The highest order digit actually held the sign of the number.) There were 60 'registers' which had no math capability - they would be used for storing contants.

The machine had multiplication and division capability. It took some creative algorithms to implement true multiplication and division, not just quick adding and subtracting. And since this was all counter and relay based, you can imagine the racket it would have made when it was working.

In the early 40s people knew that vacuum tubes could be combined into flip-flops to get digital storage. Three 'flip flops' would get you to 8, and four would get you to 16. But nobody was interested in 8 or 16 at the time - they were still thinking in decimal, and to be a drop-in replacement for the counter wheels they needed base 10.

One solution to the base 10 problem was to use 10 flip flops connected in a ring, each one representing a digit. The hardware would 'pulse' the unit the correct number of times to select the correct digit. This system was used by ENIAC. Tiny neon lamps were used to show an operator or engineer which digit was selected in the unit.

It was a wiring error in one of these units that lead to the realization that 4 flip flops (bits) could be used to represent a decimal number in a more compact manner. The patent for the 'wiring error' was granted in 1952.

The change to vacuum tubes from counter wheels made things much faster, and also caused people to redo the logic that implemented multiplication, division, etc. That is generally when the world started to go binary too .. going binary reduced part counts.

Anyway, for the purposes of your project, the 10 flip flops in a ring where each one represents a digit seems to be the most interesting. You have to design a circuit such that you can set it to 0 or clock it a few times to select the right digit. That most closely resembles the ancient tabulator wheels from the punched card equipment of the 20s and 30s.
 
Do a google on "dekatrons" and "thyratron rings"

Dekatrons are the little neon decomal counter tubes, and they can be made to count without external logic. the discharge happens across one "digit" a biphase AC signal is then applied to the count electrodes, which steers the discharge to the next digit and so on.

Thyratrons are the valve ancestor of the thyristor. you can get them to "count2 with a fairly simple circuit too.

Both are yummy!
 
Back
Top