1 |
8 |
dgisselq |
# WB2AXIP: A Pipelind Wishbone B4 to AXI4 bridge
|
2 |
|
|
|
3 |
|
|
Built out of necessity, [this core](rtl/wbm2axisp.v) is designed to provide
|
4 |
|
|
a conversion from a [wishbone
|
5 |
|
|
bus](http://zipcpu.com/zipcpu/2017/11/07/wb-formal.html) to an AXI bus.
|
6 |
|
|
Primarily, the core is designed to connect a
|
7 |
|
|
[wishbone bus](http://zipcpu.com/zipcpu/2017/11/07/wb-formal.html),
|
8 |
|
|
either 32- or 128-bits wide, to a 128-bit wide AXI bus, which is the natural
|
9 |
|
|
width of a DDR3 transaction (with 16-bit lanes). Hence, if the
|
10 |
|
|
Memory Interface Generator DDR3 controller is running at a 4:1 clock rate,
|
11 |
|
|
memory clocks to AXI system clocks, then it should be possible to accomplish
|
12 |
|
|
one transaction clock at a sustained or pipelined rate. This
|
13 |
|
|
[bus translator](rtl/wbm2axisp.v) is designed to be able to handle one
|
14 |
|
|
transaction per clock (pipelined), although [(due to Xilinx's MIG design)
|
15 |
|
|
the delay may be up to 27 clocks](http://opencores.org/project,wbddr3). (Ouch!)
|
16 |
|
|
|
17 |
|
|
# AXI to Wishbone conversion
|
18 |
|
|
|
19 |
|
|
Since the project began, a full-fledged [AXI4 to Wishbone bridge](rtl/axim2wbsp.v) has been added to the project.
|
20 |
|
|
This converter handles synchronizing the write channels, turning AXI read/write
|
21 |
|
|
requests into pipeline wishbone requests, maintaining the AXI ID fields, etc.
|
22 |
|
|
It ignores the AXI xSIZE, xLOCK, xCACHE, xPROT, and xQOS fields. It supports
|
23 |
|
|
xBURST types of FIXED (2'b00) and INCR (2'b01), but not WRAP (2'b10) or
|
24 |
|
|
reserved (2'b11). It does not (yet) support bridging between busses of
|
25 |
|
|
different widths, so both the AXI and the WB bus must have the same width.
|
26 |
|
|
|
27 |
|
|
AXI4 is a complicated protocol, however, especially when
|
28 |
|
|
[compared to WB](http://zipcpu.com/zipcpu/2017/11/07/wb-formal.html).
|
29 |
|
|
|
30 |
|
|
_Finally, whereas the [bridge](rtl/axim2wbsp.v) has been written, it has yet
|
31 |
|
|
to be significantly tested or formally proven. If you are interested in
|
32 |
|
|
helping to test it, please contact me at (zipcpu (at) gmail.com). Until
|
33 |
|
|
that time, it must be said that the result is subject to change._
|
34 |
|
|
|
35 |
|
|
# Formal Verification
|
36 |
|
|
|
37 |
|
|
This particular version of the tools includes an initial attempt at
|
38 |
|
|
formally proving that the core(s) work.
|
39 |
|
|
|
40 |
|
|
Currently, the project contains formal specifications for
|
41 |
|
|
[Avalon](bench/formal/fav_slave.v), [Wishbone](bench/formal/fwb_slave.v), and
|
42 |
|
|
[AXI](bench/formal/faxi_slave.v) busses. Components with working proofs
|
43 |
|
|
include the [WB to AXI](rtl/wbm2axisp.v) bridge as well as the
|
44 |
|
|
[WB arbiter](rtl/wbarbiter.v) needed for the [AXI to WB](rtl/axim2wbsp.v).
|
45 |
|
|
I also have a working proof for an Avalon to WB bridge that isn't posted
|
46 |
|
|
here.
|
47 |
|
|
|
48 |
|
|
The [AXI4 to Wishbone bridge](rtl/axim2wbsp.v) remains a work in progress
|
49 |
|
|
that isn't getting a lot of attention.
|
50 |
|
|
|
51 |
|
|
# Commercial Applications
|
52 |
|
|
|
53 |
|
|
Should you find the GPLv3 license insufficient for your needs, other licenses
|
54 |
|
|
can be purchased from Gisselquist Technology, LLc.
|
55 |
|
|
|
56 |
|
|
# Thanks
|
57 |
|
|
|
58 |
|
|
I'd like to thank @wallento for his initial work on a
|
59 |
|
|
[Wishbone to AXI converter](https://github.com/wallento/wb2axi), and his
|
60 |
|
|
encouragement to improve upon it. While this isn't a fork of his work, it
|
61 |
|
|
takes its motivation from his work.
|