基于FPGA的QCM湿度测量系统程序设计与仿真
摘要:为了实时检测常温下的湿度,以便负责人根据需要调整环境状态。采用测频计数法结合频差法设计了以FPGA芯片(EP2C8Q208C8N)为基础的可用于湿度测量的石英晶体谐振频率漂移检测电路。重点介绍在FPGA平台上通过测量石英晶体的谐振频率来间接测量湿度的方法,讨论了FPGA平台上的每个模块的设计过程,给出了部分模块和整体电路的仿真图,解释了仿真结果。FPGA参与外围硬件电路的辅助设计,会使设计更加简单,周期更短。
本文引用地址:http://www.amcfsurvey.com/article/201610/309096.htm湿度若能够实时进行测量,对于生产、生活方面是很至关重要的,尤其是在那些仓储、种植、养殖、家庭、医疗、科研等关注湿度变化的地方。如果异常湿度不能及时被测量到,就会使生产降低、身体感到不适。现代湿度测量从机械式发展为精确度更高的电子式湿度传感器。石英压电谐振式湿度传感器就是利用了谐振元件的固有频率与被测量之间存在关系而进行测量的一种电子装置。通过在线可编程芯片FPGA来对传感器数据进行采集、测量和处理,能极大地整合和简化系统设计。文中将主要描述石英晶体(QCM)湿度测量系统中FPGA部分的程序设计,分别给出单个模块的设计思路和(或)工作流程图,对部分模块给出仿真结果,最后对总体程序进行了仿真,给出整体结果。
1 基本原理
在压电石英晶体的晶片表面涂覆湿度敏感材料,制成一个附着有吸湿膜的石英晶体谐振器。若该石英晶体放置于湿度环境中,由于吸湿膜通过氢键或者分子间作用力吸附了环境中的水汽分子,使得石英晶体的质量发生变化。根据Sauerbrey公式,如式(1)所示,为晶片上吸附水汽分子后石英晶体质量变化量,Fo为基频,△f为相同基频下的无湿敏膜标准石英晶体谐振(以下简称标准晶振)频率Fo与有湿敏膜传感石英晶体谐振(以下简称传感晶振)频率的频率差,S为晶片上湿敏膜的面积。石英晶体的质量若发生变化,其谐振频率也会随之发生变化。只要通过测量出石英谐振频率的变化量,再利用频率差-质量差-相对湿度三者之间存在的关系,由频率转换得到相对湿度。
系统由湿度传感器、QCM振荡电路、FPGA平台、显示电路等模块组成,如图1所示。FPGA平台将集成测量、控制、驱动等功能模块,先通过参比对照测出两个通道的频率值,再计算两通道频率值的差,根据转换表转换出相对湿度值,送出显示。采用基频10 MHz,AT切型的石英晶体作为湿度传感器。
2 总体方案构造
2.1 FPGA芯片
FPGA,通过软件辅助编程的方式实现电路功能的一种半定制ASIC芯片。FPGA是在线可编程器件中的一种,基于查找表LUT的电路原理。N输入的查找表,将输入的真值表存储在SRAM中,系统通过“查表”的方式,输出预存结果。FPGA在电路设计和使用的过程中高度体现了以专用性、高效性,以人为本的设计思想。FPGA芯片采用的是美国Altera公司设计生产的Cyclone II系列中的EP2C8Q208C8N。它含有516个可编程逻辑块CLBs,8256个逻辑单元LEs,165888个存储位,138个可使用的I/O端口,端口最大电压为3.3 V,核心电压为1.2 V,工作适宜温度为0~85℃。
2.2 FPGA总体电路构建
FPGA程序设计是整个相对湿度测量系统设计中关键的一部分,集成了控制、测量与锁存、差值计算、物理量转换,显示驱动等模块。通过软件编程辅助设计的电路,既可降低硬件电路设计的成本,同时也发挥软件设计带来的优点。另外用FPGA做设计还可随时就应用过程中出现的问题调整程序,使系统作更大优化。整个FPGA运行的流程图如图2所示。整个FPGA电路模块的设计和仿真都将在Quartus II 9.0软件环境下完成。在FPGA中相对湿度的测量将采用实时测量的方案。
3 模块设计与仿真
3.1 控制模块
控制模块主要完成对FPGA工作进程的控制。它包括系统启动/暂停、使能控制、系统复位等功能,其工作流程如图3所示。其中N值大小可以因需求不同作数值调整。
3.2 测量与锁存模块
测量模块是FPGA设计中最关键的模块之一。为得到频率差,采用双通道分别进行标准晶振和传感晶振的频率测量。数据信号在一个闸门内的计数值很大,所以不考虑因闸门信号与数据信号不同步造成的±1字的误差。测量模块中的频率测量采用直接计数法完成。在使能高电平期间,频率信号触发沿每到来一次时,计数器加1计数;在使能低电平期间计数器数据锁存,保存至下一次的测量完成。最小测量精度为1 Hz,采用8421BCD码计数(便于观察和后续电路设计)。
对测量和锁存模块进行仿真分析,如图4所示。从图中可以看出系统在异步复位信号sys_clr高电平下复位,否则在使能信号sys_ena高电平有效时,系统计数,直到使能无效,result_Q最后一个计数值送入锁存器result_latch保存至下一次测量结束。在整个系统中复位信号周期性出现在保持时间末刻,以使计数寄存器下一次从0开始计数。
3.3 频率差值计算模块
获得两个通道的频率值后,根据频差计算公式(2),将两者送入减法器中。
△F=Fo-Fs (2)
减法器采用BCD码减法,按以下规则顺序执行:
1)比较大小,如果被减数大于或等于减数,差为正,符号记为0;如果减数小于被减数,将被减数与减数的位置对调,差为负,符号记为1;
2)按照二进制法逐位减法运算;
3)从最低位开始包括被减数、减数、差的每4位组成一组,高位不够4位用零补齐;
4)如果每一组的被减数大于减数,则若差大于9,则差减去6,其他不变;
5)如果每一组的被减数小于等于减数,则若差大于5(最小1组大于6),则差减去6,其他不变;
6)修正后的结果即为频率差。
随机设计了几组数据进行仿真测试,如图5所示,经比对,结果正确。其中a8至a1为被减数a的高位至低位,即为标准晶振的频率值;b8至b1为减数b的高位至低位,即为传感晶振的频率值;差为asb8至asb1,符号为sign。
3.4 物理量转换模块
在20%至85%这段相对湿度区间,频率差与相对湿度值之间的曲线接近线性。设计中频率差与相对湿度值之间的转换以查找表的形式来实现,一个湿度范围对应一组频率差。通常情况下,由于材料、制作工艺的不同,频率差的变化也会有所不同。为了仿真,假定相对湿度变化1%时,频率差变化2个值。
3.5 显示驱动模块
后端显示用LCD1602液晶屏构成。由于1602中命令和数据共享总线,首先需要对其初始化,目的就在于对总线状态、显示样式的设置。初始化过程为清屏→显示状态设置→工作方式设置→CG RAM设置→DD RAM设置。一旦初始化结束后,就可以将结果等内容在液晶屏上动态显示。
4 总体电路测试与仿真
为便于仿真观察,程序上对时钟和信号周期进行了修改,但设计思路不变,不影响整个的工作流程。打开Quartus II的仿真器,插入输入输出信号,依照实际情况给出输入信号波形,仿真结果如图6所示。其中clk20M为20 MHz的时钟信号,经20分频,得到一个周期为的闸门信号(实际中为2s)。因为传感石英晶体质量因受湿度的影响而增加,其谐振频率随之下降,故传感晶振频率总小于标准晶振。cnt_clk0、cnt_ clk1分别为两个通道的频率信号,其周期设置在0 s~3.4μs为8 ns和10 ns,在3.4~6.4 μs至为19 ns和30 ns,在6.4~7.3μs至为35 ns和50 ns;系统一开始清零;result_Q为通道0的频率测量值,result_Q1为通道1的频率测量值。在仿真中取频率的最大变化为50,每1%的相对湿度,有2的变化。由图可看出,当系统在接到清零信号后,立即对计数寄存器进行了数据复位。当测量周期结束后,分别得到以下数值:在0 s~3.4μs这一段,通道0计数值为125,通道1为100,差值为25,湿度为50%;在3.4~6.4μs至,通道0为53,通道1为33,差值为20,湿度为40%。
5 结论
设计运用了功能强大的FPGA作为湿度测量系统的主要部件,充分发挥其高度集成的内部资源和弥补了硬件上设计的漏洞和误差。文中对相对湿度测量系统中的FPGA部分的程序进行了设计说明和仿真,给出总体电路的仿真结果。证明了设计方案的可行性,体现了软件结合设计所带来的简便性和实用性。
如果将该FPGA测量平台与其他外围硬件电路组合,即可完成湿度测量系统的设计,同时也可用于特殊气体的检测。
评论