All Projects → cambridgehackers → Connectal

cambridgehackers / Connectal

Licence: mit
Connectal is a framework for software-driven hardware development.

Projects that are alternatives of or similar to Connectal

gateware-ts
Hardware definition library and environment for designing and building digital hardware for FPGAs, using only open source tools
Stars: ✭ 83 (-29.06%)
Mutual labels:  fpga, hardware, verilog
Openfpgaduino
All open source file and project for OpenFPGAduino project
Stars: ✭ 137 (+17.09%)
Mutual labels:  verilog, hardware, fpga
xeda
Cross EDA Abstraction and Automation
Stars: ✭ 25 (-78.63%)
Mutual labels:  fpga, hardware, verilog
Verilog
Repository for basic (and not so basic) Verilog blocks with high re-use potential
Stars: ✭ 296 (+152.99%)
Mutual labels:  verilog, hardware, fpga
Nyuziprocessor
GPGPU microprocessor architecture
Stars: ✭ 1,351 (+1054.7%)
Mutual labels:  verilog, hardware, fpga
Platformio Atom Ide
PlatformIO IDE for Atom: The next generation integrated development environment for IoT
Stars: ✭ 475 (+305.98%)
Mutual labels:  verilog, hardware, fpga
Cascade
A Just-In-Time Compiler for Verilog from VMware Research
Stars: ✭ 413 (+252.99%)
Mutual labels:  verilog, hardware, fpga
Platformio Vscode Ide
PlatformIO IDE for VSCode: The next generation integrated development environment for IoT
Stars: ✭ 676 (+477.78%)
Mutual labels:  verilog, hardware, fpga
J1sc
A reimplementation of a tiny stack CPU
Stars: ✭ 64 (-45.3%)
Mutual labels:  verilog, fpga
Jt gng
CAPCOM arcade hardware accurately replicated on MiST and MiSTer FPGA platforms. It covers Ghosts'n Goblins, 1942, 1943, Commando, F1-Dream, GunSmoke, Tiger Road, Black Tiger, Bionic Commando, Higemaru, Street Fighter and Vulgus.
Stars: ✭ 65 (-44.44%)
Mutual labels:  verilog, fpga
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-2.56%)
Mutual labels:  verilog, fpga
Core jpeg
High throughput JPEG decoder in Verilog for FPGA
Stars: ✭ 64 (-45.3%)
Mutual labels:  verilog, fpga
Haddoc2
Caffe to VHDL
Stars: ✭ 57 (-51.28%)
Mutual labels:  hardware, fpga
Symbiflow Examples
Example designs showing different ways to use SymbiFlow toolchains.
Stars: ✭ 71 (-39.32%)
Mutual labels:  verilog, fpga
Fpga101 Workshop
FPGA 101 - Workshop materials
Stars: ✭ 54 (-53.85%)
Mutual labels:  verilog, fpga
Ustc Rvsoc
FPGA-based RISC-V CPU+SoC.
Stars: ✭ 77 (-34.19%)
Mutual labels:  verilog, fpga
Kactus2dev
Kactus2 is a graphical EDA tool based on the IP-XACT standard.
Stars: ✭ 82 (-29.91%)
Mutual labels:  hardware, fpga
Rggen
Code generation tool for configuration and status registers
Stars: ✭ 54 (-53.85%)
Mutual labels:  verilog, fpga
Antikernel
The Antikernel operating system project
Stars: ✭ 75 (-35.9%)
Mutual labels:  verilog, fpga
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-5.98%)
Mutual labels:  verilog, fpga

Connectal

Connectal provides a hardware-software interface for applications split between user mode code and custom hardware in an FPGA. Portal can automatically build the software and hardware glue for a message based interface and also provides for configuring and using shared memory between applications and hardware. Communications between hardware and software are provided by a bidirectional flow of events and regions of memory shared between hardware and software. Events from software to hardware are called requests and events from hardware to software are called indications, but in fact they are symmetric.

A logical request/indication pair is referred to as a portal". An application can make use of multiple portals, which may be specified independently. A portal is specified by a BSV interface declaration, from which connectalgen generates BSV and C++ wrappers and proxies.

Connectal has a mailing list: https://groups.google.com/forum/#!forum/connectal

See the documentation for more details: http://www.connectal.org/doc/current/ref/

Supported Platforms

Connectal supports Android on Zynq platforms, including zedboard and zc702.

Connectal supports Linux on x86 with PCIe-attached Virtex and Kintex boards (vc707, kc705).

Connectal supports bluesim as a simulated hardware platform.

Installation

  1. Install the Bluespec compiler. Connectal is known to work with 2014.07.A and 2015.05.beta1

Install the bluespec compiler. Make sure the BLUESPECDIR environment variable is set appropriately:

export BLUESPECDIR=~/bluespec/Bluespec-2014.07.A/lib
  1. Install Vivado 2015.2 or 2015.4

  2. Install Connectal

    sudo add-apt-repository -y ppa:jamey-hicks/connectal
    sudo apt-get update
    sudo apt-get -y install connectal
    

Building from Source

  1. Checkout out the following from github:

    git clone git://github.com/cambridgehackers/connectal
    

    If you are generating code for an FPGA, check out fpgamake:

    git clone git://github.com/cambridgehackers/fpgamake
    

    It appears that this requires buildcache to be checked out also:

    git clone git://github.com/cambridgehackers/buildcache
    

    Add USE_BUILDCACHE=1 to your calls to make to enable it to cache, otherwise it will rerun all compilation steps.

  2. Install connectal dependences. This installs ubuntu packages used by connectal or during compilation:

    cd connectal;
    sudo make install-dependences
    
  3. If you are using an FPGA attached to your machine, install the drivers:

    make all
    sudo make install
    

Preparation for Zynq

  1. Get [http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2015-2.html](Vivado 2015.2)

  2. Download the Android Native Development Kit (NDK) from: http://developer.android.com/tools/sdk/ndk/index.html (actual file might be: http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.tar.bz2 )

    Connectal uses NDK to compile code to run on Zynq platforms.

    Add the NDK to your PATH.

    URL=http://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.tar.bz2
    curl -O `basename $URL` $URL
    tar -jxvf `basename $URL`
    PATH=$PATH:/scratch/android-ndk-r10e/
    
  3. Download and install ADB from the Android Development Tools.

    The Android Debug Bridge (adb) is packaged in platform-tools. Connectal uses adb to transfer files to and from the Zedboard over ethernet and to run commands on the Zedboard.

    User your browser to accept the conditions and download the SDK installation tarball:

    http://dl.google.com/android/android-sdk_r22.6.2-linux.tgz
    

    Unpack the installation tarball:

    tar -zxvf android-sdk_r22.6.2-linux.tgz
    

    Run the android tool to install SDK components

    ./android-sdk-linux/tools/android
    

    Deselect all components except for "Android SDK Platform-Tools" (screenshot) and then click the "Install ... package" button to install (screenshot) and then accept the license. (screenshot)

    Add adb to your path:

    PATH=$PATH:$PWD/android-sdk-linux/platform-tools
    
  4. Create/obtain a boot.bin and SD card image for your board

Follow the instructions at https://github.com/cambridgehackers/zynq-boot

Copy the files to the SD card, eject the card from the PC, and plug it into the zedboard/zc702/zc706 and boot.

Preparation for Kintex and Virtex boards

  1. Get [http://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vivado-design-tools/2013-2.html](Vivado 2013.2)

  2. Install the drivers

    make
    sudo make install
    sudo modprobe portalmem
    
  3. Get fpgajtag

    git clone git://github.com/cambridgehackers/fpgajtag
    cd fpgajtag
    make all && sudo make install
    

Examples

Generally cd to the project directory, then type

cd examples/examplename
make build.<target>
make run.<target>

where target is

Command suffix Function
bluesim compile for simulation
zedboard compile for zedboard
zybo compile for zybo
zc702 compile for zc702 board
zc706 compile for zc706 board
kc705 compile for kc705 board
vc707 compile for vc707 board
vc709 compile for vc709 board
nfsume compile for NetFPGA-SUME board

To turn on more verbosity for debugging when running make, add V=1 to command line, as

make examples/examplename.<something> V=1

or

V=1 make examples/examplename.<something>

To run the example on a machine different than the build machine, use RUNPARAM=hostname-or-addr:

make RUNPARAM=zedtest run.zedboard
make RUNPARAM=192.168.1.123 run.vc707

Bitstream Packaging

The FPGA bitstream is included in the application executable, and the FPGA is automatically programmed when the application is run:

cd examples/echo
make build.vc707
./vc707/bin/ubuntu.exe

We are running Android on the Zynq devices and so the application executable is called android.exe.

Echo Example

## this has only been tested with the Vivado 2013.2 release
. Xilinx/Vivado/2013.2/settings64.sh

make -C examples/echo build..zedboard

or

make -C examples/echo build.zc702

or

make -C examples/echo build.kc705

or

make -C examples/echo build.vc707

To run on a zedboard with IP address aa.bb.cc.dd:

RUNPARAM=aa.bb.cc.dd make -C examples/echo run.zedboard

Memcpy Example

make -C examples/memcpy build.vc707

Analytics

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].