基于FPGA与DSP的高速通信接口设计与实现
在雷达信号处理、数字图像处理等领域中,信号处理的实时性至关重要。由于FPGA芯片在大数据量的底层算法处理上的优势及DSP芯片在复杂算法处理上的优势,DSP+FPGA的实时信号处理系统的应用越来越广泛。ADI公司的TigerSHARC系列DSP芯片浮点处理性能优越,故基于这类。DSP的DSP+FPGA处理系统正广泛应用于复杂的信号处理领域。同时在这类实时处理系统中,FPGA与DSP芯片之间数据的实时通信至关重要。 TigerSHARC系列DSP芯片与外部进行数据通信主要有两种方式:总线方式和链路口方式。链路口方式更适合于FPGA与DSP之间的实时通信。随着实时信号处理运算量的日益增加,多DSP并行处理的方式被普遍采用,它们共享总线以互相映射存储空间,如果再与FPGA通过总线连接,势必导致FPGA与DSP的总线竞争。同时采用总线方式与FPGA通信,DSP的地址、数据线引脚很多,占用FPGA的I/O引脚资源太多。而采用链路口通信不但能有效缓解DSP总线上的压力,而且传输速度快,与FPGA之间的连线相对也少得多,故链路口方式更适合于FPGA与DSP之间进行实时数据通信。
参考文献给出TS201与TS101的性能比较,但没有针对两者的链路口进行详细介绍,本文对两者的链路口进行了细致的分析和比较。文献所设计的采集系统中,DSP与FGA的通信仅限于FPGA发、TS101收的单工通信;文献给出了FPGA内部没计TS101链路口的框图,但只给出了简单的介绍,无法给设计者以参考。本文采用Altera公司Cyclone系列芯片EP1C12实现了与TS101/TS201两种芯片的链路口的双工通信,并给出了具体的设计实现方法。其中TS101的设计已经成功应用于某信号处理机中。
1 TS101和TS201的链路口分析与比较
TS101和TS210都是高性能的浮点处理芯片,目前两者都广泛应用于复杂的信号处理领域。TS201是继TS101之后推出的新型芯片,核时钟最高可达600MHz,其各类性能也相对优于TS101,而且TS201的链路口采用了低压差分信号LVDS技术,功耗更低、抗噪声性能更好。表1列出了两种芯片链路口性能的详细比较,其中TS101核时钟工作在250MHz,TS201核时钟工作在500MHz。
限于篇幅,TS101、TS201的链路口结构请参阅参考文献。由于TS101收发端共用一个通道,所以只能实现半双工通信。而TS201将收发端做成两个独立通道,可实现全双工通信,理论上数据的传输速率可以提高一倍。虽然TS201的链路口收发通道独立,但实际上二者的收发机制大体相同,都是靠收发缓存和移位寄存器收发数据。然而FPGA内部的链路口设计不必拘泥于此,只要符合链路口通信协议并达成通信即可。
2 FPGA与DSP的链路口通信
2.1 链路口通信协议分析
TS101的链路口共有11根引脚,通过8根数据线(LxDAT[7..0],这里x可以是0、1、2或3,代表TS101或TS201的0号~3号链路口中的一个,以下同)进行数据传输,并采用3根控制线(LxCLKOUT、LxCLKIN、LxDIR)来控制数据传输时钟、通信的握于和数据传输方向。其中LxDIR为通知链路口当前工作状态是接收或发送的输出引脚,可悬空不用。TS201的链路口共24根引脚,接收和发送各12根引脚,通过LVDS形式的数据线(LxDAT_P/N[3..0])和时钟线(LxCLK_P/N)进行数据传输,并采用LxACK和LxBCMP#(‘#’代表信号低有效)来通知接收准备好和数据块传输结束。
采用FPGA与DSP通过链路口通信的关键是令双方通信的握手信号达成协议,促使数据传输的进行。实际上,如果考虑TS201的LVDS信号形式已经被转换完毕,则TS101和TS201链路口传输的数据形式是一样的,都是时钟双沿触发的DDR数据,并且每次传输的数据个数都是4个长字(即128bit)的整数倍。鉴于以上两种芯片链路口数据的共同点,所以采用FPGA与两类芯片通信时,接收和发送的数据缓存部分的设计应该是很相近的,只是通信握手信号部分的设计应当分别加以考虑。下面分别给予介绍。
2.2 基于FPGA的TS101链路口设计
图1给出了FPCA与TS101进行半双工链路口通信的设计(对LxCLKOUT、LxCLKIN均以FPCA的角度来叙述),该接口由接收、控制和发送三部分组成。本设计FPGA时钟为40MHz,TS101核时钟上作在250MHz,链路口时钟设定为DSP核时钟的8分频,FPGA与DSP的实际数据传输率为62.5MBps。
(1) 接收部分:由编码和缓存两部分组成。由于链路口的数错是DDR形式的,不方便数据的缓存,本文采用QuartusII Megafunctions中的altddio模块将上升沿数据和下降沿数据分开。注意这个模块的下降沿数据输出会滞后上升沿数据1个时钟周期,输出时应该用链路口时钟信号(LxCLKIN)通过D触发器来将数据对齐。该模块的inclock一定要用链路口时钟信号以保证
- 在采用FPGA设计DSP系统中仿真的重要性 (06-21)
- 基于 DSP Builder的FIR滤波器的设计与实现(06-21)
- 基于FPGA的快速并行FFT及其在空间太阳望远镜图像锁定系统中的应用(06-21)
- 3DES算法的FPGA高速实现(06-21)
- 用FPGA实现FFT算法(06-21)
- FPGA的DSP性能揭秘(06-16)