mirror of
https://github.com/corundum/corundum.git
synced 2025-01-16 08:12:53 +08:00
163 lines
5.7 KiB
Markdown
163 lines
5.7 KiB
Markdown
# Verilog AXI Components Readme
|
|
|
|
For more information and updates: http://alexforencich.com/wiki/en/verilog/axi/start
|
|
|
|
GitHub repository: https://github.com/alexforencich/verilog-axi
|
|
|
|
## Introduction
|
|
|
|
Collection of AXI4 bus components. Most components are fully parametrizable
|
|
in interface widths. Includes full MyHDL testbench with intelligent bus
|
|
cosimulation endpoints.
|
|
|
|
## Documentation
|
|
|
|
### axi_ram module
|
|
|
|
RAM with parametrizable data and address interface widths. Supports FIXED and
|
|
INCR burst types as well as narrow bursts.
|
|
|
|
### Common signals
|
|
|
|
awid : Write address ID
|
|
awaddr : Write address
|
|
awlen : Write burst length
|
|
awsize : Write burst size
|
|
awburst : Write burst type
|
|
awlock : Write locking
|
|
awcache : Write cache handling
|
|
awprot : Write protection level
|
|
awqos : Write QoS setting
|
|
awregion : Write region
|
|
awuser : Write user sideband signal
|
|
awvalid : Write address valid
|
|
awready : Write address ready (from slave)
|
|
wdata : Write data
|
|
wstrb : Write data strobe (byte select)
|
|
wlast : Write data last transfer in burst
|
|
wuser : Write data user sideband signal
|
|
wvalid : Write data valid
|
|
wready : Write data ready (from slave)
|
|
bid : Write response ID
|
|
bresp : Write response
|
|
buser : Write response user sideband signal
|
|
bvalid : Write response valid
|
|
bready : Write response ready (from master)
|
|
arid : Read address ID
|
|
araddr : Read address
|
|
arlen : Read burst length
|
|
arsize : Read burst size
|
|
arburst : Read burst type
|
|
arlock : Read locking
|
|
arcache : Read cache handling
|
|
arprot : Read protection level
|
|
arqos : Read QoS setting
|
|
arregion : Read region
|
|
aruser : Read user sideband signal
|
|
arvalid : Read address valid
|
|
arready : Read address ready (from slave)
|
|
rid : Read data ID
|
|
rdata : Read data
|
|
rresp : Read response
|
|
rlast : Read data last transfer in burst
|
|
ruser : Read data user sideband signal
|
|
rvalid : Read response valid
|
|
rready : Read response ready (from master)
|
|
|
|
### Common parameters
|
|
|
|
ADDR_WIDTH : width of awaddr and araddr signals
|
|
DATA_WIDTH : width of wdata and rdata signals
|
|
STRB_WIDTH : width of wstrb signal
|
|
ID_WIDTH : width of *id signals
|
|
USER_WIDTH : width of *user signals
|
|
|
|
### Source Files
|
|
|
|
rtl/arbiter.v : Parametrizable arbiter
|
|
rtl/axi_ram.v : Parametrizable AXI RAM
|
|
rtl/priority_encoder.v : Parametrizable priority encoder
|
|
|
|
### AXI4-Lite Interface Example
|
|
|
|
Write
|
|
|
|
___ ___ ___ ___ ___
|
|
clk ___/ \___/ \___/ \___/ \___/ \___
|
|
_______
|
|
awid XXXX_ID____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awaddr XXXX_ADDR__XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awlen XXXX_00____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awsize XXXX_0_____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awburst XXXX_0_____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awprot XXXX_PROT__XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
awvalid ___/ \_______________________________
|
|
___________ _______________________
|
|
awready \_______/
|
|
_______________
|
|
wdata XXXX_DATA__________XXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______________
|
|
wstrb XXXX_STRB__________XXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______________
|
|
wvalid ___/ \_______________________
|
|
_______
|
|
wready ___________/ \_______________________
|
|
_______
|
|
bid XXXXXXXXXXXXXXXXXXXXXXXXXXXX_ID____XXXXXXXX
|
|
_______
|
|
bresp XXXXXXXXXXXXXXXXXXXXXXXXXXXX_RESP__XXXXXXXX
|
|
_______
|
|
bvalid ___________________________/ \_______
|
|
___________________________________________
|
|
bready
|
|
|
|
|
|
Read
|
|
|
|
___ ___ ___ ___ ___
|
|
clk ___/ \___/ \___/ \___/ \___/ \___
|
|
_______
|
|
arid XXXX_ID____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
araddr XXXX_ADDR__XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
arlen XXXX_00____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
arsize XXXX_0_____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
arburst XXXX_0_____XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
arprot XXXX_PROT__XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
|
|
_______
|
|
arvalid ___/ \_______________________________
|
|
___________________________________________
|
|
arready
|
|
_______
|
|
rid XXXXXXXXXXXXXXXXXXXXXXXXXXXX_ID____XXXXXXXX
|
|
_______
|
|
rdata XXXXXXXXXXXXXXXXXXXXXXXXXXXX_DATA__XXXXXXXX
|
|
_______
|
|
rresp XXXXXXXXXXXXXXXXXXXXXXXXXXXX_RESP__XXXXXXXX
|
|
_______
|
|
rvalid ___________________________/ \_______
|
|
___________________________________________
|
|
rready
|
|
|
|
|
|
## Testing
|
|
|
|
Running the included testbenches requires MyHDL and Icarus Verilog. Make sure
|
|
that myhdl.vpi is installed properly for cosimulation to work correctly. The
|
|
testbenches can be run with a Python test runner like nose or py.test, or the
|
|
individual test scripts can be run with python directly.
|
|
|
|
### Testbench Files
|
|
|
|
tb/axi.py : MyHDL AXI4 master and memory BFM
|