Blog

Completing the MOV16 opcode

Over the last few days I have completed the soldered version of the MOV16 opcode. The task of the MOV16 opcode is to move the content of a 16-bit wide register into another one. The following VHDL code shows the simulated version of the opcode. [crayon-676c66a755ec7792432083/] As you can see from the implementation, it generates…
Read more

I’ve joined the Homebuilt CPU WebRing!

It’s about 4 years ago that I had my first thoughts about building my own CPU. As soon as I have started researching on Google about how a CPU actually works, and how you can even built your own CPU, I ended up at the Homebuilt CPU WebRing. It’s a web-ring which features home-built CPU…
Read more

Loading 16-bit Memory Addresses

Today I have achieved a very important milestone in my CPU project: I’m able to load 16-bit Memory Addresses (into registers) from my 8-bit wide data bus. Huh, how should that work? 16-bit addresses with an 8-bit wide data bus? To accomplish this goal I’m using here a technique that I have “borrowed” from the…
Read more

Building a support structure for the CPU

Over the last few days I have completely reworked my CPU and built a new support structure for it. The following picture shows you, how the CPU looked like earlier: It consisted of just 4 wooden frames (ALU, CPU supporting functions, Instruction Decoder, Register Unit), which have laid on the wall of my room. The…
Read more

How I transform Assembly Code into Machine Code for CPU Execution

In today’s blog posting I want to talk a little bit more in detail how I transform my custom written assembly code into machine code for CPU execution. To give you an idea about this challenge, have a look at the following assembly code in my own assembly language (that targets my 8-bit TTL based…
Read more

Storing ALU Results in a General Purpose Register

Today I have made another huge step forward in my CPU project: I’m now able to transfer the result from an ALU operation into a General Purpose Register for further processing. As I have mentioned in my previous blog posting, my ALU consists of 2 Input Registers (A and B), and one Output Register (C).…
Read more

The ALU is connected to the CPU!

Today I’ve made a huge step forward with my CPU: my ALU is now finally connected to the CPU, and performs its first calculation. The ALU itself is connected to 2 input registers and 1 output register of the CPU. These 3 registers are private to the ALU, and can’t be directly programmed by the…
Read more

I’ve executed my first ALU instruction!

I like it, when everything works as expected: I've just executed my 1st ALU instruction! The ALU is the most important part of the CPU, because all calculations are done with it. Most of the time when you execute assembly instructions, these assembly instructions are related to ALU operations.       The ALU instruction…
Read more

Binary Logic

Today I want to talk in more detail about binary logic. Binary logic is the most fundamental thing on which a CPU is based. As soon as you understand binary logic, you will have everything you need to implement a fully functional CPU. Electronic circuits use so-called Logic Gates to implement the binary logic. Binary…
Read more

How to count with Hexadecimal Numbers

In my previous blog posting I have talked about how we count with decimal and binary numbers. As you have seen, we use the same concept here – a Reset-Carry operation. The only difference was the base – how many digits you have available for counting. In today’s blog posting I want to show you…
Read more