已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
编号 本科生毕业设计基于 FIR 算法的汽车动态称重系统的理论研究Theoretical Research of FIR Algorithm-Basedin Vehicle Dynamic Weighing Systems学 生 姓 名专 业学 号指 导 教 师学 院二一三年六月 毕业设计(论文)原创承诺书1本人承诺:所呈交的毕业设计(论文) ,是认真学 习理解学校的长春理工大学本科毕业设计(论文)工作条例后,在教师 的指导下,保质保量独立地完成了任务书中规定的内容,不弄虚作假,不抄袭别人的工作内容。2本人在毕业设计(论文)中引用他人的观点和研究成果,均在文中加以注释或以参考文献形式列出,对本文的研究工作做出重要贡献的个人和集体均已在文中注明。3在毕业设计(论文)中对侵犯任何方面知识产权的行为,由本人承担相应的法律责任。4本人完全了解学校关于保存、使用毕业设计(论文)的规定,即:按照学校要求提交论文和相关材料的印刷本和电子版本;同意学校保留毕业设计(论文)的复印件和电子版本,允许被查阅和借阅;学校可以采用影印、缩印或其他复制手段保存毕业设计(论文),可以公布其中的全部或部分内容。以上承诺的法律结果将完全由本人承担!作 者 签 名: 年 月 日摘要交通运输业的发展无疑对国民经济建设起到了积极的推动作用,但是号称公路隐形杀手的营运车辆超载现象屡禁不止,其危害是多方面的:加速损坏公路路面,增加公路养护成本;使国家税费大量流失;造成交通事故频繁发生;严重的环境污染;加速车辆的损坏。因此加强公路运输的管理、保障行车安全等问题也显得日趋重要。车辆动态称重,即在非停车的运动状态下的称重,与停车状态下的静态称重相比,其主要特点是节省时间,效率高,使得称重时不至于造成对正常交通的干扰。汽车动态称重是加强公路超限运输、强制实施超限法规等管理现代化、科学化的技术条件。动态车辆称重系统的研究对于保护公路的正常使用有着重要的经济意义和社会价值。关键字:动态称重 称重本体 FPGA FIR 单片机ABSTRACTThe development of communication and transportation industry has undoubtedly played an active role in the construction of national economy. However, the overloading of trucking vehicles, which is known as stealthy killers of the highway, remains incessant in despite of repeated prohibition. Harms created by overloading are of manifolds, accelerating road damage, increasing road maintenance cost, leading to substantial run off of taxation and toll fee, bringing about frequent occurrence of traffic accidents, seriously polluting the environment, speeding up vehicle wear-off etc. So that it becomes more and more important to reinforce control over road transportation. Dynamic weighing, i.e. weighing the vehicle on its moving state, with the characteristic of higher efficiency and time-saving, avoids the disturbance to the traffic in the weighing process, as compared with static weighing. Vehicle dynamic weighing is the technical precondition to the modernized and scientific management of reinforcing overloading control and forcing overloading control regulations. And the study of dynamic weighing system is of economic significance and social value in assurance of appropriate use of the roads.KEY WORDS: dynamic weighing; Weighing noumenon; FPGA; FIR; single chip microprocessor 目录摘要 .IABSTRACT.II第 1 章 前言 .11.1 选题背景及意义 .11.2 动态称重概述 .11.3 动态车辆称重系统国内外研究现状 .21.4 几种动态测试方式及系统 .3第 2 章 硬件系统介绍 .52.1 整体设计介绍 .52.2 FPGA 概述 .62.3 放大滤波电路设计 .82.4 A/D 采集电路设计 .112.5 显示电路设计 .132.6 通讯电路设计 .14第 3 章 软件设计 .173.1 FPGA 软件设计 .173.2 FIR 算法实现 .183.3 单片机软件设计 .253.3.1 动态称重仪表的数学模型 .253.3.2 单片机软件流程图 .25第 4 章 结论 .27第 5 章 展望和不足 .28参考文献 .29致 谢 .1第 1 章 前言1.1 选题背景及意义随着经济的发展和科技的进步,现代交通运输业飞速发展。近几年来我国对公路基础设施特别是高速公路建设的力度逐年加大,全国公路建设完成投资日益增加。交通运输业的发展无疑对国民经济建设起到了积极的推动作用,但是号称公路隐形杀手的营运车辆超载现象屡禁不止,其危害是多方面的 1。主要表现在:加速损坏公路路面,增加公路养护成本;使国家税费大量流失;造成交通事故频繁发生;严重的环境污染;加速车辆的损坏等几个方面。因此加强公路运输的管理、保障行车安全等问题也显得日趋重要。依据交通部对车辆轴类型及轴载质量的标准,我们准备对满足我国管理规范要求的全自动车辆动态称重超限管理系统进行实验性研究,为交通部门实施有效的超限管理提供了强有力的手段。鉴于国内车辆超载、超限的严重性,公路交通管理相关部门急于收集当前公路上行驶的车辆车型组成、轴载谱和超重程度、分析超重车辆对路面的损害影响程度,以便估算公路交通部门需为此增加的建设投资,并制定相应的管理措施和法规,为公路运营部门按车重收费提供有效技术手段。同时提高动态称重的精度,提高称重时车辆通过速度、降低称重系统的成本仍是一个未能解决的问题,国内外一直都在探索一种全新型的动态称重方案。如何设计出速度快、抗干扰能力强、准确度高的新型全自动汽车动态称重超限管理系统,对交通部门有效地实施超限管理,保证行车安全、延长公路的使用寿命、降低公路养护的成本、减少环境污染等方面有着显著的社会效益和经济效益。1.2 动态称重概述车辆动态称重,即在非停车的运动状态下的称重。与停车状态下的静态称重相比,其主要特点是节省时间,效率高,使得称重时不至于造成对正常交通的干扰。这对公路建设与管理有着极为重要的意义,同时对车辆运输现代化管理也有较大的促进作用。目前较为流行的是轴重称量轴重仪,即分别测出车辆各轴的轴重量,再由测量系统计算出整车重量。在静态称重时,车辆的轮胎平稳地作用于轴重仪称台上,无任何其它外力干扰,能反映真实轴重。因此可以实现高精度测量。动态称重时,车辆以一定速度通过轴重仪测量平台,不仅轮胎对平台的作用时间很短(在几百毫秒以内) ,而且作用在平台上的力除真实轴重外,还有许多因素产生的干扰力,如:车速、车辆自身谐振、路面激励、轮胎驱动力等。可以说真实轴重被淹没在各种干扰力中,给动态称重实现高精度测量造成很大困难。因此,在外界随机不确定的干扰力作用下如何准确测量真实轴重,就成了动态轴重测试系统的技术难点和关键。就所存在的干扰进行整理、分析综合,从动态测试系统的整体角度探讨能减小或消除这些干扰力影响程度的措施和测试方式,无疑有助于高精度动态称重技术的进步及测试系统的发展 1。1.3 动态车辆称重系统国内外研究现状在 20 世纪 60 年代末 70 年代初,国外开始研究高速公路动态车辆称重系统以防止车辆超载对路面所造成的损坏,我国则起步较晚,开始于 80 年代初期 2。1974 年,法国取得了一项压电缆动态汽车称重器 Vibracoax 的专利。1988 年,英国研制出了性能优于 Vibracoax 的新型压电称重传感器 Vibetek5。1992 年,由欧洲高速公路系统研究实验室联盟(FEHRI)发起,按照欧盟运输委员会(ECTD) 的程序框架进行了COST323 计划。该计划主要内容就是研究对公路上行驶的汽车进行动态载荷监控的相关问题,其中最重要的是在瑞士进行为期 30 个月的 WIM 系统实际应用测试。1994 年,欧盟开始进行 WAVE(weighing in motion of axleand vehicles for Europe)计划即著名的 CET(cold environment test)测试。结果表明德国 PAT、美国 Mikros 等在测量性能方面处于领先水平。2000 年 ITS 年会上展出由美国 MSI 公司开发的共聚物压电轴传感器,可以同时测量车速、车轴数、轴距及车型分类、动态称重。为了规范世界上的动态称重系统,1990 年德克萨斯大学的学者起草了 ASTME131890 标准 3。1)目前,国外汽车动态称重系统的研究以美国和德国水平较高,德国 PAT 公司生产的产品精度已达到3% 4。2)我国高等级公路的发展较国外晚,但超载现象特别严重,尤其是矿产资源富有地区。我国于 20 世纪 80 年代出现了带基坑和无基坑两种电子汽车衡 5,1994 年一种动、静态两用电子轨道衡 6在太原钢铁公司通过了鉴定,该产品集动态和静态轨道衡的优点子一身,较好地解决了检测精度与汽车通过速度之间的矛盾。作为国家“八五” 重点科技项目,交通部重庆公路科学研究所研制了一种固定式动态汽车称重系统 7,该系统轴重误差小于10%,置信度为 95%。3)汽车动态称重技术在现实中的应用。发达国家在公路骨干网上普遍设立了车辆动态称重检测设备,对汽车超载现象实施严格管理。目前,国内还没有一家企业能够自主生产汽车动态称重仪,其关键总成或配件依靠进口。本课题主要对动态车辆称重系统进行深入的分析和研究以解决其关键问题。1.4 几种动态测试方式及系统动态称重时,车辆以一定速度通过轴重仪测量平台,不仅轮胎对平台的作用时间很短(在几百毫秒以内) ,而且作用在平台上的力除真实轴重外,还有许多因素产生的干扰力,如:车速、车辆自身谐振、路面激励、轮胎驱动力等。可以说真实轴重被淹没在各种干扰力中,给动态称重实现高精度测量造成很大困难。因此,在外界随机不确定的干扰力作用下如何准确测量真实轴重,就成了动态轴重测试系统的技术难点和关键。就所存在的干扰进行整理、分析综合,从动态测试系统的整体角度探讨能减小或消除这些干扰力影响程度的措施和测试方式,无疑有助于高精度动态称重技术的进步及测试系统的发展 89。1.4.1 算术平均测试系统所谓算术平均,即对传感器输出信号进行多次快速数据采集,然后取算术平均值作为测试结果,以滤除随机误差。该测试系统基于高速 A/D 转换器与单片机数据采集处理功能。当车轮通过称台时,单片机在称重时区段内通过高速 A/D 转换器对传感器输出信号进行自动快速采集,并将多次采集的数据进行预处理和存储,然后取算术平均,其结果认为是在动态下测试的轴重。从理论上来讲,该系统应能保证一定的测量精度。但是,在实际操作中,会受到若干条件限制(如称量时间较短、模数转换不够快) ,致使车辆通过速度上限与称量精度相矛盾。而且,由于称台较短,称重时间有限,所采集的数据不可能足够的达到精确平均值,有相当的偏差。因此,依此测试方式研制的轴重仪比较适合于静态称重或低速准动态称重(限速称重) 。1.4.2 位移积分测试系统由于干扰因素的存在,使行驶车辆在某些固有频率下震动。当车辆通过称台时对称台的作用力波形将由两部分组成,即与轴重成正比的静态分量和由各种谐波成分组成的动态分量(如图 1-1 所示) 。80 年代,日本提出了一种位移积分法的测试方式,较好的解决了滤除动态分量干扰问题,大大提高了动态轴重称量精度。其原理大致是:将称重系统的输出信号对一小段位移沿(L 1)其长度( L)积分,L 1 的两端是通过对称的前后排传感器的输出进行比较给定的。图 1-1 示出了称重的典型波形,图中阴影部分面积用于该测试方式中的计算,以得到接近于轴重的静态分量,消除动态分量。动态分量在积分区间被比较理想的平均了,使车辆震荡造成的干扰影响很小。由于积分是对前后排传感器的输出做出的比较后划分的位移区段进行的,因此即使车辆在较高车速下行使,仍能保证有较高的测试精度。但这需要大量的数据才能保证其精度,其实现起来比较麻烦,这也是目前动态称重系统在提高汽车通过速度时,精度无法保证的关键所在。 L1t图 1-1 轴重的典型波形1.4.3 FIR 数字滤波测试系统本文在参考了以上几种方法以后,提出了一种 FIR 数字滤波方法,这种方法具有滤波效果好滤波参数修改方便而且容易实现等优点。由于 FIR 算法的运算量比较大,如果单纯用单片机来实现很难做到实时处理,所以我们用 FPGA 来实现 FIR 算法,单片机用来做一些辅助工作。第 2 章 硬件系统介绍2.1 整体设计介绍由于传感器输出为毫伏级差动信号所以放大器必须为差动。在现场干扰比较严重,其中有传感器本身的干扰,其中共模干扰部分通过差动放大电路可以有效的消除,而串模干扰必须通过低通滤波消除,此时就得考虑滤波电容的大小。如果电容选择的大一些可以有效的消除串模干扰,但是同时滤波电路的输出信号会有一个比较大延迟,对汽车重量的实时测量来说这是不允许的。如果选用的电容比较小,虽然可以保证实时性但 却不能有效虑除干扰信号。所以电容大小的选择必须折中考虑。虽然有一部分干扰信号不能虑除但是可以通过软件滤波实现,比如可以通过平均值方法或者用自适应方法,这就需要 CPU 有足够的速度来保证计算的实时性,但是这种 CPU 往往价格比较高昂,所以仍然选用通用微处理器 89C51。为了保证信号处理的实时性,我们用硬件完成滤波算法。本设计选用 Altera 公司的 FLEX10K10 器件,它具有速度快操作简单等特点。我们用 FPGA 器件实现数字滤波 FIR 算法。同时 FLEX10K10 器件还担任着一些简单逻辑电路设计的任务。其中处理完的数据通过单片机的串口传送到上位机,并且这个串口还用于数码管的显示,而串口切换是由 FPGA 完成的。图 2-1 设计整体框图由于本文选用的 A/D1674 芯片转换时间只有 10s,而所设计的电路是每隔 20s启动转换一次,所以有足够的时间完成模数转换。汽车轴重台的宽度为 40cm,汽车通过轴重台的最大速度为 15km/h,这样可以求出汽车通过的最短时间为 0.096s。在这段时间里可以采集 4800 个数据。由于前 30ms 是传感器的反应时间,除去这部分数据,将剩下的数据进行 FIR 数字滤波后,噪声被有效的抑制。为了进一步的平滑波形,每 8 个数据做一次平均,这样就消弱了由于汽车高速通过轴重台时由于颠簸产生的尖峰信号。FPGA 的每次滤波包含有 FIR 运算和 8 个数据的平均值运算。FPGA 每完成一次滤波就会向单片机发一个中断请求,此时单片机读取滤波后的数据。由于选用的 A/D 是 12 位,而单片机 89C51 是 8 位的,所以经过处理后的数据必须分两次读入。第一次读入低八位,第二次读入高 4 位,然后对数据处理。此时可以认为单片机接收的数据为滤波后不含有噪声的数据,只要求出此时的最大值就是汽车的真实重量。2.2 FPGA 概述2.2.1 FLEX10K 系列器件的功能描述FLEX10K 主要由嵌入式阵列块、逻辑阵列块、FastTrack 和 IO 单元四部分组成。1嵌入式阵列嵌入式阵列是由一系列的 EAB(嵌入式阵列块)构成的。当要实现有关存贮器功能时,每个 EAB 提供 2048 位用来构造 RAM、ROM、FIFO 或双口 RAM 等功能。当EAB 用来实现乘法器、微控制器、状态机以及 DSP 等复杂逻辑时,每个 EAB 可以贡献 100 到 600 个门。EAB 可以单独使用,也可以组合起来使用。2逻辑阵列逻辑阵列是由一系列的逻辑阵列块(LAB)构成的。每个 LAB 包含 8 个 LE 和一些连接线,每个 LE 含有一个 4 输入查找表(LUT)、一个可编程触发器、进位链和级联链,LE 的结构能有效地实现各种逻辑。每个 LAB 是一个独立的结构,它具有共同的输入互连与控制信号,LAB 的这种“粗粒度” 结构有利于器件布线和高性能的实现,例如 8 位计数器、地址译码器或状态机。多个 LAB 组合起来也可以构成更大的逻辑块,每个 LAB 代表大约 96 个可用逻辑门。3快速通道(FastTrack )FLEX10K 器件内部信号的互连和器件引脚之间的信号互连是由快速通道(FastTrack)连线提供的,它是贯通器件长、宽的快速连续通道。4I O 单元 I/O(E)- -(LE)-(LAB)-(EAB)图 2-2 FLEX10K 器件的结构方框图FLEX10K 器件的 IO 引脚是由一些 IO 单元(IOE)驱动的。IOE 位于快速通道的行和列的末端,每个 IOE 有一个双向 IO 缓冲器和一个既可做输入寄存器也可做输出寄存器的触发器。当 IOE 作为专用时钟引脚时,这些寄存器提供了特殊的性能。当它作为输入时,可提供 4.2ns 的建立时间和 0 ns 的保持时间;而作为输出时,这些寄存器可提供少于 5.7ns 的“时钟到输出”的延时时间。 IOE 具有许多特性,如 JTAG编程支持、摆串控制、三态缓冲和漏极开路输出。图 3-3 是 FLEX10K 结构的方框图。由图可以看出,一组 LE 组成了一个 LAB,LAB 是排列成行和列的,每一行也包含一个 EAB。LAB 和 EAB 是由快速通道连接的,IOE 处于快速通道连线的行和列的两端。FLEX10K 器件还提供了 6 个专用输入引脚,这些引脚用来驱动触发器的控制端,以确保控制信号高速、低偏移(1.2ns)地有效分配。这些信号使用了专用的布线支路,以便具有比快速通道更短的延迟和更小的偏移。专用输入中的 4 个输入引脚可用来驱动全局信号,这 4 个全局信号也能由内部逻辑驱动,它为时钟分配或产生用以清除器件内部多个寄存器的异步清除信号提供了一个理想的方法。2.2.2 FPGA 下载电路设计当电路设计者利用 MAX+PLUS 软件工具将电路输入,并且经过编译、优化、仿真,从波形上看已经完全达到最初的要求以后,就应当考虑 CPLD 器件的系统配置与下载方法了。图 2-3 FPGA 下载电路CPLD 器件的工作状态分为三种:一种称之为用户状态(Usermode),指电路中CPLD 器件正常工作时的状态;一种则是配置状态 (Configuration),指将编程数据装入CPLD 器件的过程,也可称之为构造;第三种就是初始化状态(Initialization),CPLD 器件复位各类寄存器。让 IO 引脚为逻辑器件正常工作作准备。 【8】 【9】一、配置方式图 2-4 FLEX10K 器件的工作状态CPLD 器件配置分为两大类:主动配置方式和被动配置方式。主动配置由 CPLD器件引导配置操作过程,它控制着外部存贮器和初始化过程;而被动配置由部计算机或控制器控制配置过程。根据数据线的多少将 CPLD 器件配置分为并行配置和串行配置两类。在 FLEX10K10 器件正常工作时,它的配置数据贮存在 SRAM 之中。由于SRAM 的易失性,所以每次加电期间,配置数据都必须重新构造,将 IO 引脚和寄存器初始化之后便进入了用户状态,其各种工作状态如图 2-4 所示。二、串口下载电缆 ByteBlaster 原理我们知道,使用 FLEX 器件的一个特别突出的优点就是:FLEX 器件可以通过在线配置的手段来调整电路结构、延时信息等,这给电路设计人员调试电路带来极大的方便。而并口下载电缆 ByteBlaster 正是将 PC 机中的配置信息传送到 PCB 板 FLEX器件中必不可少的器件。ByteBlaster 不但可以用来对 FLEX 系列器件进行配置重构,而且可以用来对 MAX 9000 以及 MAX 7000SMAX 7000A 等器件进行编程。ByteBlaster 有两种配置模式:被动串行模式 (PS)一常用来配置重构 FLEX10K、FLEX 8000 和 FLFX 6000 系列器件、边界扫描模式(JTAG)一具有边界扫描电路的配置重构或在线编程。三、ByteBlaster 的连接及原理ByteBlaster 下载电缆具有以下几部分:与 PC 机并口相连的 25 针插座头;与PCB 板插座相连的 10 针插头;25 针到 10 针的变换电路。1ByteBlaster 25 针插头。ByteBlaster 与 PC 机并口相连的是一个 25 针的插头,在 PS 和 JTAG 两种模式下具有不同的名称,如表 3-2 所示。2ByteBlasterl0 针插头ByteBlaster 的 10 针插头是与 PCB 板上的 10 针插座连接的。表 3-3 中列出了Byte Blaster 在两种不同模式下的各引脚名称。2.3 放大滤波电路设计2.3.1 放大电路的设计423*123RVoRV )23(1)(4 Ro42)1(321 VVVo当 R1=R2 R3=R4 时候,上式将变为 1)3()()( RRR21*3VVo令 R1=3K, R3=100K,则此放大电路的放大倍数为:-33.3 倍。 图 2-5 第一级差动放大电路图 2-6 第二级放大电路 图 2-7 整体放大电路131VRoiViR13令 VR1=50K,R3=10K,R1=1K,根据此公式可以计算出第二级电路放大倍数为 1060 倍。同样道理,第三级电路的放大倍数为 120 倍,所以总的放大倍数为 33339960 倍。2.3.2 滤波电路的设计利用运放作为有限增益可控源的二阶低通滤波器,其传递函数为: 【10】21234211*)(2 CRSRCRSH与二阶低通滤波器标准式 202)/()(SQHS相比较,得:340R210CR34121CQ2374618U42OP07R11KR31KR21K2374618U41OP07R11KR310KR21KR4100KR403KR413K2374618U40OP07R3100KVR510K+12-12V1234J40CON4+12VVR420K VR350K图 2-8 有限增益低通滤波器对该电路来讲,有 R1、R 2、C 1、C 2、H 0 五个参数可选择,但只有上述三个关系式,因而在元件选择上有一定的自由度;一种方法是令 R1=R2=R,C 1=C2=C,则有 C10340H3Q故当 ,Q 已知时候,有: , ,当 R3=、R 4=0 时候有:01RH0=1, )(1*.01HZKUC图 2-9 二阶滤波电路2.4 A/D 采集电路设计模拟信号经过放大隔离后要进行 A/D 转换变成数字量,计算机才能处理。 ADC的最主要性能指标就是分辨率和转换时间,这两条取决于测试设备的精度要求和信号变化速率。由于称重台范围是 03000 公斤,而要求误差为 1 公斤以下,所以满足:1/212v_in1:=00000001; 以下为 FIR 运算中使用when 1=v_in1:=00000001; 的 h(n)参数when 2=v_in1:=00000001;when 3=v_in1:=00000001;when 4=v_in1:=00000001;when 5=v_in1:=00000001;when 6=v_in1:=00000001;when 7=v_in1:=00000001;when 8=v_in1:=00000001; when 9=v_in1:=00000001;when 10=v_in1:=00000001;when 11=v_in1:=00000001;when 12=v_in1:=00000001;when 13=v_in1:=00000001;when 14=v_in1:=00000001;when 15=v_in1:=00000001;when 16=v_in1:=00000001;when others=null;end case;return(v_in1);end;end rom;程序功能说明:当进行卷积运算时候需要知道冲击响应 h(n)的数值,在本设计中可以直接调用函数 rom(),即: h(0)=rom(0),h(5)=rom(5) 等。当计算好 h(n)的数值后,就可以修改此程序的数组列表。在其他程序调用本程序之前必须对其进行编译。程序 mul_fun.vhd 清单:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;加载常用库函数package mul_fun is 程序包说明function mul(l:unsigned(11 downto 0);r:unsigned(7 downto 0)return unsigned;end mul_fun ;package body mul_fun is 包体说明,描述程序包function mul(l,r:unsigned)return unsigned is函数变量类型及返回值说明alias in1:unsigned(11 downto 0) is l;alias in2:unsigned(7 downto 0) is r;variable v_left, v_add:unsigned(19 downto 0);v_left 为移位寄存器, v_add 为累加值variable v_in1:unsigned(11 downto 0);variable v_in2:unsigned(7 downto 0);beginv_left(7 downto 0):=in2(7 downto 0);v_left(19 downto 8):=000000000000;v_add:=(others=0);v_in1:=in1;v_in2:=in2;for i in 0 to 11 loop 如果当前位为 1,则将移位寄存器中内容加到累加和寄存器中if v_in1(i)=1 then v_add:=v_add+v_left;end if;v_left:=(others=0);case i is 根据 i 的数值不同对移位寄存器中内容移位when 0=v_left(8 downto 1):=v_in2(7 downto 0);when 1=v_left(9 downto 2):=v_in2(7 downto 0);when 2=v_left(10 downto 3):=v_in2(7 downto 0);when 3=v_left(11 downto 4):=v_in2(7 downto 0);when 4=v_left(12 downto 5):=v_in2(7 downto 0);when 5=v_left(13 downto 6):=v_in2(7 downto 0);when 6=v_left(14 downto 7):=v_in2(7 downto 0);when 7=v_left(15 downto 8):=v_in2(7 downto 0);when 8=v_left(16 downto 9):=v_in2(7 downto 0);when 9=v_left(17 downto 10):=v_in2(7 downto 0);when 10=v_left(18 downto 11):=v_in2(7 downto 0);when 11=v_left(19 downto 12):=v_in2(7 downto 0);when others=null;end case;end loop;return(v_add);end;end mul_fun ;程序说明:由于在 FIR 计算中需要用到乘法,而在 VHDL 语言中没有提供乘法函数,所以我们用移位相加的办法来实现乘法。在本设计中使用的 A/D 转换器为 12位,而卷积运算中 h(n)的参数我们用 8 位二进制表示,所以需要用到 12 位二进制与8 位二进制的乘法,以上程序就是完成此项功能的子函数。它本身不能完成仿真功能,只能由其他程序调用此函数来完成。程序 mul_ok.vhd 清单:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; 加载常用库函数use work.mul_fun.all; 加载用户自己编写的函数entity mul_ok isport(cp :in std_logic; 定义时钟信号in1:in unsigned(11 downto 0); 定义输入信号in2:in unsigned(7 downto 0); 定义输入信号out1:out unsigned(19 downto 0) 定义输出信号);end mul_ok;architecture lw of mul_ok isbeginprocess(cp)beginif cpevent and cp=1 thenout10); elsif cpevent and cp=1 then tmp:=sample; 保留当前的采样数值h1:=rom(0);pro:=mul(tmp,h1);计算当前采样数值与 h(0)的乘法acc:=pro;for i in 15 downto 0 loop 计算其他 16 点的乘积,并累加求卷积old:=shift(i);h2:=rom(i+1);pro:=mul(old,h2);acc:=acc+pro; shift(i+1):=shift(i);end loop;shift(0):=tmp; 将本次采样数值送给移位寄存器,以便进行下次计算result=acc; 结果输出elsenull;end if;end process;end beh;程序说明:用硬件电路实现 FIR 滤波器也就是完成以下运算 Y(n)=L0k)kn(x)h当计算好单位冲击响应 h(n)后,剩下的就是进行卷积运算了。卷积运算最主要的就是乘法运算。我们知道在 VHDL 语言中没有乘法指令,所以可以通过移位相加来完成乘法运算(可以参考本设计中的程序 mul_fun.vhd 程序及其说明) 。在本程序中我们调用了先前设计的程序 rom.vhd 和 mul_fun.vhd 共同完成了 FIR 运算。下面简单的介绍一下程序设计思想。由图看出,可以先计算当前采样数值 sample,然后算出它与 h(0)的乘积。在 shift寄存器中我们在程序开始的时候就已经全部赋值为 0。在计算其他数值乘积时候,由于要进行移位操作,所以从高位 s(15)开始计算,即: s(15)*h(16)+s(14)*h(15)+s(0)*h(1)+sample*h(0),每计算完一次卷积运算 shift 寄存器就移位一次。Sample 中保存着当前采样值,而 s(0)s(15)中保留着以前的采样值,s(16)中是移出丢弃的数值。图 3-3 FIR 运算结果图 1图 3-4 FIR 运算结果图 2由图可以看出当第一个上升沿到来的时候,采样结果是 0,第二个上升沿到来的时候采样结果是 2,此时 0+2=2,当第三个上升沿到来时采样结果是 4,所以2+4=6,以此类推,当复位信号 reset 等于 1 时,卷积移位寄存器清零,从新开始卷积运算。3.3 单片机软件设计在开发一个单片机应用系统时,系统程序的编写效率在很大程度上决定了目标系统的研制成效。早期在研制单片机应用系统时,大多以汇编语言作为软件工具。汇编语言程序能够直接操作机器硬件,指令的执行速度快。但由于汇编语言不是一种结构化语言,汇编语言程序较难编写和调试,程序本身的编写效率较低。随着单片机硬件性能的提高,其工作速度越来越快,目前 80C51 单片机的最高时钟频率可达 40MHz以上。因此在编写单片机应用系统程序时,更着重于程序本身的编写效率。为了适应这种要求,现在的单片机开发系统,除了配备有汇编语言软件之外,很多还配备了高级语言软件,如 C51、PLM51 等。在本设计中使用 C51 语言,它的特点如下面所述。3.3.1 动态称重仪表的数学模型图 3-5 汽车动态称重仪的数学模型当汽车以 15km/h 通过 400mm 的传感器测量板时需要 96ms。如图 4-17 所示,在t0t1 约 20ms 的时间段内,由于应变片刚一受力无法回至平衡,所以此时的峰值高于真实轴重值,这段数据在实际测量中可以不考虑。而只是对后面 t1t2 的数据进行滤波处理。由于在汽车运动中采集数据,所以相对于静态称重来说干扰比较严重。采用模拟方法滤波时,参数不能过大,否则将产生过大的延迟不能实现实时处理。这样滤波后的信号仍然含有想当一部分的噪声。所以此时必须通过数字滤波消除干扰。关于 FIR 数字滤波的内容请参考第五章。3.3.2 单片机软件流程图流程图说明:程序开始的时候就采集并显示数据,如果这个数据大于门限值IAUTO 则证明此时已经有车进入轴重台,如果不大于这个门限证明没有车进入轴重台,所以实时显示当前采集数据。判断出车辆进入轴重台后,继续采集数据并求出此时数据的最大值,我们把此值作为轴重的真实结果。但此时显示的仍然是当前采集值,如果当前数值小于下车门限 OAUTO,证明车辆此时已经行驶过轴重台,这时判断是前轮还是后轮通过轴重台,如果是前轮我们就将所求最大数值显示出来,这就是前轮称量的轴重值。如果是后轮就把两次结果累加并显示。这样就完成了一个流程,等下一辆车进入轴重台时开始新的流程。 采 集 数 据 , 显 示有 车 进 入 , 延 时 20ms采 集 数 据 显 示车 已 经 下 线开 始数 据 处 理 求 出 最 大 值 DATMAXDATMAXOUIO小于 ?IAUIO大 于 上 车 门 限?记 录 并显 示 后轮
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中九年级历史中考单元复习导学案:资产阶级革命与改革的全球浪潮
- 2026年铁路线路防沙工程考核试卷
- 2026年肠道传染病培训试题(附答案)
- 某塑料厂能耗管理规范
- 某纺织厂安全生产
- 某制药厂质量检验办法
- 2026年山西大同市中小学教师招聘考试试题题库及答案解析(教育综合知识)
- 初中数学七年级上册(北师大版2024)核心知识清单:有理数加减混合运算
- 高中地理必修第二册(鲁教版)核心素养知识清单:人口迁移
- 人教版二年级数学上册《数学广角-搭配(一)》核心素养导向教案
- 2026江苏苏州工业园区苏相合作区助理人员招聘6人备考题库附参考答案详解(综合题)
- 2025年湖北省孝感市事业单位人员招聘考试试题及答案详解
- 2024-2025学年广东省深圳市龙岗区北师大版五年级下册期末数学试卷(完整试题+详细解析)
- 2026云南师范大学能源与环境科学学院招聘科研助理岗位工作人员5人备考题库及参考答案详解1套
- 大型工业吊扇销售合同
- 国家突发事件总体应急预案编制指南
- 2026云南临沧国投宏华招聘综合业务开单员3人备考题库及答案详解(必刷)
- 2026年潍坊房地产行业分析报告及未来发展趋势报告
- 2026年西安建筑科技大学《绿色建筑学报》编辑部招聘(3人)考试备考题库及答案解析
- 广州版小学综合实践三年级下学期教案全集
- 2025年CSCO肾癌诊疗指南解读
评论
0/150
提交评论