一种基于VC++程序的FPGA重配置方案设计
时间:04-22
来源:互联网
点击:
引言
随着大规模集成电路的快速发展,系统设计已从传统的追求大规模、高密度逐渐转向提高资源利用率,使有限的资源可以实现更大规模的逻辑设计。利用现场可编程逻辑器件FPGA的多次可编程配置特点,通过重新下载存储于存储器的不同系统数据,从而实现不同的芯片逻辑功能,可以在很大程度上提高资源利用率。原始配置FPGA的方法是硬件设计者根据需求设计生成配置数据流,然后通过专用配置芯片对FPGA进行配置,例如通过下载电缆将配置数据流存储到FPGA配置存储芯片中,该方法的整个过程需要芯片厂商的专用软件参与。因此,该配置方法对依赖下载电缆,适合于产品研制过程中下载配置操作,且有一定的局限性,不适用对产品应用中的系统升级或系统重构。
结合对FPGA重配置方案的软硬件设计,本文通过PC机并通过总线(如PCI总线)将配置数据流下载到硬件功能模块的有关配置芯片,从而完成配置FPGA的全过程。该方法的软件部分基于Visual C++的开发环境,并用C++语言开发动态连接库,以用于软件设计应用程序部分的调用。文中详述了上层用户对配置文件的处理、调用动态连接库中的发送函数、将配置数据流发送给硬件的软件设计过程,并通过建立用户与硬件的握手联系,来提高配置数据的传输率。
1 FPGA的可重配置硬件方案
本文给出的设计方案将FPGA的配置程序文件看作一个“对象”,逻辑设计者先将所要完成的工作程序生成这样的一个“对象”,然后由上位机通过某种通讯接口模块及逻辑控制模块,将其下传到FPGA的配置芯片中来完成FPGA器件的重新配置,即通过对FPGA逻辑的重配置来完成系统的重构或升级。逻辑设计者最终通过上位机用户界面的简单操作,即可完成硬件功能模块的工作方式重构,其可重配置的系统硬件结构框图如图1 所示。
图1中借用原系统DSP处理器的控制功能来完成上位机控制命令及下载数据的接收,上位机与系统之间采用PCI总线接口。上位机命令由DSP处理器进行解析,并随后发送到配置芯片控制器中,配置芯片控制器可由CPLD器件构成,它的编程采用EEPROM或FLASH技术,且无需外部存储器芯片。
在设计中,上位机通过PCI总线建立通信并发送配置命令及数据至DSP,DSP以串行方式通知配置芯片控制器发送控制命令以及要进行配置的数据包,同时,配置芯片控制器在解析命令后,还应执行相应的操作,并完成FPGA配置芯片所需的下载时序及配置数据。配置芯片的数据下载过程称为编程操作,编程完成后,再启动配置操作,即可进行FPGA从配置芯片读取新的系统配置程序过程。与常用的 FPGA配置方法相比较,本文所采用的FPGA可重构设计的硬件结构更加简单,用户操作也更加方便,而且在对FPGA的配置芯片写入配置程序数据的时候,并不会影响到FPGA的继续工作,系统重构的时隙也更小。
DSP控制程序一般采用中断等待的设计思想,处理器上电启动后,首先对自身的工作方式进行设置,然后对系统各个功能模块进行初始化操作,使其工作在一个确定的已知状态下。之后,在完成系统的初始化以后,DSP程序进入空闲等待状态,直到标志着上层命令已送达控制逻辑的中断信号有效,程序再从空闲等待状态进入中断服务程序,然后判断是系统配置命令,还是其他工作命令。若接收到配置命令,则进入串口中断服务程序,随后判断配置命令的类别,并进入相应的子函数程序,包括配置模式、用户模式、擦除、擦除延时、写数据等多个子函数。配置模式是指系统通过发送控制命令来获取FPGA配置芯片的数据信号线、时钟信号线以及片选信号线的控制权,从而进行读写操作。调用配置模式子函数后,发送不同的命令控制字,便可以选择配置不同的配置器件。
本系统中的逻辑电路平台由2片Altra公司FPGA芯片构成,其对应的配置芯片分别为 EPCS16和EPCS1器件,设计中,可以分别为这两片配置芯片设置各自的32位控制字。用户模式子函数可在系统对EPCS配置芯片的写数据操作完成后,通过系统发送控制命令来释放配置芯片EPCS的数据信号线、时钟信号线以及片选信号线的控制权,这样,FPGA将恢复到用户所设置的工作模式。
2 可重配置软件方案
用户发送配置数据流到EPCS对FPGA进行配置的结构图如图2所示,其中PC机部分为上位机配置控制的用户软件宿主。配置控制软件主要包括用户应用程序(Win32应用程序)、仪器驱动程序、总线驱动程序三部分,总线驱动位于整个软件系统的最底层,可通过硬件抽象层 (HAL)直接与硬件进行交流。仪器驱动位于总线驱动和用户应用程序之间。它对上可为屏蔽底层工作细节提供应用程序调用的接口函数,对下则可发送命令或接收数据。用户应用程序则位于软件结构的最上层,可通过调用仪器驱动程序,间接地与底层进行交互。其结构图如图3所示。
Windows XP操作系统中的驱动程序开发主要是基于Win32模式驱动程序,即基于WDM(Win32 Driver Model)。在WDM驱动模型中,每个硬件设备至少有两个驱动程序:总线驱动程序和功能驱动程序。其中总线驱动程序由Windows提供,需要考虑的是负责实现PCI设备逻辑功能的功能驱动程序。所以,驱动程序分为以动态链接库形式的仪器驱动程序和以WDM格式的底层的接口驱动程序。前者用于实现对目标硬件的操作,即下载配置数据流对FPGA的配置;后者则可实现资源分配、接口管理及数据的控制传输。
随着大规模集成电路的快速发展,系统设计已从传统的追求大规模、高密度逐渐转向提高资源利用率,使有限的资源可以实现更大规模的逻辑设计。利用现场可编程逻辑器件FPGA的多次可编程配置特点,通过重新下载存储于存储器的不同系统数据,从而实现不同的芯片逻辑功能,可以在很大程度上提高资源利用率。原始配置FPGA的方法是硬件设计者根据需求设计生成配置数据流,然后通过专用配置芯片对FPGA进行配置,例如通过下载电缆将配置数据流存储到FPGA配置存储芯片中,该方法的整个过程需要芯片厂商的专用软件参与。因此,该配置方法对依赖下载电缆,适合于产品研制过程中下载配置操作,且有一定的局限性,不适用对产品应用中的系统升级或系统重构。
结合对FPGA重配置方案的软硬件设计,本文通过PC机并通过总线(如PCI总线)将配置数据流下载到硬件功能模块的有关配置芯片,从而完成配置FPGA的全过程。该方法的软件部分基于Visual C++的开发环境,并用C++语言开发动态连接库,以用于软件设计应用程序部分的调用。文中详述了上层用户对配置文件的处理、调用动态连接库中的发送函数、将配置数据流发送给硬件的软件设计过程,并通过建立用户与硬件的握手联系,来提高配置数据的传输率。
1 FPGA的可重配置硬件方案
本文给出的设计方案将FPGA的配置程序文件看作一个“对象”,逻辑设计者先将所要完成的工作程序生成这样的一个“对象”,然后由上位机通过某种通讯接口模块及逻辑控制模块,将其下传到FPGA的配置芯片中来完成FPGA器件的重新配置,即通过对FPGA逻辑的重配置来完成系统的重构或升级。逻辑设计者最终通过上位机用户界面的简单操作,即可完成硬件功能模块的工作方式重构,其可重配置的系统硬件结构框图如图1 所示。
图1中借用原系统DSP处理器的控制功能来完成上位机控制命令及下载数据的接收,上位机与系统之间采用PCI总线接口。上位机命令由DSP处理器进行解析,并随后发送到配置芯片控制器中,配置芯片控制器可由CPLD器件构成,它的编程采用EEPROM或FLASH技术,且无需外部存储器芯片。
在设计中,上位机通过PCI总线建立通信并发送配置命令及数据至DSP,DSP以串行方式通知配置芯片控制器发送控制命令以及要进行配置的数据包,同时,配置芯片控制器在解析命令后,还应执行相应的操作,并完成FPGA配置芯片所需的下载时序及配置数据。配置芯片的数据下载过程称为编程操作,编程完成后,再启动配置操作,即可进行FPGA从配置芯片读取新的系统配置程序过程。与常用的 FPGA配置方法相比较,本文所采用的FPGA可重构设计的硬件结构更加简单,用户操作也更加方便,而且在对FPGA的配置芯片写入配置程序数据的时候,并不会影响到FPGA的继续工作,系统重构的时隙也更小。
DSP控制程序一般采用中断等待的设计思想,处理器上电启动后,首先对自身的工作方式进行设置,然后对系统各个功能模块进行初始化操作,使其工作在一个确定的已知状态下。之后,在完成系统的初始化以后,DSP程序进入空闲等待状态,直到标志着上层命令已送达控制逻辑的中断信号有效,程序再从空闲等待状态进入中断服务程序,然后判断是系统配置命令,还是其他工作命令。若接收到配置命令,则进入串口中断服务程序,随后判断配置命令的类别,并进入相应的子函数程序,包括配置模式、用户模式、擦除、擦除延时、写数据等多个子函数。配置模式是指系统通过发送控制命令来获取FPGA配置芯片的数据信号线、时钟信号线以及片选信号线的控制权,从而进行读写操作。调用配置模式子函数后,发送不同的命令控制字,便可以选择配置不同的配置器件。
本系统中的逻辑电路平台由2片Altra公司FPGA芯片构成,其对应的配置芯片分别为 EPCS16和EPCS1器件,设计中,可以分别为这两片配置芯片设置各自的32位控制字。用户模式子函数可在系统对EPCS配置芯片的写数据操作完成后,通过系统发送控制命令来释放配置芯片EPCS的数据信号线、时钟信号线以及片选信号线的控制权,这样,FPGA将恢复到用户所设置的工作模式。
2 可重配置软件方案
用户发送配置数据流到EPCS对FPGA进行配置的结构图如图2所示,其中PC机部分为上位机配置控制的用户软件宿主。配置控制软件主要包括用户应用程序(Win32应用程序)、仪器驱动程序、总线驱动程序三部分,总线驱动位于整个软件系统的最底层,可通过硬件抽象层 (HAL)直接与硬件进行交流。仪器驱动位于总线驱动和用户应用程序之间。它对上可为屏蔽底层工作细节提供应用程序调用的接口函数,对下则可发送命令或接收数据。用户应用程序则位于软件结构的最上层,可通过调用仪器驱动程序,间接地与底层进行交互。其结构图如图3所示。
Windows XP操作系统中的驱动程序开发主要是基于Win32模式驱动程序,即基于WDM(Win32 Driver Model)。在WDM驱动模型中,每个硬件设备至少有两个驱动程序:总线驱动程序和功能驱动程序。其中总线驱动程序由Windows提供,需要考虑的是负责实现PCI设备逻辑功能的功能驱动程序。所以,驱动程序分为以动态链接库形式的仪器驱动程序和以WDM格式的底层的接口驱动程序。前者用于实现对目标硬件的操作,即下载配置数据流对FPGA的配置;后者则可实现资源分配、接口管理及数据的控制传输。
集成电路 FPGA 总线 DSP CPLD 电路 电子 自动化 相关文章:
- 周立功:如何兼顾学习ARM与FPGA(05-23)
- 初学者如何学习FPGA(08-06)
- 为何、如何学习FPGA(05-23)
- FPGA 重复配置和测试的实现(08-14)
- 适用于消费性市场的nano FPGA技术(09-27)
- 赛灵思“授之以渔”理论:危机中如何巧降成本(06-04)