All Projects → pergola-fpga → pergola

pergola-fpga / pergola

Licence: MIT license
Low-cost ECP5 FPGA development board

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to pergola

e-verest
EVEREST: e-Versatile Research Stick for peoples
Stars: ✭ 21 (-67.19%)
Mutual labels:  fpga, ecp5
iceskate
A low cost FPGA development board for absolute newbies
Stars: ✭ 15 (-76.56%)
Mutual labels:  fpga, fpga-board
gateware
A collection of little open source FPGA hobby projects
Stars: ✭ 38 (-40.62%)
Mutual labels:  fpga, ecp5
verifla
Fork of OpenVeriFla - FPGA debugging logic analyzer to use with your designs - examples (so far) for ice40/IceStorm
Stars: ✭ 21 (-67.19%)
Mutual labels:  fpga, lattice
docker-fpga
Dockerized FPGA toolchain experiments
Stars: ✭ 18 (-71.87%)
Mutual labels:  fpga, lattice-fpga
Alhambra-II-FPGA
🌟 Alhambra II FPGA board
Stars: ✭ 63 (-1.56%)
Mutual labels:  fpga, fpga-board
JSON-for-VHDL
A JSON library implemented in VHDL.
Stars: ✭ 56 (-12.5%)
Mutual labels:  fpga, lattice
kianRiscV
KianRISC-V! No RISC-V, no fun! RISC-V CPU with strong design rules and unittested! CPU you can trust! kianv rv32im risc-v a hdmi soc with harris computer architecture in verilog: multicycle, singlecycle and 5-stage pipelining Processor. Multicycle Soc with firmware that runs raytracer, mandelbrot, 3d hdmi gfx, dma controller, etc.....
Stars: ✭ 167 (+160.94%)
Mutual labels:  fpga, ecp5
1bitSDR
Minimal SDR with Lattice MachXO2 FPGA. And a port to Cyclone3 by Steven Groom
Stars: ✭ 53 (-17.19%)
Mutual labels:  fpga, lattice
shapool-core
FPGA core for SHA256d mining targeting Lattice iCE40 devices.
Stars: ✭ 19 (-70.31%)
Mutual labels:  fpga, lattice-fpga
fpga-docker
Tools for running FPGA vendor toolchains with Docker
Stars: ✭ 54 (-15.62%)
Mutual labels:  fpga, lattice
platform-lattice ice40
Lattice iCE40: development platform for PlatformIO
Stars: ✭ 34 (-46.87%)
Mutual labels:  fpga, lattice
Shuhai
Shuhai is a benchmarking-memory tool that allows FPGA programmers to demystify all the underlying details of memories, e.g., HBM and DDR4, on a Xilinx FPGA
Stars: ✭ 53 (-17.19%)
Mutual labels:  fpga
pdp6
PDP-6 Emulator
Stars: ✭ 47 (-26.56%)
Mutual labels:  fpga
FPGA-CNN
This repo is for ECE44x (Fall2015-Spring2016)
Stars: ✭ 17 (-73.44%)
Mutual labels:  fpga
SpinMonteCarlo.jl
Markov chain Monte Carlo solver for lattice spin systems implemented by Julialang
Stars: ✭ 35 (-45.31%)
Mutual labels:  lattice
quartus-install
Install Intel FPGA 'Quartus Prime' software on remote servers
Stars: ✭ 33 (-48.44%)
Mutual labels:  fpga
Limago
Limago: an FPGA-based Open-source 100 GbE TCP/IP Stack
Stars: ✭ 95 (+48.44%)
Mutual labels:  fpga
t2sp
Productive and portable performance programming across spatial architectures (FPGAs, etc.) and vector architectures (GPUs, etc.)
Stars: ✭ 24 (-62.5%)
Mutual labels:  fpga
SpinalCrypto
SpinalHDL - Cryptography libraries
Stars: ✭ 36 (-43.75%)
Mutual labels:  fpga

Pergola FPGA

The Pergola FPGA board is a low-cost, open-source FPGA development board featuring the Lattice ECP5 FPGA.

Pergola FPGA top view

Current status

RevA 0.1

A handful of units have been built for initial test and bringup populated with LFE5U-12F-8BG256C.

It has been tested and works if the fixes below are applied.

Errata:

  • iMX ROM bootloader freezes because the UART RX pin is pulled low by the FPGA during boot. (FPGA pin is PL35B_VREF_1_6) A 4K7 pull-up is probably not enough, the voltage drops to 2.9V. Workaround: Bodge a 1K pull-up between UART_RX and 3V3.
  • Wrong load caps for the xtal. Should be 20pF.
  • SWD IO and CLK are swapped on the silk.
  • IMX_BOOT_MODE_0 and IMX_BOOT_MODE_1 are swapped on the silk.
  • A 1K pull-down is on the ~FPGA_HOLD~ net to allow the iMX to use the flash exclusively during boot-up.

Firmware

TODO.

Currently I have a very ugly test project that can be loaded into the iMX's RAM using the ROM bootloader. This will open up a CDC interface that can be used to send a bitstream to the FPGA.

Currently working on porting the UF2 bootloader in order to update the firmware easily using USB and not having to use the SWD pins.

Current horrible hack is located over at git.xil.se and contains a prebuilt binary.

The firmware will expose a cdc_acm device over USB. To program a bitstream, you simply have to write the number of bytes it is, followed by a newline (\n), followed by the bitstream.

Getting started

  • Clone my fork of the imx usb loader project:
git clone https://github.com/kbeckmann/imx_usb_loader && cd imx_usb_loader
  • Checkout the imxrt1010 branch:
git checkout imxrt1010
  • Build it:
make
cd .. && git clone https://github.com/pergola-fpga/pergola && cd pergola/firmware
  • Run the loader:
../../imx_usb_loader/imx_usb

. You might have to run it with sudo.

  • Check dmesg to see if you got a cdc_acm device, e.g. ttyACM0
  • Now you'll be able to send a bitstream to the board:
export ACM_DEVICE=/dev/ttyACM0
export PROGRAM_BIN=path/to/your/top.bin

# If you don't have setup udev rules
sudo chown $UID:$GID $ACM_DEVICE

# Configure the ACM device to be raw, this prevents weird stuff from happening when we send raw binary data.
stty -F $ACM_DEVICE 300 raw -clocal -echo icrnl;
sleep 0.01;
cat $ACM_DEVICE &;
echo -n "$(stat -c%s $PROGRAM_BIN)\n" > $ACM_DEVICE;
cp $PROGRAM_BIN $ACM_DEVICE; sync
  • This should generate the following output more or less:
Reading 582369 bytes
READ_ID: ff ff ff ff 21 11 10 43

Done programming. FPGA_DONE=1
P E R G O L A

<bytes to load><\n>; Load bitstream to FPGA SRAM
  • There is also an nmigen board definition in gateware/nmigen_wip/pergola.py

How to contribute

Feel free to submit a PR, create an issue.

Discussion happens on Gitter for the time being. You can also ping @kbeckmann on Twitter.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].