1.引言
FPGA器件结合了 ASIC的高性能和微处理器的灵活,不仅拥有丰富的逻辑资源,而且可以进行方便灵活的配置。主动配置方式尽管配置速度快、实现简单,但并未发挥 FPGA配置灵活的特点,适合于 FPGA用作单一应用的场合,并且大容量的配置芯片及其占用的电路板面积也带来了较高的成本;被动配置方式需要使用外部控制单元产生配置时序,实现一般较为复杂,而且在目前常见的方案中,常由于接口速率限制 [1]或者采用微处理器介入数据传输等原因,而造成配置速度不高。
USB2.0协议在目前 PC外设的接口方案中非常流行,它支持高速率、多管道、多类型的数据传输,可以方便的构建出高性能的数据传输通道和灵活的控制通道。
本文提出了一种基于 USB接口的 FPGA SelectMap(并行被动)配置方式的实现方案,不但具有被动配置灵活、设计成本低的特点,而且实现简单、配置快速。方案以 Xilinx Spartan3系列目前最大容量的 500万门 FPGA(XC3S5000)作为配置目标,选用 Cypress EZ-USB FX2LP作为 USB设备芯片,并使用其内部的大容量端点 FIFO,在 GPIF状态机的控制下,实现了一个高性能的配置数据传输通道。配置的进程则由设计的 USB请求来控制。此配置方案具有开发简单、配置成本低、速度快、使用灵活的特点,具有很强的实用性。
2.系统的总体设计
如图 1所示,系统使用 USB通道连接上位机和 EZ-USB。EZ-USB是一块高速 USB外设芯片,它支持 USB协议所描述全部四种传输模式,并拥有 1个 64Byte 的控制传输专用端点、2个缓存为 64Byte的普通端点和 4个缓存最大可达 1KB、并可以进行四倍缓冲的大数据从端点转移到外设(FPGA)的过程中,如果使用 USB设备芯片内嵌的 8051 MCU进行转移的话,最快 8个时钟周期才能传输一个字节的数据[2],在 8051的时钟周期为 48MHz情况下,传输速度为 6MB/s,远小于 USB通道的传输速率,会成为瓶颈而无法发挥出 USB传输通道高传输速率的优势;而如果通过位宽为 8bit的 FIFO来传输的话,最快情况下,每时钟周期都可以传输一个字节数据[2]。在 EZ-USB中,大端点的缓存可以作为端点 FIFO直接连接 FPGA的配置数据输入口形成高速传输通道,端点 FIFO的读写时序可由 EZ-USB内嵌的 GPIF[4](General Programmable Interface)产生,MCU可以不参与端点到 FPGA的数据转移,只起到配置和控制的作用,在 FIFO位宽为 8bit,GPIF时钟频率为 48MHz的情况下,传输速率为 48MB/s,这样数据从端点到 FPGA的传输速度超过了上位机到端点的 USB中断传输管道的最大速度,不对 USB传输通道构成瓶颈。