找回密码
 注册
关于网站域名变更的通知
查看: 466|回复: 2
打印 上一主题 下一主题

RFID电子标签卡的防碰撞模块设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-7-30 09:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
RFID电子标签卡的防碰撞模块设计

7 r. o& K  E5 C; F$ M( @% Y( \    RFID(RadioFrequency IdentifiCation,射频识别)电子标签是一种把天线和IC封装到塑料基片上的新型无源电子卡片;具有数据存储量大、无线无源、小巧轻便、使用寿命长、防水、防磁和安全防伪等特点;是近几年发展起来的新型产品,是未来几年代替条形码走进“物联网”时代的关键技术之一。阅读器(即PCE,机)和电子标签(即PICC卡)之间通过电磁场感应进行能量、时序和数据的无线传输,如图l所示。在PCD机天线的可识别范围内,可能会同时出现多张PICC卡。如何准确识别每张卡,是A型
9 `# O, w5 ?6 P% p: \PICC卡的防碰撞(即anticollision,也叫防冲突)技术要解决的关键问题。% y/ J' f' {7 E6 \( q7 J2 p7 T
2 O( _3 G3 n" m0 |- y
0 o6 j" m- ?% S- Y3 E  J
1 A型卡防碰撞的工作原理
" L+ w0 R: |) G! q/ z% j* |    A型PICC卡采用了ISO/IECl4443系列协议,配合PCD机共同实现防碰撞的快速交互通信。为了从多张PICC卡中快速识别出一张来单独进行通信,A型卡采用了位碰撞监测协议实现防碰撞过程,即阅读器对卡返回的少有识别号(即UID)数据帧中的每一位进行冲突监测。当多张A型PICC卡在同一时刻向PCD机传送UID数据帧时,一定会在同时返回的某一位上有不同的位值。根据Manchester编码规则,这一位正负边沿抵消了,故PCD机无法识别的该数据位即为碰撞位。碰撞位监测到后马上启动防碰撞过程。PCD机主动地发出一系列命令数据帧(即下传),主要是ANTICOLLISION命令和SEELECT命令。PICC卡被动地响应每一条指令(即上传)完成交互的会话过程。% C+ C" n4 h* k
1 Q6 u$ {5 g+ U* W5 j3 r
3 _, r3 n/ V) u9 g7 G% [2 Q3 o' q
    对于ANTICOLLISION命令,如果PICC卡本身固有的UID CLn和命令中所带的UID CLn数据位相等,则发送UIDCLn的其余位;否则,不发送响应.根据协议规定,ANTICOLLISION命令(即第l部分:下传数据)和PICC卡的响应(即第2部分:上传数据)组合成一个防碰撞帧.而且防碰撞帧的数据位总数为56位。16≤下传数据位数≤55;l≤上传数据位数≤40。防碰撞帧举例如图2所示。由于56位的防碰撞帧可以在任意位置上分开,因此分两种情况:在一个完整的数据字节之后分开,则在第1部分的较后一个数据位之后有一个校验位;在一个数据字节内分开,则在第1部分的较后一个数据位之后不加校验位。情况1和情况2的不同分开方法如图2所示。! ~. X! P. \: A% b
    对于SELECT命令,如果PICC卡内固有的UIDCLn和命令中的UID CLn相等,则发送SAK帧,否则不发送响应。
# B8 w8 ~& ]1 r" a0 n
4 @9 x5 F7 J& M  w  F* S2 防碰撞模块的设计
) f' g6 }/ d) ^7 Z9 @1 b6 D7 _! ~2.1 引脚定义

8 S% Q* z8 {, T4 u2 y6 V; S& T. W    防碰撞模块的外部信号引脚定义及其在卡中与其他模块的连接如图3所示。6 A. e9 r. Q4 o+ H
' C; a7 b. i" ?& @' c3 ?3 v
    防碰撞模块外部信号定义的VHDL代码如下。
/ g" E4 G- |  ]0 ?    entity ANTICOLLICSION_BLOCK is port
+ \) u7 O5 w5 \' j' o    (clk:in std_logic;—— 时钟信号) ?1 E: E6 J4 k! A7 q9 Q7 e9 }
    reset:in steL_logic;——复位信号) x1 a8 I4 }# `; g( X, b! N
    rxd:in std_logic;一一外部数据串行输入$ P" U0 }  J! y, ~& c
    active:in std_logic;——外部数据输入的状态
. B8 r( X6 g9 X, B9 x8 L    Csn_fb:in std_logic_vector(7 downto 0)   —— 来自ROM的并行数据
: Y$ ^3 C% D, Q' U    Csn_full:in std_logic;——ROM接口中的输出Latch“满”
+ D9 `) H5 m% y" R% T  P    Rd_csn:out std_logic;一一允许读ROM
  [+ O+ l1 \! d1 g* |3 I/ J    Txd:out std_logic;一一数据串行输出2 N' E+ E; L9 q! F6 W" s7 b5 l  h( ^
    Txd_active:out std_logic--一数据输出的状态
+ S8 Q3 i8 {0 h! a    );/ d4 y) k$ l. i; L9 j
    end ANTiCOLLlCsIoN_BLOCK;
8 ~( u9 t2 H2 f) j0 |% m, o2.2 模块划分- c" d2 p9 g' p" U" s9 c+ Z
    防碰撞模块主要分为4个部分:数据接收模块(A)、读ROM模块(B)和数据比较(C)发送模块(D),如图4所示。A的作用是:接收PCD机发送的命令信号,从rxd引脚串行输入后对每个字节进行校验。并进行串并转换,按字节逐个存入7个Latch中。B的作用是:从ROM接口模块中读出卡内固有的UID CLn,按字节存入4个Latch后,计算UIDCLn的4个字节的异或值(即卡的BCC字节),并存入锁存器。C和D的作用是:比较PCD机命令中的UIDCL.和卡的UIDCLn,并根据比较结果决定是否输出响应.如果比较结果相同,则根据命令的类型(ANTICOLLISION命令或SELECT命令)从txd引脚串行输出不同的响应数据。由于篇幅所限,后面主要介绍数据的发送模块是如何设计实现的。
5 [. c0 g5 [3 j4 x0 K% X- U* z
  o3 ~& Z9 m( E' ?% e9 W8 s2.3 发送模块的设计
% o  e8 I( `/ m- u6 g    数据发送模块的设计实现如图5所示。
7 {* s: n9 _- r) q
4 V  N- y8 h: ~2 U  H/ J2.3.1 实现对ANTICOLLISl0N命令的响应
$ \2 S% ]( b. b1 D# }; v4 o1 M(1)输出数据txd产生模块的设计

" H7 T  |# X  z; J' _% C. y    当来自PCD机的指令数据接收完毕(即Data_input_end=“1”)和读卡内ROM的UID数据结束(即Csn_input_end=“l”)后,判别器启动位计数器和字计数器来控制数据比较模块,逐个比较Latch中的数据.比较结果相等(即Bit_not_match=“0”)时,令位计数器停止计数一个时钟周期,此时字计数器和位计数器的值仍然分别等于NVB的高4位和低4位。以图2情况1为例,字计数器值(即Byte_num)为2H,位计数器值(即Bit_num)为5H,输出信号产生模块从txd引脚发送起始位“0”;根据字计数器地址,从卡的UID CLn和BCC中选取字节,输出数据产生模块在Bit_num为0H~7H时,发送该字节的0~7位。在Bit_num为8H时,计算并发送该字节的奇校验位;当字计数器值为7H,位计数器值为OH时,表示所有的剩余UID CLn数据位和BCC已全部发送,此时发送结束位。- `' Q$ H+ _1 G+ `3 A3 D
(2)输出状态Txd__active产生模块的设计, Z1 C. T. c. g! [. x
    在比较结果相等(即Bit_not_matCh_“l”)时,令输出状态信号Txd_active变为“l”,表明发送开始,在Bytenum为7H,Bit_num为lH时,变为“0”,表明发送结束。
& o" F& d1 a* I$ W" b2 Q2.3.2 实现对SELECT命令的响应3 K3 _9 \# J  B; B) n1 i
(1)输出数据txd产生模块设计

0 I4 n( l! K$ a8 l* l6 g    在比较结果相等时,输出起始位“0”,并且令位计数器停止计数一个时钟周期,此时Bytc_num为7H,Bit_num为OH。在接下来的8个时钟周期里,即Bytc_num为7H,Bit_num为O~7H时,串行输出SAK帧,在Bit_num为8H时,输出奇校验位.接着Byte_num变为8H,Bitnum变为OH,此时输出结束位“O”。. J- S# K( L+ z- W. e0 Z( C
(2)输出状态.Txd_active产生模块设计0 |% z1 ~! p. }# g, y: L0 e
    令输出状态信号Txd_active在比较结果相等时变为“l”,在Byte_num为8H。Bit_num为1H时变为“O”。2 j9 q- c* R8 }, Y1 _! C! W  B$ h3 z
. p$ L  {; E7 \* Z  D9 y
3 仿真结果分析- V8 z/ y0 X# _/ v3 z
3.1 防碰撞模块对ANTICOLLISION命令的响应

6 p: ^% K( E3 j% C& b( D5 r4 _    在数据线rxd上设置一串数据,与图情况2中下传数据相同,其中定义帧头S为“10”和帧尾E为“0l”。启动Maxplus仿真器,得到输出信号的波形,如图6所示。对照图2情况2可见,在txd线上得到的输出数据和图2情况2中上传数据(即UID CLn的其余位)相同。说明设计的防碰撞模块对ANTICOLLISION命令的响应是正确的。) ?8 g' v8 `/ D/ j; a4 Z* m! c

# ^6 R: r+ D6 b* G+ @' Z, D+ b* l- \- U3 q: W0 \
0 \2 l# w0 v* C& F1 h! H
3.2 防碰撞模块对SELECT命令的响应  c/ Y. T& q- O/ x' o2 E
    在输入数据线rxd上设置如图7所示的一串数据。由图8可见,输出数据线txd上的数据为“S00000000 1 E,这是正确的SAK响应。! N9 m/ i2 J7 i- n4 F+ V/ A
1 v  ~% K8 e* B" s

该用户从未签到

2#
发表于 2019-7-30 16:38 | 只看该作者
看看楼主说的方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-5 10:26 , Processed in 0.156250 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表