端口说明: 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空满状态信息。 |