2007-10-19 11:52:02 +02:00
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
2007-10-30 13:51:21 +01:00
|
|
|
<!-- (c) Benjamin Krill <ben@codiert.org> -->
|
2007-10-19 11:52:02 +02:00
|
|
|
<head>
|
|
|
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
|
|
|
<title>FPGA Filesystem</title>
|
|
|
|
<style type="text/css" media="all">@import "f.css";</style>
|
|
|
|
</head>
|
|
|
|
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<div id="headspace">
|
|
|
|
<div id="header">
|
|
|
|
<a href="#top" title="Top">Top</a> :
|
|
|
|
<a href="#concept" title="Concepts">Concept</a> :
|
|
|
|
<a href="#download" title="Download">Download</a> :
|
|
|
|
<a href="#contact" title="Contact">Contact</a>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="logo">
|
|
|
|
<img src="img/fpgafs.png" alt="FPGAFS" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="content">
|
2007-10-19 12:14:02 +02:00
|
|
|
<a name="top" id="top"></a>
|
|
|
|
<div id="conspace"> </div>
|
|
|
|
<h1>FPGAFS</h1>
|
2007-10-19 11:52:02 +02:00
|
|
|
<p>It provides a framework for a high performance reconfigurable computer
|
|
|
|
environment. The abstraction between the reconfigurable device and the
|
|
|
|
user application is simplified by using a virtual filesystem and a thread
|
|
|
|
abstraction per device context.<br/>
|
|
|
|
FPGAFS consists of two major layers of abstraction. First, the directory
|
|
|
|
representation to the user application. This interface provides for each context
|
|
|
|
one directory with a specified content to transfer data. The second layer
|
|
|
|
provides an interface for low level driver. It gives the flexibility to register
|
|
|
|
a lot of different low level drivers for different accelerators which can be
|
|
|
|
operate at the same time in one target system.</p>
|
|
|
|
|
|
|
|
<h2 class="title">Concept</h2><a name="concept" id="concept"></a>
|
|
|
|
|
2007-10-30 13:36:07 +01:00
|
|
|
<h2 class="subtitle">Overall Design</h2>
|
|
|
|
<p>As the name already mentioned the project provides a virtual filesystem for the
|
|
|
|
operating system. The filesystem abstrect each each reconfigurable part inside a
|
|
|
|
host system or inside one chip by a directory. The permissions of the files can
|
|
|
|
provide access control for different users. The following listing shows the directory
|
|
|
|
entries which will be created. These entries can be seen as the assigned context to
|
|
|
|
the FPGA interface:</p>
|
|
|
|
<ul>
|
|
|
|
<li>/fpgafs/example/cmd: write only file, this is the interface to send
|
|
|
|
defined commands to the context.</li>
|
|
|
|
<li>/fpgafs/example/stat: read only file, from which the context's status
|
|
|
|
can be received.</li>
|
|
|
|
<li>/fpgafs/example/din: write only file, sends data to the reconfigurable
|
|
|
|
device.</li>
|
|
|
|
<li>/fpgafs/example/dout: read only file, receives calculated data from
|
|
|
|
the device.</li>
|
|
|
|
<li>/fpgafs/example/load: write only file, writes data which should be
|
|
|
|
loaded onto the reconfigurable device.</li>
|
|
|
|
<li>/fpgafs/foobar/lldrv: write only file, selects the low level driver
|
|
|
|
which should be used.</li>
|
|
|
|
</ul>
|
|
|
|
<p>
|
|
|
|
In general, the complete framework provides a generic interface to the userspace
|
|
|
|
and a flexible and changeable interface to the hardware. Figure 1 shows the design of
|
|
|
|
the framework. At the bottom, there are low level drivers which must be registered on
|
|
|
|
the main FPGAFS. On top of the low-level drivers, different contexts are shown
|
|
|
|
which are represented by directories.</p>
|
|
|
|
|
|
|
|
<div class="center">
|
|
|
|
<img class="border" src="img/design_overall.png" alt="overall design" />
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<h2 class="subtitle">Low Level Driver</h2>
|
|
|
|
<p>All low level drivers implement an interface which will be used by more generalized
|
|
|
|
functions from the low level management. The structure "fpgafs_lldrv" provides at least
|
|
|
|
the defined function pointers. Each low level driver can be loaded and unloaded as a
|
|
|
|
common Linux module. The init function of each low level driver has to call the
|
|
|
|
registration function of the FPGAFS low level management module. At unloading the module
|
|
|
|
the unregistration function will be called. With this concept different hardware
|
|
|
|
accelerators can be supported and each low level driver can implement its own
|
|
|
|
communication functions. So each low level driver brings its own programming routine
|
|
|
|
for the accelerator. This gives the possibility to create accelerators that can handle
|
|
|
|
more than one application at once. For example, the accelerator can reprogram parts of
|
|
|
|
the accelerator and can be used without reconfiguring the whole accelerator. However,
|
|
|
|
this functionality totally depends on the underlying hardware and the programming
|
|
|
|
mechanism. But the framework will support such and other functionalities because of
|
|
|
|
the flexible layer concept.</p><br />
|
|
|
|
|
|
|
|
<p>More documentation can be found in the repository and can be enquired (see Contact).</p>
|
|
|
|
|
2007-10-19 11:52:02 +02:00
|
|
|
<h2 class="title">Download</h2><a name="download" id="download"></a>
|
|
|
|
FPGAFS keeps its development tree in a Subversion repository. It can be
|
2007-10-30 13:36:07 +01:00
|
|
|
downloaded with a Subversion checkout. The repository is anonymously accessible. <br /><br />
|
2007-10-22 15:24:55 +02:00
|
|
|
<h2 class="consol">$ svn co https://svn.subgra.de/ben/projects/fpgafs</h2>
|
2007-10-19 11:52:02 +02:00
|
|
|
|
|
|
|
<h2 class="title">Contact</h2><a name="contact" id="contact"></a>
|
2007-10-30 13:36:07 +01:00
|
|
|
<p>Benjamin Krill: ben@codiert.org</p>
|
2007-10-30 13:51:21 +01:00
|
|
|
|
|
|
|
<h2 class="footer">ID: $Id$</h3>
|
2007-10-19 11:52:02 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
</html>
|