摘要:提出了一种射频卡读写器数字处理模块的设计方案,特点是利用单片CPLD器件实现了读写器编码、译码和差错处理功能,系统体积小,性能稳定。该方案采用了原理图和VHDL相结合的灵活设计,给出了一种快速CRC-CCITT并行实现的方法。
关键词:CPLD RFID 射频卡读写器 并行CRC
1 系统工作原理和CPLD特性
射频卡读写系统又称射频识别系统(Radio Frequency Identification),它是利用无线方式进行非接触式双向数据通信,进而达到识别目标并交换信息的目的。射频识别技术发展迅速,在门禁、交通这、防盗、金融、身份证管理、工业自动化等方面有着广泛的应用前景。按照相关标准,非接触IC卡可以分为3种:(1)密耦合卡(ISO10536),作用距离0~1cm。(2)近耦合卡(ISO 14443),作用距离0~10cm。(3)疏耦合卡(ISO 15693),作用距离0~150cm[1]。
基于ISO 15693协议标准设计的射频卡读写器是目前中低频段工作距离最远(达1.5米)的射频识别装置。射频卡由半导体厂商提供,目前国内外均有符合该标准的商用化射频卡。
在实际应用中,密耦合卡和近耦合卡距离射频卡读写器作用距离特别小,一般每次只要求响应一张卡(如公交售票系统)。而疏耦合卡往往应用在对多卡同时进行响应的场合(如多个持卡行李同时经过门检),读写器与多卡同时进行数据交换可以通过软件设计加入“防碰撞机制”实现。但是由于读写器在响应某张卡时的数据交换时间被限制在200μs~300μs内,选用普通单片机无法达到这一要求,因此在设计中选用了高速CPLD器件来实现编码、解码以及差错控制功能。一方面在响应时间上满足了实际应用的需要;另一方面简化了软件设计。
2 功能模块实现
2.1 编码器与译码器
单片机启动编码后,编码模块向单片机发中断(INT0)获取待编码的指令数据,同时将指令数据送入并行CRC模块。当指令数据完成编码后,控制电路将2字节CRC值紧接在数据之后进行编码。译码时,译码器检测到起始位后,开始译码。译码后的数据通过中断(INT1)通知单片机取走。并同时送入CRC并行运算模块进行校验,单片机在特定的时刻(接收完最后一字节数据时)读取CRC校验标志端口CRCALL0,判断整个数据串的正确性。
(1)数据编码 从读写器到卡的数据采用脉冲位置调制即“1/256”编码。用256个时隙表示8bit数据,通过控制bit脉冲出现的时间位置来表示0~255范围内的数据。如图2,在第255个位置出现的位置脉冲(9.44μs高电平的9.44μs低电平)表示数据E1(HEX),采用计数器加控制电路即可实现。控制部分协助实现数据无缝编码及形成帧起始位和结束位,用VHDL设计易于实现。编码后的数据进行ASK调制(13.56MHz载波),经天线发射出去。
(2)数据译码 从射频卡返回的数据经过一次解调(去掉13.56MHz载波)后,数据编码格式如图3所示。可以直接进行数据译码,也可以去除子载波(423.75kHz)后得到Manchester码再译码。这里采用后者,通过在每一bit的前、后半段时间内两次取样、判决、加以串并变换即可得到译码后的并行数据并送至并行CRC模块进行CRC校验,同时送往单片机处理,行CRC模块在校验结束时通知单片机取校验结果。
2.2 差错处理模块
与射频卡内部电路配合,读写器端采用了常用的CRC检错得传机制。为了缩短处理时间,满足读写器在实际应用中对多张卡同时处理时的响应时间要求,设计采用硬件实现。
CRC-CCITT算法生成多相式为:x 16+x
12+x 5+1[4]。计算CRC实际上是将数据通过线性反馈移位寄存器,所有数据移入后CRC寄存器的值即为16位CRC值。并行CRC运算模块每次输入8位数据,相当于一次并行运算就得到了串行移位运算时需要8位移位所得的结束。由表1~表4可以知道并行CRC实现的原理:每个时钟到来时完成8bit数据CRC值计算;下一个8bit数据到来时,把上一个8bit数据的CRC值C15~C0作为初值,继续完成并行CRC计算。即每次处理一个字节。
表1 移位前CRC寄存器值(初值)
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
C15 | C14 | C13 | C12 | C11 | C10 | C9 | C8 | C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 |
表2 1次移位后CRC寄存器值
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X0 |
C15 |
C14 |
C13 |
C12 |
C11 X0 |
C10 |
C9 |
C8 |
C7 |
C6 |
C5 |
C4 X0 |
C3 |
C2 |
C1 |
表3 2次移位后CRC寄存器
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X1 |
X0 |
C15 |
C14 |
C13 |
C12 X1 |
C11 X0 |
C10 |
C9 |
C8 |
C7 |
C6 |
C5 X1 |
C4 X0 |
C3 |
C2 |
表4 8次移位后CRC寄存器值
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X7 X3 |
X6 X2 |
X5 X1 |
X4 X0 |
X3 |
X7 X2 |
X6 X1 |
X5 X0 |
C15 X4 |
C14 X3 |
C13 X2 |
C12 X1 |
C11 X7 X0 |
C10 X6 |
C9 X5 |
C8 X4 |
表中参数说明:Ri为CRC移位寄存器值(R0为低位),Ci为CRC移位寄存器初值(C0为低位),Di为输入数据(D0为低位),Xi=Di XDR Ci,同一栏中数据的运算关系是异或(XOR)。
每次并行数据到来时,各CRC寄存器值按表4运算关系更新。最后一个字节数据输入后CRC寄存器的值(R0~R15)即为该数据组的CRC值。模块设计采用了VHDL语言,同步更新R0~R15寄存器的值,从表中看出,一次CRC计算最多完成4组XOR运算。如:R3<=C11 XOFR D7 XOR C7 XOR D0 XOR X0;R15<=D7XOR C7 XOR D3 XOR C3。
3 控制模块
单片机扩展了RAM后,P2口只有P2.5~P2.7可以用来提供控制信号,不能满足需要,因而在CPLD内部将3路信号扩展为8路控制信号,以实现对各部分进行协调控制。主要有编码器和译码器的启动信号、复位信号、指令标志信号、CRC输出信号等控制信号。
4 性能分析
这里选用1片XILINX XC95144实现整个数据处理模块的功能,使用软件平台是Xilinx Foundation 3.1i。XC95144内部有144个宏单元、3200可用门。图5和图6分别给出了编码器和译码器的部分时序仿真结果及其说明。可以看到,二者均实现了协议要求,编码器在准确的位置实现脉冲位置调制,译码器能准确地对曼彻斯特码数据进行译码,并计算出输入数据的CRC值。
用AT89C51单片机提供编码数据以及模拟待译码曼码数据流对模块功能进行实测,用示波器观察各测试点信号,结果基本上与时序仿真的波形图相同,达到了预期设计的目标。
本文较系统地介绍了一类远距离射频卡读写器数字处理模块的设计,特别在于:(1)采用单片CPLD实现了射频卡读写器数字模块功能,采用了原理图和VHDL相结合自顶向下的设计方法[2][5],样机PCB版面积小,开发周期短,性能稳定。其设计方案和思路对其他类别射频卡读写器设计具有一定的参考价值。(2)提出了一种快速实现CRC-CCITT的并行运算方法,该方法适用于高速数据传输场合。
为了提高系统的安全性,可以对对写入卡中的数据进行加密处理,即引入数据加密模块,并将整个设计配置到一片容量更大的CPLD或FPGA中。
上一篇:基于多种EDA工具的FPGA设计
下一篇:基于CPLD的单片机PCI接口设计
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况