ARM9的超高頻讀寫器基帶編解碼設(shè)計
3.2 解碼狀態(tài)機
本文使用S3C2440的外部中斷捕捉比較器的輸出,使用單邊觸發(fā)上升沿檢測。對正確的MILLER2編碼序列進行上升沿捕捉時,兩次中斷的時間間隔有a和b兩種情況,其中a表示兩次中斷的時間間隔為Tari,即6.4μs,b表示間隔為1.5Tari,即9.6μs,據(jù)此繪制了MILLER2編碼的狀態(tài)以及狀態(tài)轉(zhuǎn)換圖。狀態(tài)共有22個,其中用于前導碼檢測的狀態(tài)有13個,用于數(shù)據(jù)檢測的有9個狀態(tài)。部分前導碼狀態(tài)以及全部數(shù)據(jù)狀態(tài)如圖7所示。本文引用地址:http://www.ex-cimer.com/article/201610/306001.htm
下面描述各個狀態(tài)的意義。
s0:解碼開始,表示收到1個a間隔;
s1:前導碼狀態(tài)的一種,表示收到2個a間隔;
s2:表示收到3個a間隔;
s3:收到4個a間隔,s3狀態(tài)若連續(xù)收到a間隔,則仍舊歸于s3狀態(tài);
s4:表示s3收到b間隔,此時前導碼中的16個數(shù)據(jù)“0”解碼結(jié)束,進入數(shù)據(jù)序列“101112”解碼狀態(tài);
s5~sa:前導碼中的數(shù)據(jù)序列“101112”檢測狀態(tài),依次類推,圖7中省略;
sb:前導碼結(jié)束狀態(tài);
d1:收到數(shù)據(jù)“0”的2/4位;
d2:收到完整數(shù)據(jù)“0”以及數(shù)據(jù)“1”的1/4位;
d3:收到完整數(shù)據(jù)“0”以及數(shù)據(jù)“0”的1/4位;
d4:收到數(shù)據(jù)“1”的3/4位;
d5:收到數(shù)據(jù)“0”的3/4位;
d6:收到完整數(shù)據(jù)“1”以及數(shù)據(jù)“0”或者“1”的1/4位;
d7:收到完整數(shù)據(jù)“0”以及數(shù)據(jù)“1”的1/4位;
d8:收到完整數(shù)據(jù)“1”;
d9:收到完整數(shù)據(jù)“0”以及數(shù)據(jù)“0”的2/4位。
以上狀態(tài)中,當狀態(tài)機當前狀態(tài)為d2、d3、d6、d7、d8、d9的一種時,表示收到1位有效數(shù)據(jù)。狀態(tài)轉(zhuǎn)換圖如圖8所示,狀態(tài)d2、d7只畫出了有效輸入時的轉(zhuǎn)換圖,在無效輸入時結(jié)束狀態(tài)機程序返回。
3.3 MILLER2解碼程序設(shè)計
進行MILLER2解碼主要是把接收到的中斷時間間隔作為狀態(tài)機的輸入,在狀態(tài)機里進行判斷和狀態(tài)轉(zhuǎn)換,解碼出有效數(shù)據(jù)。本設(shè)計中,使用上面描述的編碼方式碼發(fā)送Query命令,UHF電子標簽收到有效命令之后反向散射采用MILLER2編碼的16位偽隨機數(shù)RN16。程序在發(fā)送完畢Query命令之后立即使能外部中斷,在外部中斷處理函數(shù)中,把中斷時間間隔保存在數(shù)組中,等接收的中斷間隔超過b或者中斷次數(shù)超過接收RN16所需要的次數(shù)后,關(guān)閉中斷。在外部程序中通過狀態(tài)機進行解碼,解調(diào)的同時對有效位進行計數(shù),計數(shù)器達到16位后,返回解調(diào)出來的數(shù)據(jù),否則返回0。解調(diào)程序流程如圖9所示。
在主函數(shù)里面循環(huán)發(fā)送Query命令并進行MILLER2解碼,如果解碼成功則使用串口工具在上位機上打印出解調(diào)出來的RN16的值,解碼失敗則不打印。在PC上使用串口工具SecureCRT觀察到以十六進制輸出的RN16,如圖10所示,表明MILLER2解碼成功。
結(jié)語
本文提出使用ARM9進行UHF RFID讀卡器基帶編解碼,并加以實現(xiàn)。ARM9芯片豐富的外設(shè)使該方案擁有較好的擴展性、實用性,為進行系統(tǒng)級別的設(shè)計打下了基礎(chǔ)。
評論