通过
USB
接口实现
FPGA
的
SelectMap
配置
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.
系统的总体设计
,系统使用
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
传输通道构成瓶颈。
3.
配置时序的发生配置数据需要在配置时序的配合下写入
FPGA[5]
。
GPIF
是一个可编程的状态机,它可以采集
5
个输入引脚(
RDY
)的状态,并通过
5
个输出引脚
(
CTL
)
对外产生任意时序,
因此可用来产生
FPGA
的配置时序。
表
1
说明了
FPGA
在
SelectMap
模式下各配置引脚的作用
[5]
,
,
CCLK
连接
EZ-USB
提供的界面时钟
IFCLK
,
D[7:0]
连接端点
FIFO
,其它配置引脚连接着
GPIF
状态机的
RDY
及
CTL
引脚。为了确保各
引脚的输入有充足的建立时间供
FPGA
采样,
FPGA
的时钟输入应与
GPIF
的内部时钟倒相。
本设计方案使用了一个控制端点(端点
0
)和一个大端点(端点
2
)传输数据。其中控制端
点是所有
USB
设备所必备的,它用于在设备枚举时传输
USB
请求和相关数据,在本设计中,
控制端点还用来传输专门设计的
USB
厂商请求来控制配置进程、
获取配置状态。
大端点用来
传输配置数据,由于配置数据需要及时、无误的传输,因此使用可以同时保证传输准确性和
最大延时的中断传输方式,并设置端点缓存为
1KB
、做
4
倍缓冲,最大传输间隔为一个微帧
(
125us
)
,且每个传输间隔内传输
3
个有效载荷为
1KB
的包(最后一个包的载荷可能小于
1KB
)
,这样配置数据在
USB
通道中的传输速率可达到
3*1KB*
(
1/125us
)
=24000KB/s
。