本帖最后由 jinglixixi 于 2021-6-25 15:46 编辑
在使用MicroBlaze进行嵌入式系统设计时,常会用到AXI Uartlite IP核与外部设备通信,而使用AXI UART IP核即可进行RS-232通讯协议。 AXI UART IP核提供了UART信号和AMBA(高级微控制器总线体系结构高级可扩展接口)之间的AXI接口,并提供了异步串行数据传输的控制器接口。
该核的特点是: 对以axi4-lite接口接收的字符执行并/串行转换,并对从串行外围设备接收的字符执行串/并转换。它可发送或接收8、7、6及5位的字符,有一个停止位,并支持奇数、偶数或无奇偶位的校验配置,且可以独立发送和接收数据。 AXI UARTIP核的顶层框图如图1所示,使用其进行串行通讯的系统框图如图2所示。 图1 AXI UART IP核顶层框图 图2 串行通讯系统框图 由系统框图可知,当AXIUART 检测到串口设备状态发生变化时,AXIUART 就会产生一个中断信号传入中断控制器(AXIINTC),中断控制器生成中断输出信号,传入MicroBlaze处理器。要进行AXI UART IP核的串行通讯测试,其实现方式有2种,一种是在例程Hello World的基础上通过增加中断控制器(AXIINTC)IP核来实现,另一种就是直接利用已生成的设计成果,经下载来完成功能验证。由于第一种方式的操作步骤比较长,这里是采用第二种方式。具体的操作步骤如下:1.打开uart_intr的ISE工程,其见面如图3所示。 图3 打开uart_intr工程 2.双击“microblaze”进入硬件系统,然后选取“IP Catalog”选项卡,并点击“Communication Low-Speed”前的“+”号将其展开,即可见到已添加串口IP核“AXI UART(Lite)”,见图4所示。
图4 串口IP核
3.双击“AXI UART(Lite)”,即可进入IP核设置界面,将波特率设置为“115200”,数据位宽“8”,不启动奇偶校验位,见图5所示。然后点击“OK”,在弹出的图6所示对话框中继续点击“OK”即可。 图5 设置通讯参数 图6 连接对话框 4.选取“Ports”选项卡,并点击“axi_intc_uart”加以展开,则可查看到中断信号源的状态。若如图7所示,则说明已连接好中断信号来源。 图7 已连接中断信号来源 5. 选取“Project”选项卡,并双击“microblaze.ucf”,则可查看管脚约束,见图8所示。 图8 管脚约束 6.双击“SDK”工具图标,并按图9所示点击按钮,则弹出工作空间设置对话框,按图10进行设置即可。 图9 SDK对话框 图10 设置工作空间 7.若点击“uart_intr/src/main.c”,则可查看主程序的内容,见图11所示。 图11 主程序 8. 右击“uart_intr”,在快捷菜单中选取“BuildProject”来编译工程。
图12 编译工程 9. 按图13所示连接好下载器和USB接口,并打开电源。 图13 开发板连接 10.打开串口工具,并按图14来设置参数,然后打开串口。 图14 设置并打开串口 11.返回SDK界面,点击“ProgramFPGA”下载程序,如图15所示。 图15 下载程序 在弹出的对话框中,点击“Program”,见图16所示。 图16 进行下载 12.点击“Run”右侧的下拉图标,选择“RunConfigurations...”,见图17所示。 图17 运行配置 13. 选取“STDIO Connection”选项卡,并按图18进行设置,然后依次“Apply”和“Run”按钮即可下载。 图18 运行程序 此时,若点击“发送”按钮,即可见到图19所示的结果,即将发送区的数据发送出去。然后又接收回来。 图19 收发测试 若清空后发送字符串“uarttest”,则执行结果如图20所示,说明测试正确。 图20 测试结果
|