|Line 68:||Line 68:|
Revision as of 23:09, 28 August 2009
- Titre: FPGA Workshop #3: Computer Architecture
- Par: lekernel
- Date: Saturday, August 29th, 2009 ; 14:00 - 23:00
- Lieu: /tmp/lab
Practical computer architecture made possible for individuals
Computer architecture is the science and art of selecting and interconnecting hardware components to create computers that meet functional, performance and cost goals (Wikipedia).
With the invasion of digital devices during the last decade (cellphones, wireless routers, digital TV...), it has become more than ever ubiquitous.
However, it is still a poorly known subject for most people. Even among the self-proclaimed hardware hacking community, most fanatics of the Arduino
development board open source physical computing platform do not know that all the functionality of their much-hyped toy comes from an AVR microcontroller chip that has been being manufactured for years by Atmel. And among those who know, yet fewer people are knowledgeable about the inner working of the AVR microchip; in which computer architecture plays an important role.
The reason behind this might be that during decades, computer architecture was reserved to academic lectures and companies who had enough cash to build integrated circuits costing several hundreds of thousands of dollars. This left little room for the individuals, except those who had the guts to wire hundreds of logic ICs together. But these amateur systems lag well behind commercial solutions in terms of performance, size, and power consumption.
But today's falling costs of powerful FPGAs make it possible for individuals to build complete high-performance computer systems (System-on-Chips) from scratch.
This workshop will explore this possibility. After introducing basic computer architecture concepts and practices, we will load a simplified version of the Milkymist System-on-Chip design in the development boards and execute basic programs on it. Then, using Verilog HDL, we will design a simple peripheral for the system-on-chip, integrate it, and test it on the board.
This workshop is for people who want to discover practical computer architecture, and at the same time for those who already know about architecture and want to get an introduction about how to add a peripheral to the open source Milkymist System-on-Chip.
- Basic knowledge of Linux commands
- Basic knowledge of Verilog HDL (equivalent to the 2 previous workshops)
- Basic programming practice (knowing how to write a for loop in your favorite language is enough)
- Come with your laptop
- Come with beer. The workshop animator runs on beer (Faro, good Kriek from Belgium, Irish Stout, Chimay)
- Bring a development board, preferably a Spartan 3A Evaluation Kit ($49)
- If you bring another board, you must make sure that:
- it has a NOR flash chip
- you have a tool for writing a raw binary image to that flash chip
- it has a serial port that you can use (bring any required null-modem cable, serial adapter, etc.)
- you can program the FPGA (bring any required JTAG cable)
- If you are unsure if your board is appropriate or not, feel free to send an email to sebastien dot bourdeauducq at lekernel dahht net
- ISE Webpack software and programming tools for your board must be installed before. Installations take a long time that we cannot afford to waste during the workshop.
- Spartan 3A Evaluation Kit programming tools: Avprog (Windows) avs3a (Linux)
- ISE Webpack: http://www.xilinx.com WARNING: VERY LONG INSTALL!
- If you are on Windows, install Cygwin and gmake (GNU Make) (from Cygwin installer)
- Download http://www.milkymist.org/dist/milkymist-0.1.1.tar.bz2 and uncompress it (
tar xvjf milkymist-0.1.1.tar.bz2)
- Go to the milkymist-core folder:
- Type command:
- If this completes without error (takes a couple of minutes), you should be ready for the workshop!
- Previous workshops' pages: Workshop_Introduction_aux_FPGA FPGA:_la_suite
Please register yourself by editing this page if you plan to attend. If you are new to the /tmp/lab, make sure we have a means to contact you back (for example, add your email in your user page).