微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > CPLD在射频卡读写器中的应用

CPLD在射频卡读写器中的应用

时间:08-02 来源:互联网 点击:
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米)的射频识别装置。射频卡由半导体厂商提供,目前国内外均有符合该标准的商用化射频卡。



读写器和射频卡之间的数据交换主要有两种:(1)下行数据是读写器向射频卡发送的具有固定帧格式的指令和数据:(1)上行数据是射频卡响应读写器指令后返回的数据。读写器分前端收发模块和后台数据处理模块。本文主要涉及数据处理部分,其主要功能有:指令装配、下行数据编码(读写器→卡)、上行数据解码(卡→读写器)以及差错控制模块。射频卡读写器结构如图1所示。

在实际应用中,密耦合卡和近耦合卡距离射频卡读写器作用距离特别小,一般每次只要求响应一张卡(如公交售票系统)。而疏耦合卡往往应用在对多卡同时进行响应的场合(如多个持卡行李同时经过门检),读写器与多卡同时进行数据交换可以通过软件设计加入“防碰撞机制”实现。但是由于读写器在响应某张卡时的数据交换时间被限制在200μs~300μs内,选用普通单片机无法达到这一要求,因此在设计中选用了高速CPLD器件来实现编码、解码以及差错控制功能。一方面在响应时间上满足了实际应用的需要;另一方面简化了软件设计。



CPLD是从PAL和GAL发展起来阵列型高密度PLD器件,内部由可编程逻辑宏单元、可编程I/O单元、可编程内部连线构成。它们大多采用E2PROM和FLASH闪存工艺,掉电后编程信息不丢失[2]。器件性能可以满足不同场合的需要,如XILINX.htm" target="_blank" title="XILINX货源和PDF资料">XILINX公司XC95XL系列CPLD具有低功耗特性,输出电压2.5V/3.3V,端到端延时5ns,系统最高工作频率可达178M[3]。目前CPLD器件被广泛应用于代替中小规模数字电路,提高系统的可靠性、抗干扰性能和处理速度。通过管脚锁定和预留切换端口,可以在不改动原PCB电路板的基础上对模块的功能进行修改和完善,给调试带来方便。

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值以及对上行数据进行CRC校验,实际上都是完成数据的CRC计算,二者可以共用一个模块,通过控制部分协调分工。通常CRC采用性反馈移位寄存器串行实现(见图4)[4],这里提出了一种并行计算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计算。即每次处理一个字节。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top