One year has passed without any blog post...



Several people asked me what I plan to do next on this A2Z project.

Probably nothing, I will explain why.

Porting Linux ? Retargeting a compiler?



What A2Z is not:

This question was asked several times. Some people consider A2Z as a 100% open source platform which could run a 100% open source Linux. They are wrong, I will explain that.

There is a misunderstanding.

I’m afraid, Linux and a C compiler is totally not feasible.

A2Z lacks many things to achieve the goal of C retargeting and Linux porting.

A2Z only manages Direct Addressing in hardware. No complex address computation. If you want to implement data stack, recursive functions, then direct addressing is not enough. You cannot retarget a C compiler with only direct addressing (or if you emulate complex addressing modes by software, it would be very very slow).

A2Z has not interrupt management. You cannot implement/port a pre-emptive multitasking OS (Linux) without interrupt management.

A2Z has no memory management unit.

A2Z’s ALU is compatible with nothing.

Etc…

What A2Z is :

A2Z is “just” a very simple and didactic project. The DIDACTIC aspect is the most important.

When I started this project in my mind 3 years ago, the goal was to make things very simple, and start from a blank page. I didn’t want to copy other CPU architectures.

I didn’t want to take the constraints of “being compatible”, or using one existing compiler / language. I wanted a lot of freedom in this project.



Therefore, A2Z is compatible with… nothing.

I don’t think that lots of people have made such usable computer starting really from scratch, from a blank page.

I’m very proud of the result.

Anyway, What’s going next?

I consider A2Z totally finished, so there will be nothing more on A2Z project.

Of course, I have several ideas to improve the A2Z, with the same principle, the same CPU architecture. There is a list:



Accelerate to 50MHz (currently 25MHz) : I know that it is feasible

Instruction cache : I could put an instruction cache inside the FPGA, and switch to a faster “Harvard” architecture when the CPU uses it

Small pipeline : Now that the pipeline concept is clear in my mind, I could improve the CPU with a small (2 steps) pipeline

Flexible CPU state machine : the state sequencer of the CPU core is currently too simple, too rigid, and wastes a lot of cycles. Making a flexible state machine could improve the computing power.

Video part : 2D hardware acceleration with sprite management

Reprogramable graphics palette (256 colours out of 4096) for better pictures rendering

Ethernet and networking : The idea would be to code a very simple Ethernet card directly inside the FPGA.

BUT… I will not make any of these improvements. I simply don’t have time, and I have already moved to other projects. Robotics and amateur radio projects (F4HDK is my amateur radio callsign). Even if I come back to CPU architecture study sooner or later, it will be with a brand new project.



Your turn!

But I remind you that all the source code is freely available for download, everythink is open source. So you can play with it, improve it. I will be very happy if someone proposes improvements for A2Z. Of course, I can bring support about topics that I have not well documented.

