<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
 <title>Connectal Project</title>
 <link href="/" rel="self"/>
 <link href=""/>
 <updated>2016-07-01T13:13:18+00:00</updated>
 <id></id>
 <author>
   <name></name>
   <email></email>
 </author>

 
 <entry>
   <title>Bundling Bitstreams into Applications</title>
   <link href="/2015/09/08/bundling-bitsreams.html"/>
   <updated>2015-09-08T00:00:00+00:00</updated>
   <id>/2015/09/08/bundling-bitsreams</id>
   <content type="html">&lt;p&gt;One of the problems we wrestled with for a while was version skew
between application executables and their corresponding FPGA
bitstreams.&lt;/p&gt;

&lt;p&gt;We thought about embedding an application ID and version register into
the programmable logic and then checking it when the application
software connects to the hardware. This approach runs into the same
problem as the version numbers on Linux shared objects. It leads to
manual management of the version number, distinguishing compatible
from incompatible changes.&lt;/p&gt;

&lt;p&gt;Another problem is keeping track of which bitstreams are associated
with an application.&lt;/p&gt;

&lt;p&gt;Eventually, we decided just to embed the bitstream into the
application executable, and then extended this approach to work with
shared libraries, although it will currently only work with one shared
library per application.&lt;/p&gt;

&lt;p&gt;When the application or library first uses the hardware, it
automatically invokes fpgajtag to program the hardware, pointing
fpgajtag at the executable or shared library itself. The fpgajtag
utility extracts the bitstream from the “fpgadata” section, which was
added at build time, and programs the hardware with it. Once this has
completed, the application software may safely use the hardware.&lt;/p&gt;
</content>
   
      <category term="connectal"/>
   
 </entry>
 
 <entry>
   <title>Simplifying Zynq Boot</title>
   <link href="/2015/02/11/1-simplifying-zynq-boot.html"/>
   <updated>2015-02-11T00:00:00+00:00</updated>
   <id>/2015/02/11/1-simplifying-zynq-boot</id>
   <content type="html">&lt;p&gt;Creating a Zynq boot.bin has been a source of headaches for quite some
time. It requires a toolchain different from the one in NDK build and
also seems to have some dependences on variations of other common Unix
tools.&lt;/p&gt;

&lt;p&gt;The only reason anyone has to build a boot.bin themselves is because
it contains the MAC address for the ethernet. On the zedboard, at
least, there is not a better place to store it. Zybo does have an
eeprom for this purpose, but we do not have that working yet.&lt;/p&gt;

&lt;p&gt;I’m working on a web-hosted development environment, and as part of
that took a step towards packaging zynq-boot in an easier to use way.&lt;/p&gt;

&lt;p&gt;I packaged the stable, board-independent pieces into sdcard-zynq.zip
and the faster changing or board-dependent components into
bootbin-$(BOARD)-$(MACADDR).zip. If you only have one board of a
particular type, you can use a prebuilt bootbin.zip. Otherwise, you’ll
still need to be able to build boot.bin or to use the web-hosted
boot.bin creation service when it’s available.&lt;/p&gt;

&lt;p&gt;The current prebuilt images for zedboard, zc702, and zc706 are here:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://github.com/cambridgehackers/zynq-boot-filesystems/tree/v15.02.1
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;From that link, download:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;https://github.com/cambridgehackers/zynq-boot-filesystems/blob/v15.02.1/sdcard-zynq.zip&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;also download a bootbin*.zip for your board:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;zedboard: https://github.com/cambridgehackers/zynq-boot-filesystems/blob/v15.02.1/bootbin-zedboard-00e00c009603.zip&lt;/li&gt;
  &lt;li&gt;zc702: https://github.com/cambridgehackers/zynq-boot-filesystems/blob/v15.02.1/bootbin-zc702-00e00c005603.zip&lt;/li&gt;
  &lt;li&gt;zc706: https://github.com/cambridgehackers/zynq-boot-filesystems/blob/v15.02.1/bootbin-zc706-00e00c004f03.zip&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My SD card is labeled “ZYNQ” and under Ubuntu mounts as
/media/jamey/ZYNQ. On OS X it mounts as /Volumes/ZYNQ. Update the
following with the path to your SD card:&lt;/p&gt;

&lt;p&gt;unzip sdcard-zynq.zip
   cp sdcard-zynq/* /media/jamey/ZYNQ
   unzip bootbin&lt;em&gt;.zip
   cp bootbin&lt;/em&gt;03/* /media/jamey/ZYNQ&lt;/p&gt;

&lt;p&gt;Now eject your SD card, plug it into the Zynq board, and turn it on.&lt;/p&gt;
</content>
   
      <category term="connectal"/>
   
 </entry>
 
 <entry>
   <title>Why Connectal?</title>
   <link href="/2015/01/04/why-connectal.html"/>
   <updated>2015-01-04T00:00:00+00:00</updated>
   <id>/2015/01/04/why-connectal</id>
   <content type="html">&lt;p&gt;Are you happy with the connection between software development and
hardware development on your projects? Do you wish you had more
flexible tools for developing test benches, drivers, and applications
using your hardware? Do you wish you didn’t need a kernel driver?&lt;/p&gt;

&lt;p&gt;Do you wish that you could use a common flow to drive your hardware
development, across simulation, timing verification, FPGA
implementation, and even the ASIC back end?&lt;/p&gt;

&lt;p&gt;Do you wish you could use a better programming language to implement
the hardware? Do you miss declared interfaces and structural types?&lt;/p&gt;

&lt;p&gt;Do you wish you had better tools for debugging the hardware? For
reflecting conditions encountered on the hardware back into the
simulation environment where you can drill down into the problem?&lt;/p&gt;

&lt;p&gt;These are the kinds of problems we encountered which inspired us to
develop the Connectal framework. With Connectal, we are trying to
bring the productivity of software engineering practices to hardware
development without compromising on the performance of the hardware.&lt;/p&gt;

&lt;p&gt;Connectal provides:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Seamless development environment with test benches and apps written in C/C++&lt;/li&gt;
  &lt;li&gt;Streamlined application structure&lt;/li&gt;
  &lt;li&gt;Faster builds and greater visibility simulating hardware in bluesim/modelsim/xsim&lt;/li&gt;
  &lt;li&gt;Support for capture traces on interfaces and replaying them in test benches&lt;/li&gt;
&lt;/ul&gt;

</content>
   
      <category term="connectal"/>
   
 </entry>
 
 <entry>
   <title>Zedboard on Wheels</title>
   <link href="/2015/01/02/zedboard-on-wheels.html"/>
   <updated>2015-01-02T00:00:00+00:00</updated>
   <id>/2015/01/02/zedboard-on-wheels</id>
   <content type="html">&lt;p&gt;We have published another Instructable describing &lt;a href=&quot;http://www.instructables.com/id/Putting-wheels-on-your-Zedboard/&quot;&gt;how to build a
simple two-wheeled motorized robot controlled by a
Zedboard&lt;/a&gt;. The
Connectal framework is used to implement control logic with both SW
and HW (FPGA) components.&lt;/p&gt;
</content>
   
      <category term="instructable"/>
   
      <category term="zedboard"/>
   
      <category term="connectalbuild"/>
   
 </entry>
 
 <entry>
   <title>Connectal Documentation</title>
   <link href="/2014/12/30/connectal-documentation.html"/>
   <updated>2014-12-30T00:00:00+00:00</updated>
   <id>/2014/12/30/connectal-documentation</id>
   <content type="html">&lt;p&gt;We have been focusing on documentation and tutorials for the last
month or so. I have been working on using &lt;a href=&quot;sphinx-doc.org&quot;&gt;Sphinx&lt;/a&gt; to
document the Connectal BSV libraries. In the process, I have 
implemented a BSV domain for Sphinx.&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;http://www.connectal.org/doc/current/ref/&quot;&gt;Connectal Reference&lt;/a&gt;
is still just a skeleton, because even in skeleton form it at least
gives an index of key Connectal interfaces and modules.&lt;/p&gt;
</content>
   
      <category term="docs"/>
   
 </entry>
 
 <entry>
   <title>Connectal Zynq Getting Started</title>
   <link href="/2014/12/13/connectal-zynq-getting-started.html"/>
   <updated>2014-12-13T00:00:00+00:00</updated>
   <id>/2014/12/13/connectal-zynq-getting-started</id>
   <content type="html">&lt;p&gt;This &lt;a href=&quot;http://www.instructables.com/id/Connectal-Zynq-Getting-Started/&quot;&gt;Instructable&lt;/a&gt; describes how to set up a Zedboard for use with Connectal.&lt;/p&gt;
</content>
   
      <category term="instructable"/>
   
      <category term="zynq"/>
   
      <category term="zedboard"/>
   
 </entry>
 
 <entry>
   <title>Connectal PCIe Getting Started</title>
   <link href="/2014/12/12/connectal-pcie-getting-started.html"/>
   <updated>2014-12-12T00:00:00+00:00</updated>
   <id>/2014/12/12/connectal-pcie-getting-started</id>
   <content type="html">&lt;p&gt;This
&lt;a href=&quot;http://www.instructables.com/id/Connectal-PCIe-Getting-Started/&quot;&gt;Instructable&lt;/a&gt;
describes how to set up a Xilinx vc707 or kc705 board for use with
Connectal.&lt;/p&gt;
</content>
   
      <category term="instructable"/>
   
      <category term="virtex"/>
   
      <category term="pcie"/>
   
 </entry>
 
 <entry>
   <title>Connectal at FPGA 2015</title>
   <link href="/2014/12/03/16-29-fpga2015.html"/>
   <updated>2014-12-03T00:00:00+00:00</updated>
   <id>/2014/12/03/16:29-fpga2015</id>
   <content type="html">&lt;p&gt;We will be presenting a &lt;a href=&quot;http://www.connectal.org/connectal-fpga2015.pdf&quot;&gt;paper describing the Connectal framework&lt;/a&gt; at &lt;a href=&quot;http://www.eecs.ucf.edu/isfpga/&quot;&gt;FPGA 2015&lt;/a&gt; in February.&lt;/p&gt;
</content>
   
 </entry>
 
 <entry>
   <title>Building a Bluespec LED controller using Connectal Build</title>
   <link href="/2014/10/29/Building-a-Bluespec-LED-controller.html"/>
   <updated>2014-10-29T00:00:00+00:00</updated>
   <id>/2014/10/29/Building-a-Bluespec-LED-controller</id>
   <content type="html">&lt;p&gt;We published an Instructable describing &lt;a href=&quot;http://www.instructables.com/id/Building-a-Bluespec-LED-controller-using-Connectal/&quot;&gt;how to build a simple LED
controller using Connectal
Build&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One of the problems with CAD tools is that they are hard to install
and often expensive. Fortunately, we are able to provide a public
build service for open source projects written in &lt;a href=&quot;http://www.bluespec.com&quot;&gt;Bluespec Systems
Verilog&lt;/a&gt; using the &lt;a href=&quot;http://github.com/cambridgehackers/connectal&quot;&gt;Connectal
framework&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This tutorial explains how to use the public &lt;a href=&quot;https://connectablbuild.qrclab.com&quot;&gt;Connectal Build
service&lt;/a&gt; to build and simulate an
application with hardware and software components written in BSV and
C++ using the Connectal Framework.&lt;/p&gt;

&lt;p&gt;We assume that you will store your design sources in a publicly
available Git repository such as Github. The build service, which is
based on buildbot, automatically builds your project when it detects
changes. If you are simulating your design, the build service runs the
applications and displays the logs automatically.&lt;/p&gt;

&lt;p&gt;This tutorial builds the example and runs it in the bluesim simulator.&lt;/p&gt;
</content>
   
      <category term="instructable"/>
   
      <category term="bluesim"/>
   
      <category term="connectalbuild"/>
   
 </entry>
 
 <entry>
   <title>How to Blink the LEDs on a Zedboard using Connectal</title>
   <link href="/zedboard/2014/10/17/blinking-leds-on-a-zedboard.html"/>
   <updated>2014-10-17T00:00:00+00:00</updated>
   <id>/zedboard/2014/10/17/blinking-leds-on-a-zedboard</id>
   <content type="html">&lt;p&gt;We published an Instructable describing &lt;a href=&quot;http://www.instructables.com/id/Blinking-the-LEDs-on-a-Zedboard-using-Bluespec-and/&quot;&gt;how to blink the LEDS on a Zedboard using Connectal&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We even include an FPGA action video:&lt;/p&gt;

&lt;iframe width=&quot;420&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/TAxPZCOMy8Y&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt; &lt;/iframe&gt;

</content>
   
      <category term="zedboard"/>
   
      <category term="instructable"/>
   
 </entry>
 
 <entry>
   <title>How to boot Linux on a Zedboard without U-Boot</title>
   <link href="/2014/10/16/how-to-boot-linux-on-a-zedboard.html"/>
   <updated>2014-10-16T00:00:00+00:00</updated>
   <id>/2014/10/16/how-to-boot-linux-on-a-zedboard</id>
   <content type="html">&lt;p&gt;We published an Instructable describing &lt;a href=&quot;http://www.instructables.com/id/How-to-boot-Linux-on-a-Zedboard-without-U-Boot/&quot;&gt;how to boot Android Linux on a Zedboard without using U-Boot&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Normally, the Zynq CPUs boot by running the first stage boot loader
(FSBL) in ROM, to load the FSBL from the boot.bin file, which then
loads &lt;a href=&quot;&quot;&gt;U-Boot&lt;/a&gt; from the SD Card, which then loads the Linux kernel,
ramdisk, and device-tree from the SD Card.&lt;/p&gt;

&lt;p&gt;The FSBL and U-Boot images are both board-dependent, and U-Boot does
not actually provide any capabilities missing from the FSBL and Linux,
so we thought it would be simpler if we didn’t have to update U-Boot
when porting &lt;a href=&quot;http://github.com/cambridgehackers/connectal&quot;&gt;Connectal&lt;/a&gt;
to a ne Zynq board.&lt;/p&gt;

&lt;p&gt;This
&lt;a href=&quot;http://www.instructables.com/id/How-to-boot-Linux-on-a-Zedboard-without-U-Boot/&quot;&gt;Instructable&lt;/a&gt;
describes how to set up a Zedboard to boot Linux directly from the
boot.bin file.&lt;/p&gt;
</content>
   
      <category term="instructable"/>
   
      <category term="zynq"/>
   
      <category term="android"/>
   
 </entry>
 
 
</feed>
