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