Git Product home page Git Product logo

sycamore's People

Contributors

cospan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sycamore's Issues

device ROM table should use 8 32-bit values for each device instead of 4

The device ROM table is what the interfacing MCU or CPU uses to identify the cores within the FPGA, currently there are 4 32 bit words describing each device. The 32 bit words describe the device identification number, associated flags, the memory offset from the peripheral 0x00 location and the number of registers within the core.

there should be more space for more information. Possible types of information is a pointer offset to strings, or a pointer offset to more configuration data if the 4 isn't enough.

Serial Platform Driver

Need a serial platform driver that will be the user side interface to a sycamore core

UART protocol version 2

The UART protocol is inefficient.

right now it takes 128bits, or 16 bytes to send 4 bytes, it requires data to be sent down even when the commands for read and ping are sent down.

Here is the format
LAAAAAAABBBBBBBBCCDDDDDDEEEEEEEE

L = 'L' character
A = (24 bits) to send down (+1) including the data that is always sent down
B = (32 bits) for command, this can easily be cut down to 8bits and still leave room for growth of the command set
C = (8 bits ) device address a possible 256 devices are addressable (-2 for the DRT at 0, and the Control at 0xFF)
D = (32 bits) data

If the format were changes to
LBBAAAAACCDDDDDDEEEEEEEE
with the capability of only reading/writing certain fields when required
L = 'L' character
B = (8 bits) command
A = (20 bits) size of data (number corresponds to the number of actual bytes)
C = (8 bits) device address
D = (24 bits) address into device
E = (32 bits) data

commands can be implemented differently
Ping:
LBB

Read:
LBBAAAAACCDDDDDD

Write:
LBBAAAAACCDDDDDDEEEEEEEE(EEEEEEEE)

Response
Ping:
SBB

Read:
SBBAAAAAEEEEEEEE(EEEEEEEE)
-possibly leave out the count

Write:
SBBAAAAA

project_gen.tcl crashes when it encounters an empty directory

the project_gen.tcl script utilizes glob to search for any verilog file. When the arbitrator was added to the design it is sometimes populated when arbitrators are required, for this reason that directory can be empty. Right now glob throws an unhandled exception which crashes the script.

PCIE Driver and IO Handler

Need a PCIE driver to interface with Sycamore IO Handler, both sides need to be written.

There has been some success with recognizing the device with the current driver in /xylem/driver/pcie but reading and writing still need to be demonstrated as well as a protocol for transferring information between the CPU and the IO handler

Clock Agnostic problem

Somehow a clock master must be implemented.

As it is right now certain cores will not function correctly with any clock that is different than 50MHz

Possible solutions:

-always generate a 50MHz clock with something like a digital clock manager
-find a way to 'tell' each core what the clock rate is... there must be something that defines this somewhere like a `define CLOCK_RATE or something... I could make a script that determines the clock rate from the constraints file

There are multiple cores that depend on a specific clock rate.

GUI

Sycamore needs a GUI to develop projects

Add the capability to add parameters to the configuration file

'parameters' within Verilog allow a for a large degree of flexibility within an already written core. 'Parameters' are core specific so as apposed to a 'define' which will be a global define for every core.

I believe that a good place in the configuration file will be within the slave braces.

What needs to be modified is the gen_top.py file, the parameters would be added when the core is instantiated. It would be good if the parameter values could verify that they are indeed within in a core instead of blindly declaring them

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.