CPLD在射頻卡讀寫(xiě)器中的應用
文章出處:http://psychicreadingswithdeb.com 作者:江美龍 于興啟 畢慧玲 沈樹(shù)群 人氣: 發(fā)表時(shí)間:2011年10月22日
1 系統工作原理和CPLD特性
射頻卡讀寫(xiě)系統又稱(chēng)射頻識別系統(Radio Frequency Identification),它是利用無(wú)線(xiàn)方式進(jìn)行非接觸式雙向數據通信,進(jìn)而達到識別目標并交換信息的目的。射頻識別技術(shù)發(fā)展迅速,在門(mén)禁、交通這、防盜、金融、身份證管理、工業(yè)自動(dòng)化等方面有著(zhù)廣泛的應用前景。按照相關(guān)標準,非接觸IC卡可以分為3種:(1)密耦合卡(ISO10536),作用距離0~1cm。(2)近耦合卡(ISO 14443),作用距離0~10cm。(3)疏耦合卡(ISO 15693),作用距離0~150cm。
基于ISO 15693協(xié)議標準設計的射頻卡讀寫(xiě)器是目前中低頻段工作距離最遠(達1.5米)的射頻識別裝置。射頻卡由半導體廠(chǎng)商提供,目前國內外均有符合該標準的商用化射頻卡。
讀寫(xiě)器和射頻卡之間的數據交換主要有兩種:(1)下行數據是讀寫(xiě)器向射頻卡發(fā)送的具有固定幀格式的指令和數據:(1)上行數據是射頻卡響應讀寫(xiě)器指令后返回的數據。讀寫(xiě)器分前端收發(fā)模塊和后臺數據處理模塊。本文主要涉及數據處理部分,其主要功能有:指令裝配、下行數據編碼(讀寫(xiě)器→卡)、上行數據解碼(卡→讀寫(xiě)器)以及差錯控制模塊。射頻卡讀寫(xiě)器結構如圖1所示。
在實(shí)際應用中,密耦合卡和近耦合卡距離射頻卡讀寫(xiě)器作用距離特別小,一般每次只要求響應一張卡(如公交售票系統)。而疏耦合卡往往應用在對多卡同時(shí)進(jìn)行響應的場(chǎng)合(如多個(gè)持卡行李同時(shí)經(jīng)過(guò)門(mén)檢),讀寫(xiě)器與多卡同時(shí)進(jìn)行數據交換可以通過(guò)軟件設計加入“防碰撞機制”實(shí)現。但是由于讀寫(xiě)器在響應某張卡時(shí)的數據交換時(shí)間被限制在200μs~300μs內,選用普通單片機無(wú)法達到這一要求,因此在設計中選用了高速CPLD器件來(lái)實(shí)現編碼、解碼以及差錯控制功能。一方面在響應時(shí)間上滿(mǎn)足了實(shí)際應用的需要;另一方面簡(jiǎn)化了軟件設計。
CPLD是從PAL和GAL發(fā)展起來(lái)陣列型高密度PLD器件,內部由可編程邏輯宏單元、可編程I/O單元、可編程內部連線(xiàn)構成。它們大多采用E2PROM和FLASH閃存工藝,掉電后編程信息不丟失[2]。器件性能可以滿(mǎn)足不同場(chǎng)合的需要,如XILINX.htm" target="_blank" title="XILINX貨源和PDF資料">XILINX公司XC95XL系列CPLD具有低功耗特性,輸出電壓2.5V/3.3V,端到端延時(shí)5ns,系統最高工作頻率可達178M[3]。目前CPLD器件被廣泛應用于代替中小規模數字電路,提高系統的可靠性、抗干擾性能和處理速度。通過(guò)管腳鎖定和預留切換端口,可以在不改動(dòng)原PCB電路板的基礎上對模塊的功能進(jìn)行修改和完善,給調試帶來(lái)方便。
2 功能模塊實(shí)現
2.1 編碼器與譯碼器
單片機啟動(dòng)編碼后,編碼模塊向單片機發(fā)中斷(INT0)獲取待編碼的指令數據,同時(shí)將指令數據送入并行CRC模塊。當指令數據完成編碼后,控制電路將2字節CRC值緊接在數據之后進(jìn)行編碼。譯碼時(shí),譯碼器檢測到起始位后,開(kāi)始譯碼。譯碼后的數據通過(guò)中斷(INT1)通知單片機取走。并同時(shí)送入CRC并行運算模塊進(jìn)行校驗,單片機在特定的時(shí)刻(接收完最后一字節數據時(shí))讀取CRC校驗標志端口CRCALL0,判斷整個(gè)數據串的正確性。
編譯碼的數據格式如下:
(1)數據編碼 從讀寫(xiě)器到卡的數據采用脈沖位置調制即“1/256”編碼。用256個(gè)時(shí)隙表示8bit數據,通過(guò)控制bit脈沖出現的時(shí)間位置來(lái)表示0~255范圍內的數據。如圖2,在第255個(gè)位置出現的位置脈沖(9.44μs高電平的9.44μs低電平)表示數據E1(HEX),采用計數器加控制電路即可實(shí)現??刂撇糠謪f(xié)助實(shí)現數據無(wú)縫編碼及形成幀起始位和結束位,用VHDL設計易于實(shí)現。編碼后的數據進(jìn)行ASK調制(13.56MHz載波),經(jīng)天線(xiàn)發(fā)射出去。
(2)數據譯碼 從射頻卡返回的數據經(jīng)過(guò)一次解調(去掉13.56MHz載波)后,數據編碼格式如圖3所示??梢灾苯舆M(jìn)行數據譯碼,也可以去除子載波(423.75kHz)后得到Manchester碼再譯碼。這里采用后者,通過(guò)在每一bit的前、后半段時(shí)間內兩次取樣、判決、加以串并變換即可得到譯碼后的并行數據并送至并行CRC模塊進(jìn)行CRC校驗,同時(shí)送往單片機處理,行CRC模塊在校驗結束時(shí)通知單片機取校驗結果。
2.2 差錯處理模塊
與射頻卡內部電路配合,讀寫(xiě)器端采用了常用的CRC檢錯得傳機制。為了縮短處理時(shí)間,滿(mǎn)足讀寫(xiě)器在實(shí)際應用中對多張卡同時(shí)處理時(shí)的響應時(shí)間要求,設計采用硬件實(shí)現。
計算下行數據的CRC值以及對上行數據進(jìn)行CRC校驗,實(shí)際上都是完成數據的CRC計算,二者可以共用一個(gè)模塊,通過(guò)控制部分協(xié)調分工。通常CRC采用性反饋移位寄存器串行實(shí)現(見(jiàn)圖4),這里提出了一種并行計算CRC的方法,具有更高的處理速度,使讀寫(xiě)器對響應時(shí)間縮短。
CRC-CCITT算法生成多相式為:x 16+x 12+x 5+1[4]。計算CRC實(shí)際上是將數據通過(guò)線(xiàn)性反饋移位寄存器,所有數據移入后CRC寄存器的值即為16位CRC值。并行CRC運算模塊每次輸入8位數據,相當于一次并行運算就得到了串行移位運算時(shí)需要8位移位所得的結束。由表1~表4可以知道并行CRC實(shí)現的原理:每個(gè)時(shí)鐘到來(lái)時(shí)完成8bit數據CRC值計算;下一個(gè)8bit數據到來(lái)時(shí),把上一個(gè)8bit數據的CRC值C15~C0作為初值,繼續完成并行CRC計算。即每次處理一個(gè)字節。
表1 移位前CRC寄存器值(初值)
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
C15 | C14 | C13 | C12 | C11 | C10 | C9 | C8 | C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 |
表2 1次移位后CRC寄存器值
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X0 | C15 | C14 | C13 | C12 | C11 X0 |
C10 | C9 | C8 | C7 | C6 | C5 | C4 X0 |
C3 | C2 | C1 |
表3 2次移位后CRC寄存器
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X1 | X0 | C15 | C14 | C13 | C12 X1 |
C11 X0 |
C10 | C9 | C8 | C7 | C6 | C5 X1 |
C4 X0 |
C3 | C2 |
表4 8次移位后CRC寄存器值
R15 | R14 | R13 | R12 | R11 | R10 | R9 | R8 | R7 | R6 | R5 | R4 | R3 | R2 | R1 | R0 |
X7 X3 |
X6 X2 |
X5 X1 |
X4 X0 |
X3 | X7 X2 |
X6 X1 |
X5 X0 |
C15 X4 |
C14 X3 |
C13 X2 |
C12 X1 |
C11 X7 X0 |
C10 X6 |
C9 X5 |
C8 X4 |
表中參數說(shuō)明:Ri為CRC移位寄存器值(R0為低位),Ci為CRC移位寄存器初值(C0為低位),Di為輸入數據(D0為低位),Xi=Di XDR Ci,同一欄中數據的運算關(guān)系是異或(XOR)。
每次并行數據到來(lái)時(shí),各CRC寄存器值按表4運算關(guān)系更新。最后一個(gè)字節數據輸入后CRC寄存器的值(R0~R15)即為該數據組的CRC值。模塊設計采用了VHDL語(yǔ)言,同步更新R0~R15寄存器的值,從表中看出,一次CRC計算最多完成4組XOR運算。如:R3<=C11 XOFR D7 XOR C7 XOR D0 XOR X0;R15<=D7XOR C7 XOR D3 XOR C3。
3 控制模塊
單片機擴展了RAM后,P2口只有P2.5~P2.7可以用來(lái)提供控制信號,不能滿(mǎn)足需要,因而在CPLD內部將3路信號擴展為8路控制信號,以實(shí)現對各部分進(jìn)行協(xié)調控制。主要有編碼器和譯碼器的啟動(dòng)信號、復位信號、指令標志信號、CRC輸出信號等控制信號。
4 性能分析
這里選用1片XILINX XC95144實(shí)現整個(gè)數據處理模塊的功能,使用軟件平臺是XILINX.htm" target="_blank" title="XILINX貨源和PDF資料">XILINX Foundation 3.1i。XC95144內部有144個(gè)宏單元、3200可用門(mén)。圖5和圖6分別給出了編碼器和譯碼器的部分時(shí)序仿真結果及其說(shuō)明??梢钥吹?,二者均實(shí)現了協(xié)議要求,編碼器在準確的位置實(shí)現脈沖位置調制,譯碼器能準確地對曼徹斯特碼數據進(jìn)行譯碼,并計算出輸入數據的CRC值。
用AT89C51單片機提供編碼數據以及模擬待譯碼曼碼數據流對模塊功能進(jìn)行實(shí)測,用示波器觀(guān)察各測試點(diǎn)信號,結果基本上與時(shí)序仿真的波形圖相同,達到了預期設計的目標。
本文較系統地介紹了一類(lèi)遠距離射頻卡讀寫(xiě)器數字處理模塊的設計,特別在于:(1)采用單片CPLD實(shí)現了射頻卡讀寫(xiě)器數字模塊功能,采用了原理圖和VHDL相結合自頂向下的設計方法[2][5],樣機PCB版面積小,開(kāi)發(fā)周期短,性能穩定。其設計方案和思路對其他類(lèi)別射頻卡讀寫(xiě)器設計具有一定的參考價(jià)值。(2)提出了一種快速實(shí)現CRC-CCITT的并行運算方法,該方法適用于高速數據傳輸場(chǎng)合。
為了提高系統的安全性,可以對對寫(xiě)入卡中的數據進(jìn)行加密處理,即引入數據加密模塊,并將整個(gè)設計配置到一片容量更大的CPLD或FPGA中。
作者:北京郵電大學(xué)電子工程學(xué)院智能信息處理實(shí)驗室(100876)江美龍 于興啟 畢慧玲 沈樹(shù)群