一种ARM+DSP协作架构的FPGA验证实现
时间:11-09
来源:互联网
点击:
介绍了以ARM+DSP体系结构为基础的FPGA实现。在其上验证应用算法,实现了由ARM负责对整个程序的控制,由DSP负责对整个程序的计算,最大程度地同时发挥了ARM和DSP的各自优势。
ARM通用CPU及其开发平台,是近年来较为流行的开发平台之一,而由ARM+DSP的双核体系结构,更有其独特的功能特点:由ARM完成整个体系的控制和流程操作,由DSP完成具体的算法和计算处理。这样,不但可以充分地发挥ARM方便的控制优势,同时又能最大限度地发挥DSP的计算功能。这在业界已逐渐成为一种趋势。
本文的FPGA的Demo验证,是在基于一款DSP内核处理器的研发基础上,对其功能进行验证的一个小目标识别算法的实现。考虑到软件环境仿真的速度以及仿真模型的局限性,用FPGA进行硬件协同验证。这样,既能够保证仿真的真实性,又能够快速发现实际问题,减少不必要的流片次数,加快开发的进程,这对于一个大规模的SoC设计,已经成为不可或缺的手段之一,而且对节约成本也有很大好处。
1 系统体系结构
双核系统的体系结构如图1所示。
1.1 内嵌ARM内核的EPXA1芯片及其特点
图1中,包含ARM922T内核的开发平台选用的是Altera公司的excalibar系列,本验证实现选用的型号是EPXA1。EPXA1是一款带有100万门可重配置PLD的ARM Core+PLD体系结构,可以通过quartus II软件工具来灵活配置ARM Core同外部的端口连接,最大时钟频率能够达到200MHz。EPXA1的高度集成化,不仅大大加快了ARM与片内各种资源的通讯速度,而且减小了硬件电路的复杂性、体积和功耗,真正实现了SOPC。
1.2 FPGA硬件平台及其特点
对于一个具体项目,FPGA芯片的选取要根据实际需求和特点来具体考虑。一般应从逻辑资源需求、易扩展能力、信号质量以及成本等因素来考虑。如图1所示,本次设计采用的两片FPGA分别为Xilinx公司的FPGA X3S5000和X2V6000,其容量分别为500万门和600万门。选用这两块芯片正是基于逻辑资源需求的考虑。FPGA X2V6000面向高端应用,存储资源更多,功能更强大,适用于性能要求较高的DSP内核,但其成本相对也较高;而FPGA X3S5000成本较低,适用于一般性能要求的模块。两片FPGA都具备三个扩展槽,可做接口扩展,同时也能作为调试测试点用。
1.3 双核体系结构设计特点
具体来讲,整个体系结构是指通过人为设计电路图,外部选用不同的FPGA器件来下载生成特定功能的外部硬件电路,在电路图上对应相应的端口标号;同时,ARM Core可以通过quartus II工具方便地连接不同的端口标号,编译运行生成相应的配置文件;ARM的启动代码中用以上的的配置文件信息来配置PLD,从而实现ARM同外部硬件电路即两片FPGA的连接。FPGA X3S5000中下载固化AHBC硬件电路以及外部SRAM Memory,而FPGA X2V6000中下载固化DSP Core以及支持AMBA协议的Wrapper。
这种体系结构能够充分利用硬件资源,合理的版图位置方便了ARM和DSP对外部SRAM的访问,同时可快捷地实现ARM的控制功能,而且预留的扩展槽能够较为方便地进行功能扩展和调试。DSP Core的Wrapper能够快速响应ARM的控制请求,调动DSP Core进入不同的工作状态。
2 系统工作流程及特点
系统工作流程图如图2所示,介绍如下。
2.1 ARM负责准备阶段
ARM从Flash中运行启动代码,通过配置PLD来连接FPGA X3S5000中的AHBC,目的在于ARM通过AHBC同FPGA X2V6000中的DSP Core进行交互。
代码唤醒外部DMA通过以太网口从PC机端搬运第一帧待处理的图像数据,放到双核公用的外部SRAM memory既定的地址段中。然后,ARM Core通过AHBC控制FPGA X2V6000中的DSP Core。
这里需要说明两点:
(1) FPGA开发板的的图像传输是通过专门配置的带有LXT972芯片的以太网口与PC机的以太网口进行交互, 如图3所示。图3左边的以太网子板即图1中的Ethernet模块。
(2) DSP Core顶层的wrapper是支持AMBA协议的TOP Module,其中包括一个Debug Sub-Module。ARM就是通过读写Debug Sub-Module的控制寄存器来控制DSP Core的启动、停止等工作状态的。所以说,Debug Sub-Module是整个FPGA工程最为关键的部件之一,它直接关系到ARM和DSP之间的交互。本项目中,利用Debug Sub-Module实现对DSP Core的复位、启动、暂停、断点设置、单步运行、读写内部SRAM、读DSP Core寄存器等一系列功能,大大方便了调试工作,同时也非常便捷地实现了ARM和DSP的交互运行。
2.2 DSP运行阶段
ARM写控制寄存器使DSP Core复位,并把小目标识别的程序代码写入DSP内部的SRAM0中等待DSP启动运行,由ARM控制DSP Core运行起来。DSP Core运行完程序之后,会在外部SRAM的一个地址上返回一个标志数(0x00ff00ff),同时进入idle状态,完全释放对AHBC的操作。每隔一段时间,ARM检查一下相应地址上的这个标志数,如果没有,则表示程序还未运行完,ARM继续检查;如果有,则表示程序已经运行完毕,ARM将进入下一步操作。
选用这种流程有两个特点:(1)ARM完全实现了控制和辅助的作用,而运行部分则完全由DSP负责,各自分工明确。(2)ARM和DSP实现了很好的交互,严谨地控制了流程的运行步骤。
2.3 ARM控制停止返回
ARM通过写控制寄存器把DSP Core停下来,从外部SRAM的既定地址段中取出DSP Core运行完所返回的小目标的坐标信息,并通过以太网口返回到PC机端,在显示界面的此帧图像上显示出小目标。图4为其中一帧图像的处理结果显示。
ARM擦除DSP Core运行完毕的标志数,同时判断当前处理完的图像是否为最后一帧,如果不是,则流程跳回DMA搬运步骤去执行下一帧图像,同时加上必要的控制,避免写程序的重复执行;如果是,则结束整个程序运行。这样循环下去,直到所有图像序列处理完毕。
这个过程充分显示了ARM在控制流程的判断跳转方面所起到的主要作用。由ARM的平台来实现对整个视频序列的最终处理控制过程,显得非常清晰便捷。
ARM通用CPU及其开发平台,是近年来较为流行的开发平台之一,而由ARM+DSP的双核体系结构,更有其独特的功能特点:由ARM完成整个体系的控制和流程操作,由DSP完成具体的算法和计算处理。这样,不但可以充分地发挥ARM方便的控制优势,同时又能最大限度地发挥DSP的计算功能。这在业界已逐渐成为一种趋势。
本文的FPGA的Demo验证,是在基于一款DSP内核处理器的研发基础上,对其功能进行验证的一个小目标识别算法的实现。考虑到软件环境仿真的速度以及仿真模型的局限性,用FPGA进行硬件协同验证。这样,既能够保证仿真的真实性,又能够快速发现实际问题,减少不必要的流片次数,加快开发的进程,这对于一个大规模的SoC设计,已经成为不可或缺的手段之一,而且对节约成本也有很大好处。
1 系统体系结构
双核系统的体系结构如图1所示。
1.1 内嵌ARM内核的EPXA1芯片及其特点
图1中,包含ARM922T内核的开发平台选用的是Altera公司的excalibar系列,本验证实现选用的型号是EPXA1。EPXA1是一款带有100万门可重配置PLD的ARM Core+PLD体系结构,可以通过quartus II软件工具来灵活配置ARM Core同外部的端口连接,最大时钟频率能够达到200MHz。EPXA1的高度集成化,不仅大大加快了ARM与片内各种资源的通讯速度,而且减小了硬件电路的复杂性、体积和功耗,真正实现了SOPC。
1.2 FPGA硬件平台及其特点
对于一个具体项目,FPGA芯片的选取要根据实际需求和特点来具体考虑。一般应从逻辑资源需求、易扩展能力、信号质量以及成本等因素来考虑。如图1所示,本次设计采用的两片FPGA分别为Xilinx公司的FPGA X3S5000和X2V6000,其容量分别为500万门和600万门。选用这两块芯片正是基于逻辑资源需求的考虑。FPGA X2V6000面向高端应用,存储资源更多,功能更强大,适用于性能要求较高的DSP内核,但其成本相对也较高;而FPGA X3S5000成本较低,适用于一般性能要求的模块。两片FPGA都具备三个扩展槽,可做接口扩展,同时也能作为调试测试点用。
1.3 双核体系结构设计特点
具体来讲,整个体系结构是指通过人为设计电路图,外部选用不同的FPGA器件来下载生成特定功能的外部硬件电路,在电路图上对应相应的端口标号;同时,ARM Core可以通过quartus II工具方便地连接不同的端口标号,编译运行生成相应的配置文件;ARM的启动代码中用以上的的配置文件信息来配置PLD,从而实现ARM同外部硬件电路即两片FPGA的连接。FPGA X3S5000中下载固化AHBC硬件电路以及外部SRAM Memory,而FPGA X2V6000中下载固化DSP Core以及支持AMBA协议的Wrapper。
这种体系结构能够充分利用硬件资源,合理的版图位置方便了ARM和DSP对外部SRAM的访问,同时可快捷地实现ARM的控制功能,而且预留的扩展槽能够较为方便地进行功能扩展和调试。DSP Core的Wrapper能够快速响应ARM的控制请求,调动DSP Core进入不同的工作状态。
2 系统工作流程及特点
系统工作流程图如图2所示,介绍如下。
2.1 ARM负责准备阶段
ARM从Flash中运行启动代码,通过配置PLD来连接FPGA X3S5000中的AHBC,目的在于ARM通过AHBC同FPGA X2V6000中的DSP Core进行交互。
代码唤醒外部DMA通过以太网口从PC机端搬运第一帧待处理的图像数据,放到双核公用的外部SRAM memory既定的地址段中。然后,ARM Core通过AHBC控制FPGA X2V6000中的DSP Core。
这里需要说明两点:
(1) FPGA开发板的的图像传输是通过专门配置的带有LXT972芯片的以太网口与PC机的以太网口进行交互, 如图3所示。图3左边的以太网子板即图1中的Ethernet模块。
(2) DSP Core顶层的wrapper是支持AMBA协议的TOP Module,其中包括一个Debug Sub-Module。ARM就是通过读写Debug Sub-Module的控制寄存器来控制DSP Core的启动、停止等工作状态的。所以说,Debug Sub-Module是整个FPGA工程最为关键的部件之一,它直接关系到ARM和DSP之间的交互。本项目中,利用Debug Sub-Module实现对DSP Core的复位、启动、暂停、断点设置、单步运行、读写内部SRAM、读DSP Core寄存器等一系列功能,大大方便了调试工作,同时也非常便捷地实现了ARM和DSP的交互运行。
2.2 DSP运行阶段
ARM写控制寄存器使DSP Core复位,并把小目标识别的程序代码写入DSP内部的SRAM0中等待DSP启动运行,由ARM控制DSP Core运行起来。DSP Core运行完程序之后,会在外部SRAM的一个地址上返回一个标志数(0x00ff00ff),同时进入idle状态,完全释放对AHBC的操作。每隔一段时间,ARM检查一下相应地址上的这个标志数,如果没有,则表示程序还未运行完,ARM继续检查;如果有,则表示程序已经运行完毕,ARM将进入下一步操作。
选用这种流程有两个特点:(1)ARM完全实现了控制和辅助的作用,而运行部分则完全由DSP负责,各自分工明确。(2)ARM和DSP实现了很好的交互,严谨地控制了流程的运行步骤。
2.3 ARM控制停止返回
ARM通过写控制寄存器把DSP Core停下来,从外部SRAM的既定地址段中取出DSP Core运行完所返回的小目标的坐标信息,并通过以太网口返回到PC机端,在显示界面的此帧图像上显示出小目标。图4为其中一帧图像的处理结果显示。
ARM擦除DSP Core运行完毕的标志数,同时判断当前处理完的图像是否为最后一帧,如果不是,则流程跳回DMA搬运步骤去执行下一帧图像,同时加上必要的控制,避免写程序的重复执行;如果是,则结束整个程序运行。这样循环下去,直到所有图像序列处理完毕。
这个过程充分显示了ARM在控制流程的判断跳转方面所起到的主要作用。由ARM的平台来实现对整个视频序列的最终处理控制过程,显得非常清晰便捷。
ARM DSP FPGA 仿真 SoC Altera 电路 Xilinx 电路图 相关文章:
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- 基于Spartan-3A DSP的安全视频分析(05-01)
- 基于ARM9和CPLD的输入输出系统设计(04-09)
- FPGA中的处理器IP概述(04-14)
- FPGA与DS18B20型温度传感器通信的实现(07-09)