在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 9490|回复: 37

FPGA实现DSP(转载)

[复制链接]
发表于 2006-9-6 14:48:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
FPGA能为今天许多需要DSP功能的复杂应用提供快速、低成本的解决方案。不过,许多DSP
工程师在传统上擅长软件开发,当涉及到硬件时他们可能就不知道该从何下手。基本上,
有三种设计方法供DSP工程师加以考虑:采用知识产权(IP)进行设计、采用硬件描述语言(
HDL)的传统设计方法、以及使用现在的一些新工具把C语言编译到硬件中。
出于以下几个原因,你可能会考虑使用FPGA来实现DSP解决方案。首先是为了提高性能,尽
管今天的DSP处理器很快,并对许多DSP应用来说很有用,但仍有一些应用要求性能再进一
步提升,而FPGA提供了更高的性能。
例如,FPGA可以生成一个定制硬件设计,从而控制逻辑能够在硬件中实现。工程师将不必
再利用精确的时钟周期来实现控制功能。此外,通过裁减硬件架构,FPGA可以提供额外的
性能。如果最重要的设计考虑因素是速度,那么可以在FPGA中设计完全并行的算法处理方
案。今天,用FPGA来执行DSP功能的最常见应用之一是视频处理。其它可从FPGA的更高性能
中受益的应用包括雷达、超声波和高速调制解调器等。
使用FPGA进行数字信号处理的另一个理由是今天的许多系统已经包含了一个FPGA,用于协
议转换、胶合逻辑或一些其它系统功能。如果那个FPGA没有被完全利用,那么把DSP功能加
入其中可以为系统节约成本。而且如果标准发生改变,使用FPGA就不会有任何风险。FPGA
的配置文件能够像软件那样升级,尽管它们必须被存储在系统的非易失性存储器中。
当用FPGA进行设计时,如果有可能,最好坚持使用定点数系统。这有几个原因。首先,所
有嵌入在FPGA中的逻辑(乘法器、累加器)已经被设计成定点运算单元,为FPGA用途而设计
的大多数内核也是如此。其次,浮点的实现很复杂,而且需要规模相当大的硬件。在产品
的开发成本或每单位成本中,浮点解决方案的费用过高,因而可能不值得我们这样做。最
后,FPGA内部的定点格式为用户提供了足够的灵活性,因为表示一个数字的位数可以由用
户选择,而且用户可以在任何需要的地方设计舍位和进位方式,从而使定点实现很实用。

当决定在定点实现中应该使用多少位数时,请记住每增加一位会使信噪比提高约6dB。

正如市面上有许多软件,而且某些软件比其它软件更适合于不同的场合一样,创建FPGA设
计的方法也有许多种。第一种设计技术是使用IP核来进行设计。这是最容易的技术,因为
内核已经是设计好并经过优化的。该技术通常能提供最佳的结果,因为专家在设计内核时
已经针对应用和FPGA架构采用了最佳的实现方式。
今天的大多数内核非常便于配置,例如,可选择并行实现、串行实现或对称操作。因此,
我们很有可能找到可以满足大部分需求的内核。一些工具供应商和FPGA供应商甚至提供能
够使用传统DSP系统设计软件(诸如Matlab之类的工具)来实现的内核,所以学习的过程并不
是那么艰难。许多常见的内核对用户是免费的,如FIR滤波器和乘法器。更为复杂的内核通
常需要许可费,在多数情况下,这是一次性费用。总而言之,如果设计人员缺乏FPGA设计
经验且能以适当的价格发现适合其需要的内核,那么这种技术是最佳选择。
寻找合适的内核
然而,我们并不是总能找到一个可以满足系统特定需求的内核,或者,找到的内核只能提
供设计的部分功能。在这种情况下,设计人员有必要使用一种现有的HDL语言来设计硬件。
传统的HDL包括VHDL和Verilog。然而,C语言也正在演变成一种HDL,而且越来越多的工具
开始支持C代码的硬件综合。HDL允许你完全定制自己的设计,而且可以与IP核一起使用:
IP核只是简单地被HDL代码“引用”或调用。在学习HDL时,设计人员还需要学会如何使用
逻辑综合仪,它读取HDL代码并将它们映射成实际的硬件。传统的HDL,即VHDL和Verilog,
有更好的支持工具,但可能要求设计人员学习新的东西。大多数DSP工程师已经懂得C语言
,但软件支持不是那么强大,所以可能更难达到最优的设计性能。
如果已经决定用C语言作为HDL,那么重要的事情不仅是要复用已被用于DSP软件实现的C代
码,而且要把它们映射到硬件中。这将产生一种非常欠优化的实现结果。设计人员希望使
用一种已经熟悉的语言,只有在为了获得这种便利性时才应该采用C语言。代码应该在实现
方案已经确定之后再编写,以便代码能反映实现方案。在硬件中执行并行操作既是有可能
的,也是设计人员所期望的,而这在C语言中是不可能的,因为它是为纯粹按顺序执行的软
件而设计的。因此,已经进行了某些修改以允许C语言支持并行操作。在设计硬件之前,设
计人员应该学会如何在C语言中高效地编写并行结构。这些结构因工具供应商的不同而略有
差别。
现在,你可以开始在FPGA中实现DSP功能了。在实现你的设计时要记住以下最重要的事情:

1)学习你选中的FPGA的架构和特性,在决定实现方案时努力利用它们。
2)了解DSP应用的性能需求。要了解的最重要指标包括:采样率、采样的位分辨率和系数
、滤波器的级数或傅立叶变换(FFT)的数据点数。
3)根据性能需求决定FPGA架构。
4)在实现设计时,要记住利用FPGA架构。
发表于 2006-10-12 14:56:30 | 显示全部楼层
挺不错的
发表于 2006-10-12 15:33:24 | 显示全部楼层
挺好的的东西,顶
发表于 2006-10-21 15:17:42 | 显示全部楼层
不错,顶一下
发表于 2006-10-22 22:08:06 | 显示全部楼层
发表于 2006-11-27 14:56:03 | 显示全部楼层
谢谢分享
发表于 2006-11-27 17:25:46 | 显示全部楼层

回复 #1 maximzhao 的帖子

不错的帖,狂顶!
发表于 2006-11-28 00:50:26 | 显示全部楼层
挺好的的东西
发表于 2006-12-2 15:04:13 | 显示全部楼层
bucuoas a a
发表于 2006-12-2 17:21:02 | 显示全部楼层
不错  顶下  支持
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-9 09:55 , Processed in 0.029751 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表