基于USB的多通道俄制串行总线接口卡设计
2008-03-26
作者:邓青海,景小宁,刘 安
摘 要: 基于USB的多通道" title="多通道">多通道俄制军用串行总线接口卡的设计及实现方案,重点论述了在基于FPGA的俄制军用串行总线IP核上通过双口RAM与USB通信,以及CY7C68013芯片在GPIF模式下进行固件和驱动程序设计的方法。
关键词: ΓОСТ18977 PTM1495 现场可编程门阵列 通用串行总线 通用可编程接口
俄罗斯标准ΓОСТ18977规定了飞机的成套机载设备通信的电器特性,其中一部分规定了与美国标准ARINC429相对应的串行码信号的类型及其电气标准。而与之配套的PTM1495技术资料中则规定了按照ΓОСТ18977标准采用双极性码进行信息交换的具体方法。该标准在苏27、苏30的火控计算机、大气计算机等机载设备中得到广泛应用。目前,基于该标准的接口卡大多数为PCI总线接口,且只具有两收一发的功能,测试维护很不方便。为了使接口卡使用方便、即插即用,本文提出了基于USB接口的多通道总线接口卡的实现方案。
1 ΓОСТ18977标准及其对应的数据格式标准
ΓОСТ18977标准采用双极归零制模式传输32位位信息,其信号电平的定义见表1。在连续传输时,它们之间的间隔至少有4个位时间(零电压)。ΓОСТ18977中规定的串行码信号可以在12kbps、48kbps、100kbps、250kbps四种速率下工作,而目前的飞机系统和装置一般均在48kbps、公差为±25%的传输速率下工作。
ΓОСТ18977和PTM1495规定通信中可以采用四种数据格式:二进制码,二-十进制码(BCD)、指令和标志码,以及由字母、符号、数字组成的字符码。这四种数据的发送和接收都要按照PTM1495规定的32位串行数据的方式进行。
2 CY7C68013简介
CY7C68013是Cypress公司推出的USB2.0控制器。它包括带8KB片上RAM的高速8051单片机、4KB FIFO存储器以及通用可编程接口(GPIF)、串行接口引擎(SIE)、USB2.0收发器、6条可编程控制输出线、9条地址输出线、6条通用的准备输入线(数据线宽可为8位或16位),具有56引脚、100引脚、128引脚[3]三种封装规格。
CY7C68013外设交换数据通常采用Slave FIFOs(从设备)和GPIF两种方式。GPIF为一个灵活的8位或16位的并行接口,由一个用户可编程的状态机驱动。
USB传输类型有控制传输、中断传输、同步传输及块传输。通常,块传输用于传输大量数据的设备,而且对数据进行校验和重传。USB2.0版本支持高达480Mbps的传输速率,块传输完全可满足多通道总线接口卡的要求。
3 系统设计
系统硬件设计主体结构如图1所示,主要由USB2.0接口器件CY7C68013-128PIN、双端口" title="双端口">双端口RAM IDT7025、FPGA(Altera Cyclone系列EP1C12)、电平转换器件HI8585和HI-8482组成。
3.1 双端口RAM地址空间划分
数据缓存的关键是双端口RAM。本系统采用IDT7025,规格为8K×16位。考虑到数据传输无间隙的要求,将双端口RAM分为读、写两部分。其中前4K×16位用来存储发送的数据,后4K×16位用来存储接收的数据。由于对双端口RAM可以同时读写,所以又将读、写RAM地址区各划分为4部分,分别对应4个发送、接收通道。以发送通道1为例,其地址范围为0x0000~0x03FF,在发送通道1内,又分为4个小部分,地址空间为0x0000~0x00FF,0x0100~0x01FF,0x0200~0x02FF,0x0300~0x03FF。当0x0000~0x00FF写满时,CY7C68013-128PIN将产生TXFULL信号,由FPGA读取其双端口RAM内的数据,同时发送数据可以存入下个地址空间0x0100~0x01FF,从而达到数据的无间隙传输。其他通道的RAM工作过程类似。图1中的ADDR[7..0]L和PA[7..4]是CY7C68013-128PIN用来访问双端口的地址,ADDR[7..0]L为低8位,PA[7..4]为高4位;ADDR[11..0]R是FPGA用来访问双端口的地址。
3.2 FPGA逻辑功能
FPGA主要完成多通道协议IP核逻辑和自检测" title="自检测">自检测逻辑[4]。多通道协议IP核逻辑的主要功能是实现ΓОСТ18977标准,它既能接收经过转换的、符合ΓОСТ18977标准的数字信号并将其送入CPU或其他设备,又能将CPU或其他设备发出的数字信号按照ΓОСТ18977标准的数据格式输出。该IP核提供8通道同时收发,且每路通道数据传输相互独立;每个通道可以单独定义总线频率及通道标志,可以选择是否允许校验,其校验方式可单独定义为奇校验或偶校验等。另外,IP核提供8、16、32位的CPU总线接口。本系统IP核采用4通道同时收发,16位CPU数据总线接口。自检测逻辑主要是对板卡进行发送和接收通道功能自检测。
由上述分析可知,FPGA的主要功能为:(1)实现多通道数据传输协议;(2)实现自检测逻辑;(3)提供访问IDT7025的控制信号、地址信号和数据;(4)对可能到来的4通道中断信号排队;(5)向USB提供数据满信号(RAMRX1FULL等)、未满信号(RXNOTFULL)和字计数器(COUNT[7..0]);(6)接收USB传来的数据满信号(TXFULL)、未满信号(TXNOTFULL)、字计数器(PE[7..0])和RAM地址块选择信号(PA[7..4]);(7)提供与CY7C68013-128PIN内嵌8051CPU的接口。
3.3 ΓОСТ18977标准的接口
3.3.1 接口芯片选择
由于ΓОСТ18977标准与相应的ARINC429总线的电平定义基本一致,区别仅在于ΓОСТ18977标准对接收端的公差稍小,所以接口器件选用HOLT公司的ARINC429总线接口芯片,完全可以满足系统的要求。发送通道选用HI-8585,可将一路TTL信号转换成双极归零制电平信号;接收通道选用HI-8482,可将两路双极归零制电平信号转换成两路TTL信号。
3.3.2 供电方案
因为接口芯片HI-8585和HI-8482电源电压工作在12V或15V,考虑到多通道收发对电源功率的要求,仅靠USB供电不能满足系统的需要,因此本系统采用PS/2接口以辅助供电。
3.4 工作流程
本系统设计四通道同时收发,其过程相对复杂,考虑到各通道收发过程非常类似,所以仅以收发通道1为例介绍其流程[5]。
3.4.1 数据发送工作流程
数据发送分为大批量数据发送和小批量数据发送两种情况。(1)大批量数据发送:当发送数据达到256×16位时,CY7C68013-128PIN将产生数据满信号(TXFULL),PA[7..4]提供RAM数据块选择信号,FPGA通过这两个信号读取相应的RAM空间,得到256×16位数据。(2)小批量数据发送:CY7C68013-128PIN将产生数据未满信号(TXNOTFULL),PA[7..4]提供RAM数据块选择信号,PE[7..0]提供数据字个数计数器,FPGA通过这三个信号读取相应的RAM空间得到相应的数据。最后,FPGA通过多通道IP核完成数据发送。
3.4.2 数据接收" title="数据接收">数据接收工作流程
数据接收分为大批量数据接收和小批量数据接收两种情况。(1)大批量数据接收:当接收数据达到256×16位时,FPGA将产生数据满信号(RAMRX1FULL),CY7C68013-128PIN通过此信号启动GPIF波形,连续读取RAM空间内256×16位数据。(2)小批量数据发送:当FPGA内计数器连续检测到N个时间间隙(N值取决于实时性要求,本系统为5)没有数据接收时,将产生数据未满信号(RAMRXNOTFULL),同时CHANNEL[3..0]提供RAM数据块选择信号,COUNT[7..0]提供数据字个数计数器,CY7C68013-128PIN通过这三个信号读取相应的RAM空间得到接收的数据。接收的数据通过USB数据线传送到PC机。
4 USB器件CY7C68013的设计
4.1 GPIF波形描述符" title="描述符">描述符的实现机制
GPIF是CY7C68013内FIFO的内部控制器。此方式下,接口内核可产生6个控制信号(CTL0~CTL5)、9个地址信号(ADDR0~ADDR8),可以接收6个外部输入(RDY0~RDY5)和2个内部输入,还有时钟信号IFCLK和可选的8位FD[7..0]或16位FD[15..0]数据总线[6]。CY7C68013有四个波形描述符控制各个状态,分别为单次读、单次写、FIFO读、FIFO写。这些波形描述符可以随意配置给任何一个端点FIFO。每个波形描述符包含S0~S6 7个有效状态和一个空闲状态。在每个有效状态对应的时间内,经过预先定义,GPIF可以做以下几件事:(1)驱动(使高或使低)或悬浮控制信号;(2)采样或驱动FIFO的数据总线;(3)增加GPIF地址总线值;(4)增加指向当前FIFO指针的值;(5)启动GPIFWF(波形描述符)中断。除此之外,在每个状态,GPIF可以对下面信号中的任意两个采样:(1)RDY输入端;(2)FIFO状态标志位;(3)内部RDY标志;(4)传输计数终止标志位。然后把这两个信号相与、相或、相异或,根据结果跳转到其他任意一个状态或延迟1~256个时钟周期。当然也可以根据一个信号跳转。每次波形描述符执行结束后必须跳转到空闲状态结束。在GPIF控制其总线进行传输的过程中,不需要CPU的干预,可直接通过FIFO与USB总线进行数据交换。在GPIF接口上同一时刻只能有一个波形描述符在执行,要更换波形描述符必须等到上个波形描述符执行完毕。
利用Cypress公司提供的GPIF Designer可以方便地生成波形描述符源文件GPIF.c,其主要包括初始变量的设置和GPIF初始化函数GPIFInit。本系统采用16位数据总线FD[15..0]、8位地址总线ADDR[7..0]、3个控制线(CTL0选通IDT7025的R/WL,CTL1选通CEL,CTL2选通OEL)。RDY[3..0]接收4个通道的接收满信号RAMRXFULL[4..1],另外PA[7..2]、PA0、PE[7..0]提供地址辅助信息。图2为FIFO读波形描述符。
4.2 8051CPU的功能
8051CPU主要完成FPGA内发送和接收通道的控制寄存器、状态寄存器、标志寄存器的设置,包括总线频率、通道标志、是否允许校验、校验方式为奇校验或偶校验、是否允许自检测等。
4.3 固件的设计
Cypress公司为CY7C68013提供了一个开发框架,可以在Keil C51环境中开发。结合本系统,该框架由五部分组成:(1)fw.c包含了程序框架的MAIN函数,主要处理C51内核的运行,解析Setup命令包。(2)dscr.a51是描述表文件,负责USB设备的描述工作。CY7C68013在上电后自动利用其VID和PID取代默认的VID和PID。(3)gpif.c是GPIF波形描述符文件,由GPIF Designer生成。(4)Ezusb.lib是EZUSB函数库的二进制文件,USBJmpTB.obj是USB的中断向量表。(5)FX2_to_BUS.c 负责系统周边器件的互联,固件设计主要针对此部分。包括函数TD_Init、TD_Poll、DR_VendorCmnd和中断函数的函数体等。
4.4 驱动程序的设计
本驱动程序开发采用了Jungo公司的WinDriver开发平台。WinDriver的优点是用户不需要了解操作系统内部原理,不需要了解DDK开发工具。另外,Cypress公司为CY7C68013提供了专门的开发框架,因此大大缩短了开发周期。
本接口卡四个收发通道完全符合俄罗斯标准ΓОСТ18977,四通道同时工作在最高频率250kbps时都能满足实时性要求。另外,由于基于USB接口,使得接口卡的体积较小,实现了即插即用,应用灵活,节省了系统资源。目前该接口卡已成功应用于某航空机载计算机项目中。
参考文献
1 王 勇.航空机载计算机与航空电子总线[M].西安:空军工程学院出版社,1998
2 刘欢迎,罗志强.ARINC429协议和与之对应的俄罗斯标准的比较[J].航空电子技术,2002;33(1)
3 Cypress Semiconductor Corp.EZ-USB FX2 Manual Technical Reference V2.1
4 Actel Corporation.ARINC 429 Bus Interface.http://www.actel.com/ipdocs/CoreARINC429_DS.pdf,2005
5 高世杰,竺晓山.基于USB2.0的多路异步串行系统设计[J].电视技术,2005;(7)
6 周云峰,单甘霖,王 鑫.FX2的波形描述符设计及应用.微计算机信息,2005;21(2)