OzieGamma

[The] *My* Computer Science Tutorial

Recommended Posts

Hi everyone,

 

I just ordered my first Papillio FPGA ! I am continuing a (huge) project that I started based on the Cyclone V GX starter kit from Terassic. I had a hard time finding documentation and support online and decided to move to Papillio.

 

As a Computer Science Engineering student at EPFL (Switzerland), I have had numerous courses that cover various aspects of computer science/engineering. All those courses felt separated. I decided that I wanted to "fill the gaps" in my knowledge of computers.

 

The ultimate goal is to create a tutorial / source code where one can learn practical computer engineering (I'll include links to good theory books/tutorials/articles).

I want to cover the following aspects of computer science:

 

- How the hardware works. (Simple multi/cycle multi-core CPU, no caches), VGA, Serial, keyboard, other peripherals (leds ect).

- How assembly works 

- How a compiler works, C-like language design

- How a kernel works

- How to internet works, either using a computer as proxy (through UART) or if I can find an opensource Ethernet implementation directly from the FPGA.

- Writing a simple web-server

- Writing some basic javascript

 

The idea is to have for each section:

- Some background information

- Links to deper / more complex issues (eg: caches, complex theory)

- A guided practical "let's do it"

 

I think this covers most of what one needs to know (if you add calculus ;)) to become a computer scientist.

 

If anyone is interested in the project, I'd be more than happy to do work together !

I currently have:

- An assembler / begining of compiler written in F# (I target mono) giving the oportunity to learn functional programming.

- http://github.com/OzieGamma

- Some VHDL for my CPU.

 

You can find me online: http://beglobal.me

Share this post


Link to post
Share on other sites

- How assembly works 

- How a compiler works, C-like language design

 

 Heh, you are entirely sure you want to explain assember/compiler/linker internals ? Can be quite complex... :) Even using compiler infrastructures, like LLVM.

 

But good luck for your efforts. Anything you may need just ask, we'll do our best to help you out.

 

 

Some VHDL for my CPU.

 

Have you though already about the overall architecture and ISA ? I am also designing a new CPU (it's on a very advanced stage), so we can eventually exchange ideas.

 

Alvie

Share this post


Link to post
Share on other sites

Hi,

 

First off all, I'm doing it for myself :). Secondly my plan was for the tutorial to accompany my work, not the other way around.

 

For each topic I'd have:

  • What's the problem.
  • How I solved it.
  • Brief sumary of how others do it / where to find more info.

Indeed compilers & co can be very complex. But they don't have too ! I'm not trying to replace gcc ;)

 

Regarding my CPU, the general design is done. Although I have no idea of what I can fit in the Spartan 6 LX9. The Altera FPGA I used was way bigger (it has 4,5 MB of Embedded RAM, I suppose it also has more logic cells).

 

The ISA is an ERISC (extremely reduced instruction set). The only complicated thing is that I would like to use message-passing for multi-core support. That's how supercomputers do it and I think it is a very interesting model.

 

NB: couldn't figure out how to quote you ...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now