https://github.com/3it-inpaqt/fpga_readings

Recipe for FPGA cooking

https://github.com/3it-inpaqt/fpga_readings

Science Score: 23.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org, springer.com
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.9%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Recipe for FPGA cooking

Basic Info
  • Host: GitHub
  • Owner: 3it-inpaqt
  • License: apache-2.0
  • Default Branch: master
  • Homepage:
  • Size: 51.8 MB
Statistics
  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Fork of lastweek/fpga_readings
Created over 4 years ago · Last pushed almost 5 years ago

https://github.com/3it-inpaqt/fpga_readings/blob/master/

```
 _____ ____   ____    _    
|  ___|  _ \ / ___|  / \   
| |_  | |_) | |  _  / _ \  
|  _| |  __/| |_| |/ ___ \ 
|_|   |_|    \____/_/   \_\
```

## Updates

07/14/2021:

Just a couple thoughts I want to share.

This repo has not been updated for a while. Although I'm still collecting FPGA pages in my own Zotero, I haven't added them here.
Also, I no longer use Xilinx HLS as my main development language.
I started using Scala-based languages such as SpinalHDL and Chisel (mostly SpinalHDL). I think they are very expressive,
practical, and fit the hardware model very well. And they have been used across many successful projects (e.g., Xiangshan, BOOM, etc).

Xilinx HLS still has its place in Industy, at least for now. Google's latest Video Processing Unit (ASPLOS'21) is designed using HLS.
They praise for HLS's C++ model, hence able to enjoy a lot language sanity checking. I guess they must have a set of good HLS
practices to make it work.

Also, if you are into network-related processing, go checkout the Corundum.io project. In fact, check out all the projects from Alex Forencich.
Dude is a lengend in the open-source FPGA world, he is making such a big impact on the whole research community.

FPGA has never been so hot for system researchers. People are using it to build various things, prototyping for ASIC etc.
It aids networking, storage, machine learning. With those high-quality open-source RISC-V cores, network stack and so on, sky is the limit.

Everyone is welcomed to contribute. You can add new papers, new code, new practice lessons, and so on.

# Cook FPGA

This repository is intended for folks who are new and want to learn something about FPGA.
This repository is a collection of useful resources and links rather than a thorough FPGA tutorial.
Traditional HDL (Hard and Difficult Language) is not the main focus,
instead, we focus on using high-level languages (e.g., C++) to cook FPGA.

Originally, this repository was started by a newbie to record his learning of FPGA,
and late made public in the hope that it could help researchers to start
their journey along with FPGA, with less pain and whiskey.

Resources collected here, or the way contents are organized, are not in their perfect shape.
This repository is still raw and need major improvements. Any form of contribution is welcomed and appreciated.

Main contents:
- __`README.md`__
	- Basics about Digital Design
	- Basics about FPGA
	- Relevant Courses and Books
	- Papers about FPGA internal
- __`Xilinx`__
	- `xilinx.md`
	- `xilinx_constraints.md`
	- `xilinx_cheatsheet.md`
	- `xilinx_lessons_vivado.md`
	- `xilinx_lessons_hls.md`
- __`submodules/`__: Github repositories about FPGA
- __`hls/`__: Sample Xilinx HLS C++ code
	- AXI Stream
	- Network protocol processing
- __`xilinx_arty_a7`__: Sample Xilinx projects for Arty A7 100 board
	- Tri-mode MAC reference design
	- Simple LED
	- Clocked LED
- __`FAQ.md`__
	- Some implementation questions about FPGA

## Resources 

### Papers

[List of academic papers](https://github.com/lastweek/FPGA/blob/master/papers.md).

### FPGA Intro
- [URL: RapidWright FPGA Architecture Basics](http://www.rapidwright.io/docs/FPGA_Architecture.html)
- [URL: RapidWright Xilinx Architecture Terminology](http://www.rapidwright.io/docs/Xilinx_Architecture.html)
- [Book: Parallel Programming for FPGAs](https://arxiv.org/abs/1805.03648)
	- Basic about FPGA and HLS
- [URL: All about FPGAs, EE Times](https://www.eetimes.com/document.asp?doc_id=1274496)
- [Slides: Intro FPGA CSE467 UW](https://courses.cs.washington.edu/courses/cse467/03wi/FPGA.pdf)
- [URL: I/O Pads](http://www2.eng.cam.ac.uk/~dmh/4b7/resource/section14.htm)
  	- BGA Wiki: In a BGA the pins are replaced by __pads__ on the bottom of the package. If you check PGA package, you will know the difference between pin and pad, and immediately get why it is called pad. And you will also know what's the pad in the IO Block diagram.

### Digital Basics
- [PDF: The Digital World](http://web.mit.edu/6.111/volume2/www/f2018/handouts/TheDigitalWorld.pdf)
- [Wiki: Differential signaling](https://en.wikipedia.org/wiki/Differential_signaling) and [Wiki: Single-ended signaling](https://en.wikipedia.org/wiki/Single-ended_signaling)
    - [Paper: Differential Signals The Differential Difference! Douglas Brooks](https://www.ultracad.com/articles/differentialsignals.pdf)
- [Book: Digital design and computer architecture](https://www.amazon.com/Digital-Design-Computer-Architecture-Harris/dp/0123944244/ref=asc_df_0123944244/?tag=hyprod-20&linkCode=df0&hvadid=312060980065&hvpos=1o4&hvnetw=g&hvrand=12891765886685173497&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocphy=9016722&hvtargid=aud-467599743108:pla-459777269741&psc=1)
- [Content-Addressable Memory Introduction](https://www.pagiamtzis.com/cam/camintro/)

### Verilog
- [Verilog Introduction](http://www.lsi.upc.edu/~jordicf/Teaching/secretsofhardware/VerilogIntroduction_Nyasulu.pdf)
- [Verilog HDL Quick Reference Card](http://www.ece.uvic.ca/~fayez/courses/ceng465/vlogref.pdf)
- [Xilinx UG901 Synthesis](https://www.xilinx.com/support/documentation/sw_manuals/xilinx2017_1/ug901-vivado-synthesis.pdf)

### High-Level Synthesis (HLS)
- [A Survey and Evaluation of FPGA High-Level Synthesis Tools](https://janders.eecg.utoronto.ca/pdfs/tcad_hls.pdf)
- [Xilinx Introduction to FPGA Design with Vivado High-Level Synthesis](https://www.xilinx.com/support/documentation/sw_manuals/ug998-vivado-intro-fpga-design-hls.pdf)
- [Xilinx Vivado Design Suite User Guide High-Level Synthesis](https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_2/ug902-vivado-high-level-synthesis.pdf)
- [Xilinx SDAccel Development Environment Help for 2018.2 XDF](https://www.xilinx.com/html_docs/xilinx2018_2_xdf/sdaccel_doc/index.html)
- [The Zynq book](http://www.zynqbook.com/)
- [Parallel Programming for FPGAs](https://arxiv.org/abs/1805.03648)
- [GMU ECE 699 Software/Hardware Co-design S15](https://ece.gmu.edu/coursewebpages/ECE/ECE699_SW_HW/S15/)
- [CMU ECE 18-643](http://users.ece.cmu.edu/~jhoe/doku/doku.php?id=18-643_course_schedule_fall_2017)
- [Cornell ECE5775 from Prof. Zhiru Zhang](http://www.csl.cornell.edu/courses/ece5775/)

### Courses
- [Online: Real Digital](https://www.realdigital.org/)
- [CMU ECE 18-643](http://users.ece.cmu.edu/~jhoe/doku/doku.php?id=18-643_course_schedule_fall_2017)
    - I like its slides, very informative. Slides about PR, Verilog, HLS are good.
    - Also read its references, all quite good papers.
- [Cornell ECE5775 from Prof. Zhiru Zhang](http://www.csl.cornell.edu/courses/ece5775/)
- [GMU ECE 699 Software/Hardware Co-design S16](https://ece.gmu.edu/coursewebpages/ECE/ECE699_SW_HW/S16/)
- [GMU ECE 699 Software/Hardware Co-design S15](https://ece.gmu.edu/coursewebpages/ECE/ECE699_SW_HW/S15/)
    - DAMN, this is a good and practical course.
- [MIT 6.111 Introductory Digital Systems Laboratory](http://web.mit.edu/6.111/volume2/www/f2018/index.html)
- [MIT 6.375 Complex Digital Systems](http://csg.csail.mit.edu/6.375/6_375_2016_www/index.html)
- [UCB EECS 151/251A](http://inst.eecs.berkeley.edu/~eecs151/sp18/)

### Books
- [Parallel Programming for FPGAs](https://arxiv.org/abs/1805.03648)
- [The Zynq book](http://www.zynqbook.com/)
- [FPGAs for Software Programmers](https://www.springer.com/us/book/9783319264066)
- [Data Processing on FPGAs, Synthesis Lectures on Data Management](https://www.morganclaypool.com/doi/abs/10.2200/S00514ED1V01Y201306DTM035)

Owner

  • Name: Integrated Nanoelectronics and Packaging for AI and Quantum Technologies (INPAQT)
  • Login: 3it-inpaqt
  • Kind: organization
  • Location: Sherbrooke, Canada

Sherbrooke University – Institut Interdisciplinaire d'Innovation Technologique (3IT) – Laboratoire Nanotechnologies et Nanosystèmes (LN2)

GitHub Events

Total
Last Year