您当前的位置: 首页 > 

FPGA硅农

暂无认证

  • 2浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

AXI Lite协议学习与仿真

FPGA硅农 发布时间:2021-03-09 12:25:50 ,浏览量:2

AXI4-lite总线协议总共包括21条信号线。每个通道都有其自己的双向握手机制信号线xxVALID和xxREADY,关于双向握手机制,可以参见上一篇博客AXI FULL协议学习与仿真。下面是信号线的详细描述。

全局信号

ACLK:全局时钟信号,在上升沿时对信号采样。所有的输入信号都通过上升沿采集,所有的输出信号都在上升沿时变化。 ARESETn:全局复位信号,低电平有效。在复位期间,所有的xxVALID信号必须复位为低电平。其他的信号可以是任意值。

写地址通道信号 主机(master)控制的信号

AWVALID AWADDR 地址信号线,传输地址信息。 AWPROT 访问权限信号线,xilinx建议赋值为3’b000.xilinx IP 一般忽略此信号。

从机(slave)控制的信号

AWREADY

写数据通道信号 主机(master)控制的信号

WVALID WDATA 数据信号线,传输数据信息。 WSTRB 数据总线有效字节控制。比如32位的总线,WSTRB等于4’b0010,那么代表WDATA[15:8]中的数据有效。其他无效。如果要求WDATA[31:0]32位全有效,那么WSTRB就应该等于4’b1111.

从机(slave)控制的信号

WREADY

写应答通道信号 主机(master)控制的信号

BREADY

从机(slave)控制的信号

BVALID BRESP 应答类型。AXI4-lite不支持EXOKAY类型的响应。 OKEY 0 正常访问成功 SLVERR 2 从机错误 DECERR 3 解码错误,比如没有从机的地址。

读地址通道信号 主机(master)控制的信号

ARVALID ARADDR 地址信号线,传输地址信息。 ARPROT 访问权限信号线,xilinx建议赋值为3’b000.xilinx IP 一般忽略此信号。

从机(slave)控制的信号

ARREADY

读数据通道信号 主机(master)控制的信号

RREADY

从机(slave)控制的信号

RVALID RDATA 数据信号线,传输数据信息。 RRESP 同写应答信号BRESP。

代码实现

从机:

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2021/03/08 22:32:21
// Design Name: 
// Module Name: axi_lite_slave
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module axi_lite_slave(   //AXI Lite从机
//全局信号
input logic ACLK,
input logic ARESETn,
//写地址通道
input logic AWVALID,
input logic [31:0]AWADDR, 
input logic [2:0]AWPROT, 
output logic AWREADY,
//写数据通道
input logic WVALID,
input logic [31:0] WDATA, 
input logic [3:0] WSTRB,
output logic WREADY,
//写响应通道
input logic BREADY,
output logic BVALID,
output logic [1:0] BRESP,
//读地址通道
input logic ARVALID,
input logic [31:0] ARADDR, 
input logic [2:0] ARPROT, 
output logic ARREADY,
//读数据通道
input logic RREADY,
output logic RVALID,
output logic [31:0] RDATA, 
output logic [1:0] RRESP,
//其他
output logic busy                      //主机往从机写数据时,busy为高,知道数据被写入寄存器
    );

parameter N=4;                         //四个寄存器

logic [31:0] DataReg [0:N-1];

logic [31:0]rd_addr;             
logic [31:0]wr_addr;
logic [31:0]rd_data;
logic [31:0]wr_data;
logic wr_en;
//wr_en
always_ff@(posedge ACLK,negedge ARESETn)
if(!ARESETn)
    wr_en            
关注
打赏
1658642721
查看更多评论
0.0390s