论文部分内容阅读
【摘要】本文是利用Altera提供的DSP Builder开发工具从Simulink模型自动生成VHDL代码的一种FPGA设计方法来实现一个16阶FIR数字低通滤波器,设计出的滤波器用于线性调制的相干解调中。通过对设计的电路进行验证和仿真,结果表明电路工作正确可靠,能满足设计要求。
【关键词】FPGA;DSP Builder;FIR数字低通滤波器;相干解调
1.引言
信号的数字滤波在图像处理、语音识别、模式识别等数字信号处理中都占有要的地位。与模拟滤波器相比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。根据数字滤波器冲激响应函数的时域特性,可将数字滤波器分为无限长冲激响应(IIR)滤波和有限长冲激响应(FIR)滤波器两种。由于FIR系统只有零点、系统稳定,便于实FFT算法、运算速度快、线性相位的特性和设计更为灵活等突出优点而在工程实际中得广泛应用。
在复杂运算中,FPGA的处理速度表现了很好的优势,而且FPGA开发周期短且编程灵活,易于反复擦写,算法实现不受DSP之类固件性能的限制。
本文研究了基于FPGA的16阶数字低通滤波器硬件电路的实现方法。设计出的16阶FIR数字低通滤波器用于线性调制中的相干解调(也叫同步解调)来实现对原始信号的恢复。
2.本设计利用的基本原理及设计指标的选择
2.1 相干解调的基本原理
在线性调制中,设调制信号m(t)=sinω1t,载波为cosωct,则已调信号:
Sm(t)=m(t)cosωct
将已调信号乘上一个同频同相的载波,得:
χ(t)=Sm(t)cosωct=m(t)(cosωct)2 =0.5m(t)+0.5m(t)cos2ωct
由上式可知,用一个低通滤波器可以将第一项与第二项分离,从而恢复出原始的调制信号,这种方法称为同步解调或相干解调。
相干解调器的一般模型如图1,它由相乘器和低通滤波器组成,可用于AM、DSB、SSB、VSB信号的解调。
3.基于FPGA的FIR滤波器的设计
设计指标:16阶FIR数字低通滤波器;输入为8位有符号数;输出为8位无符号数;抽样频率为50KHZ;带宽为10KHZ。
3.1 FIR滤波器系数的获得
常用的线性相位FIR滤波器,其单位脉冲响应均为实数,且满足偶对称或奇对称的条件,即h(n)=h(M-1-n)或h(n)=-h(M-1-n)。
MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。本文就是利用FDATool来自动生成所要设计的滤波器的系数。利用FDATool计算出的只是一个有符号小数,如下:
3.2 使用DSP Builder提供的模块构造FIR数字低通滤波器
本设计中利用4个4阶子系统来构建一个16阶的FIR滤波器,经推算得输出为16位的有符号数,但一般的D/A器件的输入数据都是无符号的正数。因此,为了能在硬件系统上D/A的输出也能观察到此波形,必须对此输出做一些改进,以便输出无符号数据。用BusConversion模块把16位转化为8位,再用BusConcatenation把有符号数转化为无符号数。为进行仿真观察添加了示波器模块。电路图如下,图2为4阶子系统,图3为总的电路图。
3.3 MATLAB仿真
根据上面构造的16阶FIR数字低通滤波器电路图,在MATLAB里进行仿真,可以从示波器上观察到仿真波形为图4:
上图中第一个是原始调制信号m(t),第二个是载波信号cosωct,第三个是进入滤波器前的信号x(t),由此可见进入滤波器之前的信号的包络就是原始信号与其反褶信号的叠加,我们希望经过滤波器之后能够把原始信号恢复出来。第四个是经过滤波器后的输出信号,可见输出信号与原始信号基本上是一致的,只是由于噪声的存在产生了一点失真。第五个是延迟后的输入信号。
3.4 自动生成代码及在Quartus Ⅱ中进行仿真
通过MATLAB仿真,可以发现该构造已达到设计要求,接着用于生成代码,在Simulink编辑窗中(即图3中)先进行编译,再双击Signal-Compiler模块,点击“Analyze”来自动生成VHDL语言和在Quartus Ⅱ中自动生成工程文件。在Quartus Ⅱ中打开自动生成的工程文件进行编译,编译成功后,再根据输入和输出结点新建一个波形文件进行编译和仿真,观察仿真结果并进行分析,经分析该仿真结果发现输出的数据正好对应图4中的输出波形的幅度,因此说,此仿真结果是正确的。其中oyout是通过滤波器后的输出结果,oyout1是延迟信号。仿真结果如图5所示:
3.5 引脚锁定及下载
通过查芯片引脚对照表,确定引脚分别为:时钟CLK接179;清零sclrp接240;8位数据输出分别接21、41、128、132、133、134、135、136。将引脚锁定后再编译一次,将引脚信息一同编译进配置文件中,最后就可以把配置文件下载进目标文件中。
4.结束语
从本设计中可见,利用Altera提供的DSP Builder开发工具从Simulink模型自动生成FPGA实现代码的设计方法缩短了设计周期,提高了设计的灵活性。因此,这种方法得到了广泛的应用。
从Simulink模型自动生成FPGA实现代码的设计方法使我们可以利用Simulink快捷灵活的仿真功能和MATLAB强大的数据分析能力进行FPGA系统级的仿真,使我们不用人工编写VHDL语言,给我们带来了很大的方便。
参考文献
[1]潘松,黄继生,王国栋.现代DSP技术[M].西安电子科技大学出版社.
[2]曹志刚,钱亚生.现代通信原理[M].清华大学出版社.
[3]SOPC技术实验讲义[Z].杭州康芯电子有限公司.
【关键词】FPGA;DSP Builder;FIR数字低通滤波器;相干解调
1.引言
信号的数字滤波在图像处理、语音识别、模式识别等数字信号处理中都占有要的地位。与模拟滤波器相比,数字滤波器可以满足滤波器幅度和相位特性的严格要求,可以克服模拟滤波器所无法克服的电压漂移、温度漂移和噪声等问题。根据数字滤波器冲激响应函数的时域特性,可将数字滤波器分为无限长冲激响应(IIR)滤波和有限长冲激响应(FIR)滤波器两种。由于FIR系统只有零点、系统稳定,便于实FFT算法、运算速度快、线性相位的特性和设计更为灵活等突出优点而在工程实际中得广泛应用。
在复杂运算中,FPGA的处理速度表现了很好的优势,而且FPGA开发周期短且编程灵活,易于反复擦写,算法实现不受DSP之类固件性能的限制。
本文研究了基于FPGA的16阶数字低通滤波器硬件电路的实现方法。设计出的16阶FIR数字低通滤波器用于线性调制中的相干解调(也叫同步解调)来实现对原始信号的恢复。
2.本设计利用的基本原理及设计指标的选择
2.1 相干解调的基本原理
在线性调制中,设调制信号m(t)=sinω1t,载波为cosωct,则已调信号:
Sm(t)=m(t)cosωct
将已调信号乘上一个同频同相的载波,得:
χ(t)=Sm(t)cosωct=m(t)(cosωct)2 =0.5m(t)+0.5m(t)cos2ωct
由上式可知,用一个低通滤波器可以将第一项与第二项分离,从而恢复出原始的调制信号,这种方法称为同步解调或相干解调。
相干解调器的一般模型如图1,它由相乘器和低通滤波器组成,可用于AM、DSB、SSB、VSB信号的解调。
3.基于FPGA的FIR滤波器的设计
设计指标:16阶FIR数字低通滤波器;输入为8位有符号数;输出为8位无符号数;抽样频率为50KHZ;带宽为10KHZ。
3.1 FIR滤波器系数的获得
常用的线性相位FIR滤波器,其单位脉冲响应均为实数,且满足偶对称或奇对称的条件,即h(n)=h(M-1-n)或h(n)=-h(M-1-n)。
MATLAB集成了一套功能强大的滤波器设计工具FDATool(Filter Design & Analysis Tool),可以完成多种滤波器的设计、分析和性能评估。本文就是利用FDATool来自动生成所要设计的滤波器的系数。利用FDATool计算出的只是一个有符号小数,如下:
3.2 使用DSP Builder提供的模块构造FIR数字低通滤波器
本设计中利用4个4阶子系统来构建一个16阶的FIR滤波器,经推算得输出为16位的有符号数,但一般的D/A器件的输入数据都是无符号的正数。因此,为了能在硬件系统上D/A的输出也能观察到此波形,必须对此输出做一些改进,以便输出无符号数据。用BusConversion模块把16位转化为8位,再用BusConcatenation把有符号数转化为无符号数。为进行仿真观察添加了示波器模块。电路图如下,图2为4阶子系统,图3为总的电路图。
3.3 MATLAB仿真
根据上面构造的16阶FIR数字低通滤波器电路图,在MATLAB里进行仿真,可以从示波器上观察到仿真波形为图4:
上图中第一个是原始调制信号m(t),第二个是载波信号cosωct,第三个是进入滤波器前的信号x(t),由此可见进入滤波器之前的信号的包络就是原始信号与其反褶信号的叠加,我们希望经过滤波器之后能够把原始信号恢复出来。第四个是经过滤波器后的输出信号,可见输出信号与原始信号基本上是一致的,只是由于噪声的存在产生了一点失真。第五个是延迟后的输入信号。
3.4 自动生成代码及在Quartus Ⅱ中进行仿真
通过MATLAB仿真,可以发现该构造已达到设计要求,接着用于生成代码,在Simulink编辑窗中(即图3中)先进行编译,再双击Signal-Compiler模块,点击“Analyze”来自动生成VHDL语言和在Quartus Ⅱ中自动生成工程文件。在Quartus Ⅱ中打开自动生成的工程文件进行编译,编译成功后,再根据输入和输出结点新建一个波形文件进行编译和仿真,观察仿真结果并进行分析,经分析该仿真结果发现输出的数据正好对应图4中的输出波形的幅度,因此说,此仿真结果是正确的。其中oyout是通过滤波器后的输出结果,oyout1是延迟信号。仿真结果如图5所示:
3.5 引脚锁定及下载
通过查芯片引脚对照表,确定引脚分别为:时钟CLK接179;清零sclrp接240;8位数据输出分别接21、41、128、132、133、134、135、136。将引脚锁定后再编译一次,将引脚信息一同编译进配置文件中,最后就可以把配置文件下载进目标文件中。
4.结束语
从本设计中可见,利用Altera提供的DSP Builder开发工具从Simulink模型自动生成FPGA实现代码的设计方法缩短了设计周期,提高了设计的灵活性。因此,这种方法得到了广泛的应用。
从Simulink模型自动生成FPGA实现代码的设计方法使我们可以利用Simulink快捷灵活的仿真功能和MATLAB强大的数据分析能力进行FPGA系统级的仿真,使我们不用人工编写VHDL语言,给我们带来了很大的方便。
参考文献
[1]潘松,黄继生,王国栋.现代DSP技术[M].西安电子科技大学出版社.
[2]曹志刚,钱亚生.现代通信原理[M].清华大学出版社.
[3]SOPC技术实验讲义[Z].杭州康芯电子有限公司.