基于NiosII的多串口转发通信处理机设计
扫描二维码
随时随地手机看文章
引言
随着电子技术的飞速发展,接口技术显得越来越重要,而且所要监控的工业环境也变的越来越复杂,对多串口通信的需求也随之增加。在多串口应用方面,目前虽然有一种通过PCI扩展主机串口的数量的多串口卡,但其价格高昂,在系统维护、性能、布线等方面存在很大缺陷,且可扩展串口数量也有限;另外,还有一种通过多串口芯片来扩展串口数量的方案,其可扩展的串口数则更有限,而且电路板体积大,功耗高,价格也高。
基于以上原因,本文利用SOPC技术,基于NiosⅡ设计了一个30路串口数据转发通信处理机。该设计方案具有集成度高、体积小、功耗低和速度快等优点,而且还具有用户可编程的特点,可方便实现其功能重构⑵。同时,该方案还可根据实际需求灵活改变串口个数,而且有着相对较好的移植性、易实现性和灵活性,具有潜在推广价值。
1 NiosⅡ软核处理器串行接口
1.1 NiosⅡ软核处理器的特性
本系统是以NiosII软核处理器为核心设计的片上系统,处理器采用Altera公司的第二代用户可配置的通用32位RISC软核处理器,它是Altera公司特有的基于通用FPGA架构的软CUP内核,设计者可以利用其开发工具SOPCBuilder设计构造以NiosII处理器为基础的系统,而且可以根据需要来调整嵌入式系统的特性、性能以及成本,扩展产品的生命周期,避免由于处理器的更新换代带来的损失.
1.2 UART内核
SOPC Builder中提供了具有Avalon接口的UART的IP核,可实现基于FPGA的嵌入式系统与外部器件之间的串行符号流通信。通过UART核可实现RS232协议,并可提供可调的波特率、校验、停止、数据位以及可选的RTS/CTS控制信号,可根据需要配置UART。图1所示为UART内核框图,它有两个用户可视部分:寄存器文件和RS232信号。
2 通信处理机硬件设计
该设计运用了Altera的NiosⅡ软核处理器,借助SOPCBuilder和QuartusII工具,可在EP2C8T144芯片上实现30路串口转发通信处理机的设计。图2所示为30路串口转发通信处理机的硬件设计框图,包括内嵌NiosII软核处理器系统、31个串行接口模块(其中一个串口作为母串口与PC机连接,其他30个串口为子串口与下位机连接)、JTAG调试模块等,通过SOPCBuilder可以根据设计者的需要来配置CPU及各功能模块的参数。
2.1 FPGA内嵌NiosⅡ处理器系统设计
由于NiosII是一个内嵌在FPGA中的软核处理器,其外设定制也就显得比较方便,在QuartusII工具中提供的SOPCBuilder环境下,其定制逻辑的结构框图如图2所示的硬件设计框图中的NiosII处理器系统。该系统定制了31个UART内核,且只用TXD和RXD这两个信号,而没有定制RTS和CTS控制信号。本设计把串口UART0作为母串口,其他串口作为子串口,有1位起始位,8位数据位,1位停止位,无奇偶校验位,串口波特率可以通过编程确定。
NiosII处理器系统的生成除了NiosII软核、片内及片外外设的定制外,还需要对各外设进行基址和中断号的分配、系统复位和异常地址设置。设计中可通过自动分配系统基地址和系统中断向量,来手动分配CPU复位地址为外设EPCS16.CPU溢出地址为片上RAM,CPU调试断点地址为JTAG调试地址,从而由系统报告得知系统是否定制成功,图3所示为NiosII系统定制图。
2. 2 FPGA外围电路设计
在该系统中,外围电路主要包括复位电路、串行接口电路、串行配置电路和存储电路等。限于篇幅,本文主要简单阐述其串行配置电路和串行接口电路。
由于CyloneII系列FPGA芯片主要采用SRAM单元保存配置数据,而SRAM是掉电易失性的,因而每次上电时,FPGA芯片都要重新下载配置数据。该系统采用串行配置器件EPCS16并通过主动串行模式来对FPGA芯片进行配置,其剩余的存储空间用来存储用户程序。EPCS16芯片与FPGA芯片相连的4个引脚分别是DATA、ASDI、nCS和DCLK。
为了与RS232的电压相匹配,在FPGA的I/O引脚和RS232连接器之间需要加电平转换芯片MAX3232,其连接也比较简单,只有两个引脚需要连接。MAX3232的T1IN和R1ONT引脚分别与UART核的TXD和RXD信号相连,R1IN和T1ONT引脚连接到RS232连接器。为了显示通信状态,TXD和RXD信号都将在连接一个发光二极管后通过一个上拉电阻接3.3V电源。
3 系统软件设计
3. 1 通信协议设计
在进行数据通信时,为了确保通信双方能够建立可靠、有效的数据通信,必须先定义好相应的数据通信协议。本文根据系统实际需求来定义与下位机的握手通信协议,其协议帧格式如表1所列。
该数据帧有8个字节,传输数据段长度可根据实际需求而定,校验字段为除帧头外的6个字节相加对256取余。需要说明的是,数据帧格式并不惟一,用户可以根据实际需求设计出不同的数据帧格式。
串口通信是按位传送、按字节来接收的「曰,按照表1中定义的数据帧格式的接收过程如下:
(1) 判断当前接收的数据段,如果是一帧开始,则对相关参数进行初始化。接着开始读,直到读到帧起始符0x7E或者读完为止;若没有,则丢掉所读数据。
(2) 如果读到了帧起始符0x7E,系统将设置读状态,该阶段字节数为7,分别对应地址、命令类型、传输数据、校验字;该阶段的处理就是读取7个字节数据。
利用数据帧进行数据传输时,只要将所读取的字节跟定义的数据通信格式比较,就可得到一帧完整的t-i-t
数据。
3.2 串口通信实现程序
系统软件设计是在非操作系统环境下利用软件集成开发工具IDE所提供的硬件抽象层HAL的库函数支持来编写的。系统上电复位后,FPGA芯片从串行配置芯片中加载配置数据,并初始化各串口参数,之后就可进行串口数据的收发。母串口通常以广播的形式给每个子串口发送数据,由下位机来判断是否接收数据;母串口以轮询的方式接收子串口数据。图4所示为母串口数据收发流程图。
4 实验结果
通过上位机的串口调试工具,可对所设计的多串口通信处理机进行测试。测试时由下位机发送数据,经过处理机接收后再转发给PC机,然后对比下位机发送和PC机接收的数据。实验证明多次测试均未见错误,其结果如表2所列。由此可见,基于Niosn设计的30路串口数据转发通信处理机具有高度的可靠性和稳定性。
5 结语
基于NiosII设计的多路串口数据转发通信处理机适用于工业环境复杂的多单元数据采集监测系统,可作为一个集中器应用于复杂数据釆集系统中。与多串口卡、通过多串口芯片扩展串口方案相比,新的多串口数据转发通信处理机具有稳定性好、实时性强、功耗低、灵活性好、成本低等优点。