新闻中心

EEPW首页>嵌入式系统>设计应用> 基于FPGA和 C8051F020 的915 MHz射频读卡器设计

基于FPGA和 C8051F020 的915 MHz射频读卡器设计

作者: 时间:2011-05-18 来源:网络 收藏

2.1 读写卡操作程序
读写卡操作程序完成基于ISO/IEC 18000-6 Type B协议的基带信号编解码,其程序设计流程图如图4所示。
具体工作过程如下:(1)上电复位,系统初始化,包括单片机时钟、端口、LCD、定时器的初始化,配置FPGA和开中断。(2)等待接收上位机或键盘发送的指令。(3)对指令进行判断,如果为多卡操作,则进入防冲突子程序;如果为单卡操作,则直接进行读卡、写卡、值操作和中止操作。(4)若操作成功,所得数据回传给上位机,同时驱动LCD显示操作成功信息;若操作失败,则驱动LCD显示操作失败信息。

基于FPGA和 C8051F020 的915 MHz射频读卡器设计

2.2 防冲突程序
对射频卡进行多卡操作时,在其天线覆盖范围内的所有射频卡将被激活,并处于识别状态,造成了多张射频卡读写冲突。所以解决冲突是多卡操作的关键。ISO/IEC 18000-6 Type B协议详细规定了防冲突机制,其程序设计流程图如图5所示。该防冲突机制的原理是利用随机产生的0和1信号实现二进制树形搜索,并且设定了成功命令,进一步提高了搜索的效率,是一种二进制树形的防冲突算法[7]。具体实现过程为:首先,射频卡进入的工作范围,从离场掉电状态进入就绪状态。可以通过GroupSeleet命令和GroupUnseleet命令让读卡器工作范围内处于就绪状态的所有或部分的射频卡参与防冲突过程。针对该模式的防冲突机制,射频卡应该具有如下两种硬件电路:一个8 bit的计数器和一个0、1随机数发生器。当射频卡进入识别状态(ID状态)后,将其内部的计数器清0,其中的一部分可以通过接收GroupUnselect命令重新回到就绪状态,其他处于识别状态的射频卡则进入了防冲突执行的过程中。被选中的射频卡开始下面的循环:(1)所有处于识别状态并且内部计数器为0的射频卡将发送其识别码;(2)如果有一个以上的射频卡发送识别码时,读卡器将检测到冲突而发送Fail命令;(3)所有接收到Fail命令并且内部计数器不等于0的射频卡将把本身的计数器加1;所有接收到Fail命令并且内部计数器等于0的射频卡(即刚刚发送过应答的射频卡)将产生一个1或0的随机数。如果选择了1,射频卡将把自己的计数器加1;如果选择了0,射频卡将保持计数器为0并且再次发送它们的识别码。在接下来的过程中会出现4种可能的情况;(4)情况1:如果有一个以上的射频卡发送,将重复步骤(2);(5)情况2:如果所有的射频卡都随机选择了1,读卡器将接收不到应答,此时,读卡器将会发送Success命令,所有的射频卡的计数器减1,然后计数器等于0的射频卡开始发送,接着重复步骤(2);(6)如果只有一个射频卡发送并且它的识别码被读卡器正确接收,读卡器将发送包含识别码的DataRead命令,射频卡正确接收该条命令后将进入数据交换状态,开始发送它的数据。此后,读卡器将发送Success命令,使处于识别状态的射频卡的计数器减1;(7)情况3:如果只有一个射频卡的计数器等于0并且返回应答,重复步骤(5)读卡器发Success命令或重复步骤(6)发送DataRead命令;如果有一个以上的射频卡返回应答,重复步骤(2);(8)情况4:如果只有一个射频卡返回应答,并且它的识别码未被正确接收,读卡器将发送一个Resend命令。如果识别码被正确接收,重复步骤(5)。如果识别码被重复几次的接收(这个次数可以基于系统所希望的错误处理标准来设定),就假定有一个以上的射频卡在响应,重复步骤(2)。

基于FPGA和 C8051F020 的915 MHz射频读卡器设计

经过如上的防冲突过程,射频场内的射频卡将可以逐一被识别并进行数据交换。


2.3 串行通信程序
系统使用PC机作为上位机,读卡器作为下位机。上位机与下位机之间的通信采用基于RS-232-C的串口通信。RS-232-C是一种串行通信总线标准,是数据终端设备(DTE)和数据通信设备(DCE)之间的接口标准,不同厂家生产的设备,只要它们都具有RS-232-C标准接口,则不需要任何转换电路,就可以互相插接起来。
串行通信程序是MCU与PC机通信的控制程序。发送程序采用查询的方式设计,即把待发送的数据先送到缓冲区中,然后查询串口发送中断标志是不是有空,若有空就发送下一个数据。
接收程序采用中断的方式设计,即当PC机要发数据给MCU时,主动向MCU申请中断,接收中断标志有效,则PC向MCU传送数据。


3 验证方案
3.1 验证平台的建立
为了验证所设计的读卡器能否完成预期的功能,设计了相应的验证平台[8]。验证平台由数据解码通道、数据编码通道以及指令分析器三部分组成。数据解码通道是对读卡器发送出的数据帧进行解码,提取指令的原始数据;指令分析器是对收到的指令数据进行判断,同时返回相应的数据并发送给数据编码通道;数据编码通道则是对发送来的数据进行编码,再发送给读卡器。
平台采用Verilog HDL硬件语言搭建,选用Altera公司Cyclone系列的EP1C6Q240C8芯片为目标器件,使用Quartus II进行综合验证,其结构框图和电路原理图分别如图6、图7所示。

基于FPGA和 C8051F020 的915 MHz射频读卡器设计

3.2 测试结果分析
(1)时序分析
通过运行QuartusII 7.1自带的时序分析器,可以得到时序分析的一些参数:tsu(输入建立时间)、tco(时钟到输出延时)、th(保持时间)分别为3.530 ns、13.174 ns、0.751 ns。基频时钟clk最大可以达到89.06 MHz,而ISO/IEC 18000-6 Type B协议规定的基频时钟为40 kHz。从分析本系统的时序结果显示,完全符合协议要求。具体的时序分析结果如图8所示。

基于FPGA和 C8051F020 的915 MHz射频读卡器设计

(2)功能分析
功能分析以GROUP_SELECT_LT命令为例。 GROUP_SELECT_LT命令是多卡操作中的组选命令,射频卡接到此命令,卡内指定地址的数据与帧中提供的数据进行对比。若卡内数据较小,则返回射频卡的64 bit序列号,否则不作任何响应。GROUP_SELECT_LT命令的命令号为03,地址设为0F,掩码设为FF,64 bit数据全设为F,所以从MCU传给FPGA的命令数据为03_0F_FF_FFFF_FFFF_FFFF_FFFF。原始数据经过FPGA数字信号处理模块处理后,就成了一帧基带数据信号。验证平台将读卡器发来的数据帧进行解码,然后判断指令并返回射频卡的64 bit序列号,经编码后成一帧数据帧发送给读卡器。读卡器收到此帧后即解码,并进行CRC校验,若都没有错,则把解码后的数据传输给MCU。
GROUP_SELECT_LT命令仿真波形图如图9所示,实验证明可实现ISO/IEC 18000-6 Type B协议。
随着RFID相关国际标准的确立(如ISO/IEC 18000)RFID的研发已成为国际性的课题。在诸多RFID工作频段中,UHF频段的RFID技术前景最为看好,也成为现今RFID技术领域研究的热点。

基于FPGA和 C8051F020 的915 MHz射频读卡器设计


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭