位置:51电子网 » 技术资料 » 模拟技术

FPGA实现的FIR算法在汽车动态称重仪中的应用

发布时间:2008/5/27 0:00:00 访问次数:461

        

    

    

    来源:电子设计应用 作者:刘微 李彦明 姚志君

     

    摘 要:本文介绍了用fpga实现的fir算法,并对这种算法应用于汽车动态称重仪表中的结果做了分析。实践证明此算法用于动态称重具有良好的效果。

    

    关键词: fpga;fir;动态称重

    

    引言

    

    车辆在动态称重时,作用在平台上的力除真实轴重外,还有许多因素产生的干扰力,如:车速、车辆自身谐振、路面激励、轮胎驱动力等,给动态称重实现高精度测量造成很大困难。若在消除干扰的过程中采用模拟方法滤波,参数则不能过大,否则将产生过大的延迟导致不能实现实时处理,从而造成滤波后的信号仍然含有相当一部分的噪声。所以必须采用数字滤波消除干扰。

    

    fir滤波的原理及实现

    

    本文采用fir数字滤波,其原理如公式1所示。

    

    y(n)= (1)

    

    其中h(k)为系统滤波参数,x(n)为采集的信号,y(n)为滤波后的输出信号。

    

    fir滤波器的h(n)0≤n≤n-1

    

    h(z)= (2)

    

    在本文中n=17。由于h(n)具有对称性质,即:

    

    h(n)=h(n-1-n) (n=0,1,...,(n-1)/2) (3)

    

    这样就可以把fir滤波器设计成具有线性相位。利用这一情况,可以得到的乘法结构,需要(n+1)/2次乘法,仅是级联或并联结构所需次数的一半,因此,实际应用中多采用此方法。

    

    我们选用17点的fir滤波算法,这样实现一次fir卷积运算需要执行9次乘法和16次加法。为了实现数据的实时处理,需要在20ms内完成这个卷积运算,如果选用单片机89c51(12m晶振)则无法实现。所以我们选用了altera公司的flex10k20。flex10k系列是工业界第一个嵌入式的pld,采用重复可构造的cmos sram工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时也结合了众多可编程器件的优点来完成普通门阵列的宏功能。具有高密度、低成本、低功率等特点。

    

    

    

    图1 硬件结构框图

    

    

    

    图2

    

    

    

    图3

    

    

    

    图4

    

    硬件设计

    

    由于我们选用的ad1674芯片转换时间为10ms,而所设计的电路每隔20ms启动转换一次,所以有足够的时间完成模数转换。轴重台的宽度为40cm,汽车通过轴重台的最大速度为15km/h,通过计算可知在这段时间里系统可采集4800个数据。由于前30ms是传感器的反应时间,将剩下的数据进行fir数字滤波后,噪声会被有效的抑制。为了进一步平滑波形,对每8个数据做一次平均,这样就消弱了由于汽车高速通过轴重台时由于颠簸产生的尖峰信号。fpga的每次滤波包含有fir运算和8个数据的平均值运算,完成一次滤波就会向单片机发一个中断请求,此时单片机读取滤波后的数据。由于我们选用的a/d转换器是12位,而单片机89c51是8位的,所以经过处理后的数据必须分两次读入。第一次读入低8位,第二次读入高4位,然后对数据处理。此时我们可以认为单片机接收的数据为滤波后不含有噪声的数据。根据轴重称量的波形图可以知道,只要求出此时的最大值就是汽车的真实重量。

    

    在此仪表中,串行口即用来显示也用来通讯,我们可以通过fpga很容易

        

    

    

    来源:电子设计应用 作者:刘微 李彦明 姚志君

     

    摘 要:本文介绍了用fpga实现的fir算法,并对这种算法应用于汽车动态称重仪表中的结果做了分析。实践证明此算法用于动态称重具有良好的效果。

    

    关键词: fpga;fir;动态称重

    

    引言

    

    车辆在动态称重时,作用在平台上的力除真实轴重外,还有许多因素产生的干扰力,如:车速、车辆自身谐振、路面激励、轮胎驱动力等,给动态称重实现高精度测量造成很大困难。若在消除干扰的过程中采用模拟方法滤波,参数则不能过大,否则将产生过大的延迟导致不能实现实时处理,从而造成滤波后的信号仍然含有相当一部分的噪声。所以必须采用数字滤波消除干扰。

    

    fir滤波的原理及实现

    

    本文采用fir数字滤波,其原理如公式1所示。

    

    y(n)= (1)

    

    其中h(k)为系统滤波参数,x(n)为采集的信号,y(n)为滤波后的输出信号。

    

    fir滤波器的h(n)0≤n≤n-1

    

    h(z)= (2)

    

    在本文中n=17。由于h(n)具有对称性质,即:

    

    h(n)=h(n-1-n) (n=0,1,...,(n-1)/2) (3)

    

    这样就可以把fir滤波器设计成具有线性相位。利用这一情况,可以得到的乘法结构,需要(n+1)/2次乘法,仅是级联或并联结构所需次数的一半,因此,实际应用中多采用此方法。

    

    我们选用17点的fir滤波算法,这样实现一次fir卷积运算需要执行9次乘法和16次加法。为了实现数据的实时处理,需要在20ms内完成这个卷积运算,如果选用单片机89c51(12m晶振)则无法实现。所以我们选用了altera公司的flex10k20。flex10k系列是工业界第一个嵌入式的pld,采用重复可构造的cmos sram工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时也结合了众多可编程器件的优点来完成普通门阵列的宏功能。具有高密度、低成本、低功率等特点。

    

    

    

    图1 硬件结构框图

    

    

    

    图2

    

    

    

    图3

    

    

    

    图4

    

    硬件设计

    

    由于我们选用的ad1674芯片转换时间为10ms,而所设计的电路每隔20ms启动转换一次,所以有足够的时间完成模数转换。轴重台的宽度为40cm,汽车通过轴重台的最大速度为15km/h,通过计算可知在这段时间里系统可采集4800个数据。由于前30ms是传感器的反应时间,将剩下的数据进行fir数字滤波后,噪声会被有效的抑制。为了进一步平滑波形,对每8个数据做一次平均,这样就消弱了由于汽车高速通过轴重台时由于颠簸产生的尖峰信号。fpga的每次滤波包含有fir运算和8个数据的平均值运算,完成一次滤波就会向单片机发一个中断请求,此时单片机读取滤波后的数据。由于我们选用的a/d转换器是12位,而单片机89c51是8位的,所以经过处理后的数据必须分两次读入。第一次读入低8位,第二次读入高4位,然后对数据处理。此时我们可以认为单片机接收的数据为滤波后不含有噪声的数据。根据轴重称量的波形图可以知道,只要求出此时的最大值就是汽车的真实重量。

    

    在此仪表中,串行口即用来显示也用来通讯,我们可以通过fpga很容易

相关IC型号

热门点击

 

推荐技术资料

泰克新发布的DSA830
   泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!