您当前的位置:五五电子网电子知识单元电路编、解码-加、解密电路在EPCC1G2协议下 RFID读写器编解码模块的FPGA实现 正文
在EPCC1G2协议下 RFID读写器编解码模块的FPGA实现

在EPCC1G2协议下 RFID读写器编解码模块的FPGA实现

点击数:7972 次   录入时间:03-04 12:04:03   整理:http://www.55dianzi.com   编、解码-加、解密电路

    摘要:本文首先对EPC C1G2协议中的相关内容作了简要介绍,对编解码系统的架构以及各个组成模块的FPGA实现作了重点说明,最后给出了Modelsim软件仿真结果,以及在读写器工作时使用Signaltap逻辑分析仪抓取的数据。
关键词:FPGA;UHF RFID;EPC C1G2协议;编解码;FM0;miller码

引言
    UHF RFID读写器具有读写距离远、读写速度快等优点,已成功运用于供应链管理、航空管理和后勤管理等诸多领域。本设计依据的协议是EPC C1G2(EPCClassl Generation2)。
    本文介绍了一种读写器的编解码部分由FPGA来完成的设计方案,由FPGA负责前向链路的PIE编码和后向链路的FM0/miller解码,且解码模块可对标签突发传来的数据立即检测并实施解码,实现了较快的解码速率。FPGA选用的是ALTEra公司的EP1C3T100C6芯片。

1 RFID系统介绍
   
图1所示为RFID系统,主要由PC机、读写器、天线和电子标签组成。读写器与电子标签之间的数据通过天线进行传递。读写器作为RFID系统的一部分,既能与标签通信,又能向PC机传输数据并执行上位机所要求的操作,具有发送、接收和处理数据的能力。读写器系统按其所处理信号的不同,主要由2个部分组成,即处理数字信号的基带部分和处理模拟信号的射频部分。

d.JPG

   

2 EPC C1G2协议的相关介绍
    EPC C1G2标准具有如下特点:速度快,速率可达40~640 kbps;可以同时读取标签的数量多,理论上能读到1000多个标签;可在密集的读写器环境下工作,能迅速使用变化无常的标签群;存储区域多,可延伸使用用户的内存需求;功能强,具有多种写保护方式,安全性强;通用性强,符合EPC规则;产品价格低,兼容性好。
2.1 PIE编码介绍
    EPC C1G2协议规定发送链路(即读写器向标签发送数据)采用的编码方式是脉冲间隔编码(即PIE编码)。读写器每次给标签发送命令,都以帧同步码或前同步码开始所有的通信。帧同步码格式如图2所示,帧同步码由delimiter、数据0和RTcal三部分组成。前同步码格式如图3所示,前同步码由delimiter、数据0、RTcal和TRcal四部分组成,除delimiter外,各部分均以低脉冲PW结尾,且各部分PW的长度必须相同。de limiter的长度固定为12.5μs,协议规定允许有±5%的误差。delimiter用于给电子标签校准时钟。

e.JPG

f.JPG

   
    前同步码只用于表明盘存周期开始的Query命令中,其他命令则以帧同步码开始。当Query命令数据中的DR=1、前同步码中的TRcal长度为33.3μs时,可设定反向链路(即标签向读写器发送数据)频率最高为640kHz。
2.2 FM0和miller码介绍
   
Query命令中M参数值决定了标签返回数据的编码方式,即FM0、miller2、miller4、miller8四种。FM0码在每个数据边界处和数据0中间反相。miller码则是在两个连续的数据0的边界处和数据1的中间反相。miller编码序列每位可包含2、4、8个副载波周期,即miller2、mille r4、miller8三种编码形式。这四种编码方式都以各自特定的帧头开始,而具体选择哪种帧头,则由Query命令中Trext参数值决定,并且在结尾处都有一位“dummyl”作为数据传送的结束标志。
2.3 读写器与标签通信流程
    EPC C1G2协议规定读写器的命令分为选择、盘存、访问3类,而标签的工作状态分为就绪、仲裁、应答、确认、开放、保护、杀死7个状态,读写器命令类型和标签状态如图4所示。读写器依赖3类命令通过改变标签所处的状态,实现对标签群的筛选,以及对单个标签的识别和访问过程。读写器与标签的通信过程略一编者注。

g.JPG

   



www.55dianzi.com



3 总体设计
   
在本读写器设计中,ARM与FPGA协同工作。ARM芯片是LPC2148,工作时钟是20 MHz,主要完成对读写器系统的控制。而FPGA则负责编解码部分的数据流处理,工作时钟频率是25 MHz。图5是FPGA部分的整体设计框图。

h.JPG

   
    FPGA中的模块主要包括协议控制及命令产生模块、PIE编码模块、FM0/miller解码模块,以及用于与PC机交互的串口控制模块。
    工作过程如下:对读写器命令数据及其相应的CRC5/16校验位进行PIE编码,编码完成送到射频发射端,数字信号通过控制射频芯片RF2 173的开关引脚实现调制深度为100%的OOK(On-Off Keying)调制,并经由收发分离的定向耦合器,通过天线发射出去。
    场内标签接收到读写器发送的信息后,在允许其通信的情况下,会根据读写器发送来的命令参数,选择4种编码方式中的一种,将要回复读写器的数据进行编码,经调制之后在空间传输。
    读写器天线接收到标签信息后,经由定向耦合器将标签信息送到读写器的射频接收模块,该模块对标签信息进行解调,并将解调后得到的数字信号送给FPGA的FM0/miller解码模块。解码模块根据数据的编码方式选择相应的电路解码,解码后的数据返回给协议控制及命令产生模块。该模块根据上次发送的命令以及接收到的标签信息作出判断,产生下一次的操作命令数据,发给PIE编码模块,与该标签进行进一步的信息交互或选择重新读取另外的标签。
    同时,为了准确获取标签信息,必须将读写器与PC机相连。读写器通过由FPGA实现的串口模块与PC机相连,对读取到的标签信息做必要的显示,如标签返回的RN16、EPC、UII等。

4 FPGA实现电路
   
为了实现FPGA部分的功能,在ALTEra公司的EP1C3T100C6芯片上,利用QUARTus II软件进行设计,PIE编码模块设计如图6所示。

i.JPG

   
4.1 编码模块设计
   
PIE编码由pie_encode模块实现。该模块接收命令产生模块并行发来的8位数据,按照协议规定及设置,先给命令数据添加特定的帧头,并根据数据传输速率,对命令数据及其CRC5/16校验位进行PIE编码,编码完成后输出给射频发射模块调制,然后通过天线发送出去。其设计框图如图6所示。
    PIE编码模块由编码状态机作为控制模块。状态机的状态由命令帧头和数据0和1组成,即idle、delimiter、tari、rtcal、trcal、data_ sendl、data_send0 7个状态,其中idle是空闲状态,接收到开始信号后跳转到其他状态。状态机的流程按照命令的组成依次进行,每个状态按照协议要求保持特定的时间,直至命令编码完成。由于Query命令和其他命令的帧头不同,query_cmd_flag_in信号用于指示此次发送来的数据是否为Query命令数据,如果是,则在编码时加入TRcal命令段;否则,跳过TRcal状态。
    在接收部分数据开始发送指示信号rx_cmd_start与要发送的数据rx_cmd、rx_cmd_num保持同步,编码模块中的命令数据计数器和命令数据移位寄存器根据rx_cmd_start信号将8位数据并行送入各自的寄存器。
    接收完成后,数据寄存器会根据计数器中的值进行相应的移位,将无效数据移出,保证有效数据是从命令寄存器中的最高位开始。同时,每完成一位数据的编码,计数器自减1,移位寄存器也自动左移一位,将下一个要编码的数据放入待编码数据寄存器中,该寄存器由此去控制状态机的下一个流程。
    发送部分主要由一个命令长度计数器组成,该计数器根据命令参数的设置以及所处的状态进行计数,控制状态机在某个状态保持的时间当一位数据编码完成,计数器清0,并开始对下一位数据计数,同时状态机也跳转到下一个状态,而编码数据则根据状态机的状态以及计数器的值拉高或拉低,并由锁存器将编码后的命令锁存输出。这样就实现了边编码边调制的目的,提升了命令发送的速率,也节省了硬件资源。
4.2 解码模块设计
   
解码部分由data_pre_process、fm_and_miller_decode、data_post_decode 3个模块组成。data_pre_process是解码数据预处理模块,接收射频模块解调后的数据。因为射频发射和接收使用的是同一根天线,发射的数据信息以及其他杂波信号经常会泄露进解码模块。该模块主要是去除信号中的毛刺,并对接收数据的高低电平长度进行判断,看是否符合编码规则,如果均在合适的范围内,则视为成功。同时产生待解码数据的采样信号,以及其他指示信号,以便解码模块的数据处理;若不符合要求则丢弃这部分数据,重新检查分析新来的数据信息。

[1] [2]  下一页


本文关键字:读写器  编、解码-加、解密电路单元电路 - 编、解码-加、解密电路

《在EPCC1G2协议下 RFID读写器编解码模块的FPGA实现》相关文章>>>