新闻中心

EEPW首页>嵌入式系统>设计应用> 基于CPCI总线的FPGA加载设计

基于CPCI总线的FPGA加载设计

作者: 时间:2013-07-31 来源:网络 收藏

  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 加载方式相比有着快速灵活的优势,对加载速度和实时性要求比较高的系统设计中,具有很强的可操作性和可借鉴性。


上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭