异步串行通信接口的IP核设计
,9为待机状态,A为帧数据位,B为空闲线模式起始位,C为帧地址位,E为帧奇偶校验位,F为空闲线模式停止位,D为空闲线模式计数0~7。
2 SCI数据接收单元
数据接收单元的功能是完成串行数据接收及接收标志位的生成。其结构如图4所示,接收起始位检测和接收字符状态机如图5、图6所示。
接收单元各功能模块及状态转换说明如下。
(1)RXD时钟八分频器
对波特率时钟进行八分频,并保持其与所接收串行数据流的字符同步。其输出两个时钟脉冲:RXD_CLK_WORK,用于计数、移位等;RXD_CLK_END,为数据流各种方式的停止位前一个字节时间段内提供脉冲。
图4 SCI数字接收单元
(2)起始位检测模块
是一种三位四状态机。其激励有两个:RXD_1_VALUE—接收的串行数据流激励;RXD_END_CHK—一次接收完毕的脉冲激励。其状态有如下几种(见图5):0(待机状态)、1(空状态)、2(空状态)、3(发现“1”到“0”的跳变状态)、4(输出时钟同步信号)、5(字符接收过程中输出RXD_CLK_AYN和RXD_START_DRV)。
(3)字符检测模块
主要功能是接收数据流。其在采样时钟驱动下数据流通过三个寄存器,随后在RXD_CLK_WORK脉冲作用下,三个寄存器的数据通过表决电路,把数据送到接收数据缓冲器RXD_VALUE中,为把数据送到移位寄存器RX_SHIFT做准备。
(4)当前接收字符状态机
用来标识当前所接收的数据是哪一种字符,以及在下一个RXD_CLK_WORK字符周期将转换到哪一种状态,并且根据当前接收字符的状态,驱动其它部件进行合适的操作。其激励有:RXD_START_DRV(RXD起始位有效激励)、RX_CHAR_REACH(RXD字符接收数目已够)、CCR3_ADDR_IDLE(地址/空闲线模式选择)、CCR5_PARENA(奇偶校验使能)。其状态(见图6)有:0(待机状态)、1(帧数据位)、2(帧起始位)、3(帧地址位)、4(帧奇偶校验位)、5(空状态)、6(帧停止位)。
(5)接收字符计数器
当接收字符状态机处于帧数据位阶段时,其开始计数;当与可编程的数据相同时,输出RX_CHAR_REACH给接收字符状态机。
(6)接收空闲线计数器
当处于待机状态时,开始计数器,当计数到一定时,输出一个脉冲,将RXSP1_RXWAKE置位为1;在下一个字符即将接收、读取SCI_RXBUF寄存器或SCI复位的情况下,RXST1_RXWAKE被复位为0。
(7)接收数据移位寄存器(SCI_RXSHIFT)
根据接收字符状态机的状态接收与检测的串行数据流,将所接收的正确数据送入SCI_RXBUF并置相应的标志,否则置出错标志。
(8)BRKDT间断检测计数器
当产生RXST4_FE帧错误时,开始工作。当RXD_VALUE为“1”时,其被复位;当RXD_VALUE为“0”时,表示没有数据接收,开
《异步串行通信接口的IP核设计(第2页)》