基于FPGA的RFID系统解码模块设计
扫描二维码
随时随地手机看文章
RFID技术(radio frequency identification)是一种非接触式智能识别技术,它通过射频信号自动识别目标对象并获得相关信息。
整个识别过程无需人工介入,可同时识别多个对象并可以识别高速运动的物体,操作简单,广泛应用在车辆自动识别系统、物流管理与监控、仓库管理、门禁系统以及军事等领域。
RFID系统由三部分组成:读头、天线和电子标签,如图1所示。
其中读头是整个系统的核心部分,控制整个识别过程中与标签之间的通信,并提供与后台计算机的接口。天线用来发送射频信号给电子标签,并把电子标签响应的数据接收回来。电子标签存储着目标的信息,它进入识别区域时被天线发送的射频信号激活,然后向读头返回应答,从而完成一次识别。
本文要介绍的解码模块是基于ISO/IEC15693标准设计的,实现了从带干扰的返回信号(此信号已经去掉载波)中精确的提取标签信息的功能。此设计直接影响识别的准确性。
1 ISO/IEC15693协议
ISO/IEC15693协议是国际化标准组织制定的关于射频识别技术的一项标准,工作频率为13.56MHz,电子标签属于无源标签。协议详细描述了射频识别技术的信号调制方式、读头向标签发送数据的编码方式、标签返回数据的编码方式以及各种指令包格式和应答包格式。协议还介绍了电子标签的防冲撞机制。本文中的标签返回数据的解码模块就是以此协议为基准设计的,下面详细介绍标签向读头返回数据的格式。
电子标签首先将原始数据(digital bits,即要返回的标签信息)进行曼彻斯特编码(manchester bits),然后再用编码后的数据信息以FSK方式调制到低速率的子载波423.75kHz和484.28kHz信号上(RF Bits FSK),即曼彻斯特码的高电平部分使用484.28kHz方波信号表示,低电平部分使用423.75kHz方波信号表示。最后再由子载波调制到 13.56MHz的载波上,以此方式回传给读头。返回信号编码及子载波形式如图2所示。
为了达到数据的传输同步,电子标签在曼彻斯特码的起始和结尾分别加入帧头和帧尾,帧头部分为11100010,用423.75kHz和484.28kHz信号调制后如图3所示。帧尾部分为01000111,与帧头的顺序完全相反,调制后如图4所示。
2 解码模块的结构及其实现原理
整个读头的结构由模拟电路部分和数字电路部分组成。模拟电路的作用是产生13.56MHz的载波信号、调制发送信号和解调返回信号。数字电路部分负责数字信号的编解码。FPGA是数字电路部分的核心,理想情况下返回信号经过模拟电路解调到达FPGA后,其数据格式如图2中RF Bits FSK所示。但在射频信号传输过程中和模拟电路的解测过程中都难免有噪声干扰,进入FPGA的信号实际上是带干扰FSK信号。因此必须在解码模块中对干扰加以消除,否则会大大降低电子标签的识别成功率。解码模块共分为八个部分,如图5所示,下面将对这些模块的功能进行具体介绍。
2.1 FSK信号的还原到曼彻斯特码
按照图2所示数据格式的逆顺序进行解码,首先将RF Bits FSK信号还原为Manchester Bits信弓。此部分由图5中的倍频器、周期测量模块和比较器三个模块实现。在本设计中计数器在高频时钟信号(本设计采用100MHz时钟信号)的驱动下,测量FSK信号中相邻的两个信号上升沿之间的计数值,依此来区分423.75kHz和484.28kHz两个频率的信号。
首先为了提高计数的精度,将50M的系统时钟经过FPGA中的DCM模块倍频成100MHz,然后由此时钟来驱动周期测量模块,来计算RF Bits FSK两个相邻上升沿之间(即RF Bits FSK的一个周期)的计数值,再通过比较器与门限比较来确定是423.75kHz或484.28kHz的信号。若是423.75kHz信号,则100M时钟在其一个周期内计数值为236,若是484.28kHz信号,计数值为206,所以选择折中门限为221。计数值大于此门限则认为此RF Bits FSK周期是423.75kHz信号,用低电平表示,小于此门限则为484.28kHz信号,用高电平表示。理想情况下解调后的信号就是曼彻斯特码,如图 6所示。
但是一般情况下,此时的信号都是带有干扰的,用真实数据仿真结果如图7中的Disturbed_code所示,在信号中会有很有窄的脉冲出现。
2.2 去干扰处理
由于Disturbed_code是带干扰的曼彻斯特码,所以在进行曼彻斯特解码之前必须对数据进行消除干扰的处理,否则会导致曼彻斯特解码的错误。去干扰的原理是在取得帧同步以后使用430kHz(由50MHz时钟分频得到)时钟对Disturted_code信号进行采样,每个曼彻斯特码周期采样8 次,每采样8次判断一次采样值中1的个数,若1的个数大于等于5则认为此曼彻斯特码周期内的数据为1,否则为0。这里是考虑在一个曼彻斯特码周期(曼彻斯特码频率为53.4kHz)内脉冲干扰只是很窄的一部分,所以我们将一个曼彻斯特码周期分为8个时间段,每个时间段采样一次来判断是1还是0,若8个时间段内1的个数多则此周期的曼彻斯特码为1,同理0的个数多则判为0。用430kHz是因为一个曼彻斯特码周期正好为8个430kHz脉冲周期。当然,此判断方法会使信号有一定的延迟,但时间很短,不影响识别速度。去干扰之后便得到纯净的曼彻斯特码,结果如图7所示。
2.3 帧头检测
本设计中使用的去除干扰的方法是建立在准确识别数据帧头的基础之上的,所以在进行去干扰处理之前必须进行帧头检测,精确的帧头检测对识别的正确性影响很大。SOF检测模块实现了帧头检测的功能。考虑到帧头部分也会有干扰,本设计采用下面的相关算法来识别帧头。具体实现算法如下:
其中X[71:0]为一个72位的移位寄存器,以480kHz(此频率时钟正好将一个曼彻斯特码周划分为9个时间段)的频率将 Disturbed_code移入其中,⊙为按位同或,ffffffe0000003fe00H是理想情况下帧头(11100010)经过480kHz采样速率采样所得到的值。当Z为最大值时,说明此时接收的帧头与期望值匹配达到最佳,这就准确的找到了帧头的位置。仿真结果如图8所示。
2.4 曼彻斯特解码
经过前面的处理,我们已经得到理想的曼彻斯特码,下面介绍曼彻斯特解码模块的解码过程。前面已经取得了帧同步,现在从第一个 Manchester_code数据位的中间位置开始,以53.4kHz(此频率为1个曼彻斯特码周期)的频率将Manchester code移入串行移位寄存器N[1:0]中,采用下述方法实现解码。
每2个53.4kHz信号周期判断一饮K的数值,当K=2时输出解码数据为1(曼彻斯特码10表示原码1),k=0时输出解码数据为0(即曼彻斯特码为 01,表示原码0),每16个53.4kHz信号周期便可以得到一个字节的标签数据。这样直到帧尾出现便完成了曼彻斯特的解码工作。
曼彻斯特解码后的数据同时送往图5中CRC校验模块进行校验和标签信息数据栈进行存储。若CRC校验正确,则会给出一个Data_ok的信号通知其它部分来读取此标签信息数据栈中的数据。到此为止便完成了整个上行信号的解码工作。其真实数据的仿真结果如图9所示。
此设计经过FPGA的验证,并结合本课题组成员的模拟电路部分实现了RFID系统的正常工作,标签检测准确,读取速度快,每秒可以读50张标签,双天线作用距离可达1.5m。
RFID系统采用非接触式射频识别技术,识别速度快、安全性高,应用于超市、矿下工人身份识别等领域可大大提高效率和安全性,所以RFID有着广泛的应用前景