RFID電子標(biāo)簽卡的防碰撞模塊設(shè)計(jì)
RFID(RadioFrequency IdentifiCation,射頻識(shí)別)電子標(biāo)簽是一種把天線和IC封裝到塑料基片上的新型無(wú)源電子卡片;具有數(shù)據(jù)存儲(chǔ)量大、無(wú)線無(wú)源、小巧輕便、使用壽命長(zhǎng)、防水、防磁和安全防偽等特點(diǎn);是近幾年發(fā)展起來(lái)的新型產(chǎn)品,是未來(lái)幾年代替條形碼走進(jìn)“物聯(lián)網(wǎng)”時(shí)代的關(guān)鍵技術(shù)之一。閱讀器(即PCE,機(jī))和電子標(biāo)簽(即PICC卡)之間通過(guò)電磁場(chǎng)感應(yīng)進(jìn)行能量、時(shí)序和數(shù)據(jù)的無(wú)線傳輸,如圖l所示。在PCD機(jī)天線的可識(shí)別范圍內(nèi),可能會(huì)同時(shí)出現(xiàn)多張PICC卡。如何準(zhǔn)確識(shí)別每張卡,是A型
PICC卡的防碰撞(即anticollision,也叫防沖突)技術(shù)要解決的關(guān)鍵問(wèn)題。
1 A型卡防碰撞的工作原理
A型PICC卡采用了ISO/IECl4443系列協(xié)議,配合PCD機(jī)共同實(shí)現(xiàn)防碰撞的快速交互通信。為了從多張PICC卡中快速識(shí)別出一張來(lái)單獨(dú)進(jìn)行通信,A型卡采用了位碰撞監(jiān)測(cè)協(xié)議實(shí)現(xiàn)防碰撞過(guò)程,即閱讀器對(duì)卡返回的唯一識(shí)別號(hào)(即UID)數(shù)據(jù)幀中的每一位進(jìn)行沖突監(jiān)測(cè)。當(dāng)多張A型PICC卡在同一時(shí)刻向PCD機(jī)傳送UID數(shù)據(jù)幀時(shí),一定會(huì)在同時(shí)返回的某一位上有不同的位值。根據(jù)Manchester編碼規(guī)則,這一位正負(fù)邊沿抵消了,故PCD機(jī)無(wú)法識(shí)別的該數(shù)據(jù)位即為碰撞位。碰撞位監(jiān)測(cè)到后馬上啟動(dòng)防碰撞過(guò)程。PCD機(jī)主動(dòng)地發(fā)出一系列命令數(shù)據(jù)幀(即下傳),主要是ANTICOLLISION命令和SEELECT命令。PICC卡被動(dòng)地響應(yīng)每一條指令(即上傳)完成交互的會(huì)話過(guò)程。
對(duì)于ANTICOLLISION命令,如果PICC卡本身固有的UID CLn和命令中所帶的UID CLn數(shù)據(jù)位相等,則發(fā)送UIDCLn的其余位;否則,不發(fā)送響應(yīng).根據(jù)協(xié)議規(guī)定,ANTICOLLISION命令(即第l部分:下傳數(shù)據(jù))和PICC卡的響應(yīng)(即第2部分:上傳數(shù)據(jù))組合成一個(gè)防碰撞幀.而且防碰撞幀的數(shù)據(jù)位總數(shù)為56位。16≤下傳數(shù)據(jù)位數(shù)≤55;l≤上傳數(shù)據(jù)位數(shù)≤40。防碰撞幀舉例如圖2所示。由于56位的防碰撞幀可以在任意位置上分開(kāi),因此分兩種情況:在一個(gè)完整的數(shù)據(jù)字節(jié)之后分開(kāi),則在第1部分的最后一個(gè)數(shù)據(jù)位之后有一個(gè)校驗(yàn)位;在一個(gè)數(shù)據(jù)字節(jié)內(nèi)分開(kāi),則在第1部分的最后一個(gè)數(shù)據(jù)位之后不加校驗(yàn)位。情況1和情況2的不同分開(kāi)方法如圖2所示。
對(duì)于SELECT命令,如果PICC卡內(nèi)固有的UIDCLn和命令中的UID CLn相等,則發(fā)送SAK幀,否則不發(fā)送響應(yīng)。
2 防碰撞模塊的設(shè)計(jì)
2.1 引腳定義
防碰撞模塊的外部信號(hào)引腳定義及其在卡中與其他模塊的連接如圖3所示。
防碰撞模塊外部信號(hào)定義的VHDL代碼如下。
entity ANTICOLLICSION_BLOCK is port
(clk:in std_logic;―― 時(shí)鐘信號(hào)
reset:in steL_logic;――復(fù)位信號(hào)
rxd:in std_logic;一一外部數(shù)據(jù)串行輸入
active:in std_logic;――外部數(shù)據(jù)輸入的狀態(tài)
Csn_fb:in std_logic_vector(7 downto 0) ―― 來(lái)自ROM的并行數(shù)據(jù)
Csn_full:in std_logic;――ROM接口中的輸出Latch“滿(mǎn)”
Rd_csn:out std_logic;一一允許讀ROM
Txd:out std_logic;一一數(shù)據(jù)串行輸出
Txd_active:out std_logic--一數(shù)據(jù)輸出的狀態(tài)
);
end ANTiCOLLlCsIoN_BLOCK;
2.2 模塊劃分
防碰撞模塊主要分為4個(gè)部分:數(shù)據(jù)接收模塊(A)、讀ROM模塊(B)和數(shù)據(jù)比較(C)發(fā)送模塊(D),如圖4所示。A的作用是:接收PCD機(jī)發(fā)送的命令信號(hào),從rxd引腳串行輸入后對(duì)每個(gè)字節(jié)進(jìn)行校驗(yàn)。并進(jìn)行串并轉(zhuǎn)換,按字節(jié)逐個(gè)存入7個(gè)Latch中。B的作用是:從ROM接口模塊中讀出卡內(nèi)固有的UID CLn,按字節(jié)存入4個(gè)Latch后,計(jì)算UIDCLn的4個(gè)字節(jié)的異或值(即卡的BCC字節(jié)),并存入鎖存器。C和D的作用是:比較PCD機(jī)命令中的UIDCL.和卡的UIDCLn,并根據(jù)比較結(jié)果決定是否輸出響應(yīng).如果比較結(jié)果相同,則根據(jù)命令的類(lèi)型(ANTICOLLISION命令或SELECT命令)從txd引腳串行輸出不同的響應(yīng)數(shù)據(jù)。由于篇幅所限,后面主要介紹數(shù)據(jù)的發(fā)送模塊是如何設(shè)計(jì)實(shí)現(xiàn)的。
2.3 發(fā)送模塊的設(shè)計(jì)
數(shù)據(jù)發(fā)送模塊的設(shè)計(jì)實(shí)現(xiàn)如圖5所示。
2.3.1 實(shí)現(xiàn)對(duì)ANTICOLLISl0N命令的響應(yīng)
(1)輸出數(shù)據(jù)txd產(chǎn)生模塊的設(shè)計(jì)
當(dāng)來(lái)自PCD機(jī)的指令數(shù)據(jù)接收完畢(即Data_input_end=“1”)和讀卡內(nèi)ROM的UID數(shù)據(jù)結(jié)束(即Csn_input_end=“l(fā)”)后,判別器啟動(dòng)位計(jì)數(shù)器和字計(jì)數(shù)器來(lái)控制數(shù)據(jù)比較模塊,逐個(gè)比較Latch中的數(shù)據(jù).比較結(jié)果相等(即Bit_not_match=“0”)時(shí),令位計(jì)數(shù)器停止計(jì)數(shù)一個(gè)時(shí)鐘周期,此時(shí)字計(jì)數(shù)器和位計(jì)數(shù)器的值仍然分別等于NVB的高4位和低4位。以圖2情況1為例,字計(jì)數(shù)器值(即Byte_num)為2H,位計(jì)數(shù)器值(即Bit_num)為5H,輸出信號(hào)產(chǎn)生模塊從txd引腳發(fā)送起始位“0”;根據(jù)字計(jì)數(shù)器地址,從卡的UID CLn和BCC中選取字節(jié),輸出數(shù)據(jù)產(chǎn)生模塊在Bit_num為0H~7H時(shí),發(fā)送該字節(jié)的0~7位。在Bit_num為8H時(shí),計(jì)算并發(fā)送該字節(jié)的奇校驗(yàn)位;當(dāng)字計(jì)數(shù)器值為7H,位計(jì)數(shù)器值為OH時(shí),表示所有的剩余UID CLn數(shù)據(jù)位和BCC已全部發(fā)送,此時(shí)發(fā)送結(jié)束位。
(2)輸出狀態(tài)Txd__active產(chǎn)生模塊的設(shè)計(jì)
在比較結(jié)果相等(即Bit_not_matCh_“l(fā)”)時(shí),令輸出狀態(tài)信號(hào)Txd_active變?yōu)椤發(fā)”,表明發(fā)送開(kāi)始,在Bytenum為7H,Bit_num為lH時(shí),變?yōu)椤?”,表明發(fā)送結(jié)束。
2.3.2 實(shí)現(xiàn)對(duì)SELECT命令的響應(yīng)
(1)輸出數(shù)據(jù)txd產(chǎn)生模塊設(shè)計(jì)
在比較結(jié)果相等時(shí),輸出起始位“0”,并且令位計(jì)數(shù)器停止計(jì)數(shù)一個(gè)時(shí)鐘周期,此時(shí)Bytc_num為7H,Bit_num為OH。在接下來(lái)的8個(gè)時(shí)鐘周期里,即Bytc_num為7H,Bit_num為O~7H時(shí),串行輸出SAK幀,在Bit_num為8H時(shí),輸出奇校驗(yàn)位.接著B(niǎo)yte_num變?yōu)?H,Bitnum變?yōu)镺H,此時(shí)輸出結(jié)束位“O”。
(2)輸出狀態(tài).Txd_active產(chǎn)生模塊設(shè)計(jì)
令輸出狀態(tài)信號(hào)Txd_active在比較結(jié)果相等時(shí)變?yōu)椤發(fā)”,在Byte_num為8H。Bit_num為1H時(shí)變?yōu)椤癘”。
3 仿真結(jié)果分析
3.1 防碰撞模塊對(duì)ANTICOLLISION命令的響應(yīng)
在數(shù)據(jù)線rxd上設(shè)置一串?dāng)?shù)據(jù),與圖情況2中下傳數(shù)據(jù)相同,其中定義幀頭S為“10”和幀尾E為“0l”。啟動(dòng)Maxplus仿真器,得到輸出信號(hào)的波形,如圖6所示。對(duì)照?qǐng)D2情況2可見(jiàn),在txd線上得到的輸出數(shù)據(jù)和圖2情況2中上傳數(shù)據(jù)(即UID CLn的其余位)相同。說(shuō)明設(shè)計(jì)的防碰撞模塊對(duì)ANTICOLLISION命令的響應(yīng)是正確的。
3.2 防碰撞模塊對(duì)SELECT命令的響應(yīng)
在輸入數(shù)據(jù)線rxd上設(shè)置如圖7所示的一串?dāng)?shù)據(jù)。由圖8可見(jiàn),輸出數(shù)據(jù)線txd上的數(shù)據(jù)為“S00000000|1|E,這是正確的SAK響應(yīng)。說(shuō)明設(shè)計(jì)的
評(píng)論