国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

ARM9的超高頻讀寫器基帶編解碼設(shè)計

2013-10-10 01:56王丹張紅雨
關(guān)鍵詞:前導(dǎo)狀態(tài)機讀寫器

王丹,張紅雨

(電子科技大學(xué) 電子工程學(xué)院,成都611731)

引 言

普通的UHF讀寫器主控芯片使用FPGA較多,其優(yōu)點是FPGA對時序邏輯處理速度快,使用HDL語言很容易實現(xiàn)協(xié)議的編碼與解碼,但FPGA芯片本身很少具備串口、網(wǎng)口等通信接口模塊,功能擴展較麻煩。由于ARM9芯片集成了很多擴展接口,同時進(jìn)行操作系統(tǒng)移植等更高層次的設(shè)計也變得很容易,但對時序邏輯處理較難。因而本文提出了基于ARM9的UHF RFID讀寫器基帶編解碼方法,并加以實現(xiàn)。

1 基本原理

UHF RFID國際標(biāo)準(zhǔn)協(xié)議規(guī)定讀寫器到電子標(biāo)簽的通信應(yīng)采用 DSB-ASK、SSB-ASK 或者 PR-ASK 調(diào)制方式。本文使用ARM9芯片S3C2440的PWM(脈寬調(diào)制)控制模塊進(jìn)行PIE編碼,通過編碼信號控制射頻開關(guān)實現(xiàn)OOK調(diào)制。電子標(biāo)簽接收到命令后反向散射副載波應(yīng)答,經(jīng)過射頻模塊的天線接收后被解調(diào)電路還原成MILLER2數(shù)據(jù)。構(gòu)造 MILLER2解碼狀態(tài)機,使用S3C2440的外部中斷對MILLER2時序序列進(jìn)行上升沿捕捉,捕捉到的兩次中斷的時間間隔作為狀態(tài)機輸入,進(jìn)而解調(diào)出標(biāo)簽反射回來的數(shù)據(jù)。系統(tǒng)的硬件框圖如圖1所示。

圖1 系統(tǒng)硬件框圖

讀寫器射頻模塊的工作流程為:發(fā)送命令時,PIE編碼電平控制射頻芯片開關(guān),當(dāng)開關(guān)開啟時輸出射頻載波,關(guān)閉則不輸出,以達(dá)到OOK調(diào)制載波的目的。接收機采用零中頻接收機方案,直接對天線接收到的標(biāo)簽反向散射信號進(jìn)行解調(diào),解調(diào)完畢得到相位相差90°的I、Q兩路信號,通過差分放大器放大處理后,輸出到比較器,經(jīng)過比較后電路輸出MIILER2編碼時序信號。

2 PIE編碼

2.1 PIE碼簡介

EPC GNE2協(xié)議規(guī)定UHF讀卡器向標(biāo)簽發(fā)送命令時,數(shù)據(jù)應(yīng)采用PIE編碼。PIE碼通過高低電平的時間長度不同來規(guī)定數(shù)據(jù)是“1”還是“0”。協(xié)議使用Tari代表數(shù)據(jù)“0”,時間長度在6.25~25μs范圍內(nèi),容差為±1%,數(shù)據(jù)“1”的寬度在為1.5Tari~2.5Tari,如圖2所示。本次編碼中,Tari值為6.4μs,數(shù)據(jù)“1”的長度為11.4μs,PW 的長度為3.2μs。

圖2 PIE數(shù)據(jù)“1”和“0”的編碼方式

協(xié)議規(guī)定,完整的PIE碼需在有效數(shù)據(jù)前加上前同步碼或幀同步碼。前同步碼由定界符、Tari、RTcal以及TRcal這4段組成,用在Query命令上。幀同步碼省去了TRcal而直接由前三項組成,用在其他命令上。前同步碼示意如圖3所示。

圖3 PIE前同步碼

2.2 PWM實現(xiàn)PIE編碼

S3C2440有5個16位的定時器,其中定時器1~4具有PWM(脈寬調(diào)制)功能,定時器使用經(jīng)過分頻后的系統(tǒng)時鐘PCLK作為時鐘輸入。本設(shè)計中100MHz的PCLK經(jīng)過2分頻得到50MHz頻率的定時器輸入時鐘,定時器每計數(shù)一次耗時0.02μs。定時器使用兩個16位的緩沖寄存器TCNTB和TCMPB來實現(xiàn)PWM功能,TCNTB為一次PWM輸出計數(shù)次數(shù),采用遞減的方式計數(shù),當(dāng)計數(shù)減為TCMPB的時候,PWM輸出電平反轉(zhuǎn)。以數(shù)據(jù)“0”為例,其脈沖總寬度為6.4μs,低電平持續(xù)時間3.2μs,則可計算出 TCNTB=6.4/0.02=320次,TCMTB=3.2/0.02=160次。

為實現(xiàn)連續(xù)的PWM輸出,需要讓定時器工作在自動重載模式,即當(dāng)定時器計數(shù)器減為0的時候,在定時器中斷處理函數(shù)里更新TCNTB及TCNMPB,讓定時器重新開始一次脈寬輸出。定時器1初始化時經(jīng)過以下步驟:

①TCNMB以及TCMPB寄存器賦非零初值;

②TCON中人工裝載位配置為1,TCNTB和TCMPB更新到內(nèi)部計數(shù)器;

③TCON中自動重載位配置為1,為實現(xiàn)連續(xù)的PWM功能;

④TCON中輸出翻轉(zhuǎn)位配置為1,脈沖以高電平開始;

⑤TCON置為啟動位;

⑥TCON設(shè)置關(guān)閉人工裝載,定時器開始啟動。

經(jīng)過以上配置后,將定時器I/O引腳配置為PWM輸出模式就可以進(jìn)行PWM輸出。以一個Query命令的編碼為例,Query命令是由前同步碼和22位數(shù)據(jù)構(gòu)成,先將這22位數(shù)據(jù)計算好并保存在全局?jǐn)?shù)組data[]中,發(fā)送Query命令時開啟定時器1并允許定時器1中斷,在中斷處理函數(shù)里面更新TCNTB以及TCMPB的值來決定下一個脈沖的PWM輸出。編碼程序流程如圖4所示。

圖4 Query命令編碼程序流程

正確的Query命令會讓標(biāo)簽返回16位偽隨機數(shù)RN16。為了測試Query命令是否發(fā)送正確,使用示波器觀察比較器輸出,如果有MILLER2編碼的16位數(shù)據(jù)輸出,則表明Query命令正確。使用示波器觀察的結(jié)果如圖5所示,可以看出是MILLER2編碼的序列,詳細(xì)分析其位數(shù)后確認(rèn)是16位,驗證了PIE編碼的正確性。

圖5 示波器上觀察比較器RN16輸出

3 MILLER2解碼

3.1 MIILER2碼介紹

EPC GEN2協(xié)議中規(guī)定標(biāo)簽反向散射的數(shù)據(jù)應(yīng)該采用FM0或者M(jìn)ILLER的編碼方式。MILLER定義在兩個數(shù)據(jù)“0”之間變換相位,在數(shù)據(jù)“1”中間放置一個相轉(zhuǎn)化,MILLER2碼則表示每一位數(shù)據(jù)重復(fù)兩個副載波周期。完整的MILLER2編碼,需要在有效數(shù)據(jù)前加上前同步碼。前同步碼可編程選擇格式,在Query命令中將M和Trext這兩位設(shè)置為1,選擇前同步碼由16個數(shù)據(jù)“0”加上數(shù)據(jù)序列“101112”構(gòu)成。MILLER2數(shù)據(jù)定義和前同步碼如圖6所示。MILLER2碼每一位數(shù)據(jù)的時間長度由Tari值決定,本設(shè)計中為2個Tari(即12.8μs)。

圖6 MILLER2數(shù)據(jù)定義以及編碼狀態(tài)轉(zhuǎn)換

3.2 解碼狀態(tài)機

本文使用S3C2440的外部中斷捕捉比較器的輸出,使用單邊觸發(fā)上升沿檢測。對正確的MILLER2編碼序列進(jìn)行上升沿捕捉時,兩次中斷的時間間隔有a和b兩種情況,其中a表示兩次中斷的時間間隔為Tari,即6.4μs,b表示間 隔 為 1.5Tari,即 9.6μs,據(jù) 此 繪 制 了MILLER2編碼的狀態(tài)以及狀態(tài)轉(zhuǎn)換圖。狀態(tài)共有22個,其中用于前導(dǎo)碼檢測的狀態(tài)有13個,用于數(shù)據(jù)檢測的有9個狀態(tài)。部分前導(dǎo)碼狀態(tài)以及全部數(shù)據(jù)狀態(tài)如圖7所示。

下面描述各個狀態(tài)的意義。

圖7 部分前導(dǎo)碼狀態(tài)以及數(shù)據(jù)狀態(tài)

s0:解碼開始,表示收到1個a間隔;

s1:前導(dǎo)碼狀態(tài)的一種,表示收到2個a間隔;

s2:表示收到3個a間隔;

s3:收到4個a間隔,s3狀態(tài)若連續(xù)收到a間隔,則仍舊歸于s3狀態(tài);

s4:表示s3收到b間隔,此時前導(dǎo)碼中的16個數(shù)據(jù)“0”解碼結(jié)束,進(jìn)入數(shù)據(jù)序列“101112”解碼狀態(tài);

s5~sa:前導(dǎo)碼中的數(shù)據(jù)序列“101112”檢測狀態(tài),依次類推,圖7中省略;

sb:前導(dǎo)碼結(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)中,當(dāng)狀態(tài)機當(dāng)前狀態(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)機程序返回。

圖8 MILLER2解碼狀態(tài)轉(zhuǎn)換圖

3.3 MILLER2解碼程序設(shè)計

進(jìn)行MILLER2解碼主要是把接收到的中斷時間間隔作為狀態(tài)機的輸入,在狀態(tài)機里進(jìn)行判斷和狀態(tài)轉(zhuǎn)換,解碼出有效數(shù)據(jù)。本設(shè)計中,使用上面描述的編碼方式碼發(fā)送Query命令,UHF電子標(biāo)簽收到有效命令之后反向散射采用MILLER2編碼的16位偽隨機數(shù)RN16。程序在發(fā)送完畢Query命令之后立即使能外部中斷,在外部中斷處理函數(shù)中,把中斷時間間隔保存在數(shù)組中,等接收的中斷間隔超過b或者中斷次數(shù)超過接收RN16所需要的次數(shù)后,關(guān)閉中斷。在外部程序中通過狀態(tài)機進(jìn)行解碼,解調(diào)的同時對有效位進(jìn)行計數(shù),計數(shù)器達(dá)到16位后,返回解調(diào)出來的數(shù)據(jù),否則返回0。解調(diào)程序流程如圖9所示。

圖9 解碼程序流程圖

在主函數(shù)里面循環(huán)發(fā)送Query命令并進(jìn)行MILLER2解碼,如果解碼成功則使用串口工具在上位機上打印出解調(diào)出來的RN16的值,解碼失敗則不打印。在PC上使用串口工具SecureCRT觀察到以十六進(jìn)制輸出的RN16,如圖10所示,表明MILLER2解碼成功。

圖10 解碼結(jié)果

結(jié) 語

本文提出使用ARM9進(jìn)行UHF RFID讀卡器基帶編解碼,并加以實現(xiàn)。ARM9芯片豐富的外設(shè)使該方案擁有較好的擴展性、實用性,為進(jìn)行系統(tǒng)級別的設(shè)計打下了基礎(chǔ)。

[1]EPC global Inc.EPC Radio-Frequency Identity Protocols Class-l Gen-2UHF RFID Protocol for Communications at 860MHz-960MHz,2004.

[2]于志宏.UHF RFID讀寫器編解碼模塊的FPGA實現(xiàn)[J].單片機與嵌入式系統(tǒng)應(yīng)用,2012(10):12-15.

[3]肖菊蘭.超高頻RFID讀寫器設(shè)計[J].電子設(shè)計工程,2010(11):158-161.

[4]王振興.RFID系統(tǒng)中標(biāo)簽芯片數(shù)字部分的設(shè)計實現(xiàn)[D].天津:天津大學(xué),2008.

[5]陽璞瓊.超高頻RFID系統(tǒng)編解碼與校驗問題的研究[D].長沙:湖南大學(xué),2009.

猜你喜歡
前導(dǎo)狀態(tài)機讀寫器
基于“三思而行”的數(shù)學(xué)章前導(dǎo)學(xué)課設(shè)計——以《數(shù)的開方》(導(dǎo)學(xué)課)為例
基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
一種S模式ADS-B前導(dǎo)脈沖檢測方法
第四代移動通信隨機接入前導(dǎo)方案優(yōu)化
雙口RAM讀寫正確性自動測試的有限狀態(tài)機控制器設(shè)計方法
基于視頻抓拍讀寫器的高速公路防倒卡研究
基于隨機時隙的RFID讀寫器防沖突方法
基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
基于 LMAP和 EAP-SAKE的 RFID系統(tǒng)安全解決方案
基于VHDL的一個簡單Mealy狀態(tài)機
社旗县| 达尔| 建湖县| 苍南县| 丰宁| 余庆县| 保康县| 涡阳县| 思南县| 河东区| 沂南县| 丁青县| 大石桥市| 莱阳市| 南澳县| 德江县| 定结县| 金昌市| 隆尧县| 钦州市| 清远市| 镇雄县| 肥城市| 建始县| 瑞昌市| 怀安县| 台湾省| 随州市| 平陆县| 东源县| 白水县| 建阳市| 银川市| 镇赉县| 左权县| 新丰县| 富蕴县| 怀来县| 额济纳旗| 清水河县| 山丹县|