Xilinx AXI UART Lite IP核:IP核深度解析

在FPGA和SoC设计中,UART(通用异步收发传输器)是最常用的串行通信接口之一。Xilinx提供的AXI UART Lite IP核是一个轻量级、可配置的UART控制器,它通过AXI4-Lite接口与系统总线连接,非常适合在嵌入式系统中添加简单的串行通信功能。本文将基于官方产品指南PG142(v2.0)对该IP核进行详细解析,帮助开发者快速理解其架构、寄存器、配置方法以及使用流程。

1. 概述

AXI UART Lite IP核用于实现UART协议与AXI4-Lite接口的桥接。它支持全双工通信,内置16Byte(字节)深度的发送FIFO和接收FIFO,可减少CPU干预。其特性包括:

  • AXI4-Lite接口:用于寄存器访问和数据传输。

  • 可配置的数据位:5~8bit位。

  • 可选的奇偶校验:无(No Parity)、奇校验(Odd)、偶校验(Even)。

  • 可选波特率:通过内部波特率发生器(BRG)实现,在GUI界面进行选择。

  • 中断支持:当接收FIFO非空或发送FIFO空时产生中断(可屏蔽)。

  • 独立收发:发送和接收通道独立运行。

该IP核适用于需要UART通信但资源有限的场景,例如MicroBlaze软核处理器或Zynq处理器系统中的外设扩展。

2. IP核架构

AXI UART Lite的内部结构如下图所示

主要包含以下模块:

  • AXI接口:实现AXI4-Lite从机(Slave)接口,负责与系统总线的通信,处理读写请求。

  • UART Lite寄存器:包含控制寄存器(CTRL_REG)、状态寄存器(STAT_REG)以及发送FIFO / 接收FIFO(各16字节)。

  • UART控制(UART Control)

    • Rx控制:以"配置的波特率"采样接收数据,并存入接收FIFO。

    • Tx控制:从发送FIFO中读取数据,通过UART_TX引脚串行发送。

    • 波特率发生器(BRG):根据系统时钟和配置产生所需的波特率。

    • 中断控制:管理中断使能和中断产生逻辑。

3. 端口信号

IP核的I/O信号分为三类:

信号名 方向 描述
系统信号
s_axi_aclk 输入 AXI时钟
s_axi_aresetn 输入 异步复位,低有效
interrupt 输出 中断输出,上升沿
AXI4_lite通道信号 参考AXI4Lite协议,包括读写地址、数据、响应等
UART接口信号
rx 输入 串行接收数据
tx 输出 串行发送数据(复位后为1)

AXI4Lite相关信号的具体定义参考【FPGA数据总线】详解AXI4-LITE总线

4. 寄存器空间

IP核通过四个32位寄存器进行控制,地址偏移如下:

地址偏移 寄存器名 描述
0x00 Rx FIFO 接收数据FIFO(只读)
0x04 Tx FIFO 发送数据FIFO(只写)
0x08 STAT_REG 状态寄存器(只读)
0x0C CTRL_REG 控制寄存器(只写)

4.1 接收FIFO (Rx FIFO)

  • 深度:16字节(Byte)

  • 访问:只读

  • 读取"空FIFO"会导致SLVERR总线错误

  • 数据位宽可配置(5~8位)

4.2 发送FIFO (Tx FIFO)

  • 深度:16字节(Byte)

  • 访问:只写

  • 写满FIFO会产生SLVERR,数据不会写入

  • 数据位宽可配置

4.3 控制寄存器 (CTRL_REG) [地址0x0C]

名称 访问 复位值 描述
4 Enable Intr 0 中断使能:1=使能,0=禁止
1 Rst Rx FIFO 0 写1清除接收FIFO
0 Rst Tx FIFO 0 写1清除发送FIFO
其他位 Reserved - 0 保留

4.4 状态寄存器 (STAT_REG) [地址0x08]

名称 访问 描述
7 Parity Error 奇偶错误指示(读后清零)
6 Frame Error 帧错误指示(停止位为0,读后清零)
5 Overrun Error 溢出错误(接收新数据但FIFO满,读后清零)
4 Intr Enabled 当前中断使能状态
3 Tx FIFO Full 发送FIFO满标志
2 Tx FIFO Empty 发送FIFO空标志
1 Rx FIFO Full 接收FIFO满标志
0 Rx FIFO Valid Data 接收FIFO有数据(非空)

5. 配置参数

在Vivado中定制IP时,可以设置以下参数:

  • AXI CLK Frequency:系统时钟频率(MHz),用于波特率计算。

  • Baud Rate:目标波特率,支持以下常用值(单位bps):110, 120, 300, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000, 230400, 460800, 921600。GUI会自动检查时钟频率的容差,只允许设置有效的波特率。

  • Data Bits:数据位,可选5、6、7、8。

  • Parity:奇偶校验模式:None、Odd(奇)、Even(偶)。

6. 时钟与复位

  • 时钟 :所有操作同步于s_axi_aclk

  • 复位s_axi_aresetn为低有效同步复位,复位后所有寄存器恢复默认值,FIFO被清空。

7. 编程序列

典型使用流程如下:

  1. 初始化:根据需要,向CTRL_REG写入适当的值,例如使能中断、清除FIFO。

  2. 发送数据:向Tx FIFO写入待发送字节(注意FIFO满标志)。

  3. 接收数据:轮询STAT_REG的Rx FIFO Valid Data位,当该位为1时从Rx FIFO读取数据。

  4. 中断处理:如果使能了中断,当中断触发时,读取STAT_REG确定中断来源(接收数据可用或发送FIFO空),然后进行相应处理。

具体的使用方式见下一篇:AXI_UARTLite IP核仿真(待更新)。

总结

AXI UART Lite IP核是一个简单易用、资源占用少的UART控制器,非常适合在Xilinx FPGA或Zynq SoC中快速添加串行通信功能。通过AXI4-Lite接口,它可以轻松集成到处理器系统中,并且提供了灵活的配置选项以满足不同应用需求。无论是作为调试接口,还是与外部设备通信,AXI UART Lite都是一个可靠的选择。

相关推荐
GateWorld4 小时前
FPGA内部模块详解之二 FPGA的逻辑“心脏”——可编程逻辑块(PFU/CLB)深度解析
fpga开发·fpga内部结构
Saniffer_SH5 小时前
【高清视频】如何针对电动汽车进行通信可靠性测试、故障注入与功率分析?
服务器·驱动开发·测试工具·fpga开发·计算机外设·硬件架构·压力测试
博览鸿蒙7 小时前
基于FPGA技术的数字存储示波器设计探讨
fpga开发
Saniffer_SH7 小时前
【高清视频】企业级NVMe SSD (E3.S, U.2)和消费类M.2 SSD拆解分析
服务器·网络·数据库·驱动开发·测试工具·fpga开发·压力测试
嵌入式-老费7 小时前
Linux camera驱动开发(ARM、FPGA、DDR共享总线)
图像处理·驱动开发·fpga开发
尤老师FPGA8 小时前
HDMI数据的接收发送实验(五)
fpga开发
范纹杉想快点毕业8 小时前
Zynq-7000 PS端开发深度技术指南:从硬件架构到实战应用
fpga开发·硬件架构
FPGA小迷弟8 小时前
FPGA工业常用接口:FPGA 的 SPI 总线多从机通信设计与时序优化
学习·fpga开发·verilog·fpga·modelsim