Pynq调试AXI UART接口

Pynq将IP的操作封装的很好,但是也隐藏了很多细节 

Pynq的Base.bit在PL生成了MicroBlaze,这个处理器帮助我们操作了GPIO、UART、IIC等外设,但是在测试时PL无法同时加载两个bit流文件,那么自定义的设计无法和Base.bit中定义的外设同时存在,具体结果有两种:①PL server直接断开②会一次加载bit流文件,最后在PL里加载的bit流是最后一个加载的,使用先前的会有不是当前加载的错误

Pynq调试AXI UART接口

解决办法是在自己设计中加入这些bit流,目前还没查到如何加载多个设计的bit流 

所以在设计中,我加入了需要的UART模块,也就是AXI UartLite,但是在测试中出现了一些问题,发送的数据乱七八糟的,将设计加载在SDK中调试数据发送正常,一般xilinx的IP还是很可靠的,并且SDK中测试正常,可以进行一下猜测:是因为时钟设置问题,造成波特率不同,接收的数据出现问题

 从这里开始查(点击进入连接),这里提示说明,这里说明会根据tcl文件加载设置,加载bit流

Pynq调试AXI UART接口

 查看设计的tcl文件,确实是50MHz,那么是不是Pynq在解析bit流时对时钟没能设置呢,不然也不会有pynq.pl_server.tcl_parser这样一个模块用来解析tcl文件,找找如何查看当前PL的时钟,最后在这个模块中查找到pynq.ps,ps模块有

Pynq调试AXI UART接口

 很明显,这个模块包含了我们需要的时钟信息,做一下测试,时钟时31.25MHz,那么就是时钟有问题

Pynq调试AXI UART接口

我们修改为50Mhz,现在时钟正常,进行发送也正确,这里不再展示

Pynq调试AXI UART接口

这里不仅仅是一个Pynq下AXI UARTLite的调试和使用,也对Pynq框架进行了最简单的一个探索,希望对大家有帮助