BeagleBoard/BeagleWire

From eLinux.org
Jump to: navigation, search


BeagleWire

Bw title.jpg

BeagleWire - FPGA development cape for the BeagleBone

The BeagleWire is an FPGA development platform that has been designed for use with BeagleBone boards. BeagleWire is a cape on which there is FPGA device - Lattice iCE40HX. The Lattice iCE40 is a family of FPGAs with a minimalistic architecture and very regular structure, designed for low-cost, high-volume consumer and system applications. The significance of FPGAs is continuously increasing, as they are more and more often used for supporting work of ARM processors. BeagleWire does not require external tools (JTAG) and the whole software is Open Source. iCE40 is an energy saving device, allowing to work with small batteries. FPGA cape allows easy and low cost start for beginners who would like to take their first steps in working with FPGAs. The developed software will be an easy and, at the same time, efficient tool for communication with FPGA. At this point FPGA will be able to meet the requirements of even more advanced applications. The BeagleWire creates a powerful and versatile digital cape for users to create their imaginative digital designs.

BeagleWire features:

  • FPGA: Lattice iCE40HX4K - TQFP 144 Package
  • GPMC port access from the BeagleBone
  • SPI programming port from the BeagleBone
  • 4 layer PCB optimized design to support maximum performance for high bandwidth applications
  • BeagleBoard optimized - compatible with BeagleBone Black, BeagleBone Black Wireless, element14 BeagleBone Black Industrial
  • does not require external tools (JTAG)
  • minimalistic architecture and very regular structure
  • energy saving device allows to work with small batteries
  • lower application costs
  • fully open-source toolchain

BeagleWire Peripherals:

  • 32 MB SDRAM
  • 100Mhz external clock
  • 4 LEDs
  • 4 PMOD connectors
  • 4 Grove connectors
  • 2 user push buttons
  • 2 input DIP switch

Software\Driver support

BeagleWire software support is still developing. You can find there a lot of useful examples and ready to use solutions. For communication between FPGA and ARM, We can use the GPMC. This is an easy and efficient solution. BeagleWire software repostitory has special components for it. You can just mapping your logic in BeagleBone memory. A lot of examples has kernel driver e.g. SPI, GPIO. After preparing the FPGA device you can use it as typical GPIO/SPI from user space. A part of examples which don't belong to kernel subsystems e.g. rotary excoder, ultrasonic ranger sensor or blink leds. In this examples You can connect which FPGA using write/read operation for /dev/mem file.

Authors

The project is the result of the community work and it is still developing. If you can support this project or do you have any questions, feel free to ask as.
Michael Welling mwelling@ieee.org
Patryk Mezydlo mezydlo.p@gmail.com

Resources

BeagleWire KiCAD Repository
BeagleWire Software Repository
BeagleWire Hackaday.io project page
BeagleWire Hackster.io project page
BeagleWire Schematic

User Manual

Block Diagram

Board Diagram

Bw diagram.png


Pinout Diagram

More information about pin connections you can find in:BeagleWire pcf file or BeagleWire Schematic

Quick Start Guide

Prepare BBB Image

You have to prepare custom kernel image, is easy instruction how to do it here: BBB prepare image instruction

Install the IceStorm toolchain

You can install toolchain on PC or BBB.

Synthesizing Verilog code using IceStorm toolchain

Programming the FPGA from the BeagleBone

You have to prepare custom kernel image, is easy instruction how to do it here: BBB prepare image instruction For programming We use SPI. You have to install overlay for enabling SPI and GPMC.

Examples

BeagleWire software repository has a lot of different source. Here I'm showing you how to use it. We can divided examples for two parts. The first part is the simplest examples which don't have own subsystem in Linux kernel e.g. rotary excoder, ultrasonic ranger sensor or blink leds. In this examples We can connect which FPGA using write/read operation for /dev/mem file.