107 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			107 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!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">
 | 
						|
<!-- (c) Benjamin Krill <ben@codiert.org> -->
 | 
						|
<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>
 | 
						|
<link rel="icon" href="/favicon.ico" type="image/x-icon">
 | 
						|
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
 | 
						|
</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">
 | 
						|
	<a name="top" id="top"></a>
 | 
						|
	<div id="conspace"> </div>
 | 
						|
	<h1>FPGAFS</h1>
 | 
						|
	<p>It provides a framework for a high performance reconfigurable computer
 | 
						|
	environment for Linux. 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>
 | 
						|
 | 
						|
	<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).
 | 
						|
	Also the <a class="text" href="var/th2007.pdf" alt="dissertation">dissertation</a> can be
 | 
						|
	downloaded where the FPGAFS was developed.</p>
 | 
						|
 | 
						|
	<h2 class="title">Download</h2><a name="download" id="download"></a>
 | 
						|
	FPGAFS keeps its development tree in a GIT repository. It can be downloaded with GIT clone.
 | 
						|
	<br /><br />
 | 
						|
	<h2 class="consol">$ git clone http://fpgafs.codiert.org/fpgafs.git</h2>
 | 
						|
 | 
						|
	<h2 class="title">Contact</h2><a name="contact" id="contact"></a>
 | 
						|
	<p>Benjamin Krill: ben@codiert.org</p>
 | 
						|
</div>
 | 
						|
 | 
						|
</body>
 | 
						|
</html>
 |