课程设计--基于FPGA的指纹采集接口设计与实现

时间:2019-05-12 20:36:40下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《课程设计--基于FPGA的指纹采集接口设计与实现》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《课程设计--基于FPGA的指纹采集接口设计与实现》。

第一篇:课程设计--基于FPGA的指纹采集接口设计与实现

基于FPGA的指纹采集接口设计与实现

一、引言

相对于密码、证件等传统身份认证技术和诸如语音、虹膜、脸形、签名等其他生物特征识别认证技术而言,指纹识别认证是一种更为理想的身份认证技术。其优点体现在:

1.广泛性——每个人的每一跟手指都具有指纹;

2.唯一性——每个人的指纹都不相同,极难进行复制;

3.稳定性——指纹不会随着年龄的增长而改变;

4.易采集性——指纹图像可运用专业的指纹传感器获取,易于开发识别认证系统。

随着电子商务的发展和消费类电子的普及,越来越多的领域需要指纹识别系统。目前,基于、的独立式指纹识别系统已经成功应用于考勤、门禁、安检等领域。同时,随着微电子技术的进步,设计开发能应用在小型微型系统(如手机、PDA等)的ASIC资金资助:上海市科学技术委员会PDC计划项目(No.047062023)和AM 0403项目(专用集成电路)指纹识别认证系统,将具有很强的现实意义和广阔的市场空间。

由于FPGA(现场可编程门阵列)具有高集成度,低功耗,短开发周期等优点,本文选用FPGA作为指纹识别认证系统的核心器件,以控制其依次实现指 纹采集、指纹特征点提取、存储、比 对等等过程。可见,指纹识别认证系统的首要任务是如何采集到高质量指纹图像以保证后续任务的完成,而指纹图像质量不仅与指纹传感器自身的性能有关,也与数 据传输通信接口的性能密切相关。因此,如何设计性能优良的通信接口是实际系统设计的一个难点问题。于是本文针对这一问题进行了研究,介绍了一种基于 FPGA与滑动式指纹传感器的指纹采集接口的设计与实现方法。

二、简介指纹采集接口器件

本指纹采集接口的核心控制器件为Xilinx公司SpartanIII系列的XC3S400型FPGA芯片,它的封装形式为PQ208。这款芯片采用先进的90ns工艺,最大容量40万门,工作频率高达200M,足以完成系统需要。

另外,本文选用的指纹采集传感器为富士通公司的MBF300滑动式电容指纹采集传感器。这款指纹传感器采用标准CMOS技术,含有8位A/D变换 器,能在2.8V~5V的宽电压范围内工作,能自动检测到是否有指纹到达传感器,并实现在线采集。而它与以往采用的面积式指纹传感器相比最大的优点在于,在保证指纹图像高分辨率(500dpi)的同时大大减小了传感器的尺寸(13.3×3.6)。

MBF300支持3种通信接口:8位微处理器总线接口(microprocessor bus interface)、集成的USB全速接口(Integrated USB Full-Speed Interface)和集成SPI接口(Integrated Serial Peripheral Interface)。其中本文选用SPI接口,并将详细讲述基于MBF300和FPGA的SPI设计与实现方法。

MBF300的SPI接口需要时钟信号线SCK、主进从出信号线MISO、主出从进信号线MOSI和使能信号线,共4根信号线。其中,传感器的时钟 源可以从外部输人,也可以外接一个晶体振荡器后,利用MBF300内部的振荡电路来获得时钟源。在选择了SPI模式后,MBF300的其他两种模式将自动 禁止。在本系统中,MBF300在SPI工作模式下相当于一个从设备,XC3S400作为主设备。XC3S400通过读写MBF300内部的寄存器实现对 它的控制,以完成指纹采集的任务。

另外,MBF300在SPI的从设备状态下,它的通信协议的具体内容包括:

MOSI线上的数据在SCK的上升沿被采样;

MISO线上的数据在SCK的下降沿发生改变;

SCK在空闲状态时,可以为高电平,也可以为低电平;

串行传输过程中,高位在前(最先被移出)。具体时序见图1。

三、指纹采集接口的设计与实现

本文中指纹传感器MBF300的主要任务是采集指纹图像,并自动A/D转换,并把转换后的图像数据通过SPI接口传送到FPGA芯片XC3S400 中,以进行指纹登记或者指纹识别比对。由此可见,指纹采集是整个指纹识别系统的第一步,采集质量的好坏将直接影响系统的性能与准确度的高低,因此,接下来 将重点介绍指纹采集接口——SPI接口的设计,在此过程中,XC3S400为SPI主设备,MBF300为SPI从设备。

1、指纹采集电路

由于FPGA内部采用的SRAM存储器结构,所以需要外置一个PROM在上电时对FPGA进行程序配置。同时,还扩展了一个SRAM和Flash分 别用作存储指纹程序运行时的临时数据和指纹数据信息。另外,为了实现与PC机通信,指纹采集部分还设计一个RS232接口,整个的硬件电路如图2所示。由 图中可以看出,整个指纹采集的核心部件就是FPGA芯片XC3S400,它相当于常见的嵌入系统中的DSP或者ARM,控制着整个指纹采集,以及指纹登 记,指纹比对,结果输出等过程。

2、指纹采集接口硬件设计与实现

本文的SPI接口主设备为FPGA芯片XC3S400,从设备为指纹传感器MBF200。由于FPGA没有特定管脚的要求,本文任意选用XC3S400的4个I/O口137—140,分别与指纹传感器MBF300的相应管脚连接,见图3所示。

3、指纹采集接口软件设计与实现

接口时钟采用传感器内部的12M时钟,整个采集指纹图像流程如图4所示,主要有初始化,调整参数,指纹采集,指纹存储几部分组成。

3.1 初始化XC3S400和MBF300

XC3S400为FPGA器件,因此在系统上电后先要对其进行初始化,即从PROM中读取配置数据,以完成后面的指纹采集、特征点提取、存储、比对等工作;初始化XC3S400之后,接着初始化指纹传感器MBF300,其中部分VHDL源程序如下:

……

ENTITY ini_mbf300 IS

PORT(......pgc : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

dtr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

dcr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

thr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

ctrlb : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

isr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

icr : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);

......);--定义需要初始化的MBF300寄存器;

END ini_mbf300;

ARCHITECTURE ini_mbf300 OF ini_mbf300 IS

BEGIN

pgc <= “00000110 ”;--初始设置图像增益为1.5;

dtr <= “00111111”;

dcr <= “00000001”;

thr <= “00101100”;

ctrlb <= “00000001”;--使能阵列,AD及时钟;

isr <= “00000011”;--清空中断;

icr <= “01011001”;--使能自动检测;…...END ini_mbf300;......3.2 调整MBF300参数

调整MBF300参数,也就是调整PGC、DTR、DCR三个寄存器的值来调整放电时间、放电电流速率和图像的放大增益,直到获得最佳质量的图像。

3.3 采集指纹图像

XC3S400按照MBF300的SPI时序要求,在MOSI信号线上发送一系列读写MBF300寄存器的指令,并由MBF300在MISO信号线上发送A/D转换后的指纹数据,直到一幅完整的256*32的指纹图像传输完毕。

3.4 存储指纹图像

采集到的原始指纹图像保存到片外SRAM中,地址空间为0000 0000 0000 0000~FFFF FFFF FFFF FFFF。实验调试与结论

指纹采集接口的整个程序的VHDL源代码已经通过调试,在ModelSim SE 6.1b中成功仿真,FPGA的SPI时序与MBF300一致,完全能达到指纹采集的目的。于是将MBF300设置为DTR=0x15,DCR= 0x20,PGC=0x01,通过SPI接口采集到的原始指纹数据通过图2中的RS232接口传送给PC机,然后利用Matlab工具数据转化得到指纹图 像,它足以满足后续的指纹特征点提取、比对等要求。

四、小结

这种基于FPGA芯片XC3S400与固体指纹传感器MBF300的SPI接口具有设计实现简单,传输速率高的特点,完 全能胜任指纹采集的任务。而MBF300的高精度更能保证采集到的指纹图像的质量,这有利于简化后续的指纹图像增强、二值化等算法。总之,基于FPGA与 指纹传感器的指纹采集系统的SPI接口的成功实现,为指纹识别技术的SOC片上集成打开一个良好的开端。

本文作者创新点:

虽然基于DSP或者ARM的指纹识别认证系统已经在考勤,门禁等领域实现商品化,但这样的嵌入式系统很难实现小型化集成化,更无法SOC,所以本文 采用FPGA来实现指纹识别认证系统,利用FPGA高集成度,低功耗,短开发周期等优点,并以实现系统的ASIC为研究背景,具有很强的现实意义和广阔的 市场空间。

只有保证高质量的指纹采集才会保证高质量的指纹识别认证,因此本文主要介绍了基于FPGA的指纹识别系统的指纹采集接口部分的设计与实现方案,经实验研究证实该接口完全能满足实际需要,这为指纹识别系统的片上集成打开了一个良好的开端。

参考文献:

[1]谢健阳,李铁才,唐降龙等.指纹识别系统的设计与实现.微计算机信息.2006;22(3-2):156-157;

[2]周宁婕,付宇卓,周煜.基于DSP的指纹识别系统硬件平台设计.计算机仿真.2005;22(1):241-243;

[3]黄林波,杜坤梅,谢建阳等.基于ARM的指纹识别算法的研究与开发.哈尔滨商业大学学报(自然科学版).2005;21(2):179-181;[4]沈小丰, 李小贝.便携式指纹识别系统的设计.自动化技术与应用.2005;24(4):55-58

[5] MBF300 Solid State Fingerprint Sweep Sensor,Data Sheet[Z].2002 [6] Spartan-3 FPGA Family: Complete Data Sheet [Z].2005

第二篇:FPGA数据采集与回放系统设计论文

FPGA数据采集与回放系统设计论文

在个人成长的多个环节中,大家或多或少都会接触过论文吧,论文是我们对某个问题进行深入研究的文章。怎么写论文才能避免踩雷呢?下面是小编为大家整理的FPGA数据采集与回放系统设计论文,欢迎阅读,希望大家能够喜欢。

1系统及其原理

基于通用信号处理开发板,利用FPGA技术控制AD9233芯片对目标模拟信号采样,再将采样量化后的数据写入USB接口芯片CY7C68013的FIFO中,FIFO写满后采用自动触发工作方式将数据传输到PC机。利用VC++6.0软件编写上位机实现友好的人机交互界面,将传输到PC机上的数据进行储存和实时回放。本系统主要实现以下两大功能:1)ADC模块对目标模拟信号进行采样,利用FPGA技术将采样后的数据传输到USB接口芯片CY7C68013的FIFO中存储。2)运用USB2.0总线数据传输技术,将雷达回波信号数据传输到PC机实时回放。分为应用层、内核层和物理层3部分。应用层和内核层主要由软件实现。应用层采用VC++6.0开发用户界面程序,为用户提供可视化操作界面。内核层基于DriverWorks和DDK开发系统驱动程序,主要起应用软件与硬件之间的桥梁作用,把客户端的控制命令或数据流传到硬件中,同时把硬件传输过来的数据进行缓存。物理层主要以FPGA为核心,对USB接口芯片CY7C68013进行控制,通过USB2.0总线实现对中频信号采集。系统设计采用自底向上的方法,从硬件设计开始逐步到最终的应用软件的设计。

2硬件设计

FPGA在触发信号下,控制ADC采样输入信号,并存入FIFO中。当存满时,将数据写入USB接口芯片CY7C68013,同时切换另一块FIFO接收ADC转换的数据,实现乒乓存储,以提高效率。FPGA模块的一个重要作用是控制USB接口芯片CY7C68013。当ADC采样后,数据进入FPGA模块,FPGA控制数据流将其写入CY7C68013的FIFO中,以便于USB向PC机传输。CY7C68013的数据传输模式采用异步slaveFIFO和同步slaveFIFO切换模式。通过实测,前者传输速度约为5~10Mbit/s,后者传输速度最高可达20Mbit/s,传输速度的提高可通过更改驱动程序的读取方式实现。

3软件设计

3.1USB驱动程序设计

USB2.0总线传输技术最高速率可达480Mbit/s。本系统采用批量传输的slaveFIFO模式。CY7C68013芯片内部提供了多个FIFO缓冲区,外部逻辑可对这些端点FIFO缓冲区直接进行读写操作。在该种传输模式下,USB数据在USB主机与外部逻辑通信时无需CPU的干预,可大大提高数据传输速度。Cypress公司为CY7C68013芯片提供了通用的驱动程序,用户可根据需求开发相应的固件程序。

3.2FPGA模块程序设计

系统中FPGA模块的'核心作用是控制AD9233芯片进行采样。AD9233作为高速采样芯片,其最高采样速率达125Mbit/s,最大模拟带宽为650MHz。通过改变采样速率可使该系统采集不同速率需求的信号,扩展了该系统的应用范围。描述FPGA控制USB数据写入接口芯片FIFO的状态机如图6所示。状态1表示指向INFIFO,触发FIFOADR[1:0],转向状态2;状态2表示若FIFO未满则转向状态3,否则停留在状态2;状态3表示驱动数据到总线上,通过触发SLWR写数据到FIFO并增加FIFO的指针,然后转向状态4;状态4表示若还有数据写则转向状态2,否则转向完成。

3.3上位机设计

为实现人机交互,利用VC++MFC在PC机上编写了可视化操作界面,即上位机。上位机既用于数据采集的控制,同时也用于采集数据的实时回放。上位机界面如图7所示。上位机主要功能:

1)按下“检测USB”按钮,可检测USB是否连接正常,并显示USB基本信息。

2)按下“开始采集”按钮,可将采集的数据传输到PC机并实时回放数据波形;再次按下“开始采集”按钮,可暂停数据波形回放。

3)按下“保存数据”按钮,可将采集的数据以*.dat文件的形式存储到PC机硬盘。

4)按下“结束采集”按钮,可关闭采集系统并退出界面;或按下“确定”和“取消”按钮,也可直接退出界面。

4系统实测

为了测试数据采集与回放系统,利用通用信号处理开发板设计了DDS模块。该DDS模块产生一个正弦波作为测试信号,通过AD9744芯片转换后变为模拟信号输出,并将此输出信号接至示波器以便验证系统。数据采集与回放系统的实物图及系统实测波形与回放波形。

5结束语

通过实际测试,基于FPGA的数据采集与回放系统达到了预期设计的要求。此系统能够对目标模拟数据进行采集,并能对采集的数据实时回放,且可将数据以*.dat文件的形式存入PC机硬盘;系统具有高速的采集传输功能,上位机能够实时、动态地回放数据;信号采集板和处理板共用一套硬件,避免了重复制板,在实际调试时可方便地在信号采集与信号处理的工作模式间来回切换,提高了工作效率。原驱动程序官方版本为了满足通用性和稳定性的要求,限制了传输速率,本设计开发了相应的USB驱动程序,提高了传输速率。

第三篇:毕业设计仓库管理系统的信息采集接口设计和实现

仓库管理系统的信息采集接口设计和实现

摘要

近年来,物流业快速发展,处于物流中心环节的仓储系统,也随之加快了发展步伐.随着计算机技术和自动化技术的快速进步,仓储系统已向自动化、智能化方向发展.射频识别(Radio Frequency Identification,RFID)技术作为新一代自动识别技术,其具有的显著优势,在仓储管理中的应用得到了广泛的关注。

无线射频识别技术(RFID)在数据采集、数据传递方面,具有独到的优势。在仓库中采用RFID作为信息传递的载体, 可以有效避免人工输入可能出现的失误,大大提高入库、出库、验货、盘点、补货等工作的效率。推广RFID技术,让该技术尽快发挥其对物流行业强大推动作用,是国际物流企业技术应用的大趋势。

本文在对射频识别系统的结构和工作原理的深入学习基础上,将RFID技术应用于仓库信息采集接口中,实现了一个基于RFID自动出入库的仓库管理原型系统。其中研究的重点是RFID标签与条码信息的关联以及基于RFID出入库的实现。

本文通过使用深圳当代读写器,RFID标签等硬件设备,以及Eclipse,SQL Server等软件系统,实现了软硬件的良好结合。在数据采集方面实现了条码信息与RFID标签的关联,而在出入库过程中屏蔽掉了条码录入的不确定性以及低精确性,实现了基于RFID的自动出入库管理。

在仓库管理系统的信息采集中应用RFID技术,实现货品的动态出入库管理,极大地提高了对出入库产品信息记录采集准确性,同时使货品跟踪,实时查询更为高效。

关键词:RFID,关联,自动出入库

I

The design and implement of the interface of information-collection in warehouse management

Abstract Recently,with the rapid development of logistic,the storage system,in the central tache of the logistic developed quickly.With the fast development of computer technology and automatic technology,the storage system became automated and intelligentized.Radio Frequency Identification(RFID)technology as a newly Auto-ID technology,it has distinct advantages,and its application in storage system draws widely attention.RFID has special predominance in data-collection and data transfer.Apply RFID as the carrier of information transfer,we could avoid the mistake by manual work in input efficiently,and enhance the efficiency of en-warehouse,ex-warehouse,check and complementarity.To promote RFID technology,and to make full use of its impetus to logistic,is a trend in the application of international logistic corporation.After studying the configuration and working principle of RFID System,the paper apply RFID technology to the interface of information-collection in warehouse,and make a warehouse management prototype system based on RFID in en-warehouse and ex-warehouse come true.The paper play emphasis on the association of RFID transponder and barcode and the implement of en-warehouse and ex-warehouse based on RFID.In this thesis,using Shenzhen Drf Reader,RFID transponder and software Eclipse,SQL Server,we make the combination of hardware and software come true.In data-collection,we combine RFID transponder and barcode,and in the process of en-warehouse and ex-warehouse,we avoid the uncertainty and low accuracy caused by barcode input,and implement automated en-warehouse and ex-warehouse based on RFID.Apply RFID technology in the information-collection of warehouse management system,we could make the goods en-warehouse and ex-warehouse automated,and enhance the accuracy of the record of the goods.Meanwhile,we could make the track of the goods and real-time query more efficiently.Keywords: RFID,combination,automated en-warehouse and ex-warehouse

II

目录

摘要....................................................I ABSTRACT...............................................II 1 绪论..................................................1 1.1 课题背景...........................................................................................1 1.2 目的及意义.......................................................................................1 1.3 射频识别技术的国内外应用现状...................................................2 1.4 全文内容和章节安排.......................................................................5 2 射频识别技术简介......................................7 2.1 典型的RFID系统............................................................................7 2.2 射频识别系统基本模型...................................................................7 2.3 无线射频识别技术的分类...............................................................8 2.4 射频识别系统的工作原理.............................................................10 2.5 仓库管理系统中应用射频技术的好处.........................................11 3 开发环境及语言简介...................................12 3.1 软硬件环境.....................................................................................12 3.2 ECLIPSE开发环境............................................................................12 3.2.1 Eclipse平台简介.......................................................................12 3.2.2 Eclipse环境特点.......................................................................13 3.3 JAVA语言及相关技术.....................................................................13

III 3.3.1 Java编程语言...........................................................................13 3.3.2 JDBC技术.................................................................................14 4 仓库管理原型系统的设计................................15 4.1 需求分析.........................................................................................15 4.2 设计目标.........................................................................................16 4.3 设计流程.........................................................................................16 4.3.1 系统总体框架..........................................................................16 5 仓库管理原型系统的实现................................23 5.1 信息采集接口的实现.....................................................................23 5.2 出入库管理的实现.........................................................................25 5.2.1 连接后台数据库的实现..........................................................25 5.2.2 入库管理的实现......................................................................25 5.2.3 出库管理...................................................................................31 6 总结与展望...........................................37 6.1 全文总结.........................................................................................37 6.2 不足及展望.....................................................................................37 致谢...................................错误!未定义书签。参考文献...............................................39

IV 绪论

1.1 课题背景

目前,仓库管理主要是基于相应规范的手工作业及电脑半自动化管理,其弊病显而易见,它需要投入大量人力进行规范物品的放置、定期整理盘点以及出入库登记等工作,这使得仓库管理工作十分繁琐,浪费时间。因此,把射频识别技术应用于仓库管理比较理想,这也是RFID技术一个新的应用领域。

建立一个基于RFID的数字化仓库,支持成品及原辅料仓库数字化管理,包括出入库管理、电子货位管理、温湿度监测等功能。为充分利用仓库的存储空间并提高货物出入库的效率和准确性,以托盘为电子货位管理的基本单位,通过在每个托盘上应用RFID电子标签实现可视化的电子货位管理,并通过货位优化分配规则,实现货物先进先出管理。能对库区温湿度信息进行实时监测,并能通过电子显示牌进行显示。

RFID技术是构建数字化仓库最为关键的技术。通过建立数字化仓库管理系统,可以实现仓储管理信息自动化,促进生产过程的规范化、标准化、数据化,提高生产效率,降低库存和资金占用,增强市场竞争力。

1.2 目的及意义

信息采集作为仓库管理的重要组成部分,关键所在。信息采集的准确性不仅影响到仓库的出入库管理,而且对整个仓库系统的库存管理的自动化和智能化程度。目前,国内物流中心大多采用的是条码扫描技术作为仓库管理中货物流和信息流同步的主要载体。条码技术是一个无论在技术上还是标准上都趋于成熟的非接触式识别技术。但是随着企业对信息化要求的不断提高,条码技术在应用中也存在许多无法克服的缺点。

电子标签作为一种新兴的自动识别技术,它的出现使仓库管理焕然一新。电 1 子标签是用来标识各种物品的一种新的识别技术,这种标签根据无线射频识别原理(RFID,Radio Frequency Identification System)而生产,它与读写器通过无线射频信号交换信息[2][3]。电子标签最大的优点就在于:(1)可以实现非接触、无视觉识别,因此完成产品识别工作时无须人工干预,便于实现自动化;(2)阅读距离远,识别速度快,可实现远距离监测货物快速出入仓库;(3)可进行多目标同时读取,便于监测大量货物同时出入仓库[4][5]。上述优点使电子标签完全实现自动化的信息采集,最大限度地降低了人工干预,为自动化仓库管理的实现提供了坚实的技术保障。电子标签识别技术已经成为目前最具前景的物流信息采集技术,受到很多国际知名厂商和研究机构的青睐。正是基于上述原因,本次课题采用基于电子标签的射频识别技术替代应用已经较为成熟的二维条码识别技术,应用到仓库信息采集系统中。

目前仓储管理系统中应用RFID技术主要有两种模式,一种模式是用电子标签全部替代条形码;另一种模式是将电子标签和条形码结合使用[6]。本课题将电子标签与条形码关联,并没有完全摒弃传统条形码技术,而是把条码信息作为产品的标识信息写入到电子标签中。通过对RFID标签号和写入信息的读取实现基于RFID的自动出入库,这是自动化立体仓库重要的一步。实现了基于RFID的信息采集后,对仓库的生产运作过程都通过标签化的方式进行实时的追踪,便可以实时地监控库存货品状态以及出入库管理,实现对仓库的可视化管理。

在强大的市场导向下,RFID技术在世界范围内必将引起一场重大的变革,它将成为一个新的经济增长点。在现今激烈的市场竞争中,快速、准确、实时的信息获取及处理将成为企业获得竞争优势的关键。RFID技术的应用对于以信息化为基础的现代物流管理来说尤为重要。相信在不久的将来,RFID技术将逐步深入到现代物流管理的方方面面[7][8]。

1.3 射频识别技术的国内外应用现状

射频识别技术在国外发展得很快,RFID产品种类也较多。如德州仪器公司(MI)、Motorola、Phillips、EM、iPico、Alien等世界著名厂家都生产RFID产品,并且它们得产品各有特点,自成系列。下面举几个RFID应用的例子: 高速公路自动收费系统是RFID技术最成功得应用之一。目前中国的高速公路发展非常快,地区经济发展的先决条件就是有便利的交通条件。而高速公路收费却存在一些问题,一是交通堵塞,二是少数不法收费员贪污路费,使国家损失了相当的财政收入。RFID技术应用在高速公路自动收费上,能够充分体现它费接触识别的优势,让车辆高速通过收费站的同时自动完成收费。

一般来说,对于公路收费系统,根据车辆的大小和形状不同,需要大约4m的读写距离和很快的读写速度,也就是要求系统的频率应该在900MHz以上,射频标签一般在车的挡风玻璃后面。现在最现实的方案是将多车道的收费口分为两个部分:自动收费口和人工收费口。将天线架设在道路的上方,在局收费口约50~100m处,当车辆经过天线时,车上的射频标签被头顶上的天线收到,以判别车辆是否带有有效的射频标签。如果没带标签,读写器指示灯指示车辆进入不同车道,人工收费口仍维持现有的操作方式。进入自动收费口的车辆,养路费款被自动从用户账户上扣除,且用指示等及蜂鸣器告诉司机收费是否完成,不用停车就可通过。挡车器将拦下恶意闯入的车辆。香港“驾易通”采用的就是射频识别技术。装有射频标签的汽车能被自动识别,无须停车缴费,大大提高了行车速度和效率[9]。

在生产流水线上用RFID技术,可以实现自动控制、监视、提高生产率,改进生产方式,节约成本。

德国宝马汽车公司在装配流水线上应用射频标签,以便大量地生产用户定制地汽车。宝马汽车的生产是基于用户提出的要求式样而生产的。用户可以从上万种内部和外部选项种选定自己所需要的颜色、引擎型号还有轮胎式样。这样一来,汽车装配流水线上就得装配上百种式样的宝马汽车,如果没有一个高度组织的、复杂的控制系统,就很难完成这样复杂的任务。宝马公司就在其装配流水线上配有RFID系统,他们值用可重复使用的射频标签,该射频标签上带有详细的汽车所需的所有要求,在每个工作电处都有读写器,这样可以保证汽车在各个流水线位置处能毫不出错的完成装配任务[10]。

几家著名的集成电路制造商在竞争激烈的半导体工业中采用加入了射频识别技术的自动识别工序控制系统。半导体生产对于超净的特殊需要,使得在此应 3 用RFID非常理想;而其他自动识别系统,如条形码在如此苛刻的化学条件和超净要求下就不适用。

晶片是集成电路生产的关键。一片8英寸(一英寸_2.54cm)的晶片可以制造出100~1000个。假如每片芯片零售价为100美元,那么一个晶片商所包含的芯片价便至少就是10000美元。一个晶片容器可装25个晶片,4个晶片容器可同时进行处理。那么一次误操作造成的损失就达1000000美元。显然,跟踪每个晶片容器并消除误操作是非常必要的。

在一个超净车间里,通常能有800个位点。晶片容器要从一个位点移动到下一位点。有时,晶片会因进入了错误的堆而造成损失。射频识别系统将核查晶片堆、设备、工序和操作人员。如果其中任何一项的身份不对,设备将不能开始工作,同时向操作人员给出提示[10]。

利用电子物品监视系统(Electronic Article Surveillance,EAS)的目的是防止商品被盗窃。系统是基本配置的RFID,内存容量仅为1比特,即开或管。它是基于从1930年就已知道的磁性物质的特性,有四种主要技术:微波、磁场、声磁、射频。系统包括贴在物体上的射频标签和商品出口处的扫描器。射频标签在安装时被激活,它在激活状态时接近扫描器将会被探测到,这样就会报警。EAS系统已被广泛使用,据估计每年消耗约60亿套。

在货物的跟踪、管理及监控方面,澳大利亚和英国的西思罗机场将射频识别技术应用于旅客行李管理中,大大提高了分拣效率,降低了出错率。在几年前,欧共体就要求从1997年开始生产的新车型必须具有基于射频识别技术的防盗系统。而我国铁路行包自动追踪管理系统还只是在计划推广之中,真正应用还要假以时日。

在射频卡应用方面,1996年1月韩国就在汉城的600辆公共汽车上安装射频识别系统用于电子月票,实现了非现金结算,方便了市民出行。而德国汉莎航空公司则开始试用射频卡作为飞机票,改变了传统的机票购销方式,简化了机场人关的手续。在我国,射频卡主要应用于公共交通、地铁、校园、社会保障等方面。上海、深圳、北京等地陆续采用了射频公交卡。在未来的一、两年,我国射频卡应用最大的项目将是第二代公民身份证。

我国政府在1993年制定的金卡工程实施计划及全国范围的金融卡网络系统的10年规划,使一个旨在加速推动我国国民经济信息化进程的重大国家级工程,由此各种自动识别技术的发展及应用十分迅猛。现在,射频识别技术作为一种新兴的自动识别技术,也将在中国很快地普及,可以说,我国射频识别产品的市场是十分巨大的。国内已经有几家公司在引进国外的新进技术,开发自己的RFID系统。目前,在我国射频识别技术主要应用于公共交通、地铁、校园、社会保障等方面。不久的将来,我国射频识别技术应用将在生产线自动化、仓储管理、电子物品监视系统、货运集装箱的识别以及畜牧管理等方面有所突破。

MIT1999年在RFID和Internet的基础上提出电子产品编码(Electronic Product Code,EPC)研讨会上首次公开展示其研发了近五年的EPC网络——物联网。物联网是在计算机互联网的基础上,利用RFID、无线通信等技术,构造一个覆盖世界上万事万物的实物物联网“Internet of Things”,旨在提高现代物流、供应链管理水平、降低成本。2003年11月1日,国际物品编码协会(EAN/UCC)成立了EPCglobal,正式接管了EPC在全球的推广应用工作。中国物品编码中心在取得了国际物品编码协会的唯一授权后,于2004年4月22日在北京成立了EPCglobal China。而作为物联网象征的RFID技术有“得RFID者得天下”之势,因此在EPC系统的推动下RFID必将迎来更大的发展空间[11]。

1.4 全文内容和章节安排

本文主要内容由四个部分组成:第一部分概述课题背景、课题研究的目的及意义、射频识别技术的应用现状;第二部分详细介绍了射频识别系统的组成,结构,分类,工作原理以及应用于仓库领域的好处;第三部分简要介绍了系统的开发环境以及相关语言,技术;第四部分详细介绍了系统的设计和实现过程,用实际的软硬件实现了一个完整的仓库管理原型系统。

全文分为六个章节,具体安排为:

第一章绪论,简介课题的研究背景,目的及意义,射频识别技术的应用现状; 第二章详细描述了射频识别系统的结构,分类,工作原理,以及应用于仓库管理的好处; 第三章对本系统所使用的开发环境、语言以及相关技术做了简要介绍; 第四章详细介绍了仓库管理原型系统的设计,包括需求分析,设计目标,设计流程;

第五章详细介绍了仓库管理原型系统的实现过程,包括信息采集,入库,出库的实现;

第六章对全文进行总结回顾,提出本文中的不足之处。其中第二、四、五章为全文的重点部分。射频识别技术简介

2.1 典型的RFID系统

射频识别(即Radio Frequency Identification,简称RFID)技术是从90年代兴起的一项自动识别技术。它利用无线射频方式进行非接触双向通信,以达到识别目的并交换数据[12]。

与磁卡、IC卡等接触式识别技术不同, RFID系统的电子标签和读写器之间无须物理接触就可完成识别,因此它可实现多目标识别和运动目标识别,可在更广泛的场合中应用。典型的RFID系统由电子标签(Tag),读写器(Read /Write Device)以及数据交换、管理系统等组成。电子标签也称射频卡,它具有智能读写及加密通信的能力。读写器由无线收发模块、天线、控制模块及接口电路等组成。无源RFID系统,即电子标签内不含电池,电子标签工作的能量是由读写器发出的射频脉冲提供。电子标签接收射频脉冲,整流并给电容充电。电容电压经过稳压后作为工作电压。数据解调部分从接收到的射频脉冲中解调出数据并送到控制逻辑。控制逻辑接受指令,完成存储、发送数据或其它操作[13]。EEPROM用来存储电子标签的识别号及其它用户数据。有源RFID系统中的电子标签由电池供电,可以在较高频段工作,识别距离较长,与读写器之间的通信速率也较高。RFID系统还可以根据工作频率的不同分为低频、中频及高频系统。低频系统一般工作在100KHz~500KHz,中频系统工作在10MHz~15MHz左右,它们主要适用于识别距离短和成本低的应用中;而高频系统则可达850MHz~950MHz及2.4GHz~5GHz的微波段,适用于识别距离长和读写数据率高的场合。RFID系统最大的特点是非接触识别,因此可以同时识别多个电子标签及高速运动的电子标签并且它的电触点无须外露,所以它可以抵抗恶劣环境[14]。

2.2 射频识别系统基本模型

射频识别系统的基本模型如图2.1所示。其中,电子标签又称为射频标签、应答器、数据载体;阅读器又称为读出装置、扫描器、读头、通信器、读写器(取 决于电子标签是否可以无线改写数据)。本文所采用的电子标签是可读写的,所以阅读装置可以称为读写器。电子标签与阅读器之间通过耦合元件实现射频信号的空间(无接触)耦合;在耦合通道内,根据时序关系,实现能量的传递和数据的交换[15]。

图2.1 射频识别系统的基本模型图

2.3 无线射频识别技术的分类

无线射频识别技术的分类有几种[15]:

1、根据标签的供电方式分为有源和无源系统。

射频标签可分为有源的和无源的两种。有源射频标签使用标签内电池的能量,识别距离较长,可达几十米甚至上百米,但是它的寿命有限并且价格较高;标签由于带有电池,因此,有源标签的体积比较达,无法制作成薄卡(比如信用卡标签)。无源射频标签不含有电池,利用耦合的读写器发射的电磁场能量作为自己的能量,它的重量轻,体积小,寿命可以非常长,很便宜,可制成各种各样的薄卡或挂扣卡;但它的发射距离受限制,一般是几十厘米到几十米,且需要有较大的读写器发射功率。

2、按工作方式分类可分为主动式系统和被动式系统。

一般来讲,无源系统为被动式,有源系统为主动式。主动式的射频系统用自身的射频能量主动地发送数据给读写器(读头),调制方式可为调幅、调频或调 8 相。被动式的射频系统,使用调制散射方式发射数据,它必须利用读写器的载波来调制自己的信号,在门禁或交通的应用中适宜,因为读写器可以确保只激活一定范围内的射频系统,在有障碍物的情况下,采用调制散射方式,读写器的能量必须来去穿过障碍物两次。而主动方式的射频标签发射的信号仅穿过障碍物一次,因此主动方式工作的射频标签主要用于有障碍物的应用中,距离更远。

3、根据标签的可读写性分为只读、读写和一次写入多次读出卡。按读写方式将射频卡分为三种:可读写(RW)、一次写入多次读出(WORM)和只读(RO)RW卡成本比WORM卡和RO卡高,WORM卡是用户可以一次写入的卡,写入后数据不能改变。RO卡存有唯一的号码,不能更改,这样具有较高的安全性。

只读标签内部只有只读存储器(Read Only Memory,ROM)和随即存储器(Random Access Merror,RAM)。ROM用于存储发射器操作系统程序和安全性要求较高的数据,它与内部的处理器或逻辑处理单元完成内部的操作控制功能,如响应延迟时间控制、电源开关控制等。另外,只读标签的ROM中还存储有标签的标识信息,这些信息可以在标签制造过程中由制造商写入ROM中,也可以在标签开始使用时由使用者根据特定的应用目的写入特殊的编码信息。这种信息可以只简单地代表二进制中的“0”或“1”,也可以像二维条码那样,包含复杂的相当丰富的信息。但这种信息只能是一次写入,多次读出。只读标签中的RAM用于存储标签反应和数据传输过程中临时产生的数据。另外,只读标签中除了ROM和RAM外,一般还有缓冲存储器,用于暂时存储调制后等待天线发送的信息。

4、根据工作频率可以分为低频、高频及超高频和微波系统

读头发送无线信号时所使用的频率被称为RFID系统的工作频率,基本上划分为五个主要范围:低频(30~300kHz)、高频(3~30MHz)和超高频(300MHz~3GHz)以及微波(2.45GHz以上)。低频系统一般工作在100~500kHz,常见的工作频率有125kHz、134.2kHz;高频系统工作在10~15MHz左右,常见的高频工作频率为13.56MHz;超高频工作频率为850~960MHz,常见的工作频率为915MHz;微波工作在2.4~5GHz的微波频段。低频系统用于短距离、低成 9 本的应用中,如多数的门禁控制、动物监管、货物跟踪;高频系统用于门禁控制和需传送大量数据的应用;超高频系统应用于需要较长的读写距离和较高的读写速度的场合,如火车监控、告诉公路收费等系统。

5、根据工作距离分为远程、近程和超近程系统。

按工作距离分为远程、近程和超近程系统。识别距离在100cm以上的系统称远程系统;识别距离lOcm至100cm的系统称近程系统;识别距离在0.2cm至lOcm的系统统称超近程系统。

6、根据电子标签种类不同。

根据电子标签种类的不同,标签与读头组成了四种系统,分别为:只读被动标签与读头系统,只读主动标签与读头系统,可读写被动标签与读头系统,可读写主动标签与读头系统。

2.4 射频识别系统的工作原理

用图2.2来说明RFID系统的工作过程,这个例子是无源系统,即电子标签为被动电子标签,标签内不含电源,电子标签的工作能量由读写器发出的射频脉冲提供[15]。

2.2 读写器和电子标签的内部结构图

1.读写器天线发射能量形成电磁场,区域大小取决于发射功率、工作频率和天线尺寸。2.电子标签进入这个区域时,接收到读写器的射频脉冲,经过整流后给电容充电。电容电压经过稳压后作为工作电压。

3.数据解调部分从接收到的射频脉冲中解调出命令和数据并送到控制逻辑部分,逻辑控制部分接收指令并完成存储、发送数据或其他操作。

4.如需要发送数据,则将数据调制后从收发模块发送出去。

5.读写器接受到返回的数据后,解码并进行错误校验来决定数据的有效性,然后通过RS232,RS422,RS485或无线接口将数据传送到计算机的数据采集 Middleware中。读写器发送的射频信号除提供能量外,通常还提供时钟信号,使数据同步,从而简化了系统的设计。

有源RFID系统的工作原理同上述的过程基本相似,只是其工作能量是由电池提供的。

2.5 仓库管理系统中应用射频技术的好处

将RFID应用于智能仓库货物管理。RFID完全有效地解决了仓库里与货物流动有关的信息管理。它不但增加了一天内处理货物的件数,还能及时掌控这些货物的一切信息;射频标签贴在货物所通过的仓库大门边上,读写器和天线都放在叉车上,每个货物都贴有条码,所有条码信息都被存储在仓库的中心计算机里,该货物的有关信息都能在计算机里查到。当货物被装走运往别地时,由另一读写器识别并告知计算中心它被放在哪个拖车上。这样管理中心可以实时地了解到已经生产了多少产品和发送了多少产品,并可自动识别货物,确定货物的位置。与传统的仓库管理系统相比,射频技术的引入使得仓库管理的面貌焕然一新。仓库管理的效率,准确性都能得到显著提高。另一方面,使得仓库的自动化程度提升,减少了人工介入的环节。总之,射频识别技术应用于仓库益处多多,目前正得到业内的普遍关注与重视[15][16][17]。开发环境及语言简介

3.1 软硬件环境

为了进行本课题的实验研究,需要配置以下环境: 硬件环境:微型计算机,内存大小:512M。

软件环境:操作系统:windowsXP,开发平台:Eclipse,SQL Server 语言:Java语言及JDBC

3.2 Eclipse开发环境

3.2.1 Eclipse平台简介

Eclipse最初是作为IBM内部的一个辅助项目而诞生的,旨在为IBM提供一个在常用软件基础上集成其桌面工具的手段。自从加01年秋以开放资源的形式发布以来,Eclipse取得了出乎意料的成功。目前,它已经拥有了自己忠实的拥夏者,固定的社区,以及不断扩充的强大应用功能[18]。

Eclipse采用了不同的视角,即一种“以平台为中心”而非“开发工具为主”的思考方式。Eclipse平台的骨干主要就是一个“通用”的IDE(Integrated Development Environment),即集成开发环境。它既面向所有工具,又不针对任何一个特定工具,一切开发工具都可以同时被使用。

作为一个集成开发环境,Eclipse是一个工具集成的平台,可以想象成一个各种工具友好共存的大家庭。它使得用户的建模、设计、编码以及测试工具有机地结合起来,以一种更高效、更便捷的方式完成开发任务。Eclipse为开发团队成员提供了一种更方便的手段,去创建、控制,以及管理一套软件产品。团队成员可以访问彼此的工作产品,它们是由与Eclipse通过存储中性接口集成在一起的源码管理系统SCM(Source Code Management)来进行管理的。以此避免了数据的导入、导出及其导致的错误通信。基于Eclipse的所有工具因此能够以持久、一致的方式进行工作[18]。3.2.2 Eclipse环境特点

Eclipse提供了一种体系结构和一套Java框架集合来实现以上目标,从而使得编写集成工具更加容易。用户可以通过Eclipse集成其执行任务所正在使用的现有工具,并随着其经验的积累,使用Eclipse建造额外的工具。该框架结构还为所有工具提供了一个一致的方式,去实现用户界面、软件包,部署新功能,提供在线帮助等.用户可根据JDT(Java Development Tool)的强大功能和扩展性,去开发新的Java工具,扩展Java模型和访问Java模型的API(Application Programming Interface)集,这些特点作为JDT的一部分,为Eclipse增添了更强的竞争优势[18]。

Eclipse支持多种模型。Eclipse与开发模型是分离开来的。无论是传统的爆布式开发模型,还是迭代式开发方法,用户都可以享受到Java工具、调试环境及平台提供的紧密集成。

3.3 Java语言及相关技术

3.3.1 Java编程语言

目前面向对象的编程语言应用得相当广泛,己经取代传统的过程性语言成为程序开发的主流。Java是一种完全的面向对象语言,它衍生于C++语言,但又剔除了C++的复杂、易错的一些语言元素,功能强大又极易于使用。Java编程语言产生于1990年,那时SUN公司利用C++语言为消费类家电设备编写人机控制代码,受到了代码不能移植的困扰。SUN公司因此而提出了解释型的语言Java,该名称来源于印尼的一个岛屿“爪哇”,此岛盛产咖啡。Java语言开发的窗口程序左上角的小图标是一杯热气腾腾的咖啡,这就是Java程序的标志。

Java是目前使用最广泛的网络编程语言之一,它具有简单、面向对象、稳定、与平台无关、解释型、多线程、动态等特点。它的程序运行需要一个解释器,也就是所谓的“虚拟机”。虚拟机以某种高速算法解释执行Java的面向对象代码。Java从Java1.0版本到现在已发展成Java2.0版本,版本的升级意味着程序的修正和类库的增长。从Java2.0开始,Java分为3个版本J2ME(微型版本)、13 J2SE(标准版本)和J2EE(企业级版本),分别用于支持消费类电子设备、标准个人电脑以及企业级应用的开发,版本之间的区别不仅在于所支持的类库的大小不同,也在于各版本都对应着不同的Java虚拟机。也正是由于虚拟机的使用,使得Java与其他的面向对象语言相比较,具备了一个突出的优点:Java成为跨平台的语言,不仅可在Windows平台上运行,也可以在UNIX平台及一些家电设备、通信设备上运行[19]。3.3.2 JDBC技术

JDBC(Java DataBase Connectivity)是Sun公司开发的、用于Java数据库连接的应用程序编程接口API,需要使用支持ANSI SQL(Structured Query Language,即结构化查询语言)作为查询语言的数据库。它具备以下三个特点:JDBC是SQL级别的API;JDBC借鉴了现存数据库API的经验;JDBC简单易行[20]。

JDBC是SQL级别的API,意味着在JDBC接口中,允许SQL语句作为参数嵌入到方法中。但JDBC可以在数据库和Java应用程序之间进行平稳的转换。为了在独立于特定数据库的模式下完成这项工作,JDBC需要那些数据库厂商提供其接口的运行时实现。这些实现能够以所有可识别的方式把SQL调用发送到数据库中。

JDBC在设计上与开放数据库连接ODBC(Open DataBase Connectivity)很相似。JDBC和数据库建立连接的一种方式是首先建立一个JDBC-ODBC桥接器。由于ODBC驱动程序被广泛使用,建立这种桥接器后,使得JDBC有能力访问几乎所有类型的数据库。用JDBC写的程序能够自动地将SQL语句传送给相应的数据库管理系统(DBMS)。仓库管理原型系统的设计

4.1 需求分析

本文设计一个基于RFID出入库的仓库管理原型系统,可以有效提高仓库管理的效率和自动化程度,和应用条码技术相比,应用RFID电子标签主要有以下优势:

1.出入库速度快

应用条形码时,以仓库为例,根据应用实际,在托盘上应用电子标签,读写一个托盘上货物的时间大概在2~3 s之间(包括完成写信息地所有时间),采集数据时操作员不需要下车。而如果应用条形码,一般需要采集三次数据(产品编号、生产批次、托盘编号),加上操作员上下车的时间,大概在10~15 s之间.综合考虑叉车从生产部到仓库的运行时间(大概在5~10 s之间),仓储系统在托盘上应用电子标签比应用条形码效率要提高2~3倍。

2.货物出库准确

托盘使用电子标签后,在货物出库时,电子标签存储的托盘货物和货位信息要和系统出库的信息进行比较,只有两者数据一致后才允许出库。通过现场使用,在应用电子标签后,系统地出库准确性能达到100%。

3.操作方便

系统应用条形码时,托盘货物信息的采集需要叉车工下车操作,货物出库时,叉车工既要操作条码扫描设备,又要操作叉车触摸屏,整个过程操作不太方便。应用电子标签后,除拣选出库外,入库和整盘出库都不需要叉车工下车操作,叉车工只需要在叉车上操作触摸屏。对于叉车工来说,应用电子标签后,操作十分方便,省时省力。

因此,在仓库管理中应用RFID系统,可以有效的提高货物的出入库速度和货物出库的准确性,使出入库操作更加方便快捷。同时,从长远考虑,可以节省仓库管理的运行成本。

4.2 设计目标

本课题基于软硬件结合的思想,旨在建构一个仓库管理原型系统,能实现简单的出入库管理以及数据采集的功能。预达到的目标如下:

1.RFID标签的读写

基于电子标签技术的射频识别系统有电子标签、电子标签读写器以及数据交换、管理系统等组成。电子标签技术是课题中的关键技术,要设计完成并实现对电子标签的读写功能。其中写入的信息主要是货品的条码及数量信息,以实现条码与RFID的关联。这其中需要对读写器等硬件进行学习,同时能利用软件,利用面向对象语言实现与硬件的连接交互。RFID标签读写是实现基于RFID自动出入库的关键所在,因此这一部分的设计是整个仓库管理最重要的部分之一。

2.基于RFID的出入库的实现

这一部分要实现货品的出入库管理,它是基于信息采集的基础上实现的,因为本系统的出入库管理不是传统概念上的出入库管理,而是基于RFID的出入库原型系统的实现。因此在信息采集设计完成的基础上,出入库的管理是相对容易实现的。

4.3 设计流程

4.3.1 系统总体框架

本系统主要由三个部分构成,信息采集系统,入库管理,出库管理(如图2.1所示)。其中出入库是作为信息采集的验证部分来设计的。信息采集系统主要是PC机与RFID读写器之间的信息交互,出入库部分则为前台操作和后台数据库之间的关联。下面对具体方案进行描述。

图4.1 系统总体框架示意图

1.构建基于RFID技术的信息采集系统(1)硬件部分

本采集系统采用的是深圳当代DRF系列读写器,SDK以动态链接库文件形式提供给用户使用。

深圳当代通信技术有限公司开发的射频识别系统是由该公司完全独立自主开发,采用当今最先进的技术设计方案设计,通讯协议兼容ISO18000-6B、EPC双协议,适用于多种电子标签的新款读写器产品。针对无源射频标签,成功解决了远距离、高速移动目标标识物的识别难题。读写器设计有Wiegand口、RS485口和RS232输出接口,丰富的接口给用户在外接设备中以较大的选择。产品在确保高技术指标性能的基础上,同时也极大满足低发射功率的绿色环保标准。其各项技术指标在同类产品中均处于同行业领先地位。

DRF系列读写器,采用内部高度集成化、模块化和外部一体化的设计,性能优越、产品外形美观大方,具有读写距离远、速度快、数据准确和抗干扰能力强等特点,使产品的功能、性能、应用、安全和稳定性较行业内同类产品都有很好的体现。用户可根据SDK开发指南进行二次开发。(2)软件部分

使用已封装好的一个类DrfReaderdll,此类是按照读写器的通讯协议编写的。其中有开关串口函数,读标签函数,写标签函数等。根据实际操作情况调用所需函数完成对电子标签的读写工作,实现信息采集的功能。下面对此动态链接库接口做一简要介绍: public class DrfReaderDll {

public static native int openPort(String strComm);

public static native int closePort(int portHnd);

public static native int resetDrf(int portHnd);

public static native String getUid(int portHnd);

public static native String read(int portHnd, int addr);

public static native int writeOne(int portHnd, int addr, String values);

public static native int writeFour(int portHnd, int addr, String values);

public static native String getGen2Epc(int portHnd);

public static native int writeGen2(int portHnd, int addr, String values);

public static native int initGen2(int portHnd, int bitCount);

public static native String getTag(int portHnd);

public static native String readTag(int portHnd);

public static native int writeTag(int portHnd, String values);

static

{

} } 函数System.loadLibrary告诉系统需要加载DrfReaderDll.Dll文件。由于此类中的函数均为静态函数,故可以直接调用。下面对这些函数作简要介绍。

openPort(String strComm)函数:打开串口,其中String strComm为串口号,即“COM1”或“COM2”。成功返回串口句柄。System.loadLibrary(“DrfReaderDll”);18 closePort(int portHnd)函数:关闭串口,portHnd为串口句柄。成功返回0。resetDrf(int portHnd)函数:读写器复位。portHnd为串口句柄,成功返回0。getUid(int portHnd)函数:获取多个标签的UID号,portHnd为串口句柄,返回格式为”03”+”Uid1”+”Uid2”+”Uid3”;“03”为标签数量。

read(int portHnd, int addr)函数:从指定地址读取多个标签的编码信息,portHnd为串口句柄,addr为地址,地址范围为0~255,前面八位保存标点的ID号(即标签个数)。

writeOne(int portHnd, int addr, String values)函数:向标签中写入编码信息,一次写一个字节,地址范围“18~255”,前18位为厂家写入用于标识标签号的,故调用此函数时写地址必须至少从18开始。Values为写入的内容。

writeFour(int portHnd, int addr, String values)函数:向标签中写入编码信息,一次写四个字节,起始地址必须是4的倍数。在实际测试中此函数调用是有错的,固不可用。

getGen2Epc(int portHnd)函数:获取Gen2标签的EPC号,返回标签数量”03”+”epc1”+epc2”+”epc3”。

writeGen2(int portHnd, int addr, String values)函数:向标签中写入编码信息,一次写2个字节,地址范围 “0-5”;高位写入高地址,地位写入低地址。

initGen2(int portHnd, int bitCount)函数:初始化Gen2标签,初始化位数默认值为96位。

getTag(int portHnd)函数:读托盘标签UID号。readTag(int portHnd)函数:读托盘标签编码信息。

writeTag(int portHnd, String values)函数:往托盘标签写编码。

因此,在对上述函数有了一定了解后,信息采集接口部分的设计只需要调用上述DrfReaderDll类中的相应函数即可实现。2.货物自动出入库

这一部分包括入库单的管理与查询,条码的捕获,RFID标签的读写,出库单的管理与查询,现有库存的管理与查询,其中还涉及到JDBC处理后台数据库的操作。

后台数据库中存有入库单信息,现有库存信息,出库单信息,条码及对应货品名称的信息。货物在入库时查询入库单,若经检测为未处理的入库单,则扫货入库,将扫入的货物信息写入电子标签即实现电子标签的写入操作,同时更新后台数据库的现有库存信息;出库时根据出库单查看现有库存,并有人工输入需要出库的托盘号及数量,同时改写电子标签的信息以及数据库中现有库存信息。

因此货物的自动出入库部分涉及到软件部分。在入库设计方面,设计步骤需按照下述进行:入库单的查询操作,条码扫货操作,将条码及相关的数量信息写入RFID电子标签,读RFID入库。

出库操作则与入库操作相反,同时出库操作不像入库那样需涉及RFID标签的读写,而只是在出库时对相应的托盘标签予以改写即可。有关出库设计方面,其步骤为:出库单的查询,根据出库单有关信息查看现有库存,根据现有库存来决定具体出库的货品。

出入库部分均涉及到了数据库的操作,下面对具体的数据库设计做一简要介绍:

本系统使用的是武烟项目所使用的数据库,本系统新建了四个表作为实现本课题任务的专用表:条码-物品名称对应表EAN_NAME(如表5.1 所示),现有库存表CURRENT(如表5.2 所示),入库单表ENT_LIST(如表5.3 所示),出库表OUT_LIST(如表5.4 所示)。本数据库的表全为方便调试而设计。

表5.1 条码-物品名称对应表

在此表中,EAN_13为条码号,NAME为条码号所对应的货品名称。凡是涉及到入库,出库,查看现有库存等跟条码有关的都需查询此表,以确定条码所对应的货品名称。

表5.2 现有库存表

在此表中,BARCODE为库存货品对应的条码号,AMOUNT为托盘中所含货品的数量,RFID为货品所在托盘的标签号,DATETIME为货品的入库时间。现有库存表是用来查询现有库存的,在出库时,选择完出库单后,根据出库单上的条码信息查询现有库存是否有相关货品。此表中的RFID项对应RFID标签号。

表5.3 入库单表

入库单表是用来存放入库单信息的。ENT_ID为入库单据号,BARCODE为入库单上货品对应的条码号,AMOUNT为入库单据上要求的入库货品数量,WORK_STATUS为入库单状态标志,标志为“1”时表示此入库单已处理,标志为“0”时表示此入库单未处理。

表5.4 出库单表

出库单表是用来储存出库单信息的,其中OUT_ID为出库单据号,AMOUNT为所需出库货品的数量,BARCODE为出库货品对应的条码号。

仓库管理原型系统的实现

5.1 信息采集接口的实现

在上一部分中,已对DrfReaderDll这一类中的函数做了简要介绍,下面为信息采集接口的实现。

在信息采集接口设计中,DrfReaderDll类中的函数是不需要全部用到的。在系统的实现过程中中,只用了openPort,closePort,read,writeOne,getTag这几个函数。

在入库读标签的实现时,本系统设计一个RFID只写入一种条码。写入信息设为16位,条码占13位,数量占3位。根据数量的位数设置写入信息的格式,若数量在10以下,可将写入信息设置为”条码”+”00”+”数量”。以此类推,若数量是两位数,则写入信息设置为”条码”+”0”+”数量”。程序见下方: int length=String.valueOf(tiaomabb.rtable.getValueAt(1, 0)).length();String write;if(length==1){ write=String.valueOf(tiaomabb.rtable.getValueAt(1,0))+“00”+String.valueOf(tiaomabb.rtable.getValueAt(1,1));} else if(length==2){ write=String.valueOf(tiaomabb.rtable.getValueAt(1,0))+“0”+String.valueOf(tiaomabb.rtable.getValueAt(1,1));} else { write=String.valueOf(tiaomabb.rtable.getValueAt(1,0))+String.valueOf(tiaomabb.rtable.getValueAt(1,1));} 其中,条码号和数量都来自与表中,故调用函数tiaomabb.rtable.getValueAt(i,j);从表中取得所需信息后还需调用String.valueOf()将它们转换为字符串型,以便对写入信息进行封装。

写入信息封装完毕以后即可调用DrfReaderDll类中的函数了。com=DrfReaderDll.openPort(“COM2”);打开串口“COM2”; for(int i = 0;i < 42;i++){ int m = DrfReaderDll.writeOne(com, 20 + i, “00”);if(m < 0)m = DrfReaderDll.writeOne(com, 20 + i, “00”);} 此循环调用了写一个字节的函数,用来将RFID标签清空。清空的办法就是从地址20开始不断往里面写“0”。

之后即可对RFID标签写入之前封装好的信息,程序实现如下: for(int i = 0;i <(write.length())/ 2;i++){ r = DrfReaderDll.writeOne(com, 20 + i, write.substring(2 * i, 2 * i + 2));if(r < 0){ r = DrfReaderDll.writeOne(com, 20 + i, write.substring(2 * i, 2 * i + 2));} 由于一次写入两位,所以将写入信息的长度除以2作为写入次数,这样再通过String类中的substring方法实现一次写入两位,写入地址从20开始。写入不成功时r<0的,用一个if语句以确保信息肯定能写入。

这样以来,便实现了RFID标签与条码的关联,这里本系统设计的的是一个标签关联一个条码,标签里面含有条码号以及数量。这样便完成了信息采集。

5.2 出入库管理的实现

5.2.1 连接后台数据库的实现

在出入库的实现过程中,都涉及到一个Java连接数据库的技术,即JDBC技术,通过搭建一个JDBC-ODBC桥,即可用在Java语言中用SQL语言进行有关的查询,删除或插入操作。下面为连接部分涉及到的程序块:

Class.forName(“com.microsoft.jdbc.sqlserver.SQLServerDriver”);程序

加载驱动con=DriverManager.getConnection(“jdbc:microsoft:sqlserver://localhost:1433”,CONNET_USER,CONNET_PASSWORD);创建连结,其中CONNET_USER和CONNET_PASSWORD 分别为数据库的用户名和密码

sm=con.createStatement();创建数据库表格

rs=sm.executeQuery(“sql”);sql可以为一个任意的SQL指令.这样一来,有关对后台数据库的处理都可参照上述的程序语言进行。5.2.2 入库管理的实现

(1)入库单的查询与相关信息的获取

在入库流程中,首先输入入库单号进行查询,这一部分涉及到一个数据库的查询问题。根据输入的单据号在入库单表中进行相关信息的查询。首先需查询此单据的状态,即WORK_STATUS,即确定此入库单是否处理。查询部分的程序语句如下:

rs=sm.executeQuery(“select*from DWMSDB2.dbo.ENT_LIST where ENT_ID='”+getid+“'”);

查询数据库中是否有键入的出库单据号 if(rs.next()==false)

不含有此出库单则弹出一个出错提示框 { JOptionPane uncontainpane=new JOptionPane(“对不起,数据库中不存在此入库单据号,请重新输入!”,JOptionPane.ERROR_MESSAGE);25 JDialog uncontaindialog=uncontainpane.createDialog(this,“Warning!”);uncontaindialog.setVisible(true);danju.setText(null);} else

含有此出库单,则将数据库中相应信息赋给相应变量 { rs=sm.executeQuery(“select*from DWMSDB2.dbo.ENT_LIST where ENT_ID='”+getid+“'”);while(rs.next()){ ent_id=rs.getString(“ENT_ID”);amount=rs.getString(“AMOUNT”);work_status=rs.getString(“WORK_STATUS”);barcode=rs.getString(“BARCODE”);} } getid为Java程序中的一个变量名,用来存放由用户键入的入库单据号。

入库单查询界面见图5.1 所示。

图5.1 入库单查询界面

若为已处理的入库单,即所查的ENT_ID为“0”,则系统会弹出提示入库单已处理。若为未处理的入库单,则查询到的条码号还需在条码-物品名称对应表中查询条码号对应的货品名称。接着,将上述查到的信息用程序写入到入库单信息列表中。

将有关信息列入入库单信息列表只需涉及一个JTable组件的setValueAt的方法,写入的详细过程见程序部分。

这里举一个例子,当键入入库单据号为2(注:此入库单为未处理的入库单),则查询结果显示如图5.2 所示:

5.2 查询到未处理的入库单

此时,有关入库单的查询工作即完成,即可进入下一步的扫码。

(2)条码采集以及条码与RFID标签信息的关联

本系统采用由键盘键入13位数据以模拟条码扫描枪的形式,同时还需键入数量。当输入信息不完整以及条码格式不正确时,系统都会提示操作员输入有误。当确定输入无误时,系统才进行数据库的查询,这一查询主要是为了完成条码与货品名称的对应。于是,将查到的货品名称以及键入的条码号与数量列于表中。由于本系统设置了一个托盘只存放一种物品,所以当第二次键入的条码与第一次键入条码号不同时,系统也会有错误提示。同时托盘限定了承载货品的数量为三十,所以在进行条码扫货时当超过托盘限制也会有错误提示。条码扫描组盘入库界面图见图5.3。

图5.3 条码采集图

限于篇幅,这里只举一个差错提示的例子。当第一次键入一个条码号为1234567890122,而数量为10的条目,假设第二次再键入一个同种条码而数量为25的条目,则系统会有超过组盘数量的提示,如图5.4 所示。

图5.4 超过组盘数量的错误提示

当完成了条码扫描入库组盘后即可将有关信息写入到RFID标签中。写入的信息主要是条码采集列表中的条码号以及数量。写入格式及方法在5.1 信息采集接口实现中已介绍过,这里不再赘述。以下为写入部分的程序代码: for(int i = 0;i < 42;i++){ int m = DrfReaderDll.writeOne(com, 20 + i, “00”);if(m < 0)m = DrfReaderDll.writeOne(com, 20 + i, “00”);

} for(int i = 0;i <(write.length())/ 2;i++){ r = DrfReaderDll.writeOne(com, 20 + i, write.substring(2 * i, 2 * i + 2));if(r < 0){ r = DrfReaderDll.writeOne(com, 20 + i, write.substring(2 * i, 2 * i + 2));} 其中write为将条码和数量封装好的一个待写入标签的String型变量。

在实际运行中,RFID读写器的写入速度比较慢,从写入到写入成功需要一定的时间,由于一个条码只关联一个RFID标签,所以写入速度不会影响到系统的效率。

(3)基于RFID入库的实现

当条码信息与RFID标签关联成功后,即可执行入库操作。关联成功如图5.5所示。此时系统会弹出对话框以列表的形式提示操作人员已关联的条码与RFID信息。这一过程涉及到RFID读写器的读出。下面来介绍一下它的具体实现: 由于在写标签时我们是从标签的第20位开始写入的,因此将标签信息读出也需从第二十位开始。

for(int i=0;i<2;i++){

e[i]= DrfReaderDll.read(com1, 20+8*i);

if(e[i].equals(“Fail”)){

e[i]=DrfReaderDll.read(com1, 20+8*i);} com1为打开串口返回的句柄,由于只写入了一个条码及其数量,因此我们设置一个含有三个数据的String型数组足以用来存放从读写器读到的信息。由于读标签函数每次能读到8位,因此第二次读取数据时就从隔第一次读取时位置的八位即可。If语句用来不断读标签直到读到信息为止。

读到的信息通过String类的substring方法进行适当的截取及封装,即可将读到的信息分成条码部分和数量部分列于条码RFID关联表中。另外,还需要调用DrfReaderDll的getTag函数用来获取RFID标签号以存入信息表中。具体操作如下:

String[] e=new String[3];29 int com1=DrfReaderDll.openPort(“COM2”);

打开串口 for(int i=0;i<2;i++){ e[i]= DrfReaderDll.read(com1, 20+8*i);if(e[i].equals(“Fail”)){ e[i]=DrfReaderDll.read(com1, 20+8*i);}

读RFID信息 } String getTag = DrfReaderDll.getTag(com1);

读RFID号 DrfReaderDll.closePort(com1);

关闭串口 String total;rukulast last=new rukulast();total=e[0]+e[1];

将读取到的信息连接起来 Integer m=Integer.valueOf(total.substring(15,17));截取信息的数量部分部分并将

其转换为Integer型以便写入表格中

last.tianjia(total.substring(2,15),m,getTag);调用表格的添加函数,将条码,数量

以及RFID号写入表格

这样一来条码RFID关联表信息就包括条码号,数量以及RFID号,当操作人员选择了将此记录写入数据库,则系统会将列表中相关信息加入数据库的现有库存列表CURRENT中。

图5.5 条码与RFID关联表

5.2.3 出库管理

出库界面全部设计在一个JFrame中,出库过程相对简单而不必像入库那样需要弹出多个对话框来实现入库过程的时序关系。出库界面见图5.6所示。出库过程与入库过程有一定的相关性,只是少了信息采集这一环节,下面对出库过程的实现做一简要介绍。

图5.6出库界面图

(1)出库单查询

由键盘键入出库单据号,然后系统在数据库中执行相应的查询工作,查询在OUT_LIST表中是否有所键入的出库单号。若有,还需进行另一查询,即条码名称关联表的查询,根据出库单上的条码号信息在条码名称对应表中查询条码对应的名字。之后将这些信息由程序写入出库单据相关信息列表中,这一过程与入库单查询较为类似。

rs=sm.executeQuery(“select*from DWMSDB2.dbo.OUT_LIST where OUT_ID='”+getid+“'”);查询数据库出库单表中是否有用户键入的出库单 if(rs.next()==false)

不含用户键入的出库单则弹出出错提示窗口 {

JOptionPane uncontainpane=new JOptionPane(“对不起,数据库中不存在此出库单!”,JOptionPane.ERROR_MESSAGE);JDialog uncontaindialog=uncontainpane.createDialog(this,“Warning!”);uncontaindialog.setVisible(true);forName.setText(null);} else

含有此出库单则将相应的出库单信息赋给相应变量

{ rs=sm.executeQuery(“select*from DWMSDB2.dbo.OUT_LIST where OUT_ID='”+getid+“'”);while(rs.next()){ barcode=rs.getString(“BARCODE”);outid=rs.getString(“OUT_ID”);amount=rs.getString(“AMOUNT”);} } 此时,若键入一个有效的出库单,则出库单列表如图5.7所示。

图5.7 出库单查询成功

(2)现有库存查询

当出库单列表生成后,查看现有库存则需根据出库单列表中的条码号在CURRENT表中进行查询。之后,关于此货品的信息都会列在现有库存表中,包括货品所在的托盘号,数量,入库日期等都会一一列出。

rs2=sm2.executeQuery(“select*from DWMSDB2.dbo.NEW_CURRENT where BARCODE='”+m+“'”);

根据出库单中的条码号查询现有库存表 if(rs2.next()==false)

没有查到则提示出错框,数据库中不存在此物品 { JOptionPane uncontainpanel=new JOptionPane(“对不起,数据库中不存在此物品,无法执行此出库单!”,JOptionPane.ERROR_MESSAGE);JDialog uncontaindialog1=uncontainpanel.createDialog(this,“Warning!”);uncontaindialog1.setVisible(true);ckbiao.cktable.setValueAt(null,1,0);ckbiao.cktable.setValueAt(null,1,1);ckbiao.cktable.setValueAt(null,1,2);33 ckbiao.cktable.setValueAt(null,1,3);} else

查找到相关货品,则将相关货品信息列入现有库存表中 { rs2=sm2.executeQuery(“select*from DWMSDB2.dbo.NEW_CURRENT where BARCODE='”+m+“'”);while(rs2.next()){ barcode2=rs2.getString(“BARCODE”);amount2=rs2.getString(“AMOUNT”);RFID=rs2.getString(“RFID”);datetime=rs2.getString(“DATETIME”);cbiao.tianjia(barcode2,RFID,name,amount2,datetime);} }

在出库单查询的基础上,点击查看现有库存,则现有库存则会列入相应表中,见图5.8 所示。

图5.8 列出现有库存

(3)出库操作

出库过程,本系统设计的是根据现有库存列表由操作员键入需要出库的托盘号及数量,当键入托盘号不在列表中,系统会提示错误,如图5.9 所示。这样以来,由操作员选择出库托盘号和数量,出库时根据操作员键入的托盘号和数量,对RFID标签进行改写,同时对后台数据库中的现有库存表进行更改。对RFID标签的改写要看操作员键入的标签号,若选择了某一托盘物品全部出库,则只需将标签清零,同时执行JDBC的删除操作对数据库中有关该托盘的货品进行删除。当操作员只选择出库某一托盘的部分货品,则只需,将标签上的信息调减,同时删除数据库中的有关信息。这样就完成了出库操作。有关RFID标签的写入以及数据库操作在上述部分都有较多解释,在此部分不再赘述。

图5.9 出库时输入托盘号有误

总结与展望

6.1 全文总结

经过前面各章的详细论述,对本次设计的全局和细节已经进行详细的介绍。下面将通过系统的回顾,对本次设计进行总结,并得出设计结论。

本次课题通过设计一个仓库管理系统,将RFID这一近年来新兴的技术应用于仓库领域。根据目前仓储管理系统中应用RFID技术的情况,主要有两种模式,一是用电子标签全部替代条形码;另一种是将电子标签和条形码结合使用.本文所设计的仓储管理系统中应用RFID技术。本文所设计的系统将电子标签和条形码结合使用,托盘上使用电子标签,产品包装上仍然使用条形码。

通过在信息采集接口,将RFID技术与条码关联,实现了条码和RFID的良好结合,使得读写RFID标签即可获得出入库货品的相关信息。并且在这一基础上,实现了基于RFID的自动出入库设计。本系统所设计的出入库都根据数据库表中所存的出库入库单信息作为仓库货品的出入库凭证。同时,基于RFID出入库管理均涉及到一个RFID标签的写入或读出。因此本课题与硬件结合较为紧密。

通过本次课题的研究,在完成了课题任务的基础上,关联条码信息与RFID标签,实现基于RFID的自动出入库这一仓库管理原型系统。另一方面,对Eclipse这一开发平台以及Java语言都有了初步理解与掌握,另外对Java中连接数据库的技术JDBC也有了一定研究和学习。本次课题的完成,收获颇丰。

6.2 不足及展望

近年来,RFID技术应用于仓库领域受到了广泛关注。而信息采集是RFID应用在仓库领域的关键,它涉及到程序的编写,同时又涉及到与硬件的交互通信。本文在对Java语言及读写器认真学习的基础上,实现了课题的基本任务,但受限于时间、研究水平和实验设备等条件的限制,存在的问题也不少,主要集中在 以下几个方面:

(1)DrfReaderDll类中的函数很多都没有用到,在实际的仓库系统中,信息

采集,对读写器的操作还是比较复杂的,所以应该充分利用动态链接库所封装的函数,将信息采集,读写标签设计地更加适用于实际情况。

(2)在界面设计时主要应用了Java中的Swing,而实际的Eclipse中也有专门设计界面的SWT。而且第一次用Java做界面,界面设计不够美观。而且入库过程弹出对话框过多,影响界面的美观,使得入库程序显得过分繁杂。

(3)由于Java学习还在起步阶段,所以在编写程序时不够得心应手。程序编写的也比较冗杂,不够简洁。对Eclipse这一开发平台也是第一次使用,所以它强大的功能还没有充分利用。

(4)本系统的自动出入库设计限于时间设计的较为简单,只是涉及到出入库单,现有库存的查询,而对入库货位分配等冗杂信息均未作考虑。所以本课题所设计系统有待进一步完善。

射频识别(RFID)作为一门新兴技术,由于其相对于其他自动识别方式固有的优势,在今天的自动识别和数据采集(AIDC)领域受到了极大的关注。随着相关软硬件技术的不断发展和成熟,射频识别技术将在自动识别领域中有着美好的前途。

参考文献

[1] 自动识别技术简介.无线射频在线.http://www.rfidonline.net/classroom/ [2] 邱小勇,刘凯,冯春.RFID与现代物流管理发展的探讨[J].物流技术.2004.2:45-47 [3] 朱博,孙运强.基于RFID的便携式仓库管理终端设计.应用科技.2007.7:15-17.[4] 刘宝杰,许勇,李柏.RFID技术在仓储管理中的应用.高科技产业技术与创新管理.2007:90-92.[5] 王晓东.射频识别技术在仓库管理中的应用.物流技术.2006.9:45-46.[6] 季全忠,冯彦辉,冯金富,左燕军.射频识别技术在仓库管理中的应用.航空计算技术.2006.7:81-82.[7] 吕志彤,姚智刚.基于射频识别技术的船维修器材仓库管理系统的研究.中国修船.2005(6):38-39 [8] 李建军,刘建中,朗为民.射频识别技术在物流管理领域中的应用.电脑与信息技术.2006.10:15-18.[9] 孟小宁,刘凯.基于RFID技术的准自动化仓库管理.物流科技.2006.5:29-31.[10] 张纲,马庆容,沈磊等.射频识别技术的现状和发展研究.半导体技术,2004,29(4):6-9 [11] 魏二有.RFID技术在数字化仓库的应用.设施与设备.2007:177-179.[12] 张殿东.无线射频识别(RFID)技术.电信技术,2005,02:86-88 [13] 沈宇超,沈树群.射频识别技术及其发展现状[[J].电子技术应用.1999(1):4-5.[14] 张益强,郑铭,张其善.远距离射频识别系统及其应用前景.中国数据通信.2004.1:95-98.[15] 游战清,李苏剑等编著.无线射频识别技术(RFID)理论与应用[M].北京,电子工业出版社.2004.[16] 朱茗.基于射频识别的自动立体仓库信息管理系统:[硕士学位论文] 北京工商大学.2006.6.[17] 秦虎.基于射频识别技术的数据采集和处理的研究及应用:[硕士学位论文]

华中科技大学.2005.5.[18] 陈刚.ECLIPSE从入门到精通.北京,清华大学出版社,2007.7.[19] 林建铭,高明扬编著.精通Java 2.北京,科学出版社.2001.3.[20] 孙一林,彭波.Java数据库编程实例.北京,清华大学出版社,2003.7.[21](美)Jeff Friesen著,钟萍等译.用实例学Java 2.北京,电子工业出版社,2002.7.[22](美)戴特(Deitel,H.M.)等著,钱方等译.高级Java 2大学教程.北京,电子工业出版社,2003.2 40

第四篇:基于FPGA的数字电子时钟设计与实现(范文模版)

《数字电子技术》课程设计

设计题目:基于FPGA的数字电子时钟设计与实现

系 部: 电子与信息工程系 专业班级: 电子信息工程08秋(1)班 小组成员: 胡修远 学 号: 08031145 指导教师 : 陶亚雄 周丽婕

完成日期: 2012年 1 月

目录

一、所用设备与器材................................................1 1.1仪器设备...................................................1 二.系统方案......................................................1 2.1 设计思想..................................................1 2.1.1课题背景........................................1 2.1.2 Quartus II软件.................................3 2.2工作原理及系统框图.........................................8 三.软件方案......................................................9 3.1 程序流程图................................................9 3.1.1 24进制........................................9 3.1.2 10进制流程图.................................10 3.1.3 6进制........................................11 3.1.4 60进制.......................................11 3.1.5 from0to9......................................12 3.1.6 分频模块.......................................12 3.1.7 总流程图.......................................13 3.2 程序清单.................................................14 3.2.1头文件complete_clock程序......................14 3.2.2 counter24程序.................................15 3.2.3 counter60程序.................................15 3.2.4 from0to9程序..................................16 3.2.5 counter6程序..................................17 3.2.6 counter10程序.................................17 3.2.7 分频程序.......................................17 3.2.8 校时模块程序...................................18 四.调试及结果...................................................18

4.1 模块仿真.................................................18 4.1.1 counter10模块仿真.............................18 4.1.2 counter24模块仿真.............................19 4.1.3 counter60模块仿真.............................19 4.1.4 分频模块仿真...................................19 4.1.5 top_clock计时模块仿真.........................19 4.2 程序下载.................................................20 4.3分析运行结果..............................................21 4.3.1 设计总结.......................................21 4.3.2 心得体会.......................................21 4.3.3 致谢...........................................22

2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

一、所用设备与器材

1.1仪器设备

使用仪器设备有FPGA DE2-70开发板、PC机、信号发生器。

图1 FPGA DE2-70开发板图

二.系统方案

2.1 设计思想

利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。扩展功能设计为倒计时功能,从59分55秒至59分59秒,每秒亮一盏灯报时。

2.1.1课题背景

20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力的推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能更进一步,产品更新换代的节奏也越来越快。

20世纪80年代末,出现了FPGA(Field Progrommable Gate Array),CAE和CAD技术的应用更为广泛,它们在PCB设计的原理图输入,自动布局布线及PCB分析,以及逻辑设计,逻辑仿真布尔综合和化简等方面担任了重要的角色,2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

为电子设计自动化必须解决的电路建模,标准文档及仿真测试奠定了基础。硬件描述语言是EDA技术的重要组成部分,VHDL是作为电子设计主流硬件的描述语言。本论文就是应用VHDL语言来实现秒表的电路设计。VHDL语言是标准硬件描述语言,它的特点就是能形式化抽样表示电路结构及行为,支持逻辑设计中层次领域的描述,借用了高级语言的精巧结构简化电路描述,具有电路模拟与验证及保证设计的正确性,支持电路由高层向底层的综合变换,便于文档管理,易于理解和设计重用。

EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA 技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。EDA 设计可分为系统级、电路级和物理实现级。

用VHDL语言开发的流程:(1)文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件。

(2)功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)。

(3)逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。

(4)布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3(5)编程下载:确认仿真无误后,将文件下载到芯片中。

本设计为一个多功能的数字钟,具有时、分、秒计数显示功能,以24小时的循环计数:具有校对功能。本设计采用EDA技术,以硬件描述语言VHDL为系统逻辑描述手段设计文件,在Quartus 工具软件下,采用自顶向下的设计方式,由各个基本模块共同构建了一个基本FPGA的数字钟。

系统主芯片采用EP2C70F896C6,有时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。经编译和仿真所设计的程序,在可编程逻辑器件上下载验证,本系统能够完成时、分、秒的分别显示,由按键输入进行数字钟的校时、清零、启停功能。

随着电子技术的发展,数字电路朝着速度快、容量大、体积小、重量轻的方向发展。人们对时间计量的精度要求越来越高,钟表的数字化给人们生产生活带来了极大的方便。数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。

本次设计以数字电子为主,实现对时、分、秒数字显示的计时装置,周期为24小时,显示满刻度为23时59分59秒,并具有校时功能和报时功能的数字电子钟。课程设计所采用的开发平台:Quartus II是可编程片上系统的综合性设计环境,它支持CPLD和FPGA器件的开发。FPGA(Field Programmable Gate Array)现场可编程门阵列,内部主要由许多可编程逻辑模块组成,靠纵横交错的分布式可编程互连线连接起来,可构成极其复杂的逻辑电路。本次课程设计所采用的FPGA芯片 Cyclone II系列的EP2C70F896C6。

2.1.2 Quartus II软件

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

Quartus II使用基本流程如下: 1.打开Quartus II软件,创建工程

a.点击工具栏File,利用创建工程向导(New Project Wizard)创建新工程。

图2 新建工程图

b.工程目录为c:altera71sp1quartus(路径中不能包含中文,不能建立在桌面上),工程名称以及顶层设计实体为counter10(以英文字母开头)。

图3 创建路径图

c.选择与开发板上芯片型号对应的器件。硬件选cycloneⅡ EP2C70F896C6。

图4 芯片选择图

d.进入第三方EDA工具选择窗口,在此可以选择使用第三方的EDA工具,如一些布局布线、综合、仿真软件。

e.确认无误后,单击Finsh完成工程创建。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

f.工程创建成功后,在【Project Navigator】(资源管理窗口)显示当前工程的层次、文件和设计单元。

g.执行File—New—Design Files—verilog HDL File,建立原理图文件。

图5 原理图文件建立图

h.完成后点击File----save as,保存到c:altera71sp1quartus目录下。i.使用文本编辑器输入源码,完成原理图编译。

j.编译工程,执行Processing—start—start Analysis&Elaboration进行编译,分析检查输入文件是否有错误。2.创建仿真波形文件

a.点击New—Vector Waveform File—save as

图6 新建仿真波形文件图

b.在Name框图中右击鼠标,Insert—Insert Node or Bus—Node Finder—在Filter中选择Pinns:all,点击list,点击“》”将左侧列表中的内容移动到右侧列表中。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图7 插入管脚图

c.在CP上右击选择value,选择时钟脉冲信号clock(周期可自行设置)。EN和nCR都选择高电平(Forcing High)。

图8 输入信号赋值

d.选择Assignments—Settings设置—simulater settings—模式mode选择功能型Functional e.选择Processing—generate functional simulation netlist生成功能网表

图9 生成功能网表图

f.点击波形仿真的快捷键,进行波形的仿真。

g.分别给EN和nCR不同的电平信号,观察分析波形的变化。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图10 EN=1 nCR=1

图11 EN=0 nCR=1

图12 EN=1 nCR=0 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图13 EN=0 nCR=0

图14 EN脉冲 nCR=1

2.2工作原理及系统框图

利用数字电子技术、EDA设计方法、FPGA等技术,设计、仿真并实现一个基于FPGA的数字电子时钟基本功能,其基本组成框图如图1所示,振荡器采用ALTERA的DE2-70实验板的50MHz输出,分频器将50MHz的方波进行分频进而得到1Hz的标准秒脉冲,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。电子时钟扩展功能为倒计时流水灯。数字电子钟的电路组成框图片如下图: 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

多功能数字钟顶层模块振荡器校时电路倒计时模块分频器CP 1Hz时计数器(24进制)分计数器(60进制)秒计数器(60进制)时译码显示6计数器10计数器分译码显示6计数器10计数器分译码显示 图15 系统框图

1.数字钟电路系统由主体电路和扩展电路两大部分所组成。

2.数字电子时钟电路具有时、分、秒计时,秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器按照“24进制”规律计数。

3.准确计时,以数字形式显示时、分、秒的时间,计数器的输出经译码器送显示器。

4.具有分、时校正功能,校正输入脉冲频率为1Hz 5.复位功能,时、分、秒计时清零。

6.扩展功能为:具有仿广播电台整点报时的功能,即每逢59分51秒、52秒、53秒、54秒、55秒及57秒,LED绿灯依此点亮,59分59秒时,LED红灯亮,形成倒计时流水灯报时。

三.软件方案

3.1 程序流程图

3.1.1 24进制

小时采用24进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,23],使能信号EN等于0时,计时器保持。当高位大于2或高位等于2且低位大于3时,计时器清零,否则继续计时。流程图见下图。2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

开始CP↑or nCR↓YnCR=0 ?YNNEN=0 ?YNNQH>2 or Q>23Y清零保持清零Q=Q+1 图16 24进制程序流程图

3.1.2 10进制流程图

当CP↑,EN和nCR为高电平时计数,计数范围为[0,9],使能信号EN等于0时,计时器保持。当计时到9的时候,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓YnCR=0 ?YNNNEN=0 ?YQ=9 ?Y清零保持清零NQ=Q+1

图17 10进制流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.3 6进制

当CP↑,EN和nCR为高电平时计数,计数范围为[0,5],使能信号EN等于0时,计时器保持。当计时到5的时候,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓YnCR=0 ?YNNNNEN=0 ?YQ=5 ?Y清零保持清零Q=Q+1 图18 6进制流程图

3.1.4 60进制

分、秒采用60进制计时,当CP↑,EN和nCR为高电平时计数,计数范围为[0,59],使能信号EN等于0时,计时器保持。当个位等于9时向十位进位;当个位等于9十位等于5,计时器清零,否则继续计时。流程图见下图。

开始CP↑or nCR↓NnCR=0?NEN=0?Y个位Q1=9?NYQ2=Q2+1Q2=5?YQ1=9?NNN清零保持Q1=Q1+1Y清零Q1=Q1+1 图19 60进制流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.5 from0to9

数码管有7段组成,分共阳极和共阴极,本次设计采用共阳极数码管。当输入为低电平时,数码管显示;当输入为高电平时,数码管不显示。用这样的方法输入不同的高低信号控制数码管的显示。

HEX=7'b0000001HEX=1001111HEX=b0010010HEX=7'b0000110HEX=7'b1001100开始Case DNHEX=7'b0100000HEX=7'b1111111HEX=7'b0001111HEX=7'b0000000HEX=7'b0000100显示7显示8显示9显示6YHEX=7'b0100100显示5显示0显示1显示2显示3显示4 图20 from0to9流程图

3.1.6 分频模块

开始50MHz方波10^2分频500KHz方波10^2分频5KHz方波10^2分频50Hz方波10^2分频0.5Hz方波

图21 分频模块流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.1.7 总流程图

开始开始NCPCP↑↑or nCRor nCR↓↓Y分频模块YYNYAdjHrkey=1?AdjHrkey=1?NNN时低位时低位=9?=9?NYYAdjMinKey=1?AdjMinKey=1?YY低位清零高位进位低位清零高位进位N高位高位>2or>2or时时>23>23YNN分低位分低位=9=9??NN清零清零YY秒低位秒低位=9=9??NNNY低位清零高位进位低位清零高位进位YY低位计数低位计数低位计数低位计数YNY秒高位秒高位=5=5??低位清零高位进位低位清零高位进位低位计数低位计数NYY高位高位=5=5??NN秒高位清零,分低位进位秒高位清零,分低位进位高位计数高位计数清零清零Y高位计数高位计数N低位计数低位计数Y低位清零高位进位低位清零高位进位N分低位分低位=9=9??NN分高位分高位=5=5??YY高位计数高位计数Y分清零,时低位位进位分清零,时低位位进位低位清零高位进位低位清零高位进位Y时低位时低位=9=9??NNNNYY高位高位>2or>2or时时>23>23清零清零低位计数低位计数

图22 总流程图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

3.2 程序清单

3.2.1头文件complete_clock程序

module complete_clock(HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,_50MHzIn,_1Hz,_50Hz, _5KHz,_500KHz,AdjMinkey,AdjHrkey,nCR,Alarm,LED0,LED10,LED3,LED4,LED5,LED6,LED7,LED8,LED9);

output [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;output Alarm,_1Hz,_50Hz,_5KHz,_500KHz;output LED0;output LED10;output LED3;output LED4;output LED5;output LED6;output LED7;output LED8;output LED9;wire [7:0] HEX0,HEX1,HEX2,HEX3,HEX4,HEX5;input nCR,_50MHzIn;wire _1Hz,_50Hz,_5KHz,_500KHz;wire LED0;wire LED10;wire LED3;wire LED4;wire LED5;wire LED6;wire LED7;wire LED8;wire LED9;input AdjMinkey,AdjHrkey;wire [7:0] Second,Minute,Hour;Divided_Frequency C1(_5KHz,_500KHz,nCR,_50MHzIn);//调用分频模块,输入50MHz的频率,经两次分频后变为5KHz Divided_Frequency U0(_1Hz,_50Hz,nCR,_5KHz);//调用分频模块,输入5KHz的频率,经

两次分频后变为1Hz top_clock U1(Hour,Minute,Second,_1Hz,nCR,AdjMinkey,AdjHrkey);//调用校时模块,对时、分模块进行校时 baoshi U2(Alarm_Ring,Minute,Second,_50Hz,_5KHz);assign Alarm=Alarm_Ring;assign LED0=({Minute,Second}==16'h5951);//定义LED0为59分51秒时灯亮 assign LED10=({Minute,Second}==16'h5952);//定义LED10为59分52秒时灯亮 assign LED3=({Minute,Second}==16'h5953);//定义LED3为59分53秒时灯亮 assign LED4=({Minute,Second}==16'h5954);//定义LED4为59分54秒时灯亮 assign LED5=({Minute,Second}==16'h5955);//定义LED5为59分55秒时灯亮 assign LED6=({Minute,Second}==16'h5956);//定义LED6为59分56秒时灯亮 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

assign LED7=({Minute,Second}==16'h5957);//定义LED7为59分57秒时灯亮 assign LED8=({Minute,Second}==16'h5958);//定义LED8为59分58秒时灯亮 assign LED9=({Minute,Second}==16'h5959);//定义LED9为59分59秒时灯亮 from0to9 U10(HEX0,Second[3:0]);//个位秒调用译码 from0to9 U9(HEX1,Second[7:4]);//十位秒调用译码 from0to9 U3(HEX2,Minute[3:0]);//个位分调用译码 from0to9 U4(HEX3,Minute[7:4]);//个位分调用译码 from0to9 U5(HEX4,Hour[3:0]);//个位时调用译码 from0to9 U6(HEX5,Hour[7:4]);//十位时调用译码 endmodule 3.2.2 counter24程序

module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN;output [3:0] CntH,CntL;reg [3:0] CntH,CntL;always @(posedge CP or negedge nCR)begin if(~nCR){CntH,CntL}<=8'h00;//当nCR=0时,计时器清零

else if(~EN){CntH,CntL}<={CntH,CntL};//当EN=0时,停止计时,保持 else if((CntH>2)||(CntH>9)||((CntH==2)&&(CntL>=3))){CntH,CntL}<=8'h00;else if((CntH==2)&&(CntL<3))begin CntH<=CntH;CntL<=CntL+1'b1;end else if(CntL==9)begin CntH<=CntH+1'b1;CntL<=4'b0000;end else begin CntH<=CntH;CntL<=CntL+1'b1;end end Endmodule 3.2.3 counter60程序

module counter60(Q1,Q2,Q3,Q4,Q5,Q6,Cnt,Cnt1,Cnt24,nCR,EN,CP,LED,LED1,LED2);input CP,nCR,EN;output [7:0] Cnt;output [7:0] Cnt1;output [7:0] Cnt24;output [6:0] Q1;output [6:0] Q2;output [6:0] Q3;output [6:0] Q4;output [6:0] Q5;output [6:0] Q6;output LED;output LED1;output LED2;wire [7:0] Cnt;2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

wire [7:0] Cnt1;wire [7:0] Cnt24;wire [6:0] Q1;wire [6:0] Q2;wire [6:0] Q3;wire [6:0] Q4;wire [6:0] Q5;wire [6:0] Q6;wire LED;wire LED1;wire LED2;wire ENP;wire ENP1;wire ENP2;wire ENP3;counter10 UC0(Cnt[3:0],nCR,EN,CP);counter6 UC1(Cnt[7:4],nCR,ENP,CP);counter10 UC2(Cnt1[3:0],nCR,ENP1,CP);counter6 UC3(Cnt1[7:4],nCR,ENP2,CP);counter24 UC4(Cnt24[7:4],Cnt24[3:0],nCR,ENP3,CP);assign ENP=(Cnt[3:0]==4'h9);assign ENP1=(Cnt==8'h59);assign ENP2=((Cnt1[3:0]==4'h9)&&(Cnt==8'h59));assign ENP3=((Cnt1==8'h59)&&(Cnt==8'h59));assign LED=~CP;assign LED1=~CP;assign LED2=~CP;from0to9 UC5(Q1,Cnt[3:0]);from0to9 UC6(Q2,Cnt[7:4]);from0to9 UC7(Q3,Cnt1[3:0]);from0to9 UC8(Q4,Cnt1[7:4]);from0to9 UC9(Q5,Cnt24[3:0]);from0to9 UC10(Q6,Cnt24[7:4]);Endmodule 3.2.4 from0to9程序

module from0to9(HEX,D);output [6:0] HEX;input [3:0] D;reg [6:0] HEX;always @(D)begin case(D)4'd0:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000001;4'd1:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001111;4'd2:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0010010;2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

4'd3:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000110;4'd4:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1001100;4'd5:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100100;4'd6:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0100000;4'd7:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0001111;4'd8:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000000;4'd9:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b0000100;default:{HEX[0],HEX[1],HEX[2],HEX[3],HEX[4],HEX[5],HEX[6]}=7'b1111111;endcase end endmodule 3.2.5 counter6程序

module counter6(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)begin if(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零 else if(~EN)Q<=Q;//当EN=0时,停止计时,保持 else if(Q==4'b0101)Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时 end Endmodule 3.2.6 counter10程序

module counter10(Q,nCR,EN,CP);input CP,nCR,EN;output [3:0] Q;reg [3:0] Q;always @(posedge CP or negedge nCR)begin if(~nCR)Q<=4'b0000;//当nCR=0时,计时器清零 else if(~EN)Q<=Q;//当EN=0时,停止计时,保持 else if(Q==4'b1001)Q<=4'b0000;else Q<=Q+1'b1;//计时器正常计时 end Endmodule 3.2.7 分频程序

module Divided_Frequency(_1HzOut,nCR,_5kHzIN);input _5kHzIN,nCR;output _1HzOut;supply1 Vdd;//定义 Vdd 是高电平

wire [15:0] Q;//计时器的输出信号(中间变量)wire EN1,EN2,EN3;// 计时器的使能信号(中间变量)counter10 DU0(Q[3:0],nCR,Vdd,_5kHzIN);//调用十进制 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

counter10 DU1(Q[7:4],nCR,EN1,_5kHzIN);counter10 DU2(Q[11:8],nCR,EN2,_5kHzIN);counter10 DU3(Q[15:12],nCR,EN3,_5kHzIN);assign EN1=(Q[3:0]==4'h9);assign EN2=(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign EN3=(Q[11:8]==4'h9)&(Q[7:4]==4'h9)&(Q[3:0]==4'h9);assign _1HzOut=Q[15];//assign _500HzOut=Q[0];endmodule 3.2.8 校时模块程序

module top_clock(Second,Minute,Hour,_1Hz,nCR,AdjMinKey,AdjHrkey);input _1Hz,nCR,AdjMinKey,AdjHrkey;output [7:0] Second,Minute,Hour;wire [7:0] Hour,Minute,Second;supply1 Vdd;wire MinCP,HrCP;counter60 UT1(Second,nCR,Vdd,_1Hz);//调用counter60,对秒计时 counter60 UT2(Minute,nCR,Vdd,~MinCP);// 调用counter60,对分校时

counter24 UT3(Hour[7:4],Hour[3:0],nCR,Vdd,~HrCP);//调用counter24,对时校时 assign MinCP=AdjMinKey ? _1Hz:(Second==8'h59);//当MinCP=AdjMinKey时,执行校时,当MinCP≠AdjMinKey时,秒计时至59 时向分进位 assign HrCP=AdjHrkey?_1Hz:({Minute,Second}==16'h5959);//当HrCP=AdjHrkey时,执

行校时,当HrCP≠AdjHrkey时,分

秒计时至59分59秒时向时进位 Endmodule 四.调试及结果

4.1 模块仿真

4.1.1 counter10模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,9]

图counter10仿真波形图 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

4.1.2 counter24模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,23]

图24 counter24仿真波形图

4.1.3 counter60模块仿真

CP为时钟脉冲;当CP↑,EN和nCR为高电平时Q计数;Q的计数范围为[0,59]

图25 counter60仿真波形图

4.1.4 分频模块仿真

分频器是将输入的基本时钟信号分频为其他模块需要的5kHZ 和1HZ 的信号.其中CLK 输入为5kHZ , CLK2 输出1HZ 信号,分频实际也是用了计数器的原理。

图26 分频模块仿真波形图

4.1.5 top_clock计时模块仿真 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

当秒计时到59时,向分进一位,当秒计时到59且分计时到59时向时进一位。当时分秒计时到23’59’59时,计时器清零。

图27 top_clock计时模块仿真波形图

4.2 程序下载

图28 时测试校时,时至23 图29 时测试校时,时进位至00

图30 分测试校时分至59

图31 分测试校时,分进位至00 图32 59分52秒,LEDG1亮 图33 59分55秒,LEDG4亮 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

图34 59分57秒,LEDG6亮

图35 59分59秒,LEDR0亮

4.3分析运行结果

4.3.1 设计总结

本次大型作业我们所研究的课题是基于FPGA的数字电子时钟的设计与实现。时钟设计的方法是通过计时模块、分频模块、校时模块、译码显示模块和倒计时报时模块来构成该电子时钟。计时模块为时分秒计时,采用24进制计时。因此该模块中调用了24进制和60进制两个程序,其中60进制采用的是调用6进制和10进制的方法来实现。

分频模块输入一频率为50MHz的信号,经过四次10^2分频,将信号逐次分为500KHz、5KHz、50Hz直至0.5Hz。计时模块就由分频器分频出来的标准秒脉冲进行计时,时、分、秒计时模块分别由二十四进制时计数器、六十进制分计数器和六十进制秒计数器完成,校时模块完成时和分的校正。我们还进行了扩展功能设计——倒计时流水灯功能,从59分55秒至59分59秒,每秒亮一盏灯报时,55秒至58秒,依此亮绿灯,59秒亮红灯。

通过这两周的课程设计,我们熟悉了基于FPGA的数字电子时钟的设计与实现的整个流程,文本编辑,功能仿真,逻辑综合,布局布线,编程下载,每一步刚开始或多或少有些问题,但在我们不断努力学习补充修改后,最终圆满完成数字电子时钟的时、分、秒的计时和校时功能,复位功能,还设计实现了倒计时流水灯扩展功能。

4.3.2 心得体会

为期两周的大型作业,我们组顺利完成了基于FPGA的数字电子时钟设计与实现的课程设计。从刚开始对Verilog语言非常陌生,到最后接近熟练地掌握Verilog语言的程度,期间花费不少时间和精力,同时也收获了很多,学会了 2012.1

上海师范大学天华学院电信系数字集成器件与应用专业课程设计

使用Verilog语言编程仿真电路实验,掌握了可编程逻辑器件的应用开发技术,熟悉了一种EDA软件使用,掌握了Verilog设计方法,即分模块分层次的设计方法。

在设计的过程中,因为刚刚接触这种编程语言,我们也遇到了很多问题。但是我们没有放弃过,不断检查纠正错误。Verilog源程序的编写很容易出现错误,这就需要耐心的调试。因为很多情况下,一长串的错误往往是由一个不经意的小错误引起的。有时程序一直出错找不到原因的时候,我们也会去虚心向别的组的同学请教,或者和他们一起讨论问题,从中得到一些启发。

由于设备和时间的限制,我们还有一部分扩展内容没能够完成,即数字钟的整点蜂鸣报时功能。但本次设计实验已使我们对Verilog语言产生了浓厚的兴趣,在以后的学习生活中会主动去了解更多有关这方面的知识及其在实践中的应用。

这次大型作业,不仅让我们又掌握了一些新的知识,也提高了我们的动手能力和科学严谨的精神。其次也培养了我们自学的能力,遇到不明白的地方可以通过思考、查资料、与同学交流多种方式解决问题。这些对于我们以后的学习和工作都有极大的帮助。

4.3.3 致谢

最后,我们要感谢系里提供这一次的机会让我们学到更多知识,并且提供了这么好的学习条件,设备、学习环境、师资等方面都非常好。同时也要感谢周丽婕老师和陶亚雄老师两周以来耐心的指导,在我们遇到问题的时候,是她们悉心的指导帮助和不厌其烦的讲解下我们才得以顺利的完成这次的设计,我们再次表示由衷的感谢!

第五篇:基于FPGA的VME自定义总线接口设计论文

1.引言

在光刻机双工件台控制系统中,VME总线使用了三个接口共430根线路接入,通过背板互联的有P1,P2两个接口320根线路接入。实际上VME标准协议并没有完全使用全部线路,而是为用户预留了部分自定义线路,增加了设计的灵活性。由于VME总线主要用于工控机与各板卡的通信,同步控制卡与激光计数卡和光栅译码卡使用总线就会产生严重冲突,影响采用是实时性,因此这里将VME总线中未使用的管脚作为自定义总线管脚,这样避免了增加新的硬件接口,而且在硬件设计上可以和VME总线一起考虑。

自定义同步总线数据传输完全根据主控总线提供的时序进行,地址线包含了对数据发送和接收方的定义。每个总线传输周期中,数据发送端和接收端的身份根据地址寻址关系自动切换,而避免了总线控制权更迭时的握手,及数据传输优先级或传输抢占等问题,总线控制信号来自同一个时钟域,从节点仅响应控制信号,可忽略节点间时钟相位差影响。在每个伺服周期,设计了一个数据传输序列来实现共享数据交互。数据传输序列由若干个总线传输周期构成,每个周期完成32bit的数据共享。通过设定总线地址来设置数据传输序列的传输内容,当所有的设定总线地址被遍历,则当前周期数据传输已经完成,所有被规划传输的数据都被所有的运动控制卡所共享。

2.VME自定义总线逻辑协议的实现

VME自定义总线是一条并行运行的总线,该总线釆用数据广播的方式,可以方便各个板块同时接收同一个数据。其由同步控制卡提供5KHz时钟,每200us同步控制卡将数据锁存线拉高,向光栅译码卡发出一个脉冲,此时光栅译码卡和激光干涉仪等设备锁存该时刻的数据,其读数不再发生变化,然后同步控制卡产生一连串的读取信号,将各个光栅尺的数据读出。同时切换总线上的地址,并生成釆样保持,读取和地址三个信号置于自定义总线,运动控制卡通过对自身所需的地址的识别在读信号低电平时获得相应位置传感器的信号。

2.1 VME自定义总线接口的实现

VME自定义总线在VME的P2口上,时钟频率是5KHz,用于传输激光干涉仪和光栅尺的测量数据。在实际应用中,位置环釆样周期为200us,并且有大量的实时伺服数据在运动控制卡与光栅译码卡之间、运动控制卡与运动控制卡之间、运动控制卡与同步总线控制卡之间交换。如果在运动控制中,这些伺服数据使用VME总线进行交换,则会堵塞系统总线,使PowerPC无法进行正常工作。为此,利用光栅译码卡的技术特点以及VME的P2自定义接口,构造自定义局部总线。并设计专用同步总线控制模块对同步总线进行控制。自定义同步总线接口逻辑同样釆用FPGA芯片来实现,使其达到灵活、可靠、集成度高的设计要求。

自定义同步总线的主控制器由运动控制系统中的同步总线控制卡来实现,而运动控制卡中只需实现自定义总线的从接口。从控制器结构如图1所示,其功能包含以下方面:

提供DSP对于双口RAM访问的地址译码,将DSP的标准EMIF接口时序转换成双口RAM访问时序,该功能在EMIF时序匹配模块中完成;

完成自定义总线的读写逻辑,当自定义总线的地址有效后,数据方向控制模块将判断当前运动控制卡是数据发送端还是数据接收方,以切换数据总线方向;

当某一个特定的自定义总线地址访问出现的时候,总线时序匹配模块将产生中断信号提供给DSP,提供同步触发步控制卡VME自定义总线逻辑功能的实现

光栅译码卡接收来自光栅尺的信号,实现对工件台宏动部分的位置测量,测量数据通过自定义总线传送给同步控制卡。同步控制卡通过内部的定时器,产生运动周期开始信号,读取光栅译码卡的数据,然后将各个运动控制卡所需的信号,按照一定的地址编码,发送到VME64X总线的自定义总线上,由运动控制卡接收。运动控制卡接收到同步控制卡的运动周期开始信号后,依次接收指令位置和光栅尺数据,运动控制卡进行数据存储等其他操作,并等待下个运动周期的开始信号。

对于同步控制卡FPGA中逻辑协议的设计,釆用三段式状态机进行设计,第一段描述次态寄存器转到现态寄存器;第二段对状态转移条件进行判断,从而完成状态转移变换;第三段描述在各个状态完成的动作和对状态转移条件进行描述。

2.2 同步控制卡VME自定义总线读取光栅尺的逻辑转换

每200us向光栅译码卡发出一个脉冲,光栅译码卡接收到该脉冲后就会锁存当前数据,当脉冲到来时则转到S1状态,否则仍然处于S0。在S1状态时等待20ns,即让光栅译码卡把数据锁存完成,接着转到状态S2。在状态S2,将地址发送给光栅译码卡,并且等待30ns,让输出数据稳定,然后转到状态S3。在状态S3,将数据锁存,读操作的次数置零,并且将地址发送给双口RAM,延时10ns等待数据和地址稳定,然后转到状态S4。在S4对双口RAM进行写操作使能,即给写使能引脚置高电平,然后进入状态S5。在S5将读操作次数加1,并判断是12路数据是否读取完毕,即读次数是否等于12,若否则进入状态S6,否则进入状态S11。从状态S6到状态S10重复状态S1到S5的过程,直到读取完成。在状态S11,发出读取完成脉冲,并延时20ns到状态S12,最后返回状态S0等待。同步控制卡VME自定义总线设计实测结果,实测模块是接收12路光栅尺的数据,从图3可以看出,送到光栅译码卡的地址,在延迟一定时间后,稳定的数据才输出,所以这里是根据实测的延迟时间来决定模块设计中的相关信号的延迟。

将数据写人缓存必须等待数据稳定才能发出写信号。运动控制卡读取VME自定义总线数据逻辑功能的实现,在光刻机双工件台控制系统中,每块运动控制卡实现,同步控制卡VME自定义总线设计实测结果。

实测模块是接收12路光栅尺的数据,从图3可以看出,送到光栅译码卡的地址,在延迟一定时间后,稳定的数据才输出,所以这里是根据实测的延迟时间来决定模块设计中的相关信号的延迟。

将数据写人缓存必须等待数据稳定才能发出写信号。运动控制卡读取VME自定义总线数据逻辑功能的实现,在光刻机双工件台控制系统中,每块运动控制卡实现对三个电机的控制,整个系统需要12块运动控制卡,它通过光纤口将控制信号传送到电机驱动。同步控制卡通过内部的定时器,产生运动周期信号,读取光栅译码卡中数据,进行解耦,然后将各个运动控制卡所需的信号,按照一定的地址编码,发送到VME64x自定义总线,由运动控制卡接收。运动控制卡接收到同步控制卡的运动周期开始信号后,依次接收指令位置和光栅译码卡的数据。

3.结束语

本文提供了一种基于FPGA的VME自定义总线的逻辑接口设计,同步控制卡作为“主卡”,读取光栅译码卡中的测量数据,并将数据置于VME自定义总线上,其负责自定义在总线的逻辑设计。运动控制卡,接收来自自定义总线上的数据,并通过DSP进行处理,最后发送给电机,控制电机的运动轨迹。该设计方案通过了实际验证,并利用Signal Tap观测了其逻辑时序,可得该方案正确。

下载课程设计--基于FPGA的指纹采集接口设计与实现word格式文档
下载课程设计--基于FPGA的指纹采集接口设计与实现.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    操作系统命令接口设计课程设计说明书

    佛山科学技术学院课程设计用纸 课程设计说明书 设计名称:操作系统课程设计题目:操作系统命令接口设计学生姓名: 专业: 班级: 学号: 指导教师: 日期: 2016 年 6 月 28 日 佛山科学技......

    单片机课程设计:汽车ABS控制器模拟测试系统硬件接口设计与实现

    引言: 汽车行驶在路途中遇到突发状况时进行紧急制动,容易发生侧滑,甚至发生掉头和侧翻。相当多的交通事故由此产生。因此在行车制动中,不能让车轮抱死,进而才不发生侧滑和掉头......

    数字锁相环的FPGA设计与实现-课设

    1.设计要求 利用MAX PLUSII软件工具,设计一个全数字锁相环路,通过它从19.2k的信号中提取同步信号。本地源时钟为11.0592MHz。 要求实现的功能: a当远端信号(方波)的占空比分别为1......

    基于FPGA的直流电机PWM调速系统设计与实现

    FPGA课程设计 题目:基于FPGA的直流电机PWM调速系统设计与实现 班级:微电子学1202班 姓名:杜英 学号:1206080201 日期:2016年3月24日 基于FPGA的直流电机PWM调速系统设计与实现......

    基于FPGA 的VME自定义总线接口设计论文(推荐阅读)

    1 引言在光刻机双工件台控制系统中,VME 总线使用了三个接口共430 根线路接入, 通过背板互联的有P1, P2 两个接口320 根线路接入。实际上V M E 标准协议并没有完全使用全部线......

    基于ARM的视频采集系统的设计与实现

    基于ARM的视频采集系统的设计与实现 摘要 本文根据家庭视频采集系统的要求,提出一种基于ARM的网络视频采集方案。方案要求视频的实时传输、实时监控。本系统以Intel Xscale......

    《单片机原理与接口技术》课程设计教学大纲

    《单片机原理与接口技术》课程设计教学大纲 课程编号: 课程英文名称:Course Design of Micro-controller Principle and Interface Technology 学时数:18 学分数:1 使用层次和......

    微机原理与接口技术及其课程设计心得体会

    微机原理与接口技术及其课程设计心得体会 本学期的微机原理和接口技术及其课程设计都已经结束。在这个过程中,我们有所付出,也有所回报,让我感受颇多。 对于《微机原理与接口技......