一种基于VC++程序的FPGA重配置方案设计

发布者:wmghyu最新更新时间:2010-07-07 来源: 中电网关键字:FPGA  VC++  DSP  CPCI  CPLD 手机看文章 扫描二维码
随时随地手机看文章

  引言

  随着大规模集成电路的快速发展,系统设计已从传统的追求大规模、高密度逐渐转向提高资源利用率,使有限的资源可以实现更大规模的逻辑设计。利用现场可编程逻辑器件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将恢复到用户所设置的工作模式。[page]

  2  可重配置软件方案

  用户发送配置数据流到EPCS对FPGA进行配置的结构图如图2所示,其中PC机部分为上位机配置控制的用户软件宿主。配置控制软件主要包括用户应用程序(Win32应用程序)、仪器驱动程序、总线驱动程序三部分,总线驱动位于整个软件系统的最底层,可通过硬件抽象层(HAL)直接与硬件进行交流。仪器驱动位于总线驱动和用户应用程序之间。它对上可为屏蔽底层工作细节提供应用程序调用的接口函数,对下则可发送命令或接收数据。用户应用程序则位于软件结构的最上层,可通过调用仪器驱动程序,间接地与底层进行交互。其结构图如图3所示。

  Windows XP操作系统中的驱动程序开发主要是基于Win32模式驱动程序,即基于WDM(Win32 Driver Model)。在WDM驱动模型中,每个硬件设备至少有两个驱动程序:总线驱动程序和功能驱动程序。其中总线驱动程序由Windows提供,需要考虑的是负责实现PCI设备逻辑功能的功能驱动程序。所以,驱动程序分为以动态链接库形式的仪器驱动程序和以WDM格式的底层的接口驱动程序。前者用于实现对目标硬件的操作,即下载配置数据流对FPGA的配置;后者则可实现资源分配、接口管理及数据的控制传输。

  3 配置数据分析

  本设计中的应用软件所要下载的配置数据流是由硬件设计者根据需求提供的,是以二进制形式存储的.rpd文件。可以根据不同的FPGA来选择不同的外围存储芯片(如EPCS1,EPCS16),从而生成不同大小的配置数据流。由于软件设计中,每次下发的数据一定,所以,由数据流的大小就能决定循环发送数据的次数。

  由于硬件设计者提供的.rod文件中的数据并不是原始的配置数据,而是所要配置的数据经过反转生成的新的配置数据流,所以,要先将.rpd中的数据反转处理后再发送给硬件。通过用户界面可以二进制的形式打开.rod文件并读数,将配置数据流以单字节的形式暂存在一数组中,然后对数据进行反转处理。数组中每个单字节数据的反转过程为:unsigned char strl=DE,反转后为strl=7B,定义无符号char型变量bi(i为小于8的整数),可由下面的转换完成:

  由此可以得到:strl=7B。对反转处理生成的单字节数据经过组合处理后,最终便可得到对FPGA进行配置所需要的数据流。[page]

  4 仪器驱动函数的设计

  根据硬件设计,仪器驱动需将配置数据以长整型的形式发送,即32位。因为配置数据的长度为16位,所以发送数据时,每次要传两个数,高16位和低16位分别放一个数。当应用程序打开.rpd文件时,应将其中配置数据流保存在数组ww[f]中,而反转处理后得到的数据依然放在数组ww[f]中并覆盖原来的数据,然后根据公式(1)进行组合处理,以得到最终要发送的32位数据并保存在长整型数组comdata[f]中。数组comdata[j]中的每个数据实际上包含两个配置数据,第一个数放在高16位,第二个数放在低16位,依次类推。确定好数据后,便可以调用动态连接库中的发送数据函数并发送给硬件。

  comdata[j]=(ww[i]<<24)∣(ww[i+1]<<16)∣(ww[i+2]<<8)∣ww[i+3](1)

  应用程序可以通过DeviceI/OControl ( )函数和WDM进行通信,DeviceI/OControl ( )既可以读数据,也可以写数据,常用于数据量较小的情况下。在软件设计中,发送配置数据可通过调用DeviceI/OControl()完成。根据硬件要求,每次可下发1022个配置数据到cyclone (即循环发LONG型数据511次),然后由cyclone给DSP一个中断信号,DSP接到中断信号后,即进入中断程序,开始接收配置数据。当应用程序调用发送数据函数时,可先确定要发送的配置数据大小,再计算发送的次数。为了尽可能的减小发送时间,有效完成数据的发送与配置,应在软件设计中建立与底层硬件的握手联系。用户每发送1022个数据便进入等待状态,在等待期间,DSP可把接收到的数据转化为EPCS所需要的配置数据流。当DSP处理完这段数据后,就给上层用户发送一个握手信号,用户接收到握手信号,便进入下一个1022的发送,如果最后一次发送的数据不够1022个,则用0xFFFF补足1022个数据,如此循环处理,直到数据发送完毕。发送完毕后,再给硬件继续发送一个配置命令,DSP接到该命令后,又开始对cyclone进行配置,从而完成整个配置过程。图4和图5分别是配置数据和发送数据的软件工作流程。

  图6为上位机配置控制界面,图中给出了2片配置芯片的配置过程,这是采用Visual C++和NIMeasurement Studio联合编程方式的标准用户界面。其中Visual C++提供了友好的界面及用户熟悉的Windows风格界面,并可以调用CVI中提供的控件库和库函数。

  5  结束语

  本文给出了一种基于VC++程序的FPGA可重配置的实现方案,该方案在配置过程中,用户可以通过调用自己的逻辑配置文件和程序来完成处理转换,并控制下载,从而实现用户系统的FPGA在系统编程。该方法可有效提高系统配置的效率,并为产品的升级、重构,以及用户产品二次开发提供了良好手段。此外,借助互联网技术,本设计还可以支持远程下载功能。

关键字:FPGA  VC++  DSP  CPCI  CPLD 引用地址:一种基于VC++程序的FPGA重配置方案设计

上一篇:Altera推出 Quartus II软件10.0版
下一篇:一种基于EP2SGX系列FPGA的PCI接口设计

推荐阅读最新更新时间:2024-05-02 21:05

基于DSP运动控制器的丝杠副动态误差测控系统
摘要:在分析丝杠动态误差测量基本原理的基础上,简述了基于DSP运动控制器的比杠副动态误差测控系统,并开发了计算机辅助自动分析测控软件,该软件具有良好的人机操作界面。系统实现了丝杠的自动测量、自动分析、自动精度验收评定,检测效率高、操作性强、性能稳定可靠。 关键词:DSP运动控制器 开放式伺服系统 光栅尺 丝杠副动态测量 滚珠丝杠副是一种高精度、高效率的传动机构。丝杠的精度检测是丝杠加工中的重要一环,它直接影响到丝杠系列产品的精度和质量。 目前常规的丝杠检测方法主要有动态测量与静态测量两种。其中,动态测量较传统的静态测量具有测量精度高、复杂性好、效率高、检测人员劳动强度低、检测自动化程度高等优点,因此在一些大批量、规模化丝杠
[应用]
基于CEVA最新一代图像和视觉DSP平台,酷芯微电子新一代Edge AI
    在2018世界人工智能大会期间,上海酷芯微电子有限公司 (以下简称“酷芯微电子”) 针对无人机、无人新零售、智能安防、家庭服务机器人、工业视觉、IOT应用和通信等市场,推出了新一代 AR9000 系列高性能、低功耗的Edge AI 边缘智能处理SoC。 据悉,该系列芯片集成了自主研发的远距离无线基带和射频、高性能ISP (Image Signal Processing)、神经网络专用加速器、视频编解码等核心技术,并且集成有 USB3.0、千兆以太网、PCIE、CAN总线等丰富的外围接口。 酷芯微电子董事长姚海平表示,本次发布的AR9000系列,包含了AR9101T、AR9201两款SoC,这两颗芯片都已经进入批量量产阶
[手机便携]
新出现的SoC FPGA上的策略考虑
集成了 FPGA 架构、硬核 CPU子系统以及其他硬核 IP的 半导体 器件 SoC FPGA已经发展到了一个“关键点”,它在今后十年中会得到广泛应用,为系统设计人员提供更多的选择。对于在 FPGA上开发的系统,这些 SoC FPGA完善了十多年以来的软核 CPU以及其他软核 IP。各种技术、商业和市场因素相结合推动了这一关键点的出现,A lte ra、Cypress.半导体、Intel 。和 Xilinx.公司等供应商都发布或者开始发售 SoC FPGA器件。   这一关键点的主要推动因素包括:过渡到并行和多核处理,以提高功效;FPGA成为前沿的新半导体工艺技术; 嵌入式系统 中越来越多的使用了FPGA;
[嵌入式]
新出现的SoC <font color='red'>FPGA</font>上的策略考虑
基于DSP的直接转矩控制系统的设计与实现
    摘要: 开发了一种基于TMS320F240 DSP实现电机交流调速的直接转矩控制系统,介绍了系统的设计方案和软硬件的实现方法。实验结果表明,系统具有良好的性能。     关键词: 数字信号处理器 直接转矩控制 交流调速 异步电动机 随着电力电子和计算机技术的发展,高性能的异步电动机调速系统得到了广泛的应用。而高性能的交流调速系统,都离不开数字信号处理器。以往的数字信号处理速度很快,但控制功能较差。新型的F24X/C24X系列DSP是TI公司专门为三相交流调速开发的数字马达调速控制器,它既具有通用DSP的快速性,又兼有三相交流调速的控制功能。本文根据异步电动机直接转矩控制原理,开发出了基于TMS3
[应用]
基于FPGA的系统易测试性的研究
引言 现代科技对系统的可靠性提出了更高的要求,而FPGA技术在电子系统中应用已经非常广泛,因此FPGA易测试性就变得很重要。要获得的FPGA内部信号十分有限、FPGA封装和印刷电路板(PCB)电气噪声,这一切使得设计调试和检验变成设计中最困难的一个流程。另一方面,当前几乎所有的像CPU、DSP、ASIC等高速芯片的总线,除了提供高速并行总线接口外,正迅速向高速串行接口的方向发展,FPGA也不例外。每一条物理链路的速度从600Mbps到10Gbps,高速I/O的测试和验证更成为传统专注于FPGA内部逻辑设计的设计人员所面临的巨大挑战。这些挑战使设计人员非常容易地将绝大部分设计时间放在调试和检验设计上。 本文就调试FPGA系统时遇
[测试测量]
基于<font color='red'>FPGA</font>的系统易测试性的研究
ADS8364与TMS320F2812的接口设计
   0 引言   ADS8364是美国德州仪器公司(TI)的一款六通道、16位并行输出、同步采样的模数转换器。该芯片提供了一个灵活的高速并行接口,可以直接与数字信号处理器TMS320F2812相连。本文主要介绍了这个接口的软、硬件设计,着重论述了这两款芯片是如何配置启动和工作的。本设计广泛应用于电机控制、多轴定位系统、三相功率转换、多通道数据采集等场合。    1 芯片简介   ADS8364是一款六路模拟输入、16位并行输出的模数转换器。六路模拟输入分为三组(A,B 和C) ,每个输入端都有一个保持信号来实现所有通道的同时采样与转换功能,非常适合于多路(多种)采集系统的需要。ADS8364提供了一个灵活的高速并行接口,可
[嵌入式]
51单片机与CPLD的结合可让系统更加高效化
单片机市场可以用巨无霸来形容,其中51 单片机使用者就更多了,针对51 单片机无需更多的介绍,这里必须强调一点,只要你精通了51 单片机,以后在实际工作中选用其它单片机也很容易了,这就是初学者学习51 单片机的价值。选择51 单片机学习入门容易,倒不是说51 系列单片机比别的型号简单,其实在8 位单片机家族中,51 系列单片机算是复杂的,但51 单片机在中国推广最彻底,教程也是最丰富,基本不用看英文资料就能学好,所以特别适合初学者学习用。 下面说说CPLD,从近来跟学生和爱好者交往中发现,初学者都很“讨厌”它,问我为什幺要把单片机和CPLD 放一块儿,那样不是增加了学习的难度吗?其实深入学习单片机后,你就会发现,单独一片单片机
[单片机]
51单片机与<font color='red'>CPLD</font>的结合可让系统更加高效化
DSP技术在EMIF接口中的BOOT方法简析
DSP技术在目前的芯片研发过程中得到了广泛应用,在之前的文章中,我们曾经就DSP在EMIF接口中的应用进行过简要分析和探讨。今天我们将会接着上一次的讨论结果,来看一下DSP技术在EMIF接口中的系统BOOT是如何实现的,下面就让我们一起来看看吧。 在这里我们依旧以TMS320C6722型DSP芯片为例子,来进行讨论。这种的TMS320C6722型DSP内部没有可写的ROM,DSP的程序必须存放在外部器件中。当TMS320C6722型DSP芯片上电后,必须首先从外部芯片下载程序。本款DSP可以通过SPI总线启动、通过I2C总线启动和通过EMIF接口启动。这几种Boot方式和对应的引脚配置如表1所示,在本系统中,EMIF接口除了实现
[嵌入式]
<font color='red'>DSP</font>技术在EMIF接口中的BOOT方法简析
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved