Xilinx AXI UART Lite IP核实战仿真例程(非example)
1 概述
在上一篇Xilinx AXI UART Lite IP核:IP核深度解析-CSDN博客中,我们对AXI_UART Lite IP核进行了介绍,对内部的框架和寄存器也进行了详细的说明,由于vivado自带的AXI_UARTLite的仿真例子太过于简洁,不适合作为新手学习使用,故我们使用AXI_VIP重新搭建AXI_UARTLite的仿真环境。
2 环境搭建
2.1 IP核配置说明
我们新建block Design,并搜索添加AXI UartLite的IP核,IP核配置如下:
- AXI 时钟频率设置为100MHz
- 波特率设置为 115200bps
- 有效数据bit设置为8bit。
2.2 搭建测试环境
我们使用AXI_VIP+AXI_UARTLite的框架,地址设置如下所示,从AXI_VIP给AXI_UARTLite IP核写入配置和数据,当检测到中断的时候,再通过AXI_VIP读取数据即可。
3 仿真
3.1 UART发送仿真
仿真激励如下:
- 清除TX FIFO和RX FIFO
- 使能中断
- 给0x04寄存器(TX FIFO )写入0x87657321
- 等待中断,当检测到中断之后,读取状态寄存器
仿真结果如下:
我们可以看出,发出的数据其实是0x21(tx线上是 0 1000 0100 )其中第一个0是起始位,然后1000 0100 因为低位在前 所以其实应该是0010 0001 对应就是0x21
那我们前面写入的不是0x8765_4321吗?为什么只传输了0x21呢?
这是因为,高位其实是保留位,也就是无效的
如果想要传输32bit的数据,那么应该分为4笔传输,即0x87 0x65 0x43 0x21
故修改激励如下:
仿真结果如下:可以看到32bit的数据均通过TX发出
3.2 UART接收仿真
仿真激励如下:
- 将UART的TX和RX相接,即进行环回
- 当收到中断以后,判断状态寄存器的bit0是否为1(RX Data Valid)
- 如果RX Data Valid拉高,说明RX FIFO中有有效数据,读取0x00寄存器(RX FIFO寄存器)
仿真结果如下:可以看到接收也是8bit有效的,且与刚才写入的数据一致。
4 总结
通过上述仿真可以看出,AXI_UARTLite IP核,可以根据GUI界面的配置,将AXI4Lite接口输入的数据转为符合协议和波特率的串行信号输出,可以通过中断通知主机IP核的收发状态以及故障状态,通过AXI4-Lite接口,它可以轻松集成到处理器系统中,并且提供了灵活的配置选项以满足不同应用需求。无论是作为调试接口,还是与外部设备通信,AXI UART Lite都是一个可靠的选择。
