前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的嵌入式电路设计教程主题范文,仅供参考,欢迎阅读并收藏。
关键词:PC104;CPLD;多周期同步测频;VHDL
中图分类号:TP391;TP368.1文献标识码:B
文章编号:1004-373X(2010)02-086-04
Design of Frequency Measuring Module Based on PC104 and CPLD
LIU Guohua1,HE Huafeng1,TIAN Pengfei1,WANG Lin2
(1.The Second Artillery Engineering College,Xi′an,710025,China;
2.The Second Artillery Military Representative Office in the Area of Xiaogan,Xiaogan,432100,China)
Abstract:According to the need of some test system,a high_accuracy frequency measuring module is designed based on PC104 and CPLD.A method of synchronous multi_period frequency measurement is used to achieve the equal precision measure to the tested frequency channel.The hardware circuit of the frequency measuring module is designed.And the detailed VHDL source code to achieve digital frequency using CPLD is given.The interface logic of PC104 bus is compiled using the way of schematic diagram,and the emulation is done by the software of MAXPLUSⅡ.The digital frequency and the interface logic are accurately working showed by the result.This frequency measuring module has been proved to be high_accurate,stable and reliable in the practical application.
Keywords:PC104;CPLD;synchronous multi_period frequency measurement;VHDL
随着科学技术的发展,嵌入式产品在军事领域的应用日益广泛,特别是在各种系统的自动化测试领域[1]。频率测试是测试系统中的重要测试项目,在此设计一种基于PC104嵌入式计算机和CPLD的高精度测频模件,以满足对频率量的测试。
1 测频原理
传统的频率测量方法有两种[2]:直接测频法和测周期法。直接测频法就是在给定的闸门信号中填入被测脉冲,通过必要的计数线路,得到填充脉冲的个数,从而算出待测信号的周期。它的主要缺点是存在被测脉冲的±1个误差,难以兼顾低频和高频实现等精度测量,所以测量准确度较低。测周期法[3]是在一个信号周期内记录下基准定时脉冲的个数,然后换算成频率f。主要缺点是存在基准脉冲的±1个误差,适用于较低频率的测量。
多周期同步测频方法[4]是在直接测频的基础上发展而来的,其特点在于测量过程中实际闸门时间不是固定值,而是被测信号周期的整数倍,即与被测信号是同步的,因此消除了对被测信号计数产生的±1个误差,测量精度大大提高,而且达到了在整个测量频段的等精度测量。多周期同步测频法的原理[5,6],如图1所示。
图1 多周期同步测频法原理
如图1所示,首先,由控制线路给出闸门开启信号,计数器等到被测信号的上升沿到来时,真正开始计数;然后,两组计数器分别对被测信号和标准频率信号计数。当控制线路给出闸门关闭信号后,计数器等到被测信号下降沿到来时结束计数,完成一次测量过程。可以看出,实际闸门与设定闸门并不严格相等,但最大差值不超过被测信号的一个周期。被测频率的计算方法为:
fx=(Nx/N0)f0(1)
式中:Nx为被测信号的计数值;N0为标准频率信号的计数值;f0为标准频率信号的频率;τ为闸门时间,计数器的开闭与被测信号完全同步,即在实际闸门中包含整数个被测信号的周期,因而不存在对被测信号计数的±1个误差。
2 硬件电路设计
如图2所示,该模件硬件主要包括PC104控制处理模块、CPLD测试模块、信号调理模块、继电器驱动模块和高精度20 MHz晶振。在该系统中为了实现对多路频率信号的测量,采用了通过继电器控制来选择信号的方案。通过CPLD控制继电器的动作,接通不同的继电器开关,被测信号通过继电器之后,由6N137高速光电隔离器隔离、电平转换之后送入CPLD进行测频。由于CPLD的I/O口驱动电流较小,所以加了一级ULN2803驱动器来驱动继电器的线包。CPLD主要完成的功能是实现数字频率计,采用多周期同步测频法完成对输入信号频率的测量,并通过与PC104的接口逻辑,将测量结果送给PC104主机,由主机进行频率值的计算及显示,从而完成整个测频模件的功能,CPLD选用Altera公司的EPM7128SQC100芯片。
图2 模件硬件电路设计
3 软件设计
3.1 测频电路程序设计
对于CPLD的编程,一般有通过电路原理图的方式和通过硬件描述语言即VHDL语言两种方式\。第一种方式直观性强,较好理解,适用于小规模数字电路的设计;第二种方式具有多层次描述系统硬件功能的能力,可读性强,适用于时序电路及大规模电路的设计。本文采用两者相结合的方式,用VHDL语言实现数字频率计的设计,用原理图的方式实现了PC104主机的接口逻辑,并进行仿真。结果表明完全可以满足功能需求,编译环境为Max+PlusⅡ。
以下为数字频率计的VHDL语言源代码[8-10]。设计了两个32位计数器,一个8位数据选择器及一个触发器控制闸门信号。
LIBRARY IEEE;
USE IEEE.STD_LOGIC-1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY frequency IS
PORT (BCLK,TCLK:IN STD_LOGIC;
CLR,CL:IN STD_LOGIC;
SEL:IN STD_LOGIC_VECTOR
(2 DOWNTO 0);
START,EEND:OUT STD_LOGIC;
DATA: OUT STD_LOGIC_VECTOR
(7 DOWNTO 0));
END ENTITY frequency;
ARCHITUCTURE behavior OF frequency IS
SIGNAL BC:STD_LOGIC_VECTOR
(31 DOWNTO 0);
SIGNAL TC:STD_LOGIC_VECTOR
(31 DOWNTO 0);
SIGNAL ENA: STD_LOGIC;
BEGIN
START
CH:PROCESS (SEL)
BEGINCASE SEL IS
WHEN "000"=>DATA
WHEN "001"=>DATA
WHEN "010"=>DATA
WHEN "011"=>DATA
WHEN "100"=>DATA
WHEN "101"=>DATA
WHEN "110"=>DATA
WHEN "111"=>DATA
WHEN OTHERS =>
DATA
END CASE;END PROCESS;
BF:PROCESS (BCLK,CLR)
BEGIN IF CLR=′1′ THEN
BC 0);
ELSIF (BCLK′EVENT AND BCLK=′1′) THEN
IF ENA = ′1′ THEN
BC
END IF;END IF;END PROCESS;
TF:PROCESS (BCLK,CLR)
BEGIN IF CLR=′1′ THEN
TC 0);
ELSIF (BCLK′EVENT AND BCLK=′1′) THEN
IF ENA = ′1′ THEN
TC
END IF;END IF;END PROCESS;
TR:PROCESS (TCLK,CLR)
BEGIN
IF (TCLK′EVENT AND TCLK=′1′) THEN
ENA
END IF;END PROCESS;
EN:PROCESS (ENA)
BEGIN
IF (ENA′EVENT AND ENA=′0′) THEN
EEND
END IF;END PROCESS;
END ARCHITUCTURE behavior;
以上程序通过软件编译后生成数字频率计的逻辑功能模块图如图3所示。
以下是程序的仿真波形(见图4),标准频率为20 MHz,被测信号频率为0.1 MHz,仿真时间设为120 μs。
图3 数字频率计逻辑功能模块图
图4 数字频率计仿真结果
从仿真的结果可以看出,在定时脉冲CL到来时,计数器并没有开始计数,而是等到被测信号的上升沿到来时,START信号才开启,计数器开始计数,定时脉冲结束时,计数器也是等到被测信号的上升沿到来时才结束计数,实现了多周期同步测频。图4中被测信号频率的计算方法如式(1)所示。与系统预设值相同,可以实现所需的功能。
3.2 PC104接口电路实现
该设计中PC104接口电路部分在Max+PlusⅡ中用原理图的方式实现。使用的PC104总线信号有地址线A0~A9、数据线D0~D7、读写信号线IOR/IOW、复位信号RESET、中断信号IRQ3、地址允许线AEN。在PC104总线的接口电路部分遵循一个原则:就是输出加锁存,输入加缓冲驱动。该接口电路示意如图5所示,首先地址线的A3~A9位与外部波段开关设置地址及AEN信号通过译码电路中的比较器进行比较,若相同,则说明该模块被选中,然后根据A0~A2的译码结果,结合读写信号线产生输出锁存器74HC273及输入缓冲器74HC244的脉冲信号或使能信号,完成对数字频率计及外部电路的读写及控制。在总线工作方式上采用中断方式。设计中,将计数器的实际计数结束信号EEND作为总线的中断触发信号IRQ3,以此来提高PC104总线的工作效率。该接口逻辑的仿真结果如图6所示。
从仿真结果可以看出,接口逻辑可以很好地控制外部继电器的接通,产生清零及定时脉冲,并能正确地读取数字频率计的计数结果,实现模块预定的功能。该接口逻辑已在实验中得到了验证。
3.3 PC104应用程序设计
在调试该模件时系统采用Windows Me操作系统,编译环境采用TC 3.0。主程序包括系统初始化、中断初始化、接通继电器及产生清零和定时脉冲模块。在中断服务程序中主要完成了读取计数值、计算频率值及显示打印功能。它的程序流程图如图7所示,在此不再列出具体代码列。
图5 PC104总线接口逻辑
图6 PC104总线接口逻辑仿真结果
图7 PC104应用程序流程图
4 实验结果
实验采用的方法是将板载的20 MHz的晶振在CPLD内部分别进行2分频和20分频,得到10 MHz和1 MHz的信号,然后再将这两个频率信号分别进行2,4,6,8分频,得到共9个被测信号,闸门时间为1 s,测试结果如表1所示。
表1 测试结果
被测频率值实测值误差
1 MHz1.000 000 MHz0
5 MHz5.000 000 MHz0
2.5 MHz2.500 000 MHz0
1.25 MHz1.250 000 MHz0
0.625 MHz0.625 000 MHz0
500 kHz500.000 000 kHz0
250 kHz250.000 000 kHz0
125 kHz125.000 000 kHz0
62.5 kHz62.498 295 kHz2.7×10-5
由测试结果可以看出,模件的测频精度较高,完全能够满足一般性测试系统的需要。
5 结 语
采用多周期同步测频技术设计并实现了基于PC104总线和CPLD的测频模件。给出硬件设计原理图和数字频率计的VHDL程序源代码,PC104总线的接口逻辑电路,最后得出仿真结果,编制了PC104总线应用程序。实际应用表明,该模件精度高,稳定性好,能够很好地完成对频率量测试的任务。
参考文献
[1]黄家彬,訾向勇,刘爱兰.基于PC104的脉冲信号的产生及测量方法[J].国外电子测量技术,2004(6):23-25.
[2]魏钟记,刘峰,汪铭东.数字测频方法及实现[J].电子测量技术,2006(4):28-29.
[3]王宏利,程旭德,徐兵,等.基于AT89C51的智能测频仪设计[J].计算机测量与控制,2007,15(3):410-412.
[4]章军,张平,于刚.多周期同步测频测量精度的提高[J].电测与仪表,2003(6):16-17.
[5]柳义利,周渭,刘海霞.一种高速连续频率测量方法[J].2000(1):32-33.
[6]董婧,陈昊.基于嵌入式微处理器和FPGA的高精度测频设计[J].现代电子技术,2007,30(20):160-162.
[7]刑建平,曾繁泰.VHDL程序设计教程[M].北京:清华大学出版社,2005.
[8]雷伏容.VHDL电路设计[M].北京:清华大学出版社,2006.
[9]张亦华,延明.数字电路EDA入门――VHDL程序实例集[M].北京:北京邮电大学出版社,2003.
[10]侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,1999.
【关键词】OV7670;NIOS II;图像数据;USB传输
系统设计智能IC卡刷卡拍照考勤系统,在用IC卡刷卡考勤的同时,自动拍摄刷卡人员的图像信息并记录在案,管理员通过后台管理软件可以查看,对比每一笔刷卡记录人员的图像,从而有效杜绝考勤中的替刷卡的现象,既有指纹考勤机的防替打卡特性,又有感应考勤机的优点,实现现代化的信息化考勤系统。并且解决了生物身份识别考勤对环境和使用人群的限制,可有效适应于工厂、工矿企业等复杂环境的应用。
1.系统设计
本系统采用Altera公司的FPGA进行设计,型号为Cyclone II系列的EP2C5Q208,其内部资源满足设计要求。由FPGA来控制OV7670传感器数据的采集和传输,为快速读取图像数据及传输数据提供硬件资源支持。系统机构框图如图1-1所示。
OV7670图像传感器模块,体积小、工作电压低,且提供VGA摄像头与摄像处理器所有功能的图像传感器模组,带有3Mbit的AL422B存储器,显示采用带有触摸功能的TFT液晶模块,SD存储卡用于存储照片、图片等信息。OV7670图像传感器输出的8位RGB数据放在AL422B存储器,再由AL422B读出来的数据直接驱动彩屏显示。首先读取数据,再分为8位发送,这样基本看不到刷图的痕迹,直接显示图像。从拍摄到查看图像,只需用手触摸液晶屏操作即可完成,方便了人机交流。
射频卡刷卡模块可以识别射频IC卡,刷卡时可以把刷卡人的图像拍摄下来,图像以.BMP格式保存,通过SPI总线传送到SD卡存储,或者通过USB接口传输到计算机中存储。USB图像传输采用CY7C68013A芯片实现,传输速率达到USB2.0水平,可实现图像高速可靠传输,把图像等相关考勤数据传输到计算机由相应的考勤软件进行识别处理,方便管理者查询单位员工出勤情况。
2.硬件电路设计
2.1 电源模块
电源是电子设备中必不可少的一部分,电源模块电路如图2-1所示。系统电源采用锂电池供电,J1为锂电池接口,类似移动电源供电,而且用万能充之类即可充电,使用方便。电路中的电容起耦合作用,AMS1117是3.3V和1.2V稳压芯片,给整个系统供电稳定的工作电压。
2.2 OV7670模块
OV7670图像传感器的有效像素达到30万,其VGA图像最高达到30帧/秒,它灵敏度高适合低照度应用及低电压嵌入式应用。传感器通过SCCB总线控制,可以输出整帧、子采样、取窗口等方式的各种分辨率8位影响数据。用户可以完全控制图像质量、数据格式和传输方式。所有图像处理功能过程包括伽玛曲线、白平衡、饱和度、色度等都可以通过SCCB接口编程。该图像传感器应用独有的传感器技术,通过减少或消除光学或电子缺陷如固定图案噪声、托尾、浮散等,提高了图像质量,得到了清晰、稳定的彩色图像。
本模块是由OV7670与AL422B存储器组合而成,模块电路如图2-2所示。AL422B存储器有3Mbit内存,并配置393216字节和8位先进先出数据的存储器。内置的地址和指针控制电路提供简单的串行接口总线读/写存储器,从而减少芯片间的设计工作。WE是写信号,低电平有效,当WE为低电平时,AL422B接收到OV7670的8位RGB数据;当WE为高电平时,AL422B再输出8位数据给TFT,从而驱动TFT显示图像。WRST是写复位信号,低电平有效,很多情况下因为写复位没写好,会造成显示图像的畸形。PCLK是OV7670的像素时钟,作为AL422B的写时钟。OE是使能信号,低电平有效。RRST是读复位信号,低电平有效。RSC是读时钟信号,由系统提供。图中的DI0-DI7的8位数据分别由OV7670输出的8位数据来提供,DO0-DO7是AL422B的输出的数据,驱动TFT显示图像,每刷一帧图像需刷屏320*240个像素。
2.3 射频读卡模块
射频读卡模块采用FM1702SL射频基站芯片设计,如图2-3所示。设计者不必关心模块内部的设计,只需要通过模拟SPI接口发送命令就可以对IC卡进行读写等操作。模块检测感应到IC卡时通过信号线通知FPGA主控系统,系统发送读取卡号命令给模块,模块通过规定协议把卡号的信息上传到主控系统,这样主控系统就不需要实时检测是否有卡感应,节约系统资源,提高系统工作效率。
3.摄像头驱动程序设计及图像显示存储
3.1 OV7670与FIFO间的数据操作
OV7670与FIFO的数据传输需要一定的时序:OV7670的场同步接入MCU的外部中断(上升沿触发),这样当一个场同步到来时开启FIFO的写使能,这样数据就在行同步与MCU的控制下按照像素时钟依次写入FIFO。当一场图像数据进入了FIFO以后,也标志着下一场数据将要来到,也即下一个场同步的上升沿即将到来,当下一个上升沿触发并进入中断后,MCU应该关掉FIFO的写使能,然后开始读FIFO的数据,直到数据读完以后再开始下一次的数据采集。所以调试的第一步是一个摄像头正常工作时的外中断。主要注意刚进外中断时应该先清中断标志再进行中断操作,否则系统可能一直处于中断嵌套中,OV7670与FIFO间的数据读写流程如图3-1所示。
程序上是通过捕获VSYNC场同步实现前后台同步的,场同步是上升沿有效,当一个场同步触发MCU中断以后,在中断程序中首先开启FIFO的写使能,这时图像数据便在PCLK像素时钟的同步下依次写入FIFO,当下一个场同步到的时候中断会再次触发,这时便要关闭写使能,因为FIFO中已经缓存了一帧待处理的数据。main()函数中会一直查询FIFO中是否有一帧数据的标志,具体是通过判断VsyncCnt是否等于2实现的。当VsyncCnt等于2时,说明FIFO中已经缓存了一帧图片,MCU便从FIFO中取出数据进行处理(如显示到LCD或者进行颜色识别等)。当处理完一帧数据后,MCU会清零VsyncCnt,并复位读写指针,开始下一次采集处理。
3.2 图像存储显示与传输
本设计采用2.8寸的TFT为显示器。该TFT采用ILI9325/9328作为驱动芯片。该TFT主要用来显示系统操作界面、BMP图片等,其中BMP图片主要包括拍照得来的照片和SD卡存的图片。FPGA通过操作显示数据RAM和配置TFT的相关寄存器,即可实现TFT的显示。
当一帧数据缓存进入FIFO以后,MCU关掉FIFO的写使能,转而从FIFO中读取数据进行处理,这时的处理可以是将数据写入TFT进行显示或者存入SD卡完成拍照功能。数据存储较简单的一种格式是BMP,它只用给每一帧数据加上合适的BMP文件头,然后依次填入图像数据即可。OV7670采集的数据经过FPGA做处理后写到CY7C68013的从FIFO,由CY7C68013将数据打包发送到上位机,通过USB接口实现图像数据的传输。
4.系统调试结果与总结
本系统初步实现了刷卡拍照考勤系统的设计,硬件实物如图4-1所示。显示是2.8寸带有触摸的TFT液晶屏。在液晶屏右边就是高速高存储量的SD卡,可支持的容量为4GB以上。硬件设备还有USB通信接口,FPGA系统板,OV7670图像采集传感器模块,射频读卡模块。系统工作时可以把刷卡拍下的照片存于SD卡中,液晶屏可以实时显示采集的画面,通过按键操作可以选择查看存在SD卡中的照片。
系统实现通过USB通信芯片把图像画面传输到计算机中,在拍照考勤系统软件中实时显示采集的画面,如图4-2所示。软件操作功能有开始、停止图像传输,拍照功能,保存拍下的图像画面,打开存在的BMP图片,设置照片存储路径,还可以进行视频监控,把监控画面保存为AVI视频文件格式。软件左边为动态信息显示内容,软件右边为图像显示区域,实时显示采集的图像信息,图像是320*240像素,每秒可以更新10帧,画面显示还是比较流畅的。图像中文字信息清晰可见,由图可知图像画质还是比较清晰,可以满足一般应用需要。
参考文献
[1]夏宇闻.Verilog HDL数字系统设计教程[M].北京航空航天大学出版社,2003,7.
[2]周立功.单片机与CPLD综合应用技术[M].北京航空航天大学出版社,2003,7.
[3]周立功.EDA实验与实践[M].北京航空航天大学出版社,2007,9.
[4]江国强.EDA技术与应用[M].电子工业出版社,2006,7.