4.系统软件的设计
4.1 EZ-USB固件程序设计
EZ -USB的固件框架[3]如图 3所示,Cypress为大部分模块提供了完整的代码,本设计需要编写的模块有 TD_Init,TD_Poll和 USB请求解析模块。 TD_Init模块仅执行一次,作用是设置端点和 GPIF传输界面,以及将端点 2缓存的控制权交给逻辑单元使得逻辑单元可以将总线上收到的数据包装入缓存。TD_Poll模块会反复执行,作用是在端点 2的缓存填入数据包后,开启 GPIF状态机,将 FIFO内的配置数据写入 FPGA。USB请求解析模块需要解析本方案设计的 2条 USB厂商请求,0xB1和 0xB2,它们用于配置初始化和查询配置状态。
4.2上位机程序设计
由于 Cypress已提供 USB设备驱动,因此上位机程序只需要获得了一个至 USB 设备驱动程序的句柄,打开包含配置代码的文件并对其进行语法分析,在 USB 中断传输的每次调用过程中传送取自配置文件的 1024字节发送出去,这一过程将继续下去,直到配置文件中没有剩余字节为止。
5.配置性能的实际测试
配置数据传输的瓶颈在 USB传输通道,而采用中断端点时, USB传输通道的速度极限值应为 24000KB/s,对于 500万门的 XC3S5000而言,传输 13271936bit配置数据的理论时间约为 527.4ms。
对配置时间进行的实际测试中,使用 500万门的 XC3S5000作为配置对象,使用测量精度为 10ms的码表测量从送出配置文件到 FPGA的 Done引脚所连接的 LED点亮的时间差,经测量,配置实际使用时间为 540ms。考虑到 MCU判断端点缓存和开启标志,以及开启状态机所用时间,实测值比理论值多出的时间是合理的。
6.结论
采用 Cypress EZ-USB及其内置的 GPIF状态机对大容量 FPGA进行 SelectMap方式配置的方案,不仅具有被动配置方式灵活性高的优点,而且因为不需要大容量配置存储器、同时可以节约电路板空间,所以实现成本较低。另外 Cypress完善的开发工具也使得方案的实现非常简单。经过实际测试,本方案的配置速度非常快,对于大规模 FPGA配置时间也能在一秒之内完成,因此本方案具有很好的实用价值。
本文作者创新点:设计了一种针对大规模 FPGA的实用配置方案,配置方式灵活、配置速度快、配置成本低、系统开发简单。