无源RFID中密勒码编解码技术与实现
引言
在无源RFID中,为实现卡和读写器之间的数据交换,都是采用负载调制方式完成的。进行负载调制时,需要选用一种编码去调制。密勒(Miller)码因码中带有时钟信息,且具有较好的抗干扰能力,因而是非接触存储卡中优选使用的码型,例如,EM Microelectronnic-marin SA的RFID产品H4006中就采用了密勒码技术。但有关资料对其编解码方法的实现涉及甚少。本文在介绍密勒码编解码原理的同时,给出其在RFID中的实现方法。
密勒码编码方法
密勒码编码规则如表1所示。其波形关系之一例示于图1。
从表1和图1中可知,密勒码的逻辑“0”电平和前位有关,而逻辑“1”虽然在位中间有跳变,但是上跳还是下跳取决于前位结束时的电平。
密勒码编码器的实现
密勒码的传输格式通常如表2 所示,其中起始位为1,结束位为0,数据位包括传送数据和它的校验码。
实现表2格式的密勒码流可以采用硬件电路,也可以用软件编程。下面分别予以介绍。
硬件电路
实现密勒码编码的电路示于图2。
图3是假定编码数据为0110 001101(加起始位和结束位后为101100011010)的密勒码编码相关波形图示例。图中的CP/2是数据时钟的二分频,是CP/2的倒相信号。根据密勒码编码规则,在奇数个1串(包括一个或连续多个1位)出现时,对应于位1的密勒码输出为CP/2与此时CP时钟信号异或;其后的位0密勒码输出为。在偶数个1串出现时,对应于位1的密勒码为 与CP的异或,而其后出现的位0密勒码为CP/2。因此,电路中采用一个脉冲形成电路,在NRZ码数据流的上升沿形成一个脉冲,该脉冲加至二进制计数器计数,二进制计数器初始状态Q端输出为0,NRZ码起始位(奇数个1串)上升沿触发脉冲形成后,第一个脉冲使二进制计数器的Q端为高电平,表示奇数个串开始,它通过与门4和或门2选择CP/2,与CP时钟异或生成位1的密勒码,并选择为其后相应的0码。第2(偶数)个1串到达时,二进制计数器翻转,选择与CP异或生成位1的密勒码,而用CP/2生成位0对应的密勒码。
图3很好地描绘了所给范例的生成波形图。编码控制信号用于启动编码器电路,若为存储卡,可用卡的上电信号(Power On)触发产生编码控制信号。
软件方法
从图3输出的密勒码波形可以看出,NRZ码可以转换为用二位NRZ码表示的密勒码值。其转换关系如表3所示。但二位表示法中的二进制数的时钟频率要提高一倍。密勒码的软件流程如图4所示。
若是采用CPU处理,则将NRZ码数据变换后,以2倍时钟速率送出变换后的NRZ码数据即可。例如,前例中的101100011010转换后为011110011100111001111000。若为存储卡,也可将NRZ码转换为用二位NRZ码表示的密勒码,存放于存储器中,但存储器容量需增加一倍,数据时钟也需增加一倍。因此还是用硬件编码方法较宜。
解码方法
由于读写器中都有微控制器,因此采用软件解码方法最为方便。读写器在对负载调制信号解调后,可获得相应波形,若以2倍时钟频率读入位值后即可判决解码。首先,读出0→1的跳变后,表示获得了起始位,然后两位一转换:01和10都译为1,00和11都译为0。
这里还得说明一点,密勒码停止位的电位是随前一位的不同而变化的,即可能为00,也可能为11,因此,为保证起始位的一致,停止位后必须有规定位数的间歇。此外,在判别时若结束位为00,则问题不大,后面再读入也为00,则可判知前面一个00为停止位。但若停止位为11,则再读入4位才为0000,而实际上,停止位为11,而不是第一个00,解决这个问题的办法是预知传输的位数或以字节为单位传输。这两种方法RFID是可以实现的。
结语
本文针对无源RFID中的编解码技术,采用硬件和软件两种方法实现了密勒码的编解码,具有较好的抗干扰能力,是非接触存储卡的优选方案。■
参考文献
1单承赣,马海燕. TYPE A型卡的曼彻撕特码的编解码技术. 通信技术,2003