Difference between revisions of "Programmable Logic Lessons"

From Hackerspace.gr
Jump to: navigation, search
 
(33 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
=== Description ===
 
=== Description ===
Basic introduction into fpgas and stuff (still thinking on the actual content, we'll start from the very very very basics). I'll try my best to explain everything, but you'll have to study if you are a total begginer :)
+
Basic introduction into fpgas (and digital logic). This will have a lot of new stuff if you are a total begginer, you'll have to study abit to keep up :)
  
The plan is to have 3 introductory sessions, and then get into more hands on stuff. Hopefully we'll have our own (tiny and minimal) working cpu by the end of this !
+
The plan is to have 3 introductory sessions, and then get into more hands on things. Hopefully we'll have our own (tiny and minimal) working cpu by the end of this !
 +
 
 +
The schedule will be adapted as we go on -- this is a rough plan
  
 
=== Prerequisite knowledge and skills ===
 
=== Prerequisite knowledge and skills ===
Line 8: Line 10:
 
* Basic knowledge of git (http://githowto.com/ can help you, we'll use git for examples and collaborating)
 
* Basic knowledge of git (http://githowto.com/ can help you, we'll use git for examples and collaborating)
 
* Github account (We'll host our stuff there)
 
* Github account (We'll host our stuff there)
* A laptop (We do some some spare computers in hackerspace, but you'll need to work on your own at home)
+
* A laptop (We do have some some spare computers in hackerspace, but you'll need to work on your own at home)
  
 
=== Doodle pool for date selection ===
 
=== Doodle pool for date selection ===
 
http://www.doodle.com/yp99tnvzvq7ygwmy#table -> Begining Tuesday, May 28, 2013 7:00 PM - 9:00 PM, and generally Tuesdays 7 - 9
 
http://www.doodle.com/yp99tnvzvq7ygwmy#table -> Begining Tuesday, May 28, 2013 7:00 PM - 9:00 PM, and generally Tuesdays 7 - 9
  
=== Hardware ===
 
Papilio One - 500K - https://www.sparkfun.com/products/11158
 
* Xilinx Spartan 3E/500K gates
 
 
Atlys - Spartan6 - http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,836&Prod=ATLYS&CFID=1733993&CFTOKEN=46850973
 
* has cute hdmi output
 
  
 
=== Schedule ===
 
=== Schedule ===
==== Digital electronics recap - Tuesday, May 28, 2013 7:00 PM - 9:00 PM ====
+
==== [[PLD_Workshop_28_05_2013|Digital electronics recap (click for slides)]] ====
* Binary system
+
* Welcome to hackerspace.gr !
** What/How/Why, notations, formats -- http://en.wikipedia.org/wiki/Binary_numeral_system
+
* Fast recap of digital electronics basics
* Bool algebra
+
* Workshop page includes slides and useful links :)
** Basic stuff -- http://en.wikipedia.org/wiki/Boolean_algebra
+
* Basic constructs
+
** Gates, Adders, Mult, Mux, flip flops -- http://en.wikipedia.org/wiki/Logic_gates, http://en.wikipedia.org/wiki/Multiplexer, http://en.wikipedia.org/wiki/Flip-flop_%28electronics%29, ...
+
* PLD Techonologies
+
** What for, how do they work, etc -- http://en.wikipedia.org/wiki/Programmable_logic_device, http://en.wikipedia.org/wiki/Field-programmable_gate_array
+
** Typical design workflow
+
  
==== Tooling, VHDL/Verilog basics ====  
+
==== [[PLD_Workshop_04_06_2013|Tooling, VHDL/Verilog basics (click for slides)]] ====  
 
* Xilinx tooling (we'll use it)
 
* Xilinx tooling (we'll use it)
 
** http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html (*ISE*, _not_ Vivado)
 
** http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/design-tools.html (*ISE*, _not_ Vivado)
Line 40: Line 30:
 
** We'll do some hands on basic stuff on our h/w !
 
** We'll do some hands on basic stuff on our h/w !
  
==== More complicated structures ====
+
==== [[PLD_Workshop_11_06_2013|More complicated structures (click for slides)]] ====
 
* More digital design stuff
 
* More digital design stuff
 
** Clocked vs clockless/asynchronous design
 
** Clocked vs clockless/asynchronous design
 
** Clock domains, etc
 
** Clock domains, etc
 
** Buffers, fifo, pipelines, etc
 
** Buffers, fifo, pipelines, etc
** (more stuff)
 
 
** We'll Implement something relevant to avoid too much boring theory
 
** We'll Implement something relevant to avoid too much boring theory
  
==== Computer architecture ====
+
==== [[PLD_Workshop_18_06_2013|Computer architecture (click for slides)]] ====
* Basic stuff
+
* Introduction
** Buses/Protocols, basic design ideas
+
* Implement a very basic cpu
** how is cpu design done
+
* think together something more complicated for later on
** What are SoCs
+
** Emulation/simulation
+
* Think together a custom, minimal SoC
+
** We'll actually implement this later on :)
+
  
==== Computer architecture, part 2 ====
+
==== [[PLD_Workshop_25_06_2013|Computer architecture, part 2 (click for slides)]] ====
* More work on the design we'll have
+
* talk about ISAs
** Implement it in software, see what tools are needed etc
+
* More work on the design we have
** Break it in blocks so we can work on the verilog part
+
* play a bit with porting to verilog ?
 +
 
 +
==== [[PLD_Workshop_02_07_2013|Computer architecture, part 3 (just workshop, no slides)]] ====
 +
* Brainstorming on exactly what we'll implement
 +
* Perhaps port the design to verilog ?
 +
* Look at the assembler and all :)
 +
 
 +
=== Hardware ===
 +
Papilio One - 500K - https://www.sparkfun.com/products/11158
 +
* Xilinx Spartan 3E/500K gates
 +
 
 +
Atlys - Spartan6 - http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,836&Prod=ATLYS&CFID=1733993&CFTOKEN=46850973
 +
* has cute hdmi output
 +
 
 +
=== Slides ===
 +
https://github.com/pld-lessons/slides
  
==== Computer architecture, part 3 ====
 
* Implement the design in verilog
 
* Explore perfomance/cost/etc
 
** Let's make something fun with it -- perhaps a tiny brix clone or smth ?
 
* General info about more complex cpu designs (closer to the curren generation of cpus) and about gpu/stream processing
 
* General talk about sharing/working with open source hardware
 
** http://opencores.org/, etc
 
  
 
=== Related material ===
 
=== Related material ===
 
* http://www.doe.carleton.ca/~jknight/97.478/PetervrlK.pdf (Verilog introduction)
 
* http://www.doe.carleton.ca/~jknight/97.478/PetervrlK.pdf (Verilog introduction)
 
* http://hamsterworks.co.nz/mediawiki/index.php/FPGA_course (VHDL, we'll actually do verilog though)
 
* http://hamsterworks.co.nz/mediawiki/index.php/FPGA_course (VHDL, we'll actually do verilog though)
 +
 +
 +
  
 
=== Useful Links ===
 
=== Useful Links ===
Line 78: Line 74:
 
* https://github.com/skmp/tsc8 (A tiny cpu I implemented in vhdl a long time ago)
 
* https://github.com/skmp/tsc8 (A tiny cpu I implemented in vhdl a long time ago)
 
* http://opencores.org/ (Lots and lots of code you can stare at)
 
* http://opencores.org/ (Lots and lots of code you can stare at)
 +
 +
 +
  
 
=== Contact ===
 
=== Contact ===
Line 83: Line 82:
  
 
[[Category:Seminars]]
 
[[Category:Seminars]]
 +
[[Category:Projects]]

Latest revision as of 00:15, 13 June 2018

Description

Basic introduction into fpgas (and digital logic). This will have a lot of new stuff if you are a total begginer, you'll have to study abit to keep up :)

The plan is to have 3 introductory sessions, and then get into more hands on things. Hopefully we'll have our own (tiny and minimal) working cpu by the end of this !

The schedule will be adapted as we go on -- this is a rough plan

Prerequisite knowledge and skills

  • Basic understanding of programming
  • Basic knowledge of git (http://githowto.com/ can help you, we'll use git for examples and collaborating)
  • Github account (We'll host our stuff there)
  • A laptop (We do have some some spare computers in hackerspace, but you'll need to work on your own at home)

Doodle pool for date selection

http://www.doodle.com/yp99tnvzvq7ygwmy#table -> Begining Tuesday, May 28, 2013 7:00 PM - 9:00 PM, and generally Tuesdays 7 - 9


Schedule

Digital electronics recap (click for slides)

  • Welcome to hackerspace.gr !
  • Fast recap of digital electronics basics
  • Workshop page includes slides and useful links :)

Tooling, VHDL/Verilog basics (click for slides)

More complicated structures (click for slides)

  • More digital design stuff
    • Clocked vs clockless/asynchronous design
    • Clock domains, etc
    • Buffers, fifo, pipelines, etc
    • We'll Implement something relevant to avoid too much boring theory

Computer architecture (click for slides)

  • Introduction
  • Implement a very basic cpu
  • think together something more complicated for later on

Computer architecture, part 2 (click for slides)

  • talk about ISAs
  • More work on the design we have
  • play a bit with porting to verilog ?

Computer architecture, part 3 (just workshop, no slides)

  • Brainstorming on exactly what we'll implement
  • Perhaps port the design to verilog ?
  • Look at the assembler and all :)

Hardware

Papilio One - 500K - https://www.sparkfun.com/products/11158

  • Xilinx Spartan 3E/500K gates

Atlys - Spartan6 - http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,836&Prod=ATLYS&CFID=1733993&CFTOKEN=46850973

  • has cute hdmi output

Slides

https://github.com/pld-lessons/slides


Related material



Useful Links



Contact

Μέσω της λίστας γενική συζήτησης βάζοντας το label [PLD-Lessons] στην αρχή του subject.