CPLD在射頻卡讀寫(xiě)器中的應用
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 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中。
評論