 
- UID
- 1029342
- 性别
- 男
|

在设计中,所有的参数上传、下载都是通过突发模式传输的,而三片V5 芯片的加载,连续处理数据的上传则是通过DMA 模式完成的。 3 FPGA 加载概述
FPGA 的加载有多种模式,主要有主串模式(Master Serial),从串模式(Slave Serial),边界扫描模式(Boundary Scan),SPI 模式和SelectMap 模式等。设计中采用了Slave Serial 模式,该模式由外部处理器或控制器提供时钟,总共用到了CCLK,PROG_B,DONE,INIT_B,DIN 5 个管脚,其中CCLK 管脚为加载提供时钟,当PROG_B 信号置低300ns后检查INIT_B信号为高电平即可通过DIN管脚送入数据进行加载,当数据加载完成后检查DONE管脚为高电平表示配置完成。Slave Serial 模式的时序图如图2 所示。
 FPGA 的配置文件有多种不同的格式,例如BIT,BRT,BIN,MCS,EXO,TEK,HEX 等。由于ISE 软件调用Bit Gen 程序直接生成的文件格式为BIT,故系统如能直接用BIT 文件作为配置文件将省去文件转换的麻烦,通过分析发现BIT 文件与BIN(直接二进制配置文件)文件相比仅仅多了文件头,又由于FPGA 配置过程中会进行同步、器件ID 检查等操作,因此多出的文件头部分会自动忽略,故而通过Slave Serial 方式直接下载BIT 文件配置FPGA 是可行的。
4 硬件模块设计
Spartan-3E中的程序设计包含PCI9656配置模块,负责对PCI9656 芯片进行初始化;PCI9656 接口模块,负责与PCI9656 进行数据交互;参数模块,负责将接收的参数重新分配给三个芯片或者将一些状态信息上传到工控机;FPGA 配置模块负责将接收到的FPGA 的BIT 文件流通过FIFO 将不连续数据缓冲为连续数据,并触发配置逻辑,对FPGA 进行配置。
系统的模块划分如图3所示。
 4.1 PCI9656 配置模块
PCI9656 一般都有对应的EEPROM,用于上电时初始化芯片工作的相关参数。根据实际需求,由于需要初始化的参数较少,PCB 设计中没有放置EEPROM,需要Spartan-3 E 通过本地总线对其进行初始化。对于PCI9656,初始化其PCI Subsystem ID、PCI Subsystem、Vendor ID 后,在工控机就可以进行其他配置,配置这两个参数只需要通过本地总线往地址0X2C写入相应数据即可。
4.2 参数模块
由于以突发模式下载到Spartan-3E 的数据是以32 bit 为单位的,且三片FPGA 需要的参数各不相同,因此需要对下载到Spartan-3E 的数据进行整理分类,再根据不同需求,下载到三片FPGA 中去。
状态参数的上传与下载流程相反。
4.3 FPGA 加载模块
DMA 方式下载到Spartan-3E 的32 bit数据在块内是连续的,但是块与块之间是不连续的,为了保证FPGA 加载过程不中断,在Spartan-3E 中需要一个FIFO 将数据进行缓冲,从而保证BIT 数据流的连续性。为了确保加载数据在FIFO 中读不空,在设计中当FIFO 中的可读的数据大于一定门限的时候触发加载逻辑,同时为了防止FIFO 写满导致丢失数据,当FIFO中可读的数据到达一定门限后,就不再请求DMA.通过这样的保护,可以保证BIT 流加载文件在加载逻辑开始后可以连续不断的输入给FPGA,直到FPGA 加载完成。
工控机按照32 bit 读取BIT 文件存在Byte 翻转的情况,下载到Spartan-3E 后需要再把32 bit的数据进行翻转过来,只需要用FIFO 读时钟32 倍频的时钟进行计数,将FIFO 读出的32 bit 数据按照翻转的对应关系顺序送出读取即可满足要求。
为了区分3片FPGA 的加载,设计两比特的标志位,用以区分不同的FPGA.在加载FPGA 之前先通过软件先下载两比特标志位,配置模块根据标志位,切换数据流向,从而可以配置3 片不同的FPGA.
5 软件设计
PCI9656 芯片的驱动程序从其配套的SDK 开发包中获取,工控机的控制软件由C++语言完成,开发环境基于Borland 公司的C++Builder6.
在PLX公司提供的软件开发包中,含有PCI9656与上位机通信的动态库文件Plxapi.dll.该文件包含了众多函数,可以直接调用。在设计中用PlxIoPortWrite 和PlxIoPortRead 来实现突发数据的下载和上传,用PlxDmaBlockTransfer来实现FPGA的配置数据流的下载和大量实时数据的上传。
6 结语
本文提出了基于CPCI 总线的FPGA 动态加载的设计与实现,在40 M 的工作时钟下,在对同一块FPGA 进行加载时,加载速度可以达到JTAG 加载方式的10 倍之多。该设计可以对三片FPGA 芯片进行快速稳定的下载,与常规PROM 加载方式相比有着快速灵活的优势,对加载速度和实时性要求比较高的系统设计中,具有很强的可操作性和可借鉴性。 |
|