
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.armadeus.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CamilleD</id>
		<title>ArmadeusWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://www.armadeus.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=CamilleD"/>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=Special:Contributions/CamilleD"/>
		<updated>2026-05-01T06:33:26Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.26.3</generator>

	<entry>
		<id>http://www.armadeus.org/wiki/index.php?title=A_simple_design_with_Wishbone_bus&amp;diff=4845</id>
		<title>A simple design with Wishbone bus</title>
		<link rel="alternate" type="text/html" href="http://www.armadeus.org/wiki/index.php?title=A_simple_design_with_Wishbone_bus&amp;diff=4845"/>
				<updated>2008-11-06T09:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;CamilleD: URL of the example sourceforge link corrected : 'wishbone_example' instead of 'Wisbone_example'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category: FPGA]]&lt;br /&gt;
This article intended to explain how to design Wishbone compatible &lt;br /&gt;
components with simple example. &lt;br /&gt;
The VHDL design can be found in sourceforge &lt;br /&gt;
[http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/firmware/wishbone_example/ tree].&lt;br /&gt;
&lt;br /&gt;
Description of wishbone structure for armadeus can be found [[FpgaArchitecture#Le_bus_Wishbone | here]] in french.&lt;br /&gt;
&lt;br /&gt;
== General structure ==&lt;br /&gt;
&lt;br /&gt;
The main functionality of this component is to do the same things&lt;br /&gt;
that [[FPGA_and_led | benoît]] project : switch on a led when a button is &lt;br /&gt;
pressed.&lt;br /&gt;
&lt;br /&gt;
But to learn about designing Wishbone component and linux driver, the design&lt;br /&gt;
is little bit more complicated (!).&lt;br /&gt;
&lt;br /&gt;
When button is  pressed, the component ''Wb_button'' send interrupt signal to ''irq_mngr''. ''irq_mngr'' will toggle a flag and send interruption to &lt;br /&gt;
'''i.mx''' processor. A Linux driver on '''i.mx''' will read ''irq_mngr'' and&lt;br /&gt;
acknowledge irq by writing '1' on a register. And finally, Linux driver will &lt;br /&gt;
toggle led value by writing on led register.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Wb_buttonled_top.png|center|800px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''imx_wrapper'', ''syscon'' and ''irq_mngr'' are standards&lt;br /&gt;
ARMadeus-Wishbone IPs that just been instantiated in our design.&lt;br /&gt;
&lt;br /&gt;
''Wb_button'' and ''Wb_led'' are simple slave component we want to&lt;br /&gt;
integrate in the FPGA.&lt;br /&gt;
&lt;br /&gt;
All these components are connected together with the 'glue logic' component ''intercon''.&lt;br /&gt;
&lt;br /&gt;
== Wishbone slave application components ==&lt;br /&gt;
&lt;br /&gt;
=== Wb_led ===&lt;br /&gt;
&lt;br /&gt;
This component is a simple 16-bit Wishbone slave output port, from [http://www.opencores.org/projects.cgi/web/wishbone/wbspec_b3.pdf wishbone specification example] (p110).&lt;br /&gt;
&lt;br /&gt;
[[Image:wbs_led.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
It is a simple register, that can be read and write. The led is controled with register pin 0.&lt;br /&gt;
&lt;br /&gt;
[[Wb_led.vhd | The VHDL source code]]&lt;br /&gt;
&lt;br /&gt;
=== Wb_button ===&lt;br /&gt;
&lt;br /&gt;
Wb_button component, is like Wb_led but in read only and with an edge detector to rise irq.&lt;br /&gt;
&lt;br /&gt;
[[Image:wbs_button.png|center|500px]]&lt;br /&gt;
&lt;br /&gt;
[[Wb_button.vhd | The VHDL source c]]ode&lt;br /&gt;
&lt;br /&gt;
== Drivers ==&lt;br /&gt;
&lt;br /&gt;
=== Wb_led ===&lt;br /&gt;
The Wb_led driver implements a character device with read(), write() system calls. It implements sys/led/status entry. Driver sources can be found in [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/target/linux/modules/fpga/others/Wb_led/ sourceforge].&lt;br /&gt;
&lt;br /&gt;
=== Wb_button ===&lt;br /&gt;
The Wb_button driver implements a character device with only read() system calls. If used as blocking read, it will return value only when button is push/release. Drivers sources are on [http://armadeus.svn.sourceforge.net/viewvc/armadeus/trunk/target/linux/modules/fpga/others/Wb_button/ sourceforge].&lt;br /&gt;
&lt;br /&gt;
== XML ==&lt;/div&gt;</summary>
		<author><name>CamilleD</name></author>	</entry>

	</feed>