摘要:弹载信号处理机的DSP系统需要高速、简便的上位机接口实现大数据量的变量实时监控和在线程序加载功能。USB接口以其简单、高速与通用的优势成为优选。介绍一种基于USB接口芯片(CY7C68013A)和FPGA实现的ADSP-TS101扩展USB接口的设计方法,该方法利用DSP的Link-port接口,以DMA方式进行高速数据交换,目前该设计已成熟、可靠地应用于某弹载信号处理系统。
关键词:USB;DSP Linkport;PC机接口;高速数据交换
0 引言
ADI公司的DSP器件(ADSP-TS101)具有浮点实时处理能力强、并行性好等优点,从而广泛被弹载信号处理系统选用。其作为弹载主处理器,在导弹的系统试验中,需要利用上位机对其中的大数据量的软件变量进行实时监控和记录,这就需要一个上行传输给上位机的高速通信接口,数据上行的数据率需要大于6 MB/s。同时这个通信接口还需具有双向特性,通过数据下行可实现在线程序加载与烧写。这样的通信接口,还需具备设备连接简单、通用性强等特性,并能实现远程(大于3m)数据传输。
ADSP-TS101自身的外总线接口和链路口(Linkport接口),虽速度很快,但连接复杂,难以长线传输,并不具备上述需求特征。可以通过在DSP的Linkport总线接口上增加FPGA实现的适配电路,扩展USB 2.0接口,实现上述应用需求。下文将介绍具体的实现方案。
1 系统总体方案
系统实现的总体方案如图1所示。
在本方案中,USB接口芯片选用Cypress公司的CY7C68013A。该芯片是Cypress公司FX2系列USB 2.0集成微控制器之一。集成了USB 2.0收发器、SIE、增强8051微控制器和GPIF,是一种优秀的高速USB外设控制器。内置的8051微控制器独立于USB数据通道,由SIE实现大部分USB 1.1和USB 2.0协议;USB FIFO和外部从FIFO映射到相同的8个512 B RAM模块,实现内部传输和外部传输的无缝连接,可以较低的代价获得较高的带宽;8.5 KB内部RAM空间,可运行较为复杂的固件,实现软件对硬件的配置。GPIF是由用户可编程有限状态机驱动的柔性8/16位并行口,可编程GPIF向量组成一个GPIF波形,匹配受控接口的时序。
ADSP-TS101作为弹载主DSP芯片,含4个链路口,每个链路口可在时钟双沿以8位进行双向数据传输,速率高达250 MB/s。通过该接口,DSP每个处理帧将预观测的变量结果以DMA的方式打包向上位机发送。
FPGA实现ADSP-TS101的Linkport接口与CY7C68013A之间的双向数据缓冲和接口协议转换。考虑到CY7C68013A中的FIFO容量较DSP的一个处理帧预发送或接收的数据量较小,故在FPGA中设置上行和下行各一个大容量FIFO,用于数据缓冲,以减少对DSP中并行流水运行的程序的打扰。这里,由于DSP链路口的瞬时数据率远高于USB芯片的传输速率(理论上限为60 MB/s),故FIFO的DSP端口的数据传输为:一个处理帧只操作一次,而USB芯片端则分成多次操作。
限于篇幅,下文将重点对传输数据率要求高、设计难度大的上行通道的设计进行详细描述。
2 FPGA的模拟Linkport口设计
FPGA需要模拟Linkport口的接口时序,其与DSP的硬件连接关系图如图2所示。
Link协议通过8位并行数据总线完成双向数据传输,与数据总线配合的还有相应的时钟信号线LxCLKIN,LxCLKOUT。
2.1 Linkport口的传输协议
Linkport口传输数据时,每8个周期传送一个4字组(16 B),在时钟的上升沿和下降沿均传送一个字节。在传送过程中,发送端将检测接收端的LxCLKOUT信号,仅当接收端将它的LxCLKOUT置为高时,即接收端处于接收方式,且有空闲的缓冲时,发送端才可以启动下一个传送过程。
传送启动过程如图3所示,发送端驱动信号LxCLKOUT为低电平,以此向接收端发出令牌请求,发出令牌请求后,发送端等待6个周期,并验证LxCLKIN是否依旧为高,若是则启动传送过程。传送过程启动一个周期以后,接收端将发送端的LxCLKIN驱动为低,以此作为连接测试。若接收完当前4字组后接收端无法再接收另外的4字组,则接收端保持LxCLKIN为低。这种情况下,缓冲空闲后LxCLKIN信号被禁止。若缓冲为空,则接收端将置LxCLKIN为高电平。
作为同步信号,LxCLKOUT信号由发送端驱动。数据在LxCLKOUT的上升沿和下降沿处锁存到接收缓冲中,发送和接收缓冲都是128b宽。 LxCLKIN信号由接收端驱动,发往发送端,它通常用作“等待”指示信号,但LxCLKIN信号也可以用作连接测试信号,保证接收端能正确地接收当前传送数据。
当LxCLKIN信号用于等待指示信号时,接收端驱动LxCLKIN信号为低电平。若LxCLKIN信号保持低电平状态,则发送端可以[完成当前的4字组传送,但无法启动下一个垂字组传送。若还有其余的数据需要传送,发送端需将LxCLKOUT置低,并等待接收端将LxCLKIN驱动为高电平。如果在第12个时钟沿到来之前LxCLKIN变为高电平,则紧跟着传送的将是新的4字组。
2.2 FPGA内的Linkport口逻辑设计
由于Link协议采用双时钟沿传输数据,而同步FPGA系统中,一般只采用单一时钟的上升沿完成操作,因此需要将FPGA系统工作频率SCLK设定为Link时钟的2倍。然后将该时钟的两分频输出作为LxCLKOUT信号,有效数据则在SCLK的上升沿更新。
FPGA中的Linkport口接口模块电路与ADSP-TS101的Linkport口完全兼容,且采用了双向双倍数据传输DDR技术,能实现双向双倍的数据传输。FPGA中的Link口接口模块电路如图4所示。
图5是FPGA内实现DSP数据上行的Linkport口接收时序仿真图(基于Modelsim仿真软件)。
Link口协议的一大特点就是在收发数据时可以选择是否需要校验位VERE比特,VERE的启用或关闭可以通过ADSP-TS101中的寄存器来设置,也可以通过FPGA模块中的Verein信号置高或置低来设置。该设计在FPGA中设置VERE信号的启用或关闭。当VERE启用后,FPGA模块中的输出信号Rx_Vere_Bad用于表征最后接收的128 b数据是否正确。由于使用VERE有两个好处,一是能保证数据的完整性;二是能减小在两个时钟不严格一致的系统中传输数据时产生数据重叠的可能性。因而在设计中采用了带数据校验的传输方式。
3 USB传输设计
3.1 传输方式的确定
CY7C68013A芯片具有GPIF模式和从属FIFO(Slave FIFO)模式两种接口工作模式。在本设计中,USB数据传输存储模块负责完成存储算法产生的大量数据的高速传输,由于不涉及到对外部电路的控制,所以不选用GPIF模式,而选择Slave FIFO模式进行连接。在数据传输时,用Slave FIFO接口模式,批量传输,自动输入(AUTOIN)方式,使用EP6端口作为上行输入缓冲区。CY7C68013A的,Slave FIFO接口模式如图6所示。
3.2 EZ-USB FX2时序设计
在本设计的FPGA中,设计了如图6的外部主控制器的功能逻辑。由于DSP端Linkport口数据传输速率很高,而在USB端的速率可能无法跟Linkport口的数据率相匹配,故在FPGA中开辟一个2KB的FIFO,经由Linkport上传的数据首先传送到FIFO中,之后再经由USB口上传至主机。为了保证数据传输的完整性,设计USB的数据传输速率为DSP Link口的1/8。在此,对FPGA逻辑应用Modelsim软件进行了仿真,仿真结果如图7所示。
图7中,在LxCLKIN时钟的上升沿和下降沿将DSP_Data中的数据写入到FPGA的FIFO中,然后再把FIFO中的数据从数据线USB_Data中输出给EZ-USB FX2的FD数据线,最后经由USB传送给主机。图中USB_Data的数据率明显只有DSP_Data数据率的1/8,是符合设计要求的。
在上传传输时,采用异步自动输入方式。EZ-USB FX2芯片FIFO异步写时序如图8所示。根据此时序,在本设计中,FPGA输出的USB_Data信号提供给USB的FD数据线,FPGA输出的USB_SLWR提供给USB的SLWR,USB端便能在SLWR的下降沿把数据线FD中的数据写入到FX2芯片FIFO中,并由USB传送给主机。
4 结语
本文重点对DSP扩展USB接口的数据上行通道的硬件设计进行了详细论述。本系统经测试验证,通过该扩展USB接口,配合定制的上位机软件,DSP数据上传PC机的速率平均达到8 MB/s以上,连接可靠稳定,满足对DSP变量实时监测的数据率需求,同时可通过此接口完成程序的加载与烧写功能。仅需一台带USB接口的PC机,就能完成弹载DSP系统的实时测试与在线程序加载,简捷、通用、方便,具有显著的工程实用价值。