基于UART IP核的SCI通讯方法技术领域
本发明涉及一种基于UART IP核的SCI通讯方法。
背景技术
在许多工程系统应用中,UART(通用异步接收发送装置)以低成本、高可靠性等优
点被人们青睐。目前广泛使用的RS232异步串行接口,如8250、NS16450等专用集成芯片,虽
然使用简单,却有占用电路体积、引脚连接复杂等缺点。
文献“《基于TL16C752B的DSP通用异步串行接口设计》电子测量技术论文2009.7”
介绍了一种基于DSP和异步串行接口协议芯片TL16C752B之间的接口电路设计方法,虽应用
简单但其硬件电路复杂。
而当前通讯的发展趋势,对设计提出了系统集成,高可靠性的要求。为满足这些要
求,不仅要求采用数字化,而且要求采用集成化更高,模块化,可靠性更强的产品。
发明内容
发明目的是:
为了克服传统的SCI通讯芯片体积大占用管脚多等不足,本发明提供一种基于
UART IP核的SCI通讯技术。使用IP复用技术,将UART IP软核集成到FPGA芯片上,可增加系
统的可靠性,缩小PCB板体积;其次由IP核的特点,可使整个系统更加灵活,还可以根据需要
进行功能的升级、扩充和裁减,实现了SCI通讯的集成化和模块化,可作为一个独立的模块
集成到控制器中。
本发明解决其技术问题所采用的技术方案是:
在本设计中使用自顶向下的设计方法对UART进行分析设计。首先把该设计划分成
几个可操作的子模块,编制出相应的模型(RTL级)。然后再将每个子模块看成一个独立的单
元,组合在一起完成整个设计。UART IP核主要是包含接收器模块、发送器模块、波特率产生
模块、中断控制模块和FIFO模块组成五部分,见附图1。
UART IP核包含一个可编程的波特率发生器:它是给发送器和接收器提供发送数
据和接收数据的比特时钟;包括提供标准波特率和各种非标准波特率的比特时钟:标准波
特率作为通信双方进行异步串行通信。而非标准波特率作高速同步通信;它可以对系统时
钟进行2n分频(n最大为16),输出的频率Baudrate_clk=系统时钟/(波特率×16×除数);
这样通过设置除数的值。就可以得到期望的内部波特率;
发送FIFO和接收FIFO在UART中的作用是实现对收发数据的缓冲,减少串口和CPU
的交互时间,提高CPU和UART的传输效率。由于数据总线的读写时钟与UART的工作时钟不一
样,所以所设计的UART采用的是异步FlF0的方式。异步FIFO主要由4部分组成:写时钟域模
块、读时钟域模块、异步比较模块以及双端口RAM模块。其中读/写时钟域模块中包含了读/
写指针和空/满标志产生逻辑。异步比较模块是用来产生空/满判断信号。当读写指针在同
一时刻指向同一个内存位置时,FIFO处于空或满的状态。判断此时状态是空还是满,就要通
过对读写指针进行判断。
中断处理模块:发送数据时,防止数据丢失,以及和CPU交联数据过多,将多个SCI
的中断信号相与,减少了中断信号和控制芯片间的信号交联,当控制器接收到中断信号后,
去查对应FIFO中的满标志位,再去FIFO取数;从而防止数据丢失;
发送模块的逻辑是从发送FIF0中读取数据,将读到的并行数据转换成串行数据,
并送往外设。接受采用状态机来设计,一共有5个状态机,分别为:CHECK等待、CHECK开始、接
收开始、数据读取、中断CHECK;
CHECK等待:复位的时候状态机进入的状态;UART在没有数据的时候,其数据线一
直保持高位;当检测到数据线出现下降沿的时候,即CHECK开始状态;
CHECK开始:在CHECK等待状态时检测到数据线出现下降沿时进入CHECK开始状态,
通过CHECK开始状态确定这个下降沿是否由于毛刺引起;在该状态中对第一位数据进行采
样并且判断,如果得到的数据是起始位0的话,状态机会跳转到接收开始状态;如果发现是
误判,即判断出现毛刺,状态机会重新进入CHECK等待状态;
发送开始:完成起始位的发送后,就要发送由CPU传过来的有效数据;首先把数据
存入一个移位寄存器中,利用移位寄存器实现并行输入到串行输出的转换;当计数器显示
数据传输完毕后,状态机跳入数据读取状态;
数据读取:根据已传输的有效数据,获得数据并且在本状态传输出去;
中断CHECK:对停止位进行采样,并且判断停止位是否为1;若停止位不正确,那么
数据也不传入CPU;
接收逻辑在检测到起始位后开始接收数据,并将接收到的串行数据转换成并行数
据,然后将数据写入接收FIFO。发送器模块相对来说和接收器差不多,而且相对简单一些;
一共有5个状态机,分别为:等待、开始、接收开始、数据读取、中断CHECK;
等待:在没有得到CPU的发送信号的时候发送器一直处于等待状态,此刻一直保持
发送器的数据为高,当得到CPU发出的数据来临信号,跳转入CHECK开始状态;
开始:进入该状态,发送器会首先发送一个0,作为起始位;起始位传送完毕后进入
下一个状态;
接收开始:当状态机跳转到接收时的时候,每采样得到一位数据,就把接收到数据
放到事先准备好的移位寄存器中;当计数器提示数据已接收完,状态机会跳转入数据读取
状态;
数据读取:根据已传输的有效数据,获得参数并且在本状态传输出去;
中断CHECK:输出停止位1标示这一帧数据传输结束。本发明的有益效果是:
本发明把UART硬件电路转换为用硬件描述语言的软件编程的方法,减少了电路的
数量,提高了电路的可靠性,降低成本,提高的IP可复用性。实现了SCI通讯的集成化和模块
化,可作为一个独立的模块集成到控制器中。使用IP复用技术,将UART集成到FPGA芯片上,
可增加系统的可靠性,缩小PCB板体积;其次由IP核的特点,可使整个系统更加灵活,还可以
根据需要进行功能的升级、扩充和裁减。
支持多通道传输。本IP核在使用时,可根据系统配置需要同时调用多个IP核(最多
可扩展10个),目前没有芯片可达到,为使用多通道SCI传输提供了有效支撑,符合机载及星
载通信终端的小型化设计趋势。
IP核的通用性。可集成在FPGA和CPLD等逻辑芯片中,节约了PCB的面积,提高了系
统可靠性。更高性能:同步性能更好,接口可定制,通信模式可定制,传输更稳定。
附图说明
图1是本发明基于UART IP核的SCI通讯方法功能模块的划分框图。
图2是本发明基于UART IP核的SCI通讯技术fifo状态机。
图3是本发明基于UART IP核的SCI通讯技术接收状态机。
图4是本发明基于UART IP核的SCI通讯技术发送状态机。
具体实施方式
下面结合附图和具体实施方式对本发明作详细说明。
本发明基于UART IP核的SCI通讯技术选择以一个4个核的SCI IP为例说明。UART
核主要是包含接收器模块、发送器模块、波特率产生模块、中断控制逻辑模块和FIFO模块组
成五部分。参照附图1。
1波特率产生模块
根据UART通信协议,只有数据发送和接收,而没有时钟,所以需要通过波特率来统
一发送和接收的数据速率,包括提供标准波特率和各种非标准波特率的比特时钟:标准波
特率一般是作为通信双方进行异步串行通信.而非标准波特率一般是用作高速同步通信,
波特率发生器实际就是一个分频器,在本设计中采用了16分频的电路。给发送器
和接收器提供发送数据和接收数据的比特时钟。波特率计算公式如下:
Baudrate_clk=系统时钟/(波特率×16×除数)。这样通过设置除数的值.就可以
得到期望的内部波特率。
本实施案例中:系统时钟为50MHz,希望波特率为115200,则波特率时钟分频数为
50M/115200/16。
2中断模块
中断模块使能信号将多个SCI的中断信号相与,减少了中断信号和控制芯片间的
信号交联,当控制器接收到中断信号后,去查对应FIFO中的满标志位,再去FIFO取数。从而
防止数据丢失。
3异步FIFO
发送FIFO和接收FIFO在UART中的作用是实现对收发数据的缓冲,减少串口和CPU
的交互时间,提高CPU和UART的传输效率.由于数据总线的读写时钟与UART的工作时钟不一
样,所以所设计的UART采用的是异步FlF0的方式。
如附图2所示,异步FIFO主要由4部分组成:写时钟域模块、读时钟域模块、异步比
较模块以及双端口RAM模块.其中读/写时钟域模块中包含了读/写指针和空/满标志产生逻
辑。
异步比较模块是用来产生空/满判断信号.当读写指针在同一时刻指向同一个内
存位置时,FIFO处于空或满的状态.判断此时状态是空还是满,就要通过对读写指针进行判
断.
4发送模块
发送逻辑的主要功能是从发送FIF0中读取数据,将读到的并行数据转换成串行数
据,并送往外设.接受采用状态机来设计,一共有5个状态机,分别为:CHECK等待、CHECK开
始、接收开始、数据读取、中断CHECK,状态机工作机制见附图3。
CHECK等待:复位的时候状态机进入的状态。在UART中,有效数据的传输是异步于
接收时钟的,因此UART在没有数据的时候,其数据线一直保持高位。当检测到数据线出现下
降沿的时候,说明有数据开始传输,此刻进入下一状态,即CHECK开始状态。
CHECK开始:在CHECK等待状态时检测到数据线出现下降沿所以进入CHECK开始状
态,我们需要通过CHECK开始状态确定这个下降沿是否由于毛刺引起。在本状态中我们会对
第一位数据进行采样并且判断,如果得到的数据是起始位0的话,状态机会跳转到接收开始
状态。如果发现是误判,状态机会重新进入CHECK等待状态。
发送开始:完成起始位的发送后,就要发送由CPU传过来的有效数据;首先把数据
存入一个移位寄存器中,利用移位寄存器实现并行输入到串行输出的转换;当计数器显示
数据传输完毕后,状态机跳入数据读取状态;
数据读取:根据已传输的8位有效数据,获得数据并且在本状态传输出去。
中断CHECK:对停止位进行采样,并且判断停止位是否为1。若停止位不正确,那么
数据也不传入CPU。在本实施案例中停止位是1位,也可以是2位、1.5位。
5接收模块
接收逻辑在检测到起始位后开始接收数据,并将接收到的串行数据转换成并行数
据,然后将数据写入接收FIFO.发送器模块相对来说和接收器差不多,而且相对简单一些。
一共有5个状态机,分别为:等待、开始、接收开始、数据读取、中断CHECK,状态机工作机制见
附图4。
等待:在没有得到CPU的发送信号的时候发送器一直处于等待状态,此刻一直保持
发送器的数据为高,当得到CPU发出的数据来临信号,跳转入CHECK开始状态。
开始:进入该状态,发送器会首先发送一个0,作为起始位。起始位传送完毕后进入
下一个状态。
接收开始:完成起始位的发送后,就要发送由CPU传过来的有效数据。首先把数据
存入一个移位寄存器中,利用移位寄存器实现并行输入到串行输出的转换。8位数据传输时
有一个计数器,当计数器显示8位据传输完毕后,FSM跳入数据读取状态。
数据读取:根据已传输的8位有效数据,获得PARITY参数并且在本状态传输出去。
中断CHECK:输出停止位1标示这一帧数据传输结束。
本发明提供一种先进的基于UART IP核的SCI通讯技术,UART IP核是能够支持
FPGA等逻辑芯片的定制化IP,可以实现多个UART在FPGA中实现,并进行了时序优化,可以支
持灵活的波特率配置和通信协议配置,内置有FIFO缓存,确保通信数据不被丢,可支持单个
字节传输和数据模块传输两种传输方式,可支持SCI接口,与DSP直接进行通信而无需任何
协议转换,留有足够的通信带宽,可支持多个IP核并行工作,并确保数据不丢失,确保整个
通信的稳定和可靠。