This project implements a simplified AMBA AXI4 Memory Controller in Verilog HDL, providing an interface between an AXI4-compliant master and an internal synchronous memory.
The controller features independent Read and Write Finite State Machines (FSMs), burst transaction handling, address generation logic, and a modular memory interface. The design follows the AXI4 VALID/READY handshake protocol and has been functionally verified through simulation in Xilinx Vivado.
- β Implement an AXI4-compliant memory controller
- β Design independent Read and Write FSMs
- β Support burst-based memory transactions
- β Interface an internal synchronous RAM
- β Verify functionality through simulation
- β Build a reusable RTL design
- β AXI4 Write Address Channel
- β AXI4 Write Data Channel
- β AXI4 Write Response Channel
- β AXI4 Read Address Channel
- β AXI4 Read Data Channel
- β Independent Read & Write FSMs
- β Incrementing Burst (INCR) Support
- β Parameterized Design
- β Internal Memory Interface
- β Burst Counter
- β Address Generation Logic
- β AXI VALID/READY Handshake
- β Simulation Testbench
The design consists of three major blocks:
- πΉ AXI4 Interface
- πΉ Memory Controller
- πΉ Internal Memory Array
The controller accepts AXI transactions, processes burst information, generates memory control signals, and returns protocol-compliant responses.
AMBA_AXI4_Memory_Controller
β
βββ rtl/
β βββ axi4_memory_controller.v
β βββ memory_array.v
β βββ axi_pkg.vh
β
βββ testbench/
β βββ tb_axi4_memory_controller.v
β
βββ images/
β βββ projectarchitecture.png
β βββ WriteFSMdiagram.png
β βββ ReadFSMDiagram.png
β βββ memoryinterfacediagram.png
β βββ schematic.png
β βββ waveform.png
β
βββ README.md
Responsible for:
- Address decoding
- Burst handling
- Read/Write FSM control
- Memory interface generation
- AXI response generation
Implements an internal synchronous RAM.
Functions include:
- Memory initialization
- Synchronous writes
- Synchronous reads
- 32-bit data storage
The verification environment performs:
- Reset generation
- Write transaction verification
- Read transaction verification
- Burst transfer testing
- Waveform analysis
- Wait for AWVALID
- Capture address
- Store burst parameters
β¬οΈ
- Accept write data
- Generate memory write enable
- Increment address
- Update burst counter
β¬οΈ
- Generate write response
- Wait for BREADY
- Return to idle
- Wait for ARVALID
- Capture read address
β¬οΈ
- Generate memory read request
β¬οΈ
- Return read data
- Assert RVALID
- Complete transaction
| Signal | Description |
|---|---|
| π mem_addr | Memory address |
| βοΈ mem_write_en | Write enable |
| π mem_read_en | Read enable |
| π¦ mem_write_data | Data written to RAM |
| π€ mem_read_data | Data returned from RAM |
The controller currently supports Incrementing Burst (INCR) transactions.
Next Address = Current Address + (1 << AWSIZE)
Example:
0x20
β
0x24
β
0x28
β
0x2C
Simulation performed using:
- π οΈ Xilinx Vivado 2022.2
- π₯οΈ XSim Simulator
Verified functionality includes:
- β Reset sequence
- β AXI handshakes
- β Write transactions
- β Memory writes
- β Burst counter
- β Address increment
- β Write responses
- β Read request generation
- β FSM transitions
The waveform demonstrates:
- AXI VALID/READY handshaking
- Write state transitions
- Read state transitions
- Burst address updates
- Memory interface activity
- Internal RAM operations
| Feature | Status |
|---|---|
| Reset | β |
| Write Address | β |
| Write Data | β |
| Memory Write | β |
| Burst Counter | β |
| Address Increment | β |
| Write Response | β |
| Read Request | β |
| FSM Operation | β |
| Simulation | β |
The project demonstrates the core architecture and protocol flow of an AXI4 Memory Controller.
Current areas identified for future enhancement include:
- πΈ Improved synchronization of memory read timing
- πΈ Full support for FIXED and WRAP burst types
- πΈ Byte-enable (WSTRB) implementation
- πΈ AXI error response handling
- πΈ Multiple outstanding transactions
- πΈ Dual-port memory support
- πΈ FPGA hardware validation
- πΉ AXI4-Lite variant
- πΉ Configurable memory depth
- πΉ Configurable burst lengths
- πΉ Dual-port RAM
- πΉ ECC memory
- πΉ Performance counters
- πΉ SystemVerilog Assertions (SVA)
- πΉ UVM Verification Environment
- πΉ FPGA deployment
This project strengthened practical understanding of:
- π‘ RTL Design
- π‘ Verilog HDL
- π‘ AMBA AXI4 Protocol
- π‘ Finite State Machines
- π‘ Burst Transactions
- π‘ Memory Controller Design
- π‘ Synchronous RAM
- π‘ Digital Verification
- π‘ Waveform Debugging
| Category | Tool |
|---|---|
| π» HDL | Verilog |
| π₯οΈ Simulator | XSim |
| π οΈ IDE | Xilinx Vivado 2022.2 |
| π± Version Control | Git |
| π Repository | GitHub |
Archita Roy
π B.Tech in Electronics & Communication Engineering
ποΈ National Institute of Technology Silchar
GitHub: @archita-2005
Licensed under the MIT License.
This project was developed as part of my RTL Design and Computer Architecture portfolio to strengthen practical understanding of the AMBA AXI4 protocol, memory controller design, FSM-based control logic, and digital hardware verification.




