8 Bit Spaghetti http://8-bitspaghetti.com Thu, 28 Mar 2013 07:58:20 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.13 Building an 8-Bit Computer – Now With Instructions http://8-bitspaghetti.com/2012/05/building-8-bit-computer-instructions/ http://8-bitspaghetti.com/2012/05/building-8-bit-computer-instructions/#comments Fri, 04 May 2012 06:30:22 +0000 http://8-bitspaghetti.com/?p=112 I have been thinking about doing an Instrucables article on my computer project for a while now as the goal of this project being on the internet in the first place is to help people with a similar goal. For those of you who are not familiar with Instructables, it is a comprehensive DIY website written by makers from [...]]]> I have been thinking about doing an Instrucables article on my computer project for a while now as the goal of this project being on the internet in the first place is to help people with a similar goal. For those of you who are not familiar with Instructables, it is a comprehensive DIY website written by makers from all corners of life. All it takes to write a how-to article is to register for an account and share what you do. I finally got around to writing my article on how to build an 8-bit computer from scratch. It took me three days due to the increased workload as my school year comes to an end, but I finally completed what I hope to be an easy to understand article on how to go about building your own computer from TTL logic.

Instructables - How to Build An 8-Bit Computer

]]>
http://8-bitspaghetti.com/2012/05/building-8-bit-computer-instructions/feed/ 11
Test Time http://8-bitspaghetti.com/2012/04/test-time/ http://8-bitspaghetti.com/2012/04/test-time/#comments Thu, 26 Apr 2012 04:23:15 +0000 http://8-bitspaghetti.com/?p=106 I just finished wiring up the NVRAM chips to the computer. They are being addressed by a 8-bit program counter separate from the computer’s control counter. The control matrix changes its control word on the falling edge of the clock pulse. This allows the control to set up the 16-bit word, needed to tell which [...]]]> I just finished wiring up the NVRAM chips to the computer. They are being addressed by a 8-bit program counter separate from the computer’s control counter. The control matrix changes its control word on the falling edge of the clock pulse. This allows the control to set up the 16-bit word, needed to tell which registers or operations are to be active, for the rising clock pulse.

There are a few problems, however, that have made this a bit more difficult than it should be. Since the NVRAM chips I am using are CMOS driven, the TTL chips do not always provide the correct voltage to address the NVRAM chips correctly. Inversely, the NVRAM chips also have the tenancy to output incompatible voltages in regards to TTL. To remedy this I am using the last of my 8-bit three state buffers to convert the input and output of the chips to higher voltages. After I get the NVRAM chips functioning correctly, I only have to add the input and write/run logic as well as the output and the computer is finished (circuit-wise). I will be designing a steampunk-themed case for the enclosure. The case will be the final step before this project is complete.

And Let the Testing Begin.

]]>
http://8-bitspaghetti.com/2012/04/test-time/feed/ 13
NVRAM Programmer http://8-bitspaghetti.com/2012/04/nvram-programmer/ http://8-bitspaghetti.com/2012/04/nvram-programmer/#comments Sat, 21 Apr 2012 15:01:33 +0000 http://8-bitspaghetti.com/?p=92 For the control matrix of my computer I am using some NVRAM chips to store a 16-bit control word for the various registers and control wires of my CPU. I decided not to use EEPROM as the chips that I bought were all faulty and wouldn’t write (I consulted many people and they agreed). I [...]]]> For the control matrix of my computer I am using some NVRAM chips to store a 16-bit control word for the various registers and control wires of my CPU. I decided not to use EEPROM as the chips that I bought were all faulty and wouldn’t write (I consulted many people and they agreed). I also decided that moving breadboard wires around was an extremely inefficient way to program 70 control words at 70 addresses. Which is why I decided to create a simple NVRAM (or EEPROM) programmer using the Arduino to send out addresses and data as well as control the write enable pin. My sketch cycles through bytes of data in an array of a specified length. My code is available for anyone who would find it useful, it can be modified quite easily for your programming needs.

The Wiring for My Programmer


]]>
http://8-bitspaghetti.com/2012/04/nvram-programmer/feed/ 4
Microinstructions Done http://8-bitspaghetti.com/2012/04/microinstructions/ http://8-bitspaghetti.com/2012/04/microinstructions/#comments Thu, 19 Apr 2012 08:06:54 +0000 http://8-bitspaghetti.com/?p=78 I finished the microinstructions for the control matrix of my computer. The block diagram on the upper left is the architecture of the computer itself. The chart below it is a list of OP codes for different macroinstructions. The chart on the right is the list of each individual microinstruction that makes up each macroinstruction.

[...]]]>
I finished the microinstructions for the control matrix of my computer. The block diagram on the upper left is the architecture of the computer itself. The chart below it is a list of OP codes for different macroinstructions. The chart on the right is the list of each individual microinstruction that makes up each macroinstruction.

For sake of simplicity I’ve also put all of this data into an excel worksheet that reads out base-10 numbers to make programming the NVRAM easy if I choose to use my Arduino for a programmer.

]]>
http://8-bitspaghetti.com/2012/04/microinstructions/feed/ 24
The Bulk of My Computer http://8-bitspaghetti.com/2012/04/bulk-computer/ http://8-bitspaghetti.com/2012/04/bulk-computer/#comments Thu, 19 Apr 2012 07:59:46 +0000 http://8-bitspaghetti.com/?p=74 After a month I finally received my breadboards from China and can start finishing the breadboard work on my computer. I now have all of the registers constructed as well as the ALU. Everything is connected to a data bus (bottom) that allows for the transfer of data from one register on the computer to [...]]]> After a month I finally received my breadboards from China and can start finishing the breadboard work on my computer. I now have all of the registers constructed as well as the ALU. Everything is connected to a data bus (bottom) that allows for the transfer of data from one register on the computer to another. All that remains now is the control matrix as well as the logic that drives the operation of the computer (run/stop, manual clock, auto, etc…). All of the yellow wires are control bits for the registers.

The Bulk of My Computer

]]>
http://8-bitspaghetti.com/2012/04/bulk-computer/feed/ 3
Control Matrix Programming http://8-bitspaghetti.com/2012/04/control-matrix-programming/ http://8-bitspaghetti.com/2012/04/control-matrix-programming/#comments Thu, 19 Apr 2012 07:53:16 +0000 http://8-bitspaghetti.com/?p=72 A CPU consists mainly of registers (places to store values) that have to be controlled by, you guessed it, a control matrix. The control matrix outputs a control word, CON, whose bits activate the needed registers on a computer for input and output. For my computer I am using 3 NVRAM chips to store all [...]]]> A CPU consists mainly of registers (places to store values) that have to be controlled by, you guessed it, a control matrix. The control matrix outputs a control word, CON, whose bits activate the needed registers on a computer for input and output. For my computer I am using 3 NVRAM chips to store all of the control words.

The control matrix on my computer has two stages, both of wich consist of 3 steps. The entire sequence is called the machine cycle. And, in my computer’s case, the machine cycle also is equivalent to the instruction cycle which is how long it takes for an instruction to be carried out. The control logic is driven by a ring counter which activates 6 outputs one at a time with each clock pulse. On the first high bit of the ring counter an 8-bit counter that addresses the control ROM is cleared. On the third high bit of the ring counter an address is loaded into the counter from an 8-bit ROM that is addressed by a 4-bit OP code that tells the counter where the instruction steps are held inside of the ROM. I built a rudimentary programmer that takes breadboard wires moved to either positive voltage or ground as input.

My Programmer

]]>
http://8-bitspaghetti.com/2012/04/control-matrix-programming/feed/ 6
The Display http://8-bitspaghetti.com/2012/04/display/ http://8-bitspaghetti.com/2012/04/display/#comments Thu, 19 Apr 2012 07:41:18 +0000 http://8-bitspaghetti.com/?p=68 For the display I wanted something more interesting than a simple binary readout. I decided to go with the retro look and use some IV-9 russian Numitron tubes that can be conveniently driven by 5V with 20mA of current, the perfect amount to use a 4511 7-segment decoder. The only problem in the way of [...]]]> For the display I wanted something more interesting than a simple binary readout. I decided to go with the retro look and use some IV-9 russian Numitron tubes that can be conveniently driven by 5V with 20mA of current, the perfect amount to use a 4511 7-segment decoder. The only problem in the way of a steampunk output for my computer was converting the base-16 output of my computer into 3 digits of base-10 binary coded decimals.

Binary coded decimals are exactly what they sound like. The BCD system uses binary values 0-9 to express the base-10 digits that we use every day. For instance, the binary number 132 (10000100) would be 0001-0011-0010 expressed in binary coded decimal. To convert binary to BCD you can either design an incredibly complicated logic circuit to preform the operation, use a read-only memory (ROM) to output the correct values or use the method I chose of using an Arduino to do the conversion.

My friend and I created an Arduino sketch that takes an 8-bit input (0-255) and outputs 3 BCD digits. The output goes to a 3-digit Numitron readout board that I spent a good amount of time on.

3 Digit Numitron Readout


]]>
http://8-bitspaghetti.com/2012/04/display/feed/ 17
Two Useful Books http://8-bitspaghetti.com/2012/04/two-useful-books/ http://8-bitspaghetti.com/2012/04/two-useful-books/#comments Thu, 19 Apr 2012 07:25:50 +0000 http://8-bitspaghetti.com/?p=65 Without the textbook Digital Computer Electronics by Albert Malvino I wouldn’t have been able to even start this project. If you are considering building, or even learning about a computer using TTL this book is extremely worth the small amount of money you have to pay for it on Amazon. The TTL Cookbook by [...]]]> Without the textbook Digital Computer Electronics by Albert Malvino I wouldn’t have been able to even start this project. If you are considering building, or even learning about a computer using TTL this book is extremely worth the small amount of money you have to pay for it on Amazon. The TTL Cookbook by Don Lancaster is also extremely useful and provides pinouts for most of the 7400 series TTL chips that you would need for such a project.

The Golden Book

The 7400 Dictionary

]]>
http://8-bitspaghetti.com/2012/04/two-useful-books/feed/ 5
First Parts http://8-bitspaghetti.com/2012/04/fist-parts/ http://8-bitspaghetti.com/2012/04/fist-parts/#comments Thu, 19 Apr 2012 07:15:16 +0000 http://8-bitspaghetti.com/?p=61 The first parts that I purchased for my computer included two breadboards and the logic chips to build a simple Arithmetic Logic Unit that could preform addition and subtraction on 4 bits. Initially I was going to build a 4 bit computer, but I later decided that having a computer that could only operate with [...]]]> The first parts that I purchased for my computer included two breadboards and the logic chips to build a simple Arithmetic Logic Unit that could preform addition and subtraction on 4 bits. Initially I was going to build a 4 bit computer, but I later decided that having a computer that could only operate with integers from 0 to 15 would be rather boring. I learned something very important with my first purchase: NTE chips are not meant for projects. NTE chips are fairly common if you are searching for cheap parts, and the reason behind that is that they are replacements for the real thing. I constructed my 4 bit full-adder and only got accurate output %20 of the time. The rest of the time the output remained erroneous.

The First Parts

My dysfunctional ALU

]]>
http://8-bitspaghetti.com/2012/04/fist-parts/feed/ 9