ARM9的超高频读写器基带编解码的实现

基于ARM9的超高频读写器基带编解码的实
王丹(QQ295699450)
(电子科技大学电子工程学院 四川成都611731)
摘要:根据超高频RFID国际标准协议EPC GEN2中的规定,本文基于ARM9芯片S3C2440提出一种适用于超高频读写器的PIE编码以及MILLER2解码的实现方式。设计中使用该芯片的PWM输出进行编码并使用其外部中断进行解码。通过分析示波器捕捉到的MILLER2波形以及串口打印的解码输出,验证了该设计的正确性。
关键词: S3C2440;EPC Gen2协议;超高频读写器; PIE编码;MILLER2 解码
中图分类号:TN911.2  文献标识码:A
The Realization of Codec of Baseband in UHF Reader Based on ARM9
Wang Dan, Zhang Hongyu
(School of Electronic Engineering, University of Electronic Science and Technology of China, Chengdu Sichuan
611731, China)
切割木块Abstract: According to the UHF RFID world protocol EPC GEN2, an encoding of PIE and decoding of MILLER2 which used in UHF RFID reader is realized based on ARM9 chip S3C2440 in this paper. In this design, the PWM output of the chip is used for encoding while external interrupt is used for decoding. By analyzing the MILLER2 waveform captured by the oscilloscope and the output data printed by serial port, the design is proved to be correct.
Key words: EPC GEN2 protocol; UHF Reader; S3C2440; PIE coding; MILLER2 decoding
1引言
普通的UHF读写器主控芯片使用FPGA的较多,其优点是FPGA对时序逻辑处理速度快,使用HDL语言很容易实现协议的编码与解码,但FPGA芯片本身很少具备诸如串口、网口等通信接口模块,功能扩展较麻烦。由于ARM9芯片集成了很多扩展接口,同时进行操作系统移植等更高层次的设计也变得大大容易,但对时序逻辑处理较难,因而本文提出了基于ARM9的UHF RFID 读写器基带编解码方法并加以实现。
2基本原理
UHF RFID国际标准协议规定读写器到电子标签的通信应采用DSB-ASK,SSB-ASK或者PR-ASK的调制方式。本文使用ARM9芯片S3C2440的PWM(脉宽调制)控制模块进行PIE编码,通过编码信号控制射频开关实现OOK调制。电子标签接收到命令后反向散射副载波应答,经过射频模块的天线接收后被解调电路还原成MILLER2数据,构造MILLER2解码状态机,使用S3C2440的外部中断对MILLER2时序序列进行上升沿捕捉,捕捉到的两次中断的时间间隔作为状态机输入,进而解调出标签反射回来的数据。系统的硬件连接框如图1所示。
图1 系统硬件框图
读写器射频模块的工作流程为:发送命令时,PIE编码电平控制射频芯片开关,当开关开启时输出射频载波,关闭则不输出,以达到OOK调制载波的目的。接收机采用零中频接收机方案,直接对天线接
收到标签反向散射信号进行解调,解调完毕得到相位相差90度的I,Q两路信号,通过差分放大器放大处理后,输出到比较器,经过比较后的电路输出MIILER2编码时序信号。
3 PIE编码
3.1 PIE码简介
EPC GNE2协议规定UHF读卡器向标签发送命令时,数据应采用PIE编码。PIE码是通过高低电平的时间长度不同来规定数据是“1”还是“0”。协议使用Tari代表数据“0”,一个Tari的时间长度在6.25us~25us范围内,容差为+/-1%,数据“1”的宽度在1.5个Tari 至2.5个Tari之间,如图2所示。本次编码中,Tari值为6.4us,数据“1”的长度为11.4us,PW的长度为3.2us。
图2 PIE数据1和0的编码方式
协议规定完整的PIE码需在有效数据前加上前同步码或帧同步码。前同步码由定界符、
Tari、RT_cal以及TR_cal这四段组成,用在Query命令上,帧同步码省去了TR_cal而直接由前三项组成,用在其他命令上。前同步码示意如图3所示。
遥控直升机制作
图3 PIE前同步码
3.2 PWM实现PIE编码
S3C2440有5个16位的定时器,其中定时器1~4具有PWM(脉宽调制)功能,定时器使
用经过分频后的系统时钟PCLK作为时钟输入。本设计中100M的PCLK经过2分频得到50M频率的定时器输入时钟,定时器每计数一次耗时0.02us。定时器使用两个16位的缓冲寄存器TCNTB和TCMPB来实现PWM功能,TCNTB为一次PWM输出计数次数,采用递减的方式计数,当计数减为TCMPB的时候,PWM输出电平反转。以数据“0”为例,其脉冲总宽度为  6.4us,低电平持续时间  3.2us,则可计算出TCNTB=6.4/0.02=320次,
双模具
TCMTB=3.2/0.02=160次。
为实现连续的PWM输出,需要让定时器工作在自动重载模式,即当定时器计数器减为0 的时候,在定时器中断处理函数里,更新TCNTB以及TCNMPB,让定时器重新开始一次脉宽输出。定时器1初始化时经过以下步骤:
①以及TCMPB寄存器赋非零初值;
TCNMB
②TCON中人工装载位配置为1,把TCNTB和TCMPB更新到内部计数器;
③中自动重载位配置为1,为实现连续的PWM功能;
TCON
④中输出翻转位配置为1,脉冲以高电平开始;
TCON
⑤TCON置为启动位;
⑥TCON设置关闭人工装载,定时器开始启动。
经过以上配置后,将定时器IO管脚配置为PWM输出模式就可以进行PWM输出。以一个Query命令的编码为例,Query命令是由前同步码和22位数据构成,先将这22位数据计算好并保存在全局数组data[]中,发送Query命令时开启定时器1并允许定时器1中断,在中断处理函数里面更新TCNTB以及TCMPB的值来决定下一个脉冲的PWM输出。编码PIE的程序流程如图5所。
图5  Query命令编码程序流程
正确的Query命令会让标签返回16位伪随机数RN16,为了测试Query命令是否发送正确,使用示波器观察比较器输出,如果输出有MILLER2编码的16位数据输出,则表明Query命令正确,使用示波器观察的结果如图6所示,可以看出是MILLER2编码的序列,详细分析其位数后确认是16位,验证了PIE编码的正确性。
图6 示波器上观察比较器RN16输出
4 MILLER2解码
4.1MIILER2码介绍
EPC GEN2协议中规定标签反向散射的数据应该采用FM0或者是MILLER的编码方式。MILLER定义在两个数据“0”之间变换相位,在数据“1”中间放置一个相转化,MILLER2码则表示每一位数据重复两个副载波周期,完整的MILLER2编码,需要在有效数据前加上前同步码。前同步码可编程选择格式,在Query命令中将M和Trext这两位设置为1选择前同步码由16个数据“0”加上数据序列“101112”构成,MILLER2数据定义和前同步码如图7所示。MILLER2码每一位数据的时间长度由Tari值决定,本设计中为2个Tari即12.8us。
图7 MILLER2数据定义以及编码状态转换
4.2解码状态机
本文使用S3C2440的外部中断捕捉比较器的输出,使用单边触发上升沿检测,对正确的MILLER2编码序列进行上升沿捕捉时,两次中断的时间间隔有a和b两种情况,其中a
表示两次中断的时间间隔为1个Tari值即6.4us,b表示间隔为1.5个Tari值即9.6us,据此
绘制了MILLER2编码的状态以及状态转换图。状态共有22个,其中用于前导码检测的状
态有13个,用于数据检测的有9个状态。部分前导码状态以及全部数据状态如图8所示。
拉伸机机械手
图8部分前导码状态以及数据状态
图8中各个状态意义如下:
s1:解码开始,表示收到1个a 间隔;
s2:前导码状态的一种,表示收到2个a 间隔;
s3:表示收到3个a 间隔,s3状态若连续收到a 间隔,则仍旧归于s3状态
s4:表示s3收到b 间隔,此时前同步码中的16个数据“0”解码结束,进入数据序列
“10111
2”解码状态;
s5~sa:前同步码中的数据序列“101112”检测状态,依次类推,图7中省略
热敏打印机芯
sb:前导码结束状态;
d1:收到数据“0”的2/4位;
d2:收到完整数据“0”以及数据“1”的1/4位;
d3:收到完整数据“0”以及数据“0”的1/4位;
d4:收到数据“1”的3/4位;
d5:收到数据“0”的3/4位;
高压mos管
d6:收到完整数据“1”以及数据“0”或者“1”的1/4位;
d7:收到完整数据“0”以及数据“1”的1/4位;
d8:收到完整数据“1”;
d9:收到完整数据“0”以及数据“0”的2/4位。
以上状态中,当状态机当前状态为d2,d3,d6,d7,d8,d9的一种时,表示收到一位有效数据。状态转换图如图9所示,状态d2,d7只画出来了有效输入时的转换图,在无效输入时结束状态机程序返回。

本文发布于:2024-09-21 08:02:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/318798.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据   输出   编码   状态
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议