基于VHDL的FIR低通数字滤波器设计.doc_第1页
基于VHDL的FIR低通数字滤波器设计.doc_第2页
基于VHDL的FIR低通数字滤波器设计.doc_第3页
基于VHDL的FIR低通数字滤波器设计.doc_第4页
基于VHDL的FIR低通数字滤波器设计.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于VHDL的FIR低通数字滤波器设计 摘要:根据FIR低通数字滤波器的原理与滤波特性,通过MATLAB/Simulink软件模拟一定性能的FIR滤波器频率响应与抽头系数,用VHDL语言设计和仿真压电直线微电机控制系统中的FIR低通数字滤波器,实现用软件描述硬件的动作及其功能。关键词: VHDL; MATLAB; FIR数字滤波器; 仿真 Designing FIR low-pass digital filter based on VHDL LIN HUAIWEI, LIU RENXIN, SUN YUEGUANG,ZHOU HUAMAO (1.2.4 Faculty of Engineering, Jiangxi Agricultural University, Nanchang 330045 3. The Logistic Development Co., LTD of Shenzhen Airport, Shenzhen 518000)Abstract: According to the principle and characteristic of FIR low-pass digital filter, through using MATLAB/Simulink software to simulate frequency response of some performance index and tap coefficients about FIR filter, design and simulate FIR low-pass digital filter in the control system of piezoelectric linear micromotor in VHDL language, It can be realized the filters action and function with software describing hardware. Keywords: VHDL; MATLAB; FIR digital filter; simulation 1引言随着数字信息技术的发展,数字滤波器已在许多领域得到广泛应用。在数字滤波器设计中,以往都是通过硬件电路来实现其功能,当今计算机软件技术不断发展,应用软件能够实现数字滤波器的功能和时序仿真,因而直观再现滤波器性能。本文通过VHDL和MATLABL软件仿真实现压电直线微电机控制系统中FIR低通数字滤波器,使设计达到最优化。2系统设计2.1设计要求本设计是基于VHDL语言实现压电直线微电机控制系统FIR低通数字滤波器的设计,首先将模拟信号转化为数字信号,再将此数字信号通过一定技术指标的FIR低通滤波器滤波。设计一个满足压电直线微电机控制系统的FIR低通数字滤波器,其主要技术性能指标如下:(1)对模拟信号的采样频率fs为44.1KHz;(2)带通0-20kHz;(3)信号的截止频率fc=22kHz;(4)截止频带衰减约为60dB。2.2 设计原理一个FIR滤波器的输出是由其过去和现在输入值权重所决定的,且构成因果关系的FIR滤波器对所有的离散时间k N(N是正整数),其脉冲响应均为零,FIR滤波器的数学表达式可用差分方程来表示: 其中: r 是FIR的滤波器的抽头数;b(r)是第r级抽头数(单位脉冲响应);x(n-r)是延时r个抽头的输入信号。该方程可由图1给出的硬件电路实现,其中,D-IN为数字信号输入;CLOCK为时钟信号;C1Cn是由MATLAB处理得到的系数;D触发器实现数据延时与触发功能。结构中延时支路相互串联, 延时线上有N个抽头,分别连接乘法器, 乘法器相乘的系数就是单位脉冲响应,乘法器的输出连接到加法器上。为使输出波形稳定,采用同步输出方式。图 1 n 阶FIR滤波器硬件电路3 数据处理与软件设计3.1 MATLAB/Simulink参数设置与处理根据设计要求,通过MATLAB/Simulink参数设置与处理,得到FIR低通数字滤波器57个系数:-0.000497 0.000590 -0.0009210.001356 -0.001912 0.002603 -0.003442 0.004440 -0.004440 -0.003442 0.002603 -0.001912 0.001356 -0.000921 0.000590 -0.0004973.2 VHDL系数处理程序相关参数定义:d_in: 输入数据信号; d_out: 输出数据信号; rst: 复位信号; fsclk: 采样时钟信号。在VHDL代码中,滤波器的系数被设置,类似存储于程序存储器中执行。subtype ROMbyte is signed (20 downto 0);type ROMARRAY is array (1 to 57) of ROMbyte;signal ROMDATA: ROMARRAY;coefficient: process(rst)begin - process coefficientif(rst = 1) thenfor i in 1 to 57 loopROMDATA(i) =“000000000000000000000”;end loop;elseROMDATA(1) =“111111111111000001111”; - - - - 0.000497ROMDATA(2) =“000000000001001001110”; - - - - 0.000590end ifend process coefficient;3.3数据输入和频率控制根据设计滤波器的参数可知,采样频率要求是44.1 kHz, 所以采样周期为Ts=22us (T=1/f)(1)时钟频率控制程序for j in 0 to 49 loopFSCLK =1;d_in = sin v(j); wait for 11 us; - - - - Ts=22us, fs=44.1kHzFSCLK =0;wait for 11 us; - - - - Ts=22us, fs=44.1kHzend loop;(2)将输入的数据信号写入数据存储器RAM(由D触发器组成)中wr_data: process(rst,fsclk)beginif (rst =1) thenfor k in 1 to 57 loopRAMDATA(k) =000000000000000000000;end loop;elsif fsclk event and fsclk = 1thenfor k in 1 to 56 loopRAMDATA(k+1) = RAMDATA(k);RAMDATA(1) = D_in;end loop;end if;end process wr_data; (3)对正弦信号采样程序 正弦信号T=2*pi=360,在整个周期上采样100次,故每3.6采样一次。type table is array (0 to 49) of signed(20 downto 0)signal sinv:table:=(“000000000000000000000”, - sin 0; line No.1“000000000010000000100”,- sin(3.6);line No.2 “000000011111111111111”, - sin(90);line No. 26 “000000000100000000101”,- sin(180 - 7.2);line No.49“000000000010000000100”);- sin(180 - 3.6); line No. 50)(4)在整个程序执行过程中,输入正弦波模拟信号分为两个过程进行采样处理,在一个周期上共采样100个点,正半周采样50个点,负半周采样50个点。 采样时间的计算:由fs=44.1Hz,则Ts=1/ fs =22us,所以总时间T=22*100=2200us采样子程序:for k in 0 to 99 loopfor j in 0 to 49 loopFSCLK =1;d_in = sinv(j);wait for 11 us;FSCLK =0wait for 11 us;end loop ; -正半周采样for j in 0 to 49 loopFSCLK =1;d_in = -sinv(j);wait for 11 us;FSCLK = 0;wait for 11 us;end loop; -负半周采样(5)滤波器的功能设计的滤波器具有以下两项功能: 一是通过低频信号; 二是衰减截止高频信号达60dB,实现数据滤波和综合,下面是实现其功能代码:A: filtering_data: process(fsclk)begin - process rd_dataif (rst = 1) thenfor k in 1 to 57 loopmulDATA(k) = “000000000000000000000000000000000000000000”;end loop;elsif fsclk event and fsclk =1 thenfor k in 1 to 57 loopmulDATA(k) = RAMDATA(k)*ROMDATA(k);end loop;end if;end process filtering_data;B: accumulation: process(fsclk)variable accu:signed(41 downto 0);beginif (rst = 1) thenD_OUT =“000000000000000000000”;accu:= “000000000000000000000000000000000000000000”;elsif fsclkevent and fsclk = 1 thenfor k in 1 to 57 loopaccu:= mulDATA(k) + accu;end loop;end if;end process accumulation; 4 软件仿真4.1低频仿真 1条件:输入数据频率为455Hz(fs=1/T =1/2200us =455Hz)。2结论:低频仿真如图2所示,输入波形振幅 A=5062, 输出为A=7813, 衰减20lg(5062/7813)=0,输入波形与输出波形相比,频率几乎无变化,达到低通功能,满足设计要求。6 图2 f=455Hz时FIR滤波器输出 图3 f=22 kHz时FIR滤波器输出4.2高频仿真1条件:输入数据频率为截止频率22kHz。2结论: 高频仿真如图3所示,与输入振幅16253相比,输出为18,衰减20lg(16253/18)=59.956 dB,近似60 dB。实现了低通滤波功能,对于高频率信号则不能通过,满足设计要求。5 结论 VHDL语言是一种功能强大的硬件描述语言,结合MATLAB软件,在规定的带通频率0-20kHz范围,截止频率fc=22kHz, 截止频带衰减约为60dB,对压电直线微电机控制系统中FIR低通数字滤波器行为进行仿真描述是理想的,实现了用软件描述硬件的动作及其功能,满足设计要求,使设计达到最优化。参考文献1 林怀蔚,费旻,邢玮. 基于VHDL和MATLAB应用结合的FIR数字滤波器设计C. 合肥: 中国科技大学出版社, 20072 梁二虎,刘文怡. 基于FPGA的IIR数字滤波器硬件模块设计J. 微计算机信息,2008,01-2:218-2193 Dillinger,T.E. et al. A Logic Synthesis System for VHDL Design DescriptionJ. IEEE ICCAD-89, Santa clara:Calif, 1989作者简介:林怀蔚 (1958 - ), 男, 广东梅州人, 江西农业大学工学院高级实验师,硕士,主要从事自动控制、信号处理教学及科研工作。Biography: Lin Huaiwei (1958 - ), male, Meizhou, Guangdong Province, Faculty of Engineeri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论