现在的位置: 首页资讯>正文
通过USB接口实现FPGA的SelectMap配置
2017年06月06日 作者: 暂无评论 66+ 0

FPGA

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传输通道构成瓶颈。

3.配置时序的发生

配置数据需要在配置时序的配合下写入 FPGA[5]。GPIF是一个可编程的状态机,它可以采集 5个输入引脚(RDY)的状态,并通过 5个输出引脚(CTL)对外产生任意时序,因此可用来产生 FPGA的配置时序。表 1说明了 FPGA在 SelectMap模式下各配置引脚的作用[5],如图 1所示,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。

配置引脚说明

根据配置时序所设计的 GPIF状态机的状态转移图如图 2所示。配置时钟为 48MHz,所以 PROG低脉冲要维持 25个时钟周期,状态机会根据端点 FIFO的空满状态控制 FPGA的 CS引脚,确保 FPGA在 FIFO有配置数据输出的情况下进行数据采样,数据输出在字节计数达到 FPGA配置比特流文件的字节数值时停止,500万门的 XC3S5000为 13271936 bit[5]。

原文链接:http://www.eeboard.com/news/selectmap/

搜索"爱板网"加关注,每日最新的开发板、智能硬件、开源硬件、活动等信息可以让你一手全掌握。推荐关注!

【微信扫描下图可直接关注】

toaal

科技早知道:

掌握集成电路主动权 02专项硕果累累

狼烟遍地的芯片代工领域,台积电、三星、英特尔凭什么保证它们在芯片代工领域的“扛把子”地位

AMD ThreadRipper性能曝光:1800X翻番

黑科技:手机永不断电,基站即可无线充电!

将要走进现实的十大“黑科技”,惊掉你的下巴!(下)

  

给我留言

您必须 [ 登录 ] 才能发表留言!