首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Xilinx FPGA嵌入式开发(五)— XPS中的Uart(Lite)模块

Xilinx FPGA嵌入式开发(五)— XPS中的Uart(Lite)模块

端口说明:RX、TX为收发端口,Interrupt为中断输出端口,如果通过设置CTRL_REG寄存器相应位使能中断,当接收FIFO收到有效数据或发送FIFO从非空变空,即最后一个数据发送出去时,中断产生。C_SPLB_CLK_FREQ_HZ为PLB总线时钟,根据此时钟选取可使用的波特率。例如总线时钟为10MHz,如果选取波特率115200,那么串口采样时钟应该为16*115200=1.8432MHz(16倍采样),而[10/1.8432]四舍五入得整数5,因此实际采样时钟为10/5=2MHz,此时波特率错误率为(1.8432-2)/1.8432=-8.5%,超出了大多数串口能接收的容限,因此不能选此波特率。对于此IP模块,波特率错误率应控制在3%以内。C_SPLB_P2P设置总线拓扑类型,目前只支持共享拓扑,即设为0。C_BASEADDR必须是地址空间的倍数,地址空间(C_HIGHADDR - C_BASEADDR + 1)必须是2的整数幂,最小0xF。寄存器RxFIFO(只读)、TxFIFO(只写)、STAT_REG(只读)、CTRL_REG(只写)地址分别为C_BASEADDR+0x0/4/8/C。控制方式:通过对TxFIFO、RxFIFO、CTRL_REG、STAT_REG进行操作来控制模块。TxFIFO 和CTRL_REG只读,STAT_REG、RxFIFO寄存器只写。接收/发送各有一个深度为16的32位宽FIFO,其中高8位有效(如设置C_DATA_BITS为8),存放接收或发送数据。如接收FIFO非空,对RxFIFO寄存器读取,则读取当前FIFO输出的数据,对空FIFO读取产生不可预料的结果。发送FIFO类似。对控制寄存器CTRL_REG相应位写操作可使能中断、复位RxFIFO、TxFIFO,均是写入1有效。对STAT_REG相应位读可获取奇偶错误、帧错误、溢出错误、中断是否使能、接收/发送FIFO空满状态信息。注:仿制国办的PC16550D器件,具有Modem功能(Baud rate:56Kbps)和Uart功能。文章出自seadoncas的专栏:http://blog.csdn.net/seadoncas
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表