AXI-uartlite IP核快速使用


本文属于使用经验总结,未尽之处不必纠结

AXI-uartlite IP核简介

AXI-uartlite 是Xilinx提供的驱动串口的IP核,用AXI-Lite总线接口和用户进行交互,速度根据不同的芯片调整,总的来说使用比较简单,收发数据也比自己写的串口驱动程序要稳定。本文只介绍基本应用,不涉及中断等操作。

IP核用户接口

debug_uart your_instance_name (
  .s_axi_aclk(s_axi_aclk),        // input wire s_axi_aclk
  .s_axi_aresetn(s_axi_aresetn),  // input wire s_axi_aresetn
  .interrupt(interrupt),          // output wire interrupt
  //写地址端口
  .s_axi_awaddr(s_axi_awaddr),    // input wire [3 : 0] s_axi_awaddr
  .s_axi_awvalid(s_axi_awvalid),  // input wire s_axi_awvalid
  .s_axi_awready(s_axi_awready),  // output wire s_axi_awready
  //写数据端口
  .s_axi_wdata(s_axi_wdata),      // input wire [31 : 0] s_axi_wdata
  .s_axi_wstrb(s_axi_wstrb),      // input wire [3 : 0] s_axi_wstrb
  .s_axi_wvalid(s_axi_wvalid),    // input wire s_axi_wvalid
  .s_axi_wready(s_axi_wready),    // output wire s_axi_wready
  //写应答端口
  .s_axi_bresp(s_axi_bresp),      // output wire [1 : 0] s_axi_bresp
  .s_axi_bvalid(s_axi_bvalid),    // output wire s_axi_bvalid
  .s_axi_bready(s_axi_bready),    // input wire s_axi_bready
  //读地址端口
  .s_axi_araddr(s_axi_araddr),    // input wire [3 : 0] s_axi_araddr
  .s_axi_arvalid(s_axi_arvalid),  // input wire s_axi_arvalid
  .s_axi_arready(s_axi_arready),  // output wire s_axi_arready
  //读数据端口
  .s_axi_rdata(s_axi_rdata),      // output wire [31 : 0] s_axi_rdata
  .s_axi_rresp(s_axi_rresp),      // output wire [1 : 0] s_axi_rresp
  .s_axi_rvalid(s_axi_rvalid),    // output wire s_axi_rvalid
  .s_axi_rready(s_axi_rready),    // input wire s_axi_rready
 
  .rx(rx),                        // input wire rx
  .tx(tx)                        // output wire tx
);

端口描述

端口 描述
AWADDR 写地址
AWVALID 写地址有效标志
AWREADY 写地址通道握手信号
WDATA 写数据
WSTRB 写数据选通信号,指明数据总线哪个字节有效,在AXI-uartlite中此信号不起作用
WVALID 写数据有效标志位
WREADY 写数据通道握手信号
BRESP 写应答,指明发送是否被成功接收
BVALID 写应答信号有效标志位
BREADY 写应答通道握手信号
ARADDR 读地址
ARVALID 读地址有效标志位
ARREADY 读地址通道握手信号
RDATA 读数据
RRESP 读应答,指明读操作的状态,是否成功
RVALID 读数据有效标志位
RREADY 读数据通道握手信号

AXI-Lite接口基本使用

AXI-Lite 总线使用valid+ready信号进行相互握手。

发送地址或数据

在这里插入图片描述
发送端提供数据或地址的同时提供同步的valid信号,等待接收端拉高ready信号,valid和ready同时为高时接收端采样数据或地址,即在上图中的T2时刻处开始采样。
AXI-uartlite写地址和写数据要同时进行

读数据

在这里插入图片描述
先发送读地址,同时拉高rready信号,表明可以接收数据,当valid信号拉高时采样数据。

AXI-uartlite IP核寄存器介绍

地址偏移 寄存器名称 描述
0h Rx FIFO 接收数据FIFO
04h Tx FIFO 发送数据FIFO
08h 状态寄存器 IP核状态寄存器
0ch 控制寄存器 IP核控制寄存器

Rx FIFO和Tx FIFO都是低8bit有效,控制寄存器如下图所示:
在这里插入图片描述
状态寄存器如下图所示:
在这里插入图片描述

简单的AXI-uartlite控制模块

`timescale 1ns / 1ps
//
//        +------------------------------------------------------+
//        | Address | Register Name | Description                |
//        |---------|---------------|----------------------------|
//        | 0h      | Rx FIFO       | Receive data FIFO          |
//        | 04h     | Tx FIFO       | Transmit data FIFO         |
//        | 08H     | STAT_REG      | UART Lite status register  |
  • 8
    点赞
  • 84
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值