用FPGA实现音频采样率的转换

时间:2010-02-26来源:网络

因为Synplify DSP中的折叠功能还支持多速率系统,所以与只有一种采样频率的系统相比,您可以进一步减少所需乘法器的数量。过采样使用两个FIR滤波器完成。这两个滤波器以不同的采样频率运行。以较高采样频率运行的滤波器可以用您指定的折叠系数进行折叠。

以较低采样频率运行的滤波器用相对较高的系数折叠。获得此系数的方法是用两个滤波器的采样频率之差乘以折叠系数。例如,如果一个滤波器的采样频率是另一滤波器的8倍,则较快的滤波器用系数 8折叠,而较慢的滤波器用系数6?折叠。

这样甚至可能生成以通常不能折叠的很高采样率运行的空间优化电路。例如,如果系统以 200MHz采样率运行并使用折叠系数2,那么系统频率就可以提高到400MHz。

您还可以将折叠系数定义为1。以最高采样率运行的电路元件不折叠。但是,以较低采样频率运行的多速率系统的所有电路元件都可从折叠和空间优化实现中受益。您只需将系统作为整体为其定义折叠系数即可。然后,折叠会自动传播到所有采样频率。

可以把折叠功能与另一优化功能-重定时功能结合起来使用。如果系统不满足目标频率要求,可以增加流水线级数,直到获得所需速率。这种做法对于使用高折叠系数的电路尤为重要,因为这类电路需要以相对较高的系统速度工作。

您还可以为折叠很少或没有折叠的电路使用重定时,除非已经达到FPGA的性能极限。可以通过增加流水线级数来减少两个寄存器之间组合逻辑门的数量(逻辑级数),这样可以提高系统时钟速度。

在生成RTL代码时,Synplify DSP工具将进行时序分析,它会考虑所需的采样频率、折叠系数和FPGA的目标架构。例如,与在较慢的低成本Spartan-3A DSP FPGA中实现的完全相同的电路相比,可以使用较少的流水线级数优化映射到快速Virtex-5 FPGA的电路。

可以用 FPGA提供的大量寄存器进行这种优化。寄存器可以大量使用,不像乘法器或LUT(查找表)那样很快会用光,这意味着可以使用寄存器轻而易举的显著提高系统时钟速度。

当然,增加流水线级数会增加系统延迟。例如,如果使用重定时系数8,计算结果就会迟8个系统时钟周期(不是采样频率周期)出现在FPGA的输出上。向系统中嵌入电路时必须考虑到这一点(图6)。

6.jpg
图6:可以使用重定时功能为电路定义允许的最大延迟。然后由Synplify DSP自动增加流水线级数,直到获得所需频率。

特别重要的是,务必确保上述优化不会影响Simulink中描述的原始MATLAB模型。通过验证可以对算法进行鉴定,并且对量化效应的影响予以表述。Synplify DSP软件模块集允许使用截断(去除无关位)、四舍五入(在下溢情况下)或饱和(在上溢情况下)进行从浮点到定点的转换。一旦仿真显示算法工作正常,即可生成RTL代码。优化VHDL或Verilog代码可能改变延迟,但不会改变电路的操作。

本文小结

Synplify DSP工具基于MathWorks公司推出的行业标准MATLAB/Simulink软件。模块集提供的标准元件库可用于实现复杂算法。除了加法、增益和延迟等基本元件,该库还包含FIR或IIR滤波器等许多复杂功能和CORDIC算法。所有功能(包括高度复杂的FFT或Viterbi解码器)均可任意参数化。还可以创建用户定义库,或者将现有的VHDL或Verilog代码集成到Simulink模型中。

用Synplify DSP可以实现单速率和多速率系统。使用折叠、多通道化或重定时功能可以针对尺寸或速度优化代码。生成的RTL代码都是未加密的通用代码,可以使用常用工具进行综合。

为了用FPGA取得最佳结果,Synplicity推荐使用Synplify Pro综合工具。目前针对ASIC的开发环境也已经推出。

1 2 3 4

关键词: FPGA 音频 采样率 转换

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版