Nysa

From Cospan Design Wiki
Jump to: navigation, search
(Modify SDRAM caption)
 
Line 1: Line 1:
Nysa is an FPGA toolset that aims at simplifying both generating cores and entire images that can be downloaded to various platforms. The toolset also presents an API and many userland drives that interfaces with the executing image.
+
Nysa is a set of tools that are used to both develop for FPGAs and communicate with FPGA based platforms. It can be broken down into three categories:
  
The toolchain can be broken down into three branches
+
# '''cbuilder''' Tools to generate, simulate and view the waveforms of developing HDL cores.
*CBuilder (Core Builder): Create Wishbone or Axi Compliant cores. The cbuilder tool will also generate 'make files' to simplify compiling, simulating and viewing waveforms
+
# '''ibuilder''' Tools to generate FPGA images from configuration files.
*IBuilder (Image Builder): Create FPGA images graphically using component blocks
+
# '''host''' An API that interacts with FPGA images created from the above step.
*Host (Host API): A set of APIs and tools to interface with an FPGA image
+
 
 +
 
 +
== Goals ==
 +
 
 +
FPGAs are very versatile, generally, they can be used to interface with a wide variety of devices and process data. They can be challenging to use though. The aim of Nysa is to open up FPGAs to a wider audience. Nysa attempts to accomplish this by breaking the FPGA development down into three sections. As mentioned above the different sections include: generating cores that will be used to interact with devices attaches to an FPGA or process data, A tool that reads in a configuration file and outputs a Xilinx project that can be used build an FPGA image, and finally an API that can be used to interact with the FPGA generated from the previous section.
 +
 
 +
== Description ==
 +
 
 +
The three subgroups of Nysa
 +
=== Core Builder (cbuilder) ===
 +
Create Wishbone or Axi compliant cores. The user uses a script 'nysa-generate-slave' to generate a directory, this directory is set up with a verilog core ready to be modified as well as a Scons (Python makefile) file, A simple configuration file to add/remove more verilog cores to the build a simulation configuration file to inject stimulus to exercise your developing core and finally a command to open up the waveform. See [cbuilder] page for more detail.
 +
=== Image Builder (ibuilder) ===
 +
Create FPGA images. A JSON based configuration file, here is an excerpt of the configuration file where a user is adding a GPIO core and then attaching that core to pins.
 +
 
 +
 
 +
    "SLAVES":{
 +
        "gpio1":{
 +
            "filename":"wb_gpio.v",
 +
            "unique_id":1,
 +
            "bind":{
 +
                "gpio_out[1:0]":{
 +
                    "loc":"led[1:0]",
 +
                    "direction":"output"
 +
                },
 +
                "gpio_in[3:2]":{
 +
                    "loc":"button[1:0]",
 +
                    "direction":"input"
 +
                }
 +
            }
 +
        }
 +
    },
 +
 
 +
=== Host ===
 +
Users can interface with an FPGA using a Python or C API, see the main page for more details on the host interface but here is a simple example of flashing all the LEDs on a GPIO core (Note: not shown below is the platform specific instantiation of the Nysa platform (n)):
 +
 
 +
    dev_index = n.find_device(GPIO.get_core_id())
 +
    if dev_index is None:
 +
        print "Failed to find GPIO Device!\n"
 +
        return
 +
    gpio = GPIO(n, dev_index)
 +
 +
    print "Testing output ports (like LEDs)"
 +
 +
    print "Flashing all the outputs for one second"
 +
 +
    print "Set all the ports to outputs"
 +
    gpio.set_port_direction(0xFFFFFFFF)
 +
 +
    print "Set all the values to 1s"
 +
    gpio.set_port_raw(0xFFFFFFFF)
 +
    time.sleep(1)
 +
    print "Set all the values to 0s"
 +
    gpio.set_port_raw(0x00000000)
 +
 
 +
== Usage ==
  
 
==Screen Shots==
 
==Screen Shots==
Line 17: Line 71:
 
File:Master core dump.png | Debugging the master core with a data core dump
 
File:Master core dump.png | Debugging the master core with a data core dump
 
</gallery>
 
</gallery>
 +
 +
==Table of Images==
 +
A table of FPGA images that can be used with Dionysus can be found here:
 +
[https://docs.google.com/spreadsheets/d/1PvEjtT1SclWkzc0p8QoxulPZRQpZGy9w9i3-DZggx7s/edit?usp=sharing Dionysus Table]

Latest revision as of 12:21, 29 July 2014

Personal tools
Namespaces
Variants
Actions
Navigation
Toolbox