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