Skip to content
This repository has been archived by the owner on Dec 17, 2019. It is now read-only.
cospan edited this page Nov 7, 2011 · 4 revisions

Sycamore

The purpose of Sycamore is to simplify HDL development by encapsulating the generic FPGA operations into scripts including: core generation, inter-core communication within an FPGA, host communication, and driver development.

the project is split up into three parts: miracle-grow, sap, and xylem.

  1. miracle-grow: primarily Verilog, users write wishbone slaves that are the main focus of a particular design
  2. sap:the python script wrapper that is used to generate a Xilinx planahead project that will be used to generate an FPGA bit file
  3. xylem: the host side drivers and software support used to communicate with an FPGA

Basic Idea

In order to realize a design with an FPGA one must have an understanding of:

  1. An HDL language such as Verilog and/or VHDL.
  2. Knowledge about how an the physical portion of the FPGA interacts with a core.
  3. How to share information between FPGA's cores.
  4. How to get data from and to an FPGA with different physical communication protocols.
  5. Generate a useful user interface for all this.

Sycamore simplifies all of these, except for the first one.

Theory

Sycamore is not designed for all FPGA projects. Sycamore is designed for projects that is primarily controlled by an external host such as a microcontroller, or one of the many OS flavors through a variety of mediums such as serial ports, PCI Express, or USB.

The basic idea of sap is to use a configuration file to describe the structure of a project where the user introduces their project specific core that the script will incorporate.

Developers can generate their Sycamore compliant core with a slave generation script in miracle grow that will not only generate a slave but will create a Icarus Makefile and iverilog setup to easily exercise their core in a simulated environment.

Xylem is the Linux drivers and udev rules project that interrogates the FPGA to determine what functions that the FPGA is capable of and loads the appropriate file that presents the user with recognizable device files that can be easily integrated into a Linux based environment.

Clone this wiki locally