基于DSP Builder的回波抵消器设计与实现
2 FPGA硬件设计
设计选用FPGA是Altera公司Cyclone系列的EPlCl2Q240C8。FPGA中I/O端口可自由定义,电路设计方便、编程灵活、不易受外部干扰。系统编译环境采用QuartusⅡ,顶层设计为图形化方式。芯片模块划分为分频模块、D/A转换模块和回波抵消器模块。分频模块采用VHDL语言编程实现,D/A转换模块采用硬件电路实现,同波抵消器模块用DSPBuilder软件进行设计。
2.1 分频模块设计
分频模块是将外部时钟进行分频设定,得到系统内部DA模块和回波抵消器模块所需要的时钟。分频模块的外部时钟输入频率为50 MHz,8分频后产生的时钟频率约为6 MHz。
2.2 回波抵消器模块设计
该部分采用层次化的设计方法。利用DSP Builder模块构建自适应算法部分,根据LMS算法迭代公式(4)和滤波器的估计输出式(2),建立加权分量模型。如图2(a)所示。
在图2(a)中,第i个延时单元的输入信号为x(n),延时后的输出信号为x(n-1),同时输入信号x(n)产生一个乘积y’(n)=ω(n)x(n),由于是滤波器的估计输出是一系列权值分量与输入矢量的各分量乘积之和。因此,除第一级外,后续单元必须加上前一级的加权单元的输出。封装后,则可以根据滤波器阶数的不同而相应调整,以实现多级级联。尤其是在构造阶数可变和阶数较大的滤波器时更能显出其灵活性。然后将封装后的加权分量单元依照阶数级联,并再次封装即构成抵消器模块。可运用于顶层模型中。
在顶层系统模型中连接各子模块,如图2(b)所示,图中两个信号源sin2,sin1采用正弦信号发生器实现,利用正弦查找表产生正弦波数据,函数调用格式为lOsin([0:2π/2∧4:2π])和5sin[0:2π/2∧6:2π],其输入地址分别为4位和6位,输出为16位。Dixiaoqi模块由图2(a)级联封装得到,模块Parallel to serial为并行/串行转换器。
设计中,因语音信号频率可以看作约为3.4 kHz,所以信号采样频率设为8 kHz,假设回波延迟2.5 ms(小于回波对听觉产生干扰的范围20 ms),考虑收敛速度和实现情况,步长采用0.1,计算得出滤波器阶数20。
2.3 D/A转换模块设计
利用Texas Instruments公司的D/A芯片TLC5620,并辅助使用4输入与门SN74HC08M和运算放大器LM358AM,构建数模转换器。TLC5620是8位电压输出的数模转换器,需5V外接电压,有4个输出端口可以选择。利用扩展插槽与FPGA连接,信号接119脚,时钟由所编程序在FPGA内实现,通过73脚与TLC5620连接,控制信号通过63脚连接TLC5620。
3 DSP Builder仿真和FPGA验证
通过Simulink仿真得到波形,如图3(a)所示,图中第一行为返回A听筒的误差e信号波形,第二行为输入话筒的所有信号,即B信号与回波信号之和。由变化的波形可以看出,随着自适应滤波器的“学习”过程,回波逐渐被抵消。
利用ModelSim针对生成的RTL级VHDL代码进行功能仿真,设置信号为模拟形式,如图3(b)所示,图中为减去回波后的误差信号,与Simu-link仿真结果一致。
使用ModelSim完成RTL级功能仿真,其仿真结果并不能精确反映电路的全部硬件特性,进行门级的时序仿真仍然十分重要。在Quartus Ⅱ下编译后进行时序仿真,其仿真波形,如图3(c)所示。
评论