基于C语言在FPGA上实现DSP的解决方案

发布者:温柔花香最新更新时间:2012-06-15 来源: 21ic关键字:FPGA  DSP 手机看文章 扫描二维码
随时随地手机看文章
   

硬件设计者已经开始在高性能DSP的设计中采用FPGA技术,因为它可以提供比基于PC或者单片机的解决方法快上10-100倍的运算量。以前,对硬件设计不熟悉的软件开发者们很难发挥出FPGA的优势,而如今基于C语言的方法可以让软件开发者毫不费力的将FPGA的优势发挥得淋漓尽致。这些基于C语言的开发工具可以比基于HDL语言的硬件设计更节省设计时间,同时不需要太多的硬件知识。由于具有这些优势,FPGA技术不仅可使这些器件作为I/O器件的前端,FPGA还可实现大量的高带宽和运算密集型应用的实时处理。此外,FPGA还可很紧密地与板上存储器结合,并在一块电路板上集成多个器件。更好的是,FPGA电路板可通过新兴的串口通讯标准进行通讯,如RapidI/O或者PCIX。这些最新技术可让基于FPGA的系统比现有的多CPU和DSP系统的性价比高出一个数量级。因此,在用CPU和DSP解决高带宽和算法密集问题的场合中,例如医疗成像、工业应用以及军用声纳和雷达等,经常使用FPGA。设计者利用这些新型的基于C语言的开发工具来开发DSP(在一块PCI板上安装单块或多块FPGA处理器),就可以实现前面提到的改进性能以及更短的面世时间。这篇文章向设计者展示了如何利用C语言工具在基于FPGA的系统中实现信号处理,并一步一步向开发者说明在多FPGA系统中实现算法密集型信号处理程序的过程。利用C语言对FPGA计算解决方案进行编程,能将把程序的执行时间从12分钟减少到仅为2秒。

1通过C语言与硬件进行接口

假设您在设计一个算法密集的信号处理程序,例如分析上千公里长公路的裂缝。这种应用需要用到正/逆向霍夫变换的算法,该算法还可对航拍图片中的河流和街道以及半导体表面的瑕疵进行定位。如果你正使用基于奔腾4和WindowsXP的PC、带有多个FPGA的PCI板(例如Tsunami板)、C语言开发环境和Handel-C(Celoxica开发环境)来进行设计,并假设你对HDL硬件语言所知甚少,却熟悉基于FPGA设计的一些基础知识。设计过程要从C语言代码的编写开始,然后将代码转化成Handel-C,并在PC上进行仿真,最终在多FPGA处理器上运行测试。

一开始,先要决定C语言代码对哪些算法进行加速。一个好的剖析工具,例如Intel的VTunePerformanceAnalyzer,可以帮你发现消耗过多时钟周期的代码段。在上述的信号处理应用中,完全由CPU完成算法要花费12分钟的时间,经过剖析发现时间几乎是消耗在各种嵌套的循环中,这清楚地显示了哪些代码是由FPGA加速器加速的。经过加速过的代码需要经过PC上的PCI总线输入和输出。由此可知I/O数据的速度在PCI总线的速度范围之内??从70到200Mbps。接下来的挑战是创建FPGA设计以加速代码的功能。由于FPGA可以同时执行上千条指令,访问上百个内存块,所以“管道”和“并行处理”技术都可被用来加速功能。利用管道技术,指令路径是有顺序的,即当一些算法正在一部分数据“管道”中被执行时,另一些算法将在同一“管道”的后面部分被执行,这个过程与自动生产线很相似。具有长时钟的程序可以通过并行处理来显著降低运行时间(图2)。

最后,你还必须分析各个算法,将其按步分解成由数学运算(加、减、乘、除、积分)、延迟、保存到内存和查表等操作。无论多复杂的算法都可以分解成这些最基本的操作,而且这些操作在相互无关联的情况下可以并行处理。我们的示例应用可以这样被加速:9个处理周期被充分地进行管道处理,在初始延迟后的每个时钟都输出一个结果,然后这些周期被嵌入到X、Y和Θ的三维循环中,因此总的周期数为9+(9*X*Y*Θ),即在每个处理块中只包括9个这样的周期:延迟+(9个周期*64个像素*64个像素*64位深度)。[page]

 

   

尽管FPGA中可以实现浮点运算单元,但它们能迅速消耗FPGA的资源,所以如果可以,最好谨慎使用。主要依靠浮点运算的算法最好转换成定点运算,这样你既可利用用“模块浮点”方法,又可通过定点的方法设计整个系统。然后,通过对比实际输出与原始的全浮点运算的软件实现来确定转换精度。在霍尔算法的例子中,14b+7b的定点分辨率与全浮点的结果完全相同。


2确定资源

在接下来的设计中,需要对每个处理部分的时钟周期计数。通常,每个时钟周期可以完成二到三个运算,然后确定所需的FPGA资源以适应代码。可以在多个FPGA中分段运行代码来获得更高的计算能力。这些解决方案的拓展非常容易,只要使用所需的多个FPGA(最多5个),系统将自动检测它们。在该例子中,设计是基于处理块的。这些块按顺序被发送给每个FPGA,或者从每个FPGA收集起来(其逻辑是代码的一部分)。一个FPGA的加速比例可以达到37:1,而10个FPGA(每两个电路板上有5个)可以达到370:1。对设计进行编码相对简单,因为设计主要由C语言完成,除了一些需要特殊Handel-C指令的新功能。这些新指令包括:增强位操作、并行处理、宏操作和公式、任意宽度的变量、FPGA存储器接口、RAM和ROM类型、信号(代表硬件中的信号线)以及通道(在代码并行分支或时钟域之间通信)。工具条中的“代码转换”可以完成C和Handel-C的样本转换。

3对环境的仿真

再下一步是建立仿真环境,并在其中测试和优化硬件代码。仿真环境提供了完整的bit-true/cycle-true仿真,并对FPGA的实现进行可靠的模拟。利用设计输出与C软件仿真输出的比较来测试精度,同样也可得到FPGA处理器上真实运行速度的报告。通常,进行结构块仿真有助于找到设计中的问题,因为这些块在重组后可以确定总体的运行效果。可在仿真过程中做进一步的调整,如利用流水线在每个时钟周期内进行单输入单输出的测试,或将处理过程细分到更多的并行数据流中直到FPGA的资源利用率达到100%。此外,在硬件编译时也能发现算法的最慢点并对其优化,在FPGA甚至板子之间分割算法还可以获得额外的速度。利用软件,进一步调整可获得更好的性能。然而,精确调整带来的性能增益却会下降。通过简单的增加FPGA非常具有成本效益。并不需要使设计完美化,因为基于这些结果的设计可以在任何时候进行快速的仿真和优化。一旦仿真完成,就可以将设计编译到硬件里并激活数据流管理(DSM),以便将数据流送到FPGA处理器板而不是仿真器中。

访问TI网站,获取最新技术信息全面了解德州仪器(TI)的处理器电源参考设计:交叉参考搜索、应用手册、工具和软件、方框图参考设计、模拟eLAB。

关键字:FPGA  DSP 引用地址:基于C语言在FPGA上实现DSP的解决方案

上一篇:FPGA迎来硅片融合的“黄金时代”
下一篇:高频开关电源的干扰问题及其解决途径

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

瑞萨全新PMIC参考设计加速FPGA和SoC产品问市
全球领先的半导体解决方案供应商瑞萨电子株式会社宣布推出三款易于使用的电源管理IC(PMIC)参考设计,用于为Xilinx Artix-7、Spartan-7系列FPGA以及Zynq-7000 SoC的多个电源轨供电,并可选配DDR存储器。瑞萨与Xilinx紧密合作,提供低风险且易于开发的电源解决方案,以加速FPGA和SoC设计。该参考设计可加快各种工业及运算类应用的电源研发速度,其中包括电机控制、机器视觉摄像头、可编程逻辑控制器(PLC)、家庭网关与家电、便携式医疗和无线设备等。 瑞萨高效PMIC参考设计提供了用户友好的交钥匙解决方案,使单个设计能够支持不同的Xilinx速度等级和DDR存储器类型,包括DDR3、DDR3
[嵌入式]
瑞萨全新PMIC参考设计加速<font color='red'>FPGA</font>和SoC产品问市
通过JTAG口对DSP外部Flash存储器的在线编程
引言 在采用TI数字信号处理器(DSP)的嵌放式硬件系统开发完成,软件也有CCS2.0集成开发环境下仿真测试通过后,怎样将编译、链接后生成的可执行文件(.Out),经过转换后的十六进制文件(.Hex)写入硬件系统的Flash存储器中,让系统脱机运行,这是许多DSP开发人员及初学者遇到并需要解决的问题。 从JTAG接口对DSP外部Flash的编程方法不只一种。本文以TMS320C6711-150 DSK板为例,介绍“在线仿真状态下”对Flash的编程。 1 Flash存储器的擦除 Flash编程之前,应对Flash进行擦除,使其每个数据位都恢复为1状态,即全FF状态。对Flash的擦除操作需要6个总线周期,总线时
[单片机]
通过JTAG口对<font color='red'>DSP</font>外部Flash存储器的在线编程
基于MCU+FPGA的LED大屏幕控制系统的设计
引言 只要在现在的市场上走一圈就会发现,大部分的中小规模 LED显示系统,采用的是传统的单片机作为主控芯片。但是内部资源较少、运行速度较慢的单片机,很难满足LED大屏幕的显示屏,因为系统要求数据传输量大,扫描速度要快。以FPGA作为控制器,一方面,FPGA采用软件编程实现硬件功能,可以有效提高运行速度;另一方面,它的引脚资源丰富,可扩展性强。因此,用单片FPGA和简单的外围电路就可以实现大屏幕LED显示屏的控制,具有集成度高、稳定性好、设计灵活和效率高等优点。 1 系统总体结构 LED大屏幕显示系统由上位机(PC机)、单片机系统、FPGA控制器、LED显示屏的行列驱动电路等模块组成,如图1所示。上位机负责汉字、字符等数
[单片机]
基于MCU+<font color='red'>FPGA</font>的LED大屏幕控制系统的设计
基于DSP的软件无线电基频发射机的设计与仿真
引言 软件无线电突破了传统的无线电台以功能单一、可扩展性差的硬件为核心的设计局限,强调以开放性最简硬件为通用平台,尽可能地使用可升级、可重配置的应用软件来实现各种无线电功能。用户在同一硬件平台上可以通过配置不同的应用软件来满足不同时间、不同环境下的不同功能需求,具有很强的灵活性和开放性。 DSP(数字信号处理器)凭着灵活性、精确性、稳定性、可重复性、体积小、功耗小、易于大规模集成,特别是可编程性和易于实现自适应处理等特点,给数字信号处理带来了巨大的发展机遇。 基于上述优点,用DSP实现基于软件无线电技术的基频发射机,不仅降低了产品的成本,减小了设备体积,满足系统的需要,而且随着DSP处理速度的不断提高,可将内插等复杂运算集成
[嵌入式]
FPGA系统的供电要求和最新DC/DC稳压器解决方案
随着FPGA制造工艺尺寸持续缩小、设计配置更加灵活,以及采用FPGA的系统的不断发展,原来只采用微处理器和ASIC的应用现在也可以用FPGA来实现了。最近FPGA供应商推出的新型可编程器件进一步缩小了FPGA和ASIC之间的性能差别。尽管这类器件的可配置性对设计工程师很有吸引力,但使用这些器件所涉及的复杂设计规则和接口协议,要求设计工程师经过全面的培训,并需要进行参考设计评估、设计仿真和验证工作。另一方面,FPGA应用中非常复杂的模拟设计,例如用于内核、I/O、存储器、时钟和其它电压轨的DC/DC稳压器,也要求新的解决方案。本文讨论的高性能DC/DC转换器有助于系统设计工程师克服这些挑战。 FPGA系统的供电要求 1.
[应用]
基于FPGA的人工神经网络实现方法的研究
   引言   人工神经网络(ArtificialNeuralNetwork,ANN)是一种类似生物神经网络的信息处理结构,它的提出是为了解决一些非线性,非平稳,复杂的实际问题。目前实现ANN还主要依靠软件程序.但是依靠程序很难达到实时性的要求。   神经网络在FPGA上实现是独立于冯·诺依曼架构,利用FPGA的并行性,在一些实时性要求很强的领域应用。通用计算机虽然编程容易,但是很多时间浪费在分析指令,读出写入数据等。于是人们想利用ASIC(专用计算芯片)完成神经网络的计算任务,但是由于资源有限,这种芯片只限于实现特定的算法结构和小规模网络,而且专用芯片的制作成本很高,只适合大批量生产。   可编程逻辑器件FPGA的出现给I
[嵌入式]
基于<font color='red'>FPGA</font>的人工神经网络实现方法的研究
Altera为三洋后视倒车摄像添图像功能
  Altera公司宣布,三洋电子有限公司在其CCA-BC200汽车后视倒车摄像系统中采用了Cyclone II FPGA和Nios II嵌入式处理器。Cyclone II FPGA的Nios II嵌入式处理器为三洋公司提供了高性能图像处理解决方案,降低了广角和偏角失真。和数字信号处理器(DSP)方案相比,单芯片FPGA是更紧凑、更可靠的解决方案,而前者通常需要两个以上的器件。   CCA-BC200是业界的首款配件市场后视倒车摄像系统。该系统可以连接至所有汽车的视频监视系统,对图像进行数字校正,实现更清晰自然的图像。三洋公司在消费类电子产品展(CES)上展示了这一后视倒车摄像系统。   三洋电子有限公司汽车高级技术中心经理Hi
[嵌入式]
基于DSP和PCI总线的通信数据采集系统
    摘要: 介绍一种基于DSP和PCI总线的移动通信数据采集系统。提出了一种双映射方式,成功地解决了DSP的主机通信接口(host port interface,简称HPI口)和PCI9052之间的通信连接。     关键词: 数字信号处理器 数据采集 PCI总线 随着移动通信突飞猛进的发展,移动通信的数据业务量急剧上升,监控大容量的移动数据业务成了电信运营商刻不容缓的需求。而移动通信数据的传输一般都是基于E1链路。因此从E1链路上采集通信数据成了移动数据业务监控最基础的一部分。 数字信号处理器能够高速地处理数据并具有强大的数字吞吐能力,在数据采集领域获得了广播的应用。而PCI总线也因为极高
[应用]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved