Actions

FPGA Workshop: Difference between revisions

From HacDC Wiki

 
(89 intermediate revisions by 22 users not shown)
Line 14: Line 14:


=== Verilog Simulation and Waveform Viewing ===
=== Verilog Simulation and Waveform Viewing ===
Icarus verilog & gtkwave; for doing Verilog compilation, simulation and waveform viewing. A makefile has been made to simplify the flow for any exercises and projects we use these tools with.  That makefile can be found [[iverilogmakefile|'''here''']].<br><br>
Icarus verilog & gtkwave; for doing Verilog compilation, simulation and waveform viewing. A makefile has been made to simplify the flow for any exercises and projects we use these tools with.  That makefile can be found [[iverilogmakefile|'''here''']]. Instructions for installing these programs on Mac osX and Ubuntu can be found here: [[FOSS_Verilog_tool_installation | '''FOSS Verilog tool installation''']] <br>
 
=== FPGA Toolchain ===
=== FPGA Toolchain ===
After we finish up with covering Verilog modeling, we'll move to the Xilinx ISE Webpack tools and actual work with FPGAs.  This software is available from Xilinx for free, and is available for Windows and Linux platforms.  This will be used for Verilog compilation, simulation, synthesis of designs, design mapping, place and routing of designs, bitstream generation and board programming.<br><br>
After we finish up with covering Verilog modeling, we'll move to the Xilinx ISE Webpack tools and actual work with FPGAs.  This software is available from Xilinx for free, and is available for Windows and Linux platforms.  This will be used for Verilog compilation, simulation, synthesis of designs, design mapping, place and routing of designs, bitstream generation and board programming. Instructions for installing the Xilinx tools on the VM can be found here:[[Xilinx_ISE_Installation_Instructions | '''Xilinx ISE Installation Instructions''']]<br>
 
=== Direct Installation (Ubuntu version) ===
 
--- Gtkwave ---
 
gtkwave is good in the Universe repository.  If you've already got that linked in your /etc/apt/sources.list file, then installation is as simple as:
 
  sudo apt-get install gtkwave
 
 
--- Compiling icarus verilog ---
 
Icarus verilog, on the other hand, is buggy in the Jaunty repository.  So you'll want to compile it by hand. 
 
* Fetch the .tar.gz file: 
 
  wget ftp://ftp.icarus.com/pub/eda/verilog/snapshots/verilog-20090923.tar.gz
  tar xvzf verilog-20090923.tar.gz
  cd verilog-20090923
 
* Make sure you have the necessary compile tools:
 
  sudo apt-get install build-essential flex bison g++
 
* Compile and install:
 
  ./configure
  make
  sudo make install 
 
* Go get a cup of tea after you type "make", because compiling takes a while.  But when you get back, you should be good to go.  Copy William's makefile into your code directory and get to work.  Now you have your usual development tools at your fingertips.  (Emacs and Gedit have sweet colorization modes for verilog.)
 
=== Direct Installation (Mac OSX Version) ===
Spartan instructions follow...
 
* Install XCode tools from developer.apple.com
* Install macports from macports.org.  I don't know how macports plays with fink, so be wary if your using fink.
* Install Icarus verilog with macports
<pre>sudo port install iverilog</pre>
* Install GTKWave with macports.  This will actually take a while on a fresh install of macports, so go and watch a tv show.
<pre>sudo port install gtkwave</pre>
* You can now launch iverilog, vvp and gtkwave from the command line, and use the makefile provided with the workshop.
 
=== Virtual Machine ===
=== Virtual Machine ===
An OpenSuse Virtual Machine (VMWare based) will be available for people to use in this course, if they wish. This will
An OpenSuse Virtual Machine (VMWare based) will be available for people to use in this course, if they wish. This will
Line 67: Line 23:
When we move over to the Xilinx tools, people will have to download and install the Xilinx tools by themselves, since that material is copyrighted.  Instructions will be given for doing that.
When we move over to the Xilinx tools, people will have to download and install the Xilinx tools by themselves, since that material is copyrighted.  Instructions will be given for doing that.


The VMware VM image is ready (ver 0.5.2) for people to grab if they wish.  [http://susestudio.com/download/49e791d22097dd5694429fabe47ab5d2/Digital_Design__FPGA_Workshop_VM_v4.i686-0.5.2.vmx.tar.gz '''Get it here.''']   
The VMware VM image is ready (ver 0.5.2) for people to grab if they wish.  [http://susestudio.com/download/d931a0f28972e3505eacf8d0bad28fc0/Digital_Design__FPGA_Workshop_VM_v4.i686-0.5.2.vmx.tar.gz '''Get it here.''']   


The image also works with VirtualBox.  Create a new machine, and when it asks you for a hard drive, select use an existing drive.  This takes you to the hard-drives list dialog box.  From there, file..create a new drive, link it to the .vmdk file, select it, and you're all set.  For the rest, all defaults are ok.  (Bother Elliot for hints with VBox.)
The image also works with VirtualBox.  Create a new machine, and when it asks you for a hard drive, select use an existing drive.  This takes you to the hard-drives list dialog box.  From there, file..create a new drive, link it to the .vmdk file, select it, and you're all set.  For the rest, all defaults are ok.  (Bother Elliot for hints with VBox.)
Line 85: Line 41:


== Lecture ==
== Lecture ==
Lecture/Discussions will mainly be based on content from a pair of courses in MIT's Opencourseware initiative. This content is licensed on the Creative Commons Attribution NonCommercial Share-alike 3.0 license; as a result, the electronic content generated by the workshop will also need to be made available under the same license. This will allow people to freely access just the discussion slides without watching through videos.<br> <br> A video archive will be made available for those unable to attend.
Lecture/Discussions will mainly be based on content from a pair of courses in MIT's Opencourseware initiative. This content is licensed on the Creative Commons Attribution NonCommercial Share-alike 3.0 license; as a result, the electronic content generated by the workshop will also need to be made available under the same license. This will allow people to freely access just the discussion slides without watching through videos.<br> <br> A [http://www.youtube.com/watch?v=Q06M_j49zRM video] archive will be [http://www.diamondlinks.net link building service] made available for those unable to attend.  They are available here [[FPGAWorkshopTopics | '''here''']].


=== List of Lectures ===
=== List of Lectures ===
''This is currently an incomplete list, additional topics will be added as I solidify them - wgibb''
 
An archival list of lectures, including presentations and videos, can be found [[FPGAWorkshopTopics | '''here''']]
 
''This is currently an incomplete list, additional topics will be added as I solidify them - will''
 
{| border="1"
{| border="1"
|Week
|Week
Line 96: Line 56:
|Solutions/Approach
|Solutions/Approach
|-
|-
|1
||10
|October 7th, 2009
|December 16th, 2009
|[http://wiki.hacdc.org/index.php/File:Lect1_draft2.pdf Workshop Introduction & Introduction to digital systems and design]
|[http://wiki.hacdc.org/index.php/File:Week10_programmable_fabric.pdf Introduction to FPGAs - History, Capabilities and Features]
|Make sure people can run the Virtual Machine or FOSS tools
|Exploring designs and FPGA tools
|Lorem Ipsum
|Solutions
|-
|-
|2
|11
|October 14th, 2009
|December 23rd, 2009
|[http://wiki.hacdc.org/index.php/File:Lect2_draf3.pdf Boolean Logic, combinatorial circuits and timing]
|[http://wiki.hacdc.org/index.php/File:ISE_Tutorial_for_S3E.pdf ISE Tutorial for Spartan 3E board]
|Make sure people can run the Virtual Machine or FOSS tools <br> |[http://wiki.hacdc.org/index.php/File:Lect2_exercise.pdf Boolean & Combinatorial Exercises]
|[[FPGAExercise10code | Counter Source ]]
|[http://wiki.hacdc.org/index.php/File:Lect2_sol.pdf Exercise Solutions]
|[http://www.youtube.com/watch?v=_bxUEjCDVZ8 Video of HacDC FPGA blinkenlites]
[[Discussion 2 Exercises Solution notes]]
|-
|-
|3
|12
|October 21st, 2009
|December 30th, 2009
|[http://wiki.hacdc.org/index.php/File:Lect3.pdf Introduction to Verilog Coding, focusing on combinatorial circuits]
|Distribute kits, play with tutorial, work on usb drivers
|[[FPGAExercise3| Verilog Coding  Modular Full Adder Design and Simulation and ALU extension project]]
|
|Solutions
|
|-
|-
|4
|13
|October 28th, 2009
|January 5th, 2010
|Make up day
|[[FPGAWeek12Exercise | Implement Frequency Counter and Frequency Generator reference designs]]
|[http://www.xilinx.com/products/boards/s3estarter/reference_designs.htm Spartan 3E Reference Designs]
|
|
|Solutions
|-
|-
|4 1/2
|14
|November 4th, 2009
|January 26th, 2010
|[http://wiki.hacdc.org/index.php/File:Intro_to_Sequential_Logic.pdf Introduction to Sequential Logic and Flip Flops]
|[[FPGAWorkshop13notes|Intro to PicoBlaze]]
|[http://projects.hacdc.org/tapemachine/SequentialCircuits.mp3 Audio]
|
| Placeholder
|
|-
|-
|5
|15
|November 11th, 2009
|February 2nd, 2010
|No class meeting with Will
|Cancelled
|[[FPGAExercise5|Different adder construction, shift register and LFSR construction]]
|
|[[FPGAExercise5code|4 bit counter code from group hacking session]]
|
|-
|-
|6
|16
|November 18th, 2009
|February 16th, 2010
|[http://wiki.hacdc.org/index.php/File:FPGAWeek6.pdf DFFs round 2, Testbenches]
|[[FPGAWorkshop16Notes|Analysis of Frequency counter PicoBlaze reference design]]
[[FPGAWeek6Followup|Notes on the use of Define statements, tasks and events]]
|
|Shift Register & LFSR examples from week 5
|
|[[FPGAExercise6code|Shift Register, SR Testbench, LFSR, LFSR Testbench]]
|-
|-
|7
|17
|November 25th, 2009
|March 6nd, 2010
|Xilinx tool install party
|[[FPGAWorkshop17Notes|Picoblaze Flow / Hello World]]
|Hello World demo
|
|Src for demo
|
|-
|8
|December 2nd, 2009
|Finite State Machines
|Practical FSM Exercise
|Solutions
|-
|-
|9
|18
|December 9th, 2009
|March 23rd, 2010
|Introduction to FPGAs - History, Capabilities and Features
|FPGA hackins.
|Exploring designs and FPGA tools
|Solutions
|-
|10
|December 16th, 2009
|Logic Synthesis & Design considerations with FPGAs
|Conversion of projects, simulation in iSim
|Solutions
|-
|10
|December 16th, 2009
|TBD
|TBD
|TBD
|}
<br>
 
=== Videos of Discussions ===
The videos are  mpeg4 video with aac audio <br>
{| border="1"
| Week
| Video Links
| Notes
|-
|1
|
|
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV011.TOD.ff.mp4 Part 1]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV012.TOD.ff.mp4 Part 2]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV013.TOD.ff.mp4 Part 3]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV014.TOD.ff.mp4 Part 4] <br>
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV015.TOD.ff.mp4 Part 5]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV016.TOD.ff.mp4 Part 6]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV017.TOD.ff.mp4 Part 7]
[http://wiki.hacdc.org/videos/hacdc-fpga/week01/MOV018.TOD.ff.mp4 Part 8]
|not equal length
|-
|2
|
|
[http://wiki.hacdc.org/videos/hacdc-fpga/week02/MOV005.TOD.ff.mp4 Part 1]
[http://wiki.hacdc.org/videos/hacdc-fpga/week02/MOV006.TOD.ff.mp4 Part 2]
[http://wiki.hacdc.org/videos/hacdc-fpga/week02/MOV007.TOD.ff.mp4 Part  3] <br>
[http://wiki.hacdc.org/videos/hacdc-fpga/week02/MOV008.TOD.ff.mp4 Part 4] 
[http://wiki.hacdc.org/videos/hacdc-fpga/week02/MOV009.TOD.ff.mp4 Part 5]
| Video cuts out at  a discussion about Rise and Fall times
|-
|-
|3
|19
|April 6th, 2010
|FPGA hackins
|
|
[http://wiki.hacdc.org/videos/hacdc-fpga/week03/10.avi Part 1]
[http://wiki.hacdc.org/videos/hacdc-fpga/week03/11.avi Part 2]
[http://wiki.hacdc.org/videos/hacdc-fpga/week03/12.avi Part  3] <br>
[http://wiki.hacdc.org/videos/hacdc-fpga/week03/13.avi Part 4] 
[http://wiki.hacdc.org/videos/hacdc-fpga/week03/14.avi Part 5]
|
|
|-
|-
|4
|19
|April 20th, 2010
|FPGA hackins
|
|
|
|
|-
|}
|}


Line 251: Line 161:


=== Online References ===
=== Online References ===
==== General Resources ====
[http://www.opencircuitdesign.com/ Open Circuit Design] Open Source design tools <br>
[http://www.doulos.com/knowhow/ Doulos Digital Design Resources] Good learning and design references <br>
[http://www.asic-world.com/ '''ASIC World'''] Good learning references <br>
[http://www.play-hookey.com/digital/ Play Hookey Digital Design] Good learning references <br>
[http://www.fpga4fun.com/ '''FPGA4Fun''] Lots of available IP <br>
[http://academic.csuohio.edu/chu_p/rtl/fpga_vlog.html Companion website for Professor Pong Chu's Verilog Book] <br>
[http://www.opencores.org '''OpenCores'''] Very good repository for IP.  Also the home to the OpenRISC System on Chip project <br>
[http://hdlplanet.tripod.com/verilog/verilog-manual.html#RTFToC0 Bucknell Handbook on Verilog HDL] (Martin found this) Old but useful? <br>
[http://verilog.openhpsdr.org/ KD7IRS's Verilog - OpenHPSDR - Lectures] Webcast style class, with lab  <br>
[http://pip0.ccm.ece.vt.edu/twiki/bin/view/Main/Spartan3Radio VA Tech Configurable Computing Lab Wiki] Simple Radio Structures on the Spartan3e Starter Kit<br>
[http://pip0.ccm.ece.vt.edu/twiki/bin/view/Main/GNURadio VA Tech Configurable Computing Lab Wiki] GNU Radio - USRP for Spartan 3E<br>
[http://www.engr.sjsu.edu/crabill/ San Jose State University] Digital design course (EE178) with Spartan 3E Development board and ISE 8.1 - lecture & lab materials <br>
[http://www.seas.gwu.edu/~vlsi/ece128/SPRING/lab.html George Washington University ECE128 Lab ]  Contains good Verilog coding and testbench resources <br>
[http://www.fpgaarcade.com/ FPGA Arcade] Devoted to gaming on FPGAs, Space Invaders in VHDL...<br>
[http://instruct1.cit.cornell.edu/courses/ece576/FloatingPoint/index.html Simplified Floating Point for DSP]  8-bit exponent and 9-bit mantissa and sign to fit into 18 bit IP blocks - Thanks Cornell!
==== FPGA Vendors ====
==== FPGA Vendors ====
[http://www.xilinx.com/ Xilinx] <br>
[http://www.xilinx.com/ Xilinx] <br>
Line 257: Line 185:
[http://www.atmel.com/products/fpga/ Atmel FPGA] <br>
[http://www.atmel.com/products/fpga/ Atmel FPGA] <br>
[http://www.siliconbluetech.com/ Silicon Blue] <br>
[http://www.siliconbluetech.com/ Silicon Blue] <br>
[http://www.merchantos.com Point of Sale System] <br>
[http://www.latticesemi.com/ Lattice Semiconductor] <br>
[http://www.latticesemi.com/ Lattice Semiconductor] <br>
[http://www.achronix.com/ Achronix] <br>
[http://www.achronix.com/ Achronix] <br>
Line 270: Line 199:
[http://www.xilinx.com/support/techsup/tutorials/tutorials10.htm Xilinx ISE 10.1 Tutorial and files] <br>
[http://www.xilinx.com/support/techsup/tutorials/tutorials10.htm Xilinx ISE 10.1 Tutorial and files] <br>
[http://www.xilinx.com/direct/ise10_tutorials/ise10tut.pdf ISE 10.1 In Depth Tutorial Direct link to PDF] <br>
[http://www.xilinx.com/direct/ise10_tutorials/ise10tut.pdf ISE 10.1 In Depth Tutorial Direct link to PDF] <br>
[http://www.xilinx.com/support/documentation/index.htm Xilinx Documentation] <br>
[http://www.xilinx.com/support/documentation/index.htm Xilinx Documentation] This includes device data sheets, user guides, IP documentation and Xilinx software manuals <br>
[http://www.xilinx.com/tools/designtools.htm Xilinx Design Tools] <br>
[http://www.xilinx.com/tools/designtools.htm Xilinx Design Tools] Xilnx Software tools can be found here <br>
[http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G.htm Spatan 3E Starter Kit] <br>
[http://www.xilinx.com/products/devkits/HW-SPAR3E-SK-US-G.htm Spatan 3E Starter Kit] Site for the Spartan 3E kit <br>
[http://www.xilinx.com/products/devkits/HW-SPAR3AN-SK-UNI-G.htm Spartan 3AN Starter Kit]<br>
[http://www.xilinx.com/products/devkits/HW-SPAR3AN-SK-UNI-G.htm Spartan 3AN Starter Kit] Site for the Spartan 3AN kit <br>
[http://www.xilinx.com/support/training/free-courses.htm Free Video Training courses] <br>
[http://www.xilinx.com/support/training/free-courses.htm Free Video Training courses] Name says it all <br>
[http://xess.com/appnotes/ise-10.pdf Yet Another Xilinx ISE 10.1 Tutorial] For Xess Spartan-3 Development Board <br>


==== Spartan 3AN Starter Kit ====
==== Spartan 3AN Starter Kit ====
Line 282: Line 212:
[http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2621773&k=spartan%203an Digi-key Spartan 3AN Starter Kit Sales page] <br>
[http://search.digikey.com/scripts/DkSearch/dksus.dll?Cat=2621773&k=spartan%203an Digi-key Spartan 3AN Starter Kit Sales page] <br>
Probably also at other [[suppliers]].
Probably also at other [[suppliers]].
==== Spartan 3E Starter Kit ====
[http://www.digilentinc.com/ Digilent]


===== Group Order Participants =====
===== Group Order Participants =====
NOTE: Xilinx has donated 15 spartan3 boards, which should arrive before 12/7
* Daniel (obscurite on #hacdc on freenode)
* Daniel (obscurite on #hacdc on freenode)
* Alden
* Alden
Line 296: Line 231:
* Nick
* Nick
* Brian (bpbri [at] hotmail.com)
* Brian
 
* Elliot
* Elliot
* Justin
* Justin
Line 305: Line 241:
[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-111Spring-2006/CourseHome/index.htm OCW site for 6.111 Introductory Digital Systems, 2006] <br>
[http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-Computer-Science/6-111Spring-2006/CourseHome/index.htm OCW site for 6.111 Introductory Digital Systems, 2006] <br>


==== General Resources ====
 
[http://www.opencircuitdesign.com/ Open Circuit Design] Open Source design tools <br>
 
[http://www.doulos.com/knowhow/ Doulos Digital Design Resources] Good learning and design references <br>
 
[http://www.asic-world.com/ ASIC World] Good learning references <br>
== FPGA Workshop Projects ==
[http://www.play-hookey.com/digital/ Play Hookey Digital Design] Good learning references
List of FPGA projects people are working on at HacDC
[http://www.fpga4fun.com/ FPGA4Fun] Lots of available IP <br>
 
[http://academic.csuohio.edu/chu_p/rtl/fpga_vlog.html Companion website for Professor Pong Chu's Verilog Book] <br>
{|border="1"
[http://www.opencores.org OpenCores] Very good repository for IP.  Also the home to the OpenRISC System on Chip project <br>
|Person
[http://hdlplanet.tripod.com/verilog/verilog-manual.html#RTFToC0 Bucknell Handbook on Verilog HDL] (Martin found this) Old but useful?
|Project
<br>
|-
|William Gibb
|[http://opencores.org/project,spi_core_dsp_s3ean_kits AD/DA controller for Spartan 3E/3A/3AN Development Kits]
|-
|Daniel (obscurite on #hacdc on freenode)
| [[FPGAWorkshopDaniel |Daniel's Project (Game of Life w/ Martin & Breakout VGA/LED?)]]
|-
|Alden
| [[FPGAWorkshopAlden | Alden's Project]]
|-
|Dan Barlow
| [[FPGAWorkshopBarlow | Barlows's Project]]
|-
|Navid
| [[FPGAWorkshopNavid | Navid's Project]]
|-
|Matt Liggett
| [[FPGAWorkshopMatt | Matt's Project]]
|-
|Maitland Bottoms
| [[FPGAWorkshopMaitland | Maitland's Project]]
|-
|Ben Peizik (benparse@yahoo.com)
| [[FPGAWorkshopBen | Ben's Project]]
|-
|Martin
| [[FPGAWorkshopMartin | Martin's Project]]
|-
|Rob Seastrom (rs@seastrom.com)
| [[FPGAWorkshopJustin | Justin's Project]]
|-
|Phillip Stewart
| [[FPGAWorkshopPhillip | Phillip's Project]]
|-
|Tim F (smilemoose@gmail.com)
|[[FPGAWorkshopJustin | Tims Project]]
|-
|Nick
|[[FPGAWorkshopNick | Nick's Project]]
|-
|Brian
|[[FPGAWorkshopBrian | PROM Burner/Reader]]
|-
|Elliot
|[[FPGAWorkshopElliot | Elliots's Project]]
|-
|Justin
|[[FPGAWorkshopJustin | Justin's Project]]
|-
|Arc
|[[FPGAWorkshopArc | Arcs SMT oven ]]
|-
|Davel (DLotts)
|[[FPGAWorkshopDLotts | Davel's Project]]
|}
 
 
[[Category:Classes]]
[[Category:Classes]]
[[Category:FPGAWorkshop]]
[[Category:FPGAWorkshop]]

Latest revision as of 17:27, 25 August 2014

Main Topics

1) Introduction to digital logic & design
2) Verilog HDL modeling & testing
3) FPGA's & using them.

We will be taking an approach of reviewing & learning digital design, implementing designs and methods of formally simulating and verifying designs before moving into FPGA oriented work. This workshop will be more engineering oriented than hobbyist/tinkerer oriented.

Hardware

We'll be covering some FPGA specific topics and projects using real hardware. The first half of the workshop will cover logic design, implementation and testing. This will allow people to put off ordering any hardware until they know that they actually want to pursue FPGA development, since the dev board I've chosen for this is not cheap but I feel is robust enough to be a good starting board for this group.

The hardware we'll be using is the Xilinx Spartan 3AN development kit. This kit is available from a few vendors for 199USD + shipping. This will be discussed more later on. The kit includes programming cable, and evaluation copies of some of the Xilinx tools."

Tools

Verilog Simulation and Waveform Viewing

Icarus verilog & gtkwave; for doing Verilog compilation, simulation and waveform viewing. A makefile has been made to simplify the flow for any exercises and projects we use these tools with. That makefile can be found here. Instructions for installing these programs on Mac osX and Ubuntu can be found here: FOSS Verilog tool installation

FPGA Toolchain

After we finish up with covering Verilog modeling, we'll move to the Xilinx ISE Webpack tools and actual work with FPGAs. This software is available from Xilinx for free, and is available for Windows and Linux platforms. This will be used for Verilog compilation, simulation, synthesis of designs, design mapping, place and routing of designs, bitstream generation and board programming. Instructions for installing the Xilinx tools on the VM can be found here: Xilinx ISE Installation Instructions

Virtual Machine

An OpenSuse Virtual Machine (VMWare based) will be available for people to use in this course, if they wish. This will have the icarus verilog tools and GTKwave loaded on it, along with Firefox, gcc and make. The suseStudio team has encouraged the use of their VMs in such a manner (teaching workshops). This is being built in susestudio, and will be available as a live install as well.
When we move over to the Xilinx tools, people will have to download and install the Xilinx tools by themselves, since that material is copyrighted. Instructions will be given for doing that.

The VMware VM image is ready (ver 0.5.2) for people to grab if they wish. Get it here.

The image also works with VirtualBox. Create a new machine, and when it asks you for a hard drive, select use an existing drive. This takes you to the hard-drives list dialog box. From there, file..create a new drive, link it to the .vmdk file, select it, and you're all set. For the rest, all defaults are ok. (Bother Elliot for hints with VBox.)

There are a few items of note regarding the VM

  • Download is approximately 350MB, the tarball is about 1.5GB in size, and the virtual disk will expand up to 20gigs dynamically.
  • The download link is a virgin, freshly built VM, so you'll be the first user booting it up since build.
  • There are two users, root and workshop. Both have the password 'linux'
  • For the user workshop, ~/scripts/ is included in their $PATH
  • Also, user workshop has a few small files in ~/resources/ including a simple upcounter design example.
  • May need to run the network configuration tools to ensure you get functional networking. I've experienced issues with the VM in suspend mode, switching networks on the host machine, and completely loosing network on the VM until rerunning the network config tools. They can be found poking around in the system settings for yast.
  • Currently, the Xilinx Cable Drivers aren't building on the VM (but all the other Xilinx tools work). If someone is a linux guru and wants to try to make it work, contact me at [email protected]. My next attempt is to turn the vm into a live-install and try building the cable drivers on real hardware instead of a VM.
  • After loading the Xilinx settings (which will be covered in more detail when those tools are introduced), the current shell can no longer run icarus verilog flows. Start a new shell in order to run icarus verilog.
  • Its a fairly minimalist system, with the FOSS tools listed above load, along with firefox, gcc and nano. Use yast or yast2 in order to install any additional packages. example yast2 --install packname
  • If the download link stops working, the build has likely expired on the SuseStudio server. Please email [email protected] if the download link no longer works.
  • Mad props to the susestudio team for making this possible

Lecture

Lecture/Discussions will mainly be based on content from a pair of courses in MIT's Opencourseware initiative. This content is licensed on the Creative Commons Attribution NonCommercial Share-alike 3.0 license; as a result, the electronic content generated by the workshop will also need to be made available under the same license. This will allow people to freely access just the discussion slides without watching through videos.

A video archive will be link building service made available for those unable to attend. They are available here here.

List of Lectures

An archival list of lectures, including presentations and videos, can be found here

This is currently an incomplete list, additional topics will be added as I solidify them - will

Week Date Topics Covered Exercise Solutions/Approach
10 December 16th, 2009 Introduction to FPGAs - History, Capabilities and Features Exploring designs and FPGA tools Solutions
11 December 23rd, 2009 ISE Tutorial for Spartan 3E board Counter Source Video of HacDC FPGA blinkenlites
12 December 30th, 2009 Distribute kits, play with tutorial, work on usb drivers
13 January 5th, 2010 Implement Frequency Counter and Frequency Generator reference designs Spartan 3E Reference Designs
14 January 26th, 2010 Intro to PicoBlaze
15 February 2nd, 2010 Cancelled
16 February 16th, 2010 Analysis of Frequency counter PicoBlaze reference design
17 March 6nd, 2010 Picoblaze Flow / Hello World
18 March 23rd, 2010 FPGA hackins.
19 April 6th, 2010 FPGA hackins
19 April 20th, 2010 FPGA hackins

Workshop requirements

This workshop will be free of charge to attend, but there are additional needs in order to fully benefit from attending the workshop.

  • Open mind to learning
  • Willingness to read documentation, as the capacity for independent research is important for doing hardware design.
  • Willingness to commit time over this fall
  • Either ability to run a VMWare virtual machine, the ability to convert the VM for virtualBox, or ability to install the icarus verilog/gtkwave tools on your own. This will likely necessitate a laptop of some sort.
  • Xilinx.com account, for licensing Xilinx tools and IP.
  • Hardware will NOT be required at the beginning of the course but will be needed later on to run exercises and to do any interesting projects

Workshop Frequently Asked Questions

  1. What operating systems will the FPGA toolchain be available on?
    1. The Xilinx ISE Webpack is supported on Windows XP Pro, Windows Vista Business, Redhat Linux and Suse Linux Enterprise. For a detailed list of official OS support, check out the Operating system support page on Xilinx.com. The tools will run on openSuse as well. Feel free to try other linux distros and post your results.
  2. What is the cost of the FPGA development board we'll be using?
    1. The retail cost of the development board is typically around 199-220 USD, plus shipping, from a few different vendors. Links for that are here.
  3. Will there be homework?
    1. Since this isn't an academic course, there will not be graded homework in the traditional sense. I'll be choosing a few additional exercises that people can do outside of the workshop each week, if they wish, that will further help hone their skills.
  4. Will there be extensive C/C++ coding?
    1. C experience is not a prerequisite for this workshop. There will not be any C/C++ coding involved in the workshop directly. There is one project that I've got in mind that may be of interest to people that are proficient in C/C++ and pick up hardware design rather well.

Workshop Mailing List

A HacDC Mailman mailling list has been setup for this workshop. That list is [email protected]. You can subscribe to that list by sending an email to [email protected] with the subject line "subscribe" or click the mailto link [email protected]?Subject=subscribe and let your email application handle it...

Workshop Instructor

William Gibb, mad scientist. For contacting him regarding the workshop, please email [email protected].

References

Grateful Dead Trees Reference

Fundamentals of Digital Logic with Verilog Design by Brown and Vranesic
Verilog Quickstart: A Practical Guide to Simulation and Synthesis in Verilog by Lee
FPGA Prototyping using Verilog Examples by Chu.

These texts will not be required for the course, but are very good launching points for the topics that we are covering.

Online References

General Resources

Open Circuit Design Open Source design tools
Doulos Digital Design Resources Good learning and design references
ASIC World Good learning references
Play Hookey Digital Design Good learning references
'FPGA4Fun Lots of available IP
Companion website for Professor Pong Chu's Verilog Book
OpenCores Very good repository for IP. Also the home to the OpenRISC System on Chip project
Bucknell Handbook on Verilog HDL (Martin found this) Old but useful?
KD7IRS's Verilog - OpenHPSDR - Lectures Webcast style class, with lab
VA Tech Configurable Computing Lab Wiki Simple Radio Structures on the Spartan3e Starter Kit
VA Tech Configurable Computing Lab Wiki GNU Radio - USRP for Spartan 3E
San Jose State University Digital design course (EE178) with Spartan 3E Development board and ISE 8.1 - lecture & lab materials
George Washington University ECE128 Lab Contains good Verilog coding and testbench resources
FPGA Arcade Devoted to gaming on FPGAs, Space Invaders in VHDL...
Simplified Floating Point for DSP 8-bit exponent and 9-bit mantissa and sign to fit into 18 bit IP blocks - Thanks Cornell!

FPGA Vendors

Xilinx
Altera
Actel
Atmel FPGA
Silicon Blue
Point of Sale System
Lattice Semiconductor
Achronix

Course Resources

Icaurus Verilog
GTKWave
VMware Player - Free download for Windows and Linux
SUSE Studio SLED/OpenSUSE build service. Make VMs, live installs, all customized

Xilinx Links

Xilinx Tutorials
Xilinx ISE 10.1 Tutorial and files
ISE 10.1 In Depth Tutorial Direct link to PDF
Xilinx Documentation This includes device data sheets, user guides, IP documentation and Xilinx software manuals
Xilinx Design Tools Xilnx Software tools can be found here
Spatan 3E Starter Kit Site for the Spartan 3E kit
Spartan 3AN Starter Kit Site for the Spartan 3AN kit
Free Video Training courses Name says it all
Yet Another Xilinx ISE 10.1 Tutorial For Xess Spartan-3 Development Board

Spartan 3AN Starter Kit

Spartan 3AN Starter Kit
AVNet Spartan 3AN Starter Kit sales page
NuHorizons - Xilinx Vendor Do a search for HW-SPAR3AN-SK-UNI-G
Digi-key Spartan 3AN Starter Kit Sales page
Probably also at other suppliers.

Spartan 3E Starter Kit

Digilent

Group Order Participants

NOTE: Xilinx has donated 15 spartan3 boards, which should arrive before 12/7

  • Elliot
  • Justin

MIT OpenCourseWare links

MIT OCW Terms of Use
OCW site for 6.004 - Computation Structures
OCW site for 6.111 Introductory Digital Systems, 2006



FPGA Workshop Projects

List of FPGA projects people are working on at HacDC

Person Project
William Gibb AD/DA controller for Spartan 3E/3A/3AN Development Kits
Daniel (obscurite on #hacdc on freenode) Daniel's Project (Game of Life w/ Martin & Breakout VGA/LED?)
Alden Alden's Project
Dan Barlow Barlows's Project
Navid Navid's Project
Matt Liggett Matt's Project
Maitland Bottoms Maitland's Project
Ben Peizik ([email protected]) Ben's Project
Martin Martin's Project
Rob Seastrom ([email protected]) Justin's Project
Phillip Stewart Phillip's Project
Tim F ([email protected]) Tims Project
Nick Nick's Project
Brian PROM Burner/Reader
Elliot Elliots's Project
Justin Justin's Project
Arc Arcs SMT oven
Davel (DLotts) Davel's Project