24小时热门版块排行榜    

CyRhmU.jpeg
查看: 503  |  回复: 3
当前主题已经存档。

霹雳旋风

荣誉版主 (著名写手)

[交流] 采用DSP、PLD和ASIC实现多速滤波器设计


已搜索,无重复
【前沿】采用DSP、PLD和ASIC实现多速滤波器设计的比较


采用专用器件实现数字信号处理是目前中国工程师的一个主要选择。Altera公司
Tony San认为,面对实现多速滤波的各种方案,设计工程师必须评估所需的数据吞
吐量,提出高效率的实现方案并正确地选择各类硬件,从而实现设计优化与尽快完
工之间的平衡。

许多通信系统都要用到多速滤波器(multirate filter),多速滤波器是指输出数据
速率与输入数据速率不相等的滤波器,常用于某个物理接口如数模转换器(DAC)或
模数转换器(ADC)的接口处。当滤波器输出数据到DAC时,用户常会选择插值滤波器
,因为它能产生更多的取样点以使DAC的输出波形更加平滑;而当滤波器从ADC接收
信号时,用户一般会选用抽取滤波器,因为抽取滤波器允许数据被过取样从而获得
更高的信噪比(SNR)。使用抽取滤波器后系统只需工作在信号速率。

在多速滤波器设计过程中,有效地采用硬件实现插值和抽取功能非常重要,问题的
关键还在于怎样选择正确的硬件类型。下面分别讨论采用DSP、PLD和ASIC实现多速
滤波器的方法。

插值和抽取

插值功能常用来增加输出信号的取样率(图1),实际上在原始取样值附近增加新的
取样值很有必要。由于新的取样点处的值是未知数,一般就设为零,因此也被称为
上取样(upsampling)、零值插入或零值填洹J涑龆耸莸愕脑黾踊岣谋淙⊙俾?
,从而使奈奎斯特频率外推。在时域中向数据插入零值,则信号在频域上会产生原
始信号频谱的镜像。由于取样速率的改变并不会产生更多的信息,因此所有的镜像
信号(以人工方式加入系统中)都表现为噪声,幸运的是这些噪声可以通过理想低通
滤波器滤除。



抽取滤波器的工作方式也大致相同。这种滤波器要消除某些取样点,从而降低取样
速率和奈奎斯特频率。任何低于或高于奈奎斯特频率的信号都将表现为噪声,因此
有必要在消除数据(下取样)前加入低通滤波器,这样可以确保噪声不串入系统(图
2)。

实现策略

在插值与抽取实现方案中采用的低通滤波器最好具有线性相位特性,一般是利用有
限冲击响应(FIR)滤波器来实现这种线性相位滤波器,但FIR滤波器的实现要比无限
冲击响应滤波器(IIR)的代价高得多。为了取得更好的性能,需要增加滤波器的阶
数,而FIR滤波器可以从10阶到200阶甚至更高。每个滤波器的输出必须经过10到
200次运算。由于FIR滤波器非常昂贵,设计师一般会采用专用硬件来实现,这里的
专用硬件可能是一块专用滤波芯片、一种可编程逻辑解决方案或一些半定制(标准
化单元实现)集成电路。



用标准单元实现的FIR滤波器可以获得最大的吞吐量,按速度排序的话,可编程逻
辑器件(PLD)和专用滤波芯片的吞吐量排第二,然后才是通用DSP器件。当最终用户
需要高的数据吞吐量时,几乎没有什么硬件可以胜过ASIC和PLD。ASIC设计流程相
当成熟,对于PLD来说,可以利用能自动创建FIR滤波器的工具来加速开发流程。为
了减小插值与抽取滤波器的芯片面积并增强其性能,很有必要采用一些专门技术。


目前还没有最佳的多速滤波器实现方案,而方案的评估也有很多种方法。方案的成
本取决于某个实现方案所对应的性能要求。这里性能可以定义为每秒钟乘法运算的
总次数(由于加法一般都与乘法结合在一起,因此运算成本中不再包含加法)。假设
单个乘法操作需要一个时钟周期,那么我们就可以确定实现某个方案所需的MIPS值


检查插值滤波器的运算速度有个比较直接的方法,即将数据先进行上取样然后再进
行滤波。图3所示的样本要求采用388抽头的滤波器,并且滤波器工作时的数据速率
必须达到每秒12兆样点(MSPS)。这种实现方式所要求的运算速率大约为4500MIPS。


多级滤波

好在有许多方法来降低运算速率要求,比如可以在三级内实现插值因子为12的多级
滤波。设计人员可以将第一级的插值因子定为2,在第二级再以因子2对第一级的输
出进行插值,然后输出到第三级,第三级的插值因子设为3,这样就有了3级滤波器
,图3给出了每个滤波器的详细参数。



通过分级插值可以降低对每个滤波器的要求,从而减少滤波器的阶数。另外,前二
个滤波器分别工作在2MSPS和4MSPS,只有最后一个滤波器才工作在12MSPS,而改进
前的方法要求整个滤波器工作在12MSPS。同样,若采用分级抽取,运算速率就不必
要求太高。

多级滤波法可以将运算速率减小到1035MIPS。对多级滤波器的各级重新分配运算任
务,用小得多的滤波器就可以达到期望的运算结果,这是一种相对高水平的优化方
法。

多相分解

降低运算速率的另外一种方式需要详细分析插值滤波器的实现方案。众所周知,先
进行零值插入然后滤波,就可以将问题分解到多个较短的滤波器中解决,每个滤波
器工作于不同的时间点上,这种方法被称为多相分解,如图4所示。

举个简单的例子来说明一下多相分解的工作原理。在该例中滤波器系数为24,插值
因子为4。由于滤波器插值因子为4,因此实际上大多数输出到滤波器的数据为零,
通过执行特殊的乘法操作可以消除这些零数据的系数。例如,第一个输出数据可以
单独由系数C0、C4、C8……C20确定,而第二个输出数据则由C1、C5、C9……C21等
系数决定。在这种情况下每个输出只要求6次乘法运算而不是24次乘法运算,调整
插值因子可以减少运算速率。对于插值因子为12的388抽头滤波器,每个输出只需
33次乘法即可确定。多相插值器可以用388MIPS完成相同的运算量。



抽取结构同样也可利用类似的技术。在本例中抽取因子为4,因此4个数据点经过滤
波后只剩下了1个,其实没有必要去计算被丢弃的取样点数。多相抽取器将数据分
配给4个较短的多相滤波器(抽取因子为4),最后将4个滤波器的输出叠加在一起从
而形成最终滤波输出。每个多相滤波器以抽取后的数据速率输出数据,从而降低了
对抽取器的性能要求。

当然可以综合运用多种方法以进一步降低运算速率。例如,可以对多相结构中的每
个单级滤波器执行多级滤波。

采用DSP和内核的实现方案

从实现层次看,需要采用特殊的结构(占用最小的器件资源,工作于最低的功耗等)
。这种方案的选用取决于运算速度要求,对于要求几百MIPS的情形采用DSP就是很
理想的方案,某些DSP器件的运算速度能达到1GOPS,采用DSP的典型设计还能做滤
波以外的其它工作,在处理器执行的所有不同功能上谨慎地分配MIPS也很有必要。


许多情况下用户都会做出MIPS预算,并根据具体性能要求选择DSP。如果性能要求
超过了单片DSP的处理能力,可以考虑多种应变方案,如将任务分配到多个DSP上,
或采用硬件协处理器来加速运算量巨大的任务,此时,采用ASIC和PLD器件就恰到
好处。

采用专用逻辑器件的实现方案

许多半导体供应商都提供能实现插值功能的专用芯片,这些芯片包含若干用于实现
滤波功能的乘法器,因此能获得比DSP器件更优异的性能。它们还能支持固定数值
的系数和特定的插值或抽取因子。

ASIC和PLD方案可以结合起来形成“用户专用硬件”产品。采用这种方法后可以在
一个时钟周期内计算全部127抽头的FIR滤波器(比DSP快两个数量级)。设计中要仔
细考虑后续工作,如HDL仿真、综合、验证、可测性及故障覆盖率,这点在DSP设计
中也一样。

对于完全并行的插值滤波器来说,将滤波器进行多相分解可以产生由较短滤波器构
成的滤波器组。为了在一个时钟周期内进行一次滤波运算,多相滤波器中的每个系
数必须配备一个乘法器。在每个输入时钟周期要完成两个任务:1.数据存贮到每个
多相结构中;2.每个滤波器会产生N个输出。最后输出时钟会在同一时间扫描所有
的各相滤波器,就如同是单一输入时钟的效果。

时钟域与静态时序分析

将设计分解开来可以得到二个时钟域,即输入时钟与输出时钟,输出时钟速率是输
入时钟速率的整数倍。输出结构(一个简单的乘法器)需要以高于输入多相滤波器的
数据速率工作。当进行专用硬件(如ASIC或可编程逻辑)设计时可以考虑减小时钟域
的数量。当用ASIC产生扫描向量时需要另外增加时钟域,通过静态时序分析可能还
需消除一些错误路径。采用可编程逻辑器件,可供选择的时钟信号数量是固定的,
因此每个时钟域也就显得更加珍贵。

当时钟使能端作用于多相结构中的触发器时,就有可能采用输出时钟对整个结构进
行时钟控制。采用时钟使能功能,多相结构只需运行于输入时钟速率(较慢的时钟
信号),还可放宽这些复杂结构的时序要求。这使多相结构成为一个多循环组件,
静态时序必须符合多循环规范。在ASIC和PLD为主的设计流程中使用的时序分析工
具需要支持多循环规范。

当设计ASIC时,所需数量的乘法单元可以集成进芯片中,并且可以在最小的面积上
获得所要的速度。ASIC实现方案要比DSP和PLD实现方案的灵活性低,任何改变都需
要对整个系统作重新设计(既费时又费力)。

采用PLD结构的滤波方案

PLD实现方案则不同,用PLD实现滤波功能可以采用两种结构:串行与并行,这两种
结构都能有效地将系数映射到查寻表格并执行乘法运算。完全并行的结构可在单个
时钟周期内进行完整的滤波运算,而串行结构需要将运算分配在若干时钟周期内完
成(取决于输入数据宽度),因此串行结构的吞吐量较小,但串行结构在芯片的利用
率方面还是很高的(只需很小的存储空间和逻辑单元)。

目前用于可编程逻辑的FIR滤波器自动生成工具已经面世。至少这些工具能在给定
系数后自动生成各个滤波器,而更先进的工具可以为用户产生定点系数,并在此基
础上实现多相滤波器,同时进行芯片面积和速度评估。

本文结论

实现插值与抽取逻辑的方案很多,设计师必须评估所需的吞吐量,提出高效率的实
现方案,并在设计优化与尽快完工之间取得设计工时上的平衡。

[ Last edited by 幻影无痕 on 2006-11-24 at 09:00 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

霹雳旋风

荣誉版主 (著名写手)

IPv6打破TCP/IP的限制

【前沿】IPv6打破TCP/IP的限制
转,已搜索,无重复


Internet的爆炸性增长使得TCP/IP协议包技术对网络和系统管理员的限制越来
越大,尤其是IP协议本身的问题就更加突出。为了解决这个问题,就提出了一
种新的IP协议,称为"下一代IP(IPng)"。现在IPng已经有了几种平台的实现,
它的产品实现预计在今年内会推出。

为什么要用新的IP

IP对于任何使用TCP/IP协议的Intranet和Internet来讲都是一个十分重要的部
分,但是它缺乏两个重要的特性:可伸缩性和带宽。IP的可伸缩性的问题主要
集中在三个方面:地址分配、主干路由表的增长和主机的配置。以前人们认为
IP的最明显的一个不足是它的有限的地址结构,IP采用A、B、C三类地址的地址
分配方案远远不能满足目前的Internet迅速增长的需求。如果按目前Internet
的发展速度看,到2005年现在尚未分配的地址就会被用尽。

然而目前Internet团体面临的最紧迫的问题还是主干路由表的不断增长。在采用
RFC 1380、1517、1518和1519规范描述的CIDR(Classless InterDomain Routing)
前,Internet上主干路由表的增长速度比RAM容量快1.5倍。由于绝大部分A类和B
类地址已经分配完,剩下的可用的地址已经非常有限了。这个个问题就是人们所
称的"地址汇集"。

当不同的子网按其数字顺序附加到第一个网络上时,主干路由表只需要第一个网
络的网络地址,其它的网络都可以通过第一个网络来访问。对于基于类的地址分
配,地址按顺序递交到InterNIC那里而不必将其汇集到一个通用的连接通路上再
进入主干网。如考虑网络 199.200.201.0,199.200.202.0, ...,199.200.254.0,
CIDR将企图将199.200.202.0,...,199.200.254.0链接到网络199.200.201.0上,
然后主干网只需要知道如何将一个包路由到199.200.201.0就可以了,这样
199.200.201.0,...,199.200.254.0 之间的所有网络被称为汇集到网络
199.200.201.0中。如果没有地址汇集,路由表就需要254个单独的入口,将它们
直接放到Internet上将是很难管理的。

目前地址汇集的解决方案是CIDR,它还有助于通过鼓励采用基于ISP(Internet服务
提供商)的地址分配方案减慢地址被用尽的速度。基于ISP的地址分配可以更有效的
利用目前未能充分使用的B类和A类子网,因而可以使更多的网络连到Intetnet上。

但是CIDR却增大了IP可伸缩性的第三个弱点:主机的配置。每当一个站点改变ISP,
它的所有主机必须重新设置地址,这对绝大部分站点来讲绝对不是一件以松的工作,
它能够对公司的人力资源造成重要的浪费。最后,IP还有一个重要的缺点就它缺乏
足够的功能来保证数据包的真实性和安全性。IP缺乏验证和可靠性控制,这往往会
带来许多安全方面的问题。在1995年1月,Internet工程组(IETF)的IPng工作组
(Ipng Working Group)提出了取代修改IP协议的建议,新的建议是IP的第6个版本,
也称为IPv6(目前使用的是IPv4,IPv5只是一个过渡性版本)。IPv6的目标就是为
了满足当今以及可以预见的将来不断增长的网络的要求。

IPv6比IPv4大大前进了一步,IPv6保留了IPv4中的有用的功能,而去掉了一些没用
的功能。IPv6对Ipv4所作的主要改进有下面三个方面:
.扩展地址和路由
.自动配置
.验证和可靠性
地址问题
在IPv6中IP地址从32位猛增到128位,它的地址空间是IPv4的的2^96(即2的96次方,
请编者写成指数的形式)倍,理论上可以提供的地址数是340,282,366,920,938,
463,463,374,607,431,768,211,456。正如IPng工作组在一篇论文中所指出的,如
果地球表面的面积按511,263,971,197,990平方米计算的话,那么每平方米大约有
665,570,793,348,866,943,898,599个地址。扩展的地址是IPv6简化包头格式的一
部分:


.版本(Version):4比特的IP版本号,其值为6
.优先级(Prio.):4比特的优先级数值
.流量标记(Flow Label):24比特的流量标记
.有效载荷长度(payload Length):16位的无符号整数。
.下一个首标(Next Header):8比特的选择器,它紧跟在IPv6首标的后面确定首标
的类型
.跳限制(Hop Limit):8比特无符号整数,每个节点减去1,如果跳限制值减少到0,
就将包丢弃。缺省值为64
.源地址:包的发送者的128比特地址
.目标地址:包的接收方的128比特地址

实际上,路由需要创建能够降低地址空间使用效率的地址分级。但是IPv6打破了IPv4
的A、B、C三类地址的地址分配方案。最初的IPv6建议确认了RFC 1884 Section 2,3所
描述的几个不同的地址类型,其目的就是提供最广泛的功能而同时还可以将简化的机
制组合起来"自动配置"一个主机的地址。自动配置的目的是将IP地址分成两个不同的
部分:网络标志符和一个唯一的主机标志符。一个流行的提议是使用一个主机的
IEEE-802 48比特的MAC(媒体访问控制)地址。这种方法将只需要主机的IP软件知道
网络的地址,它就可以将自己的地址加到这个网络上。这样IP软件就可以自动完成它
的全部Internet地址的配置(网络地址+IEEE-802地址)。

然而,就象许多标准开发方案一样,IPv6工作组在早期的许多RFC都允许有更大的灵活
性,但是有些灵活性实际上被人们理解成了实现的不确定性,因此就影响了标准被广泛
采用。IPv6地址方案的某些部分似乎也存在这个问题。早期的RFC在变量定义的比特边
界上讨论地址结构,如RFC 1884确定的IEEE-802地址和IPv6地址中描述的子网边界如下:
INTERNET_SERVICE_PROVIDER_ID (前面n比特,在左边)+ISP_NETWORK_ID (中间比特,
包括子网数)+HOST_IEEE-802_ADDRESS (后面48比特,在右边).

除些之外,还提出过不少使用现有的IPv4、IPX、ISO、NSAP和其它的标志符的地址结
构。然而,选择的多样性又限制了网络汇集地址路由的能力。虽然128比特的地址空
间使网络地址数量大大增加,许多大的ISP厂商相信主干路由表的复杂性将再次遇到
以前CIDR那样变得不堪重负的问题。如果这个问题不能解决,IPv6的最终实现将会受
到影响。

8+8拓扑

一个提议是简单地分配一半的地址来管理"公共拓扑",而另一半的地址分配来管理"
专用拓扑"。这个方法倒很有可能提供一个满意的解决方案。8+8拓扑提出使用前面
的64位(8比特)来分配一个地址在Internet上的专用拓扑,后面的64位(8+8方案
中的第2个8比特)唯一地确定每个主机在Internet上的地址以及它在一个站点的专
用拓扑中的位置。

公共拓扑是将通信从一个站点送到加一个站点的传输设施。它由各种载体、重发器
和区域网络组成。8+8方案定义了一个Routing Goop(RG)作为一个定位符来对一
个站点(包括有专用拓扑)以什么方式连接到一个传输网络的公共拓扑这一信息进
行加密。主干网服务提供者对Routing Goop使用高度的地址汇集来加密拓扑信息的
能力特别感兴趣。

为了加快主机的自动配置,8+8方案设想主要使用一个主机的48位IEEE-802地址作为
它的全球唯一的"识别标所"。当然其它的唯一识别标准如正式分配的IPv4地址也可
以用于缺乏802验证的主机。使用独立于网络位置标志符的全球统一识别标记也潜在
地减少了许多其它的网络活动。IPv6验证和可靠性控制还可以进行计算以输出Routing
Goop数据。同样地,TCP伪首标校验数只需要包括识别标记的端口号。当数据包离开
一个站点进入公共拓扑时通过地址边界路器动态地将Routing Goop插入源地址,这样
就可以进一步简化主机的配置,因为这个信息将只需要在这个站点的外部路由器上被
配置。

其中各比特的分布如下:

Bit 64-78: 15比特的专用拓扑分区(PTP),它可以在专用拓扑中提供32768个
      不同的分区

Bit 79: 标记模式指示器
    0 => 48比特的识别标记
    1 => 识别标记的前面比特的模式

Bits 80-127: 48比特的识别标记
        识别标记(Identity Token)以下列方式组成:
        Mode 0 ESD: (Bit 79: 0)
        识别标记是一个48比特的IEEE MAC地址

Bit 80-127: IEEE 48比特的MAC地址
        Mode 1 ESD: (Bit 79-82: 1001)
        识别标记是一个45比特的IETF NodeID整数

Bit 83-127: IETF NodeID
        Mode 2 ESD: (Bit 79-82: 1010)
        识别标记是一个32比特的正式分配的IPv4地址

Bit 83-95:必须为0

Bit 96-127:有效地IPv4地址
      Mode 3-Mode 7 ESD (Bit 83-95: 1011 - 1111):保留

对于IEEE分配的48比特的MAC地址的接口,一个Mode-0 ESD(End System Designator)
是用于这种接口的最好的ESD。另一方面,一个没有其它合适的MAC地址的点到点接口
可以使用一个Mode-1 ESD来标记。Mode-2 ESD可以利用已经广泛部署的标志符空间
以便可以更容易地向8+8拓扑转移。同MAC地址的链接大于6比特,它可以用于Mode-2
ESD和IPv6的动态配置。

安全控制

IPv6建立了三个重要的安全服务:包验证、包完整性和包可靠性。包的安全功能都
通过IPv6的可选的扩展首标来实现。扩展首标在RFC 1883中进行了描述。验证首标
(AH)提供密码验证或完整性测试。缺省时它使用了一个加密的MD5算法,但是任何
实现都可以根据需要选用任何其它的算法。如Sun公司将发布的v6.0 IPv6 Prototype
将支持MD5验证首标。

可靠性保护使用一个安全净载荷封装(ESP)扩展首标。操作的两种模式是确定的:
隧道模式和传输模式。在隧道模式的ESP中,原始的IP数据报被转换成明文,它然后
变成ESP并且整个ESP帧连同一个未加密的IP首标一起被放到IP数据报中。未加密的
IP首标中的信息被用来将保密的数据报从原始地路由到目的地。在传输模式的ESP中,
ESP包括加密传输层协议首标(如TCP、UDP或ICMP等)。它使用的缺省密码算法是密
码分组链接方式的数据加密标准(DES-CBC)并且还需要有效地实现。任何其它的适
当的算法如各种RSA算法等也可以使用。
2楼2005-12-10 11:47:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dragonkiss

铁杆木虫 (职业作家)

0.5

不错。特别是第二个,很有借鉴意义。谢谢。
看到好贴就要顶,这是对发贴人的尊重,也是发贴的原动力。
3楼2005-12-10 15:59:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hqren

木虫 (正式写手)

0.5

很有参考价值
4楼2006-11-25 12:26:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 霹雳旋风 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见