Yes - No - Maybe? The goal is to completely step away from the normal binary system and investigate alternative computing systems.
This project was created on 05/03/2014 and last updated 20 days ago.
I am still actively working on this project, and I found another alternative to the Vishay part, the pin compatible MAXIM DG403. MAXIM were also kind enough to release libraries for use in my CAD software of choice. As soon as finals are over I will take some time and get the ALU pcb designed, etched, and populated :)
Thanks everyone for your suggestions and support! :)
A pile of parts I ordered finally came in! I now have some design choices to make, such as do I want to just hand wire this or should I make a proper PCB ... then if I do that, should I order it or etch it myself? Decisions Decision....
Here is a shot of some of the ICs that I am going to be using in the build.
I know I am a bit old fashioned, but there is just something fun and nostalgic for me when working with through hole components ^^;;
While waiting for components to arrive, I have been doing some late night musing as to what functions I wish to implement into the CPU.
This is the list so far of opcodes, 0 through 13 (000 to +++), that I have been considering.
I want to attempt to keep the list down to 14 instructions, and am open to suggestions as to what should be removed from this list and have something more useful added in its place. LD and ST may be simplified to a MOV command freeing up one of the "slots".
This gives me a bit of a goal while doing the design, making the idea that much more concrete.
Another decision that has to be made is how many trits wide I want to make the system bus. The current thought is to make it 6, this is mostly due to cost of components on a hobby project :) The first 3 will be used for the opcode, the second set of 3 will be for the address that will be used.
Now to get back to calculus homework ^^;;
Its a lot like decision matrix for neural networks and unknowns in basic robotics control -1,0,+1, sensor states are unknown, the choice is also, with feedback into the matrix an unknown can be found from definite/unknown states, this also creates a history to "educated guess" best answer logicly ... SQL std (F571) uses trinary/ternary logic type also...
search for basic neural networks matrix.
(729=3^6 > 2^8=256) <(^-^)> so (Y,N,U)>nothing=GOOOOOOOOOD!
I might be thinking on a larger scale, but in regards to how humans think I believe you can relate 1st, 2nd and 3rd person with a trinary system. Concepts like 0, 1 and infinity would be numerically represented. I just started researching this last night and have found it very interesting. I will follow this project to see what you discover. Good luck!
Hey this might sound crazy ; I know very little about physical computing but appreciate computers and understand systems
So ternary is inherently binary; it has 3, so it also has 2. couldn't trits function as bits with 'throwaway'? 10- 11- 00- or -11 -01. on off empty or empty on off or even better 1-1 1-1 0-1 on empty off
Trying to understand what you mean when you say you are going to end up with a hybrid ternary/binary cpu?
nope, though I have toyed with the idea that a ternary system could emulate binary, it is not binary. as for a hybrid, I was contemplating just keeping the controller a binary system, and having the ALU be ternary. There are also a number of binary logic ICs that I could also use, for instance counters such as the 4017.
When I get some time I may do a quick little video on how ternary math works and do a step through of what I have in mind. I do have a good number of the parts in now and am currently making some design choices such as "do I want to hand wire this or just make a proper PCB" :>
Based on my limited research, an ALU is a "binary" concept in itself and was originally built for a binary system. Please excuse my lack of knowledge.
I like the idea of combining the two from a functional standpoint
Will leave this be; thanks and best wishes to you as you build.
I think you should make a proper PCB after handwiring it.
An ALU doesnt *Have* to be a binary concept, as doc brown would say " it's perfect, you're just not thinking fourth-dimensionally" :)
ALU stands for Arithmetic Logic Unit. Whether that logic is ternary or binary does not mean it is not an ALU. When you are making something up as you go, sometimes you borrow terms to describe things :)
As for the math link, glad you are looking at things from a different angle, but that isn't really related to what I have in mind ^^;;
I began the project initially as a way of looking at how humans make decisions, and what sort of logic you would use to represent that. At first I saw it as yes, maybe, no... or instead of maybe there could be the unknown. Sort of a decision engine. After a while it drifted to what you see now. We all have to learn to crawl before we can walk. I hope eventually I can make it run ^^
As I understand it, I always thought the third state was the "unknown" or "ambiguous" state. Also, if you look at the designs behind neurogrid computers (which are designed to mimic the way our brains process information) they are a mix of analog and digital. The component responsible for summing the input is analog, and the component responsible for determining if the threshold for action potential has been reached by the sum of the inputs multiplied by their weights is digital (and the communication between synapses is digital). Something you may find interesting to look into is ternary for quantum computing. I do not recall the source, however several years ago I came across a technical article which was explaining how quantum computers operate better if they use a ternary system of state representation instead of a binary system for state representation. Here is something that covers a bit of what I am saying, but it is not perfectly on topic: http://www.nature.com/srep/2013/130905/srep02594/full/srep02594.html
Here is something on the neurogrid computers if you would like to read more: https://web.stanford.edu/group/brainsinsilicon/neurogrid.html
I cannot wait to see the final video of it running. If you would ever like to get this computer to display video (if you get as far as to build a rudimentary graphics card), I suggest using an old CRT tv because the inputs are analog and it should be easier (and more efficient) to create a ternary to analog signal converter than a ternary to binary one.
Very nice project :)
I have been considering this, I have also been looking at other solutions to this issue as well, such as using an AND type setup with conventional bits to store data. This would not be the most efficient use but would get me "up and running" when the time comes.
I see from the presentation posted on hackaday that your still using that broken truth table image.
For anyone who doesn't see it, with OR (Binary or Ternary), if any input is TRUE, output should be true. So, if A=True and B=Maybe / False, output should be True, not MAYBE as show in the image.
What's old is new again! Thanks for entering your ternary computer in The Hackaday Prize. It's an ambitious project, But I think you're on the right track by looking at it both at the transistor level and from the FPGA side. Keep those notebook images coming, documenting is a big part of winning!
http://tunguska.sourceforge.net/ this is a ternary VM/emulator, has assembly demos and a manual of all mnemonics included. It has some examples which are using the GUI of the emulator, so graphics is possible too. I found this "at random" while looking for some info about the Setun.
This has to have a lot of applications and advantages. I hope you win and publicize this; raising interest in non standard technologies. There are other logic systems, but binary is the hammer and nail of computing. Some types of data would hold together better with a trinary system; the same way so many physical assemblies use screws instead of nails.
There exists an esoteric language TriINTERCAL http://esolangs.org/wiki/TriINTERCAL, which is ternary. Maybe worth a look. Did you consider to develop an simulator for your ternary hardware? I wrote a virtual machine which executes wordcode written in assembly or in my own high level language N. So I have some experience developing virtual machines.
Weird, I just started to follow you on twitter yesterday, and now I see you featured on HaD !
I did a project a bit similar to yours long ago. Instead of using real logic gates, I used cheap µC that I programmed to act as the logic gates I needed. Did you think of using something like PIC12F1571 ? you can have 2 ADC for input, 1 DAC for output, and should be able to read analog input at 200 to 400kHz with 2 bits of precision.
Fun thing is that you could have some kind of serial protocol to re-configure the gates, a bit like FPGAs.
Digikey will send you 100 pieces for $45. No external oscillator needed.
1. The first part you want to try to build is an ALU. If you can construct an ALU, then try to construct a single byte of memory. The RAM is the hardest part in my experience (I have tried something like this before with limited success, I found an inelegant solution to RAM). From there instead of trying to design your own processor, it might be prudent to try to make a ternary equivalent of an existing antiquated processor such as the Intel 4004, doing this will save you time debugging the design of the processor and will allow you to focus on the ternary component of the project. Look up the Wikipedia page on the 4004 for a usable schematic. Basically, anything real-time processing related will be simple in the scheme of things; storage of data is where problems (in my experience) arrive. As this is not a commercial project, I see no issue in doing this.
2. It was unclear from reading it as to whether or not you are doing balanced or unbalanced ternary. I noticed you mentioned considering both, however the outcome of that consideration was unclear to me (I may have overlooked it). I noticed your books show unbalanced, but your captions said balanced.
I recommend also weighing the pro's and con's of using analog circuitry vs digital circuitry vs a mixed approach.
Finally, for a project of this magnitude, you may want to rethink your budget.
Good luck, I hope you are more successful in this than I was!
While the actual schematics are probably lost for Setun (I too have been looking for them), there are descriptions of it here: http://mason.gmu.edu/~drine/History-of-Ternary-Computers.htm
and here: http://www.computer-museum.ru/english/setun.htm
Thanks! I have been doing a lot of thinking about how to get this done, and the reason I my books look different than the voltages is that I am basically using a balanced system but using that to represent a nonbalanced system XD
Also, I am a university student, so my budget isnt really my own choice ^^ I am waiting on some more components to get the job done. I have some ideas for a basic memory system and have been working on constructing a decent adder and subtraction circuit.
A cool idea. I'm really interested to see how you do this. Countless times I have daydreamed about this very idea, even writing silly ternary math programs for fun. If you are ever looking for a collaborator, let me know.
By the way, your logic table image is incorrect for "A or B". But looking at it makes me wonder about non-commutative logic... nevermind.
hehe, yeah I was looking at that myself. That is the kleene truth table. I was looking at coming up with my own, spent most of the day playing with numbers on what would be the most useful implementation for my purpose :)
I am currently waiting for components to arrive in the mail before I begin serious building and taking photos but I do have a circuit simulator that I have been using to design as much as I can design. I keep looking at exploiting some "side effects" of certain chips and effects to make it more efficient.
This is the project that has basically 100% of my interest right now. I know the CO2 laser one I posted gets a lot of traffic right now, but I hope this one does even better :) Keep hoping I am not the only one out there that is interested in this. I build things for myself, to see if I can do them. The same reason other people do crosswords.
If I need help with the design or want a collaboration I will keep you in mind! Thanks ^^