高速串口数据通信在现代通信系统和控制系统中应用日益广泛,较之传统的基于RS232传输标准,具有更高的可靠性,更强的兼容性,更快的传输速率。由于不同的串口数据通信采用的方式各不相同,有异步模式、同步模式,而且数据传输格式也各不相同,有的采用传统SCI传输格式,有的采用自定义数据格式,有的采用帧长度固定方式,有的采用帧长度可变方式等,而且每一帧的数据长度可以从10bit到几千bit,所以高速串口的设计要求不同其实现方案也不同。本文重点介绍基于SOPC(可编程系统芯片)的高速异步串口通信系统的设计方法。
目前的嵌入式处理器种类繁多。Altera公司的NiosII处理器是用于可编程逻辑器件的可配置的软核处理器,与Altera的FPGA组合,具有很高的性价比。
总体设计及系统架构
高速串口数据通信系统采用双线平衡驱动,半双工同步传输或单向广播同步传输,线路传输速率为5Mbits/s,总线连接关系如图1所示。 &nb
系统中主机模块能调度总线上的数据帧收发,保持数据通信的实时性,数据传输时由主机模块发送数据帧。数据帧若为半双工同步传输帧,则数据帧只对其中一个外围模块有效,同时当外围模块收到数据后,应发送相应的应答信号;数据帧若为单向广播同步传输帧,则数据发向所有外围模块控制工程网版权所有,而不需要任何应答信号。
系统以固定的数据帧格式传送数据,不同于传统的SCI格式控制工程网版权所有,帧长为7字节(共56bits),由2字节引导序列、1字节地址,3字节数据、1字节帧结束序列组成。帧的发送顺序:字节内低位先发,多字节内低字节先发。
无论是主机模块还是外围模块均采用相同的串口通信设计,串口通信设计包含两个主要部分:通信接口部分和管理控制部分。通信接口部分主要完成数据帧结构的封装和解封装,并通过帧头的分析识别进行时隙定位,同时能让系统内的每一终端实现多机共享通信资源的通信机制,该模块由VHDL语言实现。管理控制部分由NiosII软核实现的,为了能在串行通信方式上实现时分复用,进而实现多设备同时通信,系统设计出一套完整而独特的控制帧格式,并通过这些帧格式控制实现建立连接,撤销连接和相应管理。因此,利用NiosII的特点,形成特殊的帧头判决、同步时钟提取、控制信息的判断、收发模式变换,这些都依赖专用模块的实施并靠高速执行速度来适应多终端下的高传输速率。
鉴于以上系统架构和设计要求,串口通信采用模块化设计思路和方法,模块结构如图2所示。
NiosII软核CPU开发工具SOPCBuilder提供简洁的操作方式控制工程网版权所有,可将用户的数字电路模块封装成标准的NiosII软核外设模块控制工程网版权所有,这使得NiosII软核可以很容易地与用户逻辑结合,构成功能更加强大的SOC系统。在高速串口数据通信的设计中,既需要一个高速的处理器作为系统的控制管理核心,又有大量用户自定义的数字电路功能模块需要在FPGA芯片中实现,因此,采用FPGA芯片和NiosII软核CPU作为高速串口数据通信的硬件平台是一个优化的选择。
通信接口模块设计
通信接口模块设计采用VHDL语言设计,由两部分组成:数据帧发送电路和数据帧接收电路。数据帧发送电路将NiosII要发送的数据、地址按照数据帧格式进行组帧,然后同步传输到总线上,该部分设计的关键是并串转换、合并数据和同步控制,数据的发送率为5Mbits/s,而工作时钟fclk为25MHz,对fclk进行5分频,得发送时钟ftxd为5MHz。当有数据要发送时,每一个即ftxd的上升沿到来时传送数据,先发送帧头2字节引导序列,即“1110011100111110”,然后发送串行数据。由于NiosII的内部数据宽度通常是32位,故将1字节地址和3字节数据由软件将其合并成一组32位宽度的数据,合并时地址在低位,数据在高位,然后将要发送的32位数据缓存在一个32位宽度的矢量区间CONTROL ENGINEERING China版权所有,引导序列结束后从低位到高位依次发送数据,即data[0]、data[1]……data[31],最后发送结束标志字节“1110011”,发送结束。
接收电路的设计重点考虑的问题是如何准确判断到数据帧头,然后解析地址,数据的速率为5Mbit/s,FPGA的工作时