[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

Link to comment
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.



Link to comment
Share on other sites



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 ...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.