磁卡讀寫器用于讀寫磁卡、存折的磁條信息,可廣泛應(yīng)用于金融、郵電、商業(yè)、交通、海關(guān)、會(huì)員卡消費(fèi)和積分消費(fèi)等領(lǐng)域。
本文通過磁卡讀寫器的實(shí)際設(shè)計(jì)案例剖析它的技術(shù)原理。
通過磁性圖案存儲(chǔ)信息的技術(shù)最早出現(xiàn)在音頻記錄領(lǐng)域。從那以后,這個(gè)概念已被擴(kuò)展應(yīng)用于許多不同產(chǎn)品,如軟盤、音頻/視頻磁帶、硬盤以及磁條卡。本文將主要討論在全球金融交易和門禁控制中得到廣泛使用的磁條卡。
讀取磁條卡除了需要解碼數(shù)據(jù)的數(shù)字邏輯外還要求很重要的模擬電路。在磁卡上記錄數(shù)據(jù)是數(shù)字化的過程,通過沿著磁條長度磁化粒子完成。而成功讀取磁卡具有相當(dāng)大的挑戰(zhàn)性,因?yàn)樵趯?shí)際應(yīng)用中傳感器信號(hào)的幅度會(huì)隨著劃卡速度、磁卡質(zhì)量和讀卡磁頭的靈敏度而變化。此外,頻率也會(huì)隨著劃卡速度變化而變化。這就要求模擬電路能夠適應(yīng)這種變化,無失真地處理傳感器信號(hào)。本文將介紹如何處理傳感器信號(hào)變化的機(jī)制。
磁性與磁卡
為了理解劃卡速度、磁卡質(zhì)量和傳感器靈敏度的影響,了解信息是如何存儲(chǔ)在卡上的以及如何被讀卡頭檢測(cè)出來很重要。在磁性存儲(chǔ)系統(tǒng)中,信息用諸如氧化鐵等磁化材料上的極性圖案表示。圖1顯示了涂覆在磁化材料上的磁條。磁化材料上的顆??赡芴幱谀撤N特定的排列方向,或者因以前沒有受到特定方向磁場(chǎng)的照射而處于隨機(jī)方向。然而,如果施加一定的外部磁場(chǎng),磁條上的顆粒將按照外部磁場(chǎng)排列方向。
圖1:在外部磁場(chǎng)的影響下磁化材料按特定方向排列
在實(shí)用化系統(tǒng)中需要用到一個(gè)寫入磁頭,它其實(shí)就是繞在磁心上的一個(gè)線圈。通過控制線圈中的電流方向可以很容易編程磁場(chǎng)方向。這有助于在磁卡上形成南北極圖案。磁極之間的空隙越窄,磁卡上能夠編程的數(shù)據(jù)密度就越高。
在F2F編碼機(jī)制中,如果在比特周期內(nèi)發(fā)生磁極轉(zhuǎn)換,那就代表邏輯1,否則代表邏輯0.例如圖3所示,如果比特周期是Δ,而磁極轉(zhuǎn)換發(fā)生在Δ/2處,那么這個(gè)比特就是邏輯1,否則就是邏輯0.注意,邏輯1和邏輯0在磁卡上占據(jù)的長度是相同的。不過比特周期Δ會(huì)隨劃卡速度而變化,這個(gè)問題在讀卡中必須加以解決。
圖2:用電磁體磁化磁條表示邏輯1和邏輯0,其中用到了F2F編碼機(jī)制
圖3:磁極圖案和數(shù)據(jù)
值得注意的是,比特周期長度對(duì)邏輯1和邏輯0來說都是相同的。
根據(jù)信息量的多少,數(shù)據(jù)將被編碼在不同的行,這個(gè)行被稱為磁道。一個(gè)磁卡上最多可以有3條磁道。
圖4:磁卡上的磁道
讀過程正好相反,它需要使用一個(gè)結(jié)構(gòu)上與圖2所示的線圈-磁芯相同的讀卡頭。需要注意的是,每個(gè)磁道要有一個(gè)傳感器。在劃卡時(shí),源自磁條的磁場(chǎng)將在讀卡頭線圈中感應(yīng)出電壓。圖5顯示了從讀卡頭得到的波形。
圖5:讀卡頭(傳感器)信號(hào)
信號(hào)在每次磁通量轉(zhuǎn)換時(shí)出現(xiàn)峰值。這是因?yàn)樵诖艠O邊緣具有高密度的磁通量。正如你看到的那樣,信息是用信號(hào)峰值的位置表示的。峰值檢測(cè)器電路可以解碼這個(gè)信號(hào),或者使用閾值非常接近信號(hào)峰值的磁滯比較器。不過在我們將這個(gè)信號(hào)交給檢測(cè)器電路之前,還需要進(jìn)行額外的處理,原因如下:
劃卡速度:劃卡速度的單位規(guī)定為英寸/每秒(IPS)。一般來說,要求磁卡讀卡器能在5 IPS至50 IPS的劃卡速度范圍內(nèi)正常工作。傳感器信號(hào)的幅度隨劃卡速度變化而變化。劃卡速度增加,讀卡頭中的線圈切割的磁通量變化速度也增加,因此信號(hào)幅度會(huì)變大。與之相反,當(dāng)劃卡速度變慢時(shí),信號(hào)幅度將降低,從而增加數(shù)據(jù)讀取的難度。
磁卡質(zhì)量:隨著時(shí)間的推移以及使用量的增加,卡的質(zhì)量將隨著磁場(chǎng)強(qiáng)度的降低以及由于磁卡上的灰塵與刮擦而引起的失真加大而下降。這些因素綜合在一起將降低傳感器信號(hào)的幅度。
讀卡頭靈敏度:讀卡頭靈敏度取決于線圈匝數(shù)以及讀卡頭與磁條之間的間距。
由于所有這些參數(shù)的影響,信號(hào)幅度可能在幾百個(gè)uV至幾十個(gè)mV之間變化。這個(gè)范圍可以用放大器進(jìn)行補(bǔ)償。但不能用固定增益放大器。當(dāng)劃卡速度很高,卡的質(zhì)量又很好時(shí),放大器輸出可以飽和到電源軌電壓。而當(dāng)信號(hào)飽和時(shí),用兩個(gè)連續(xù)峰值之間的時(shí)間差代表的信息將丟失。因此如實(shí)地放大傳感器信號(hào)、不至于使波形發(fā)生飽和或改變很重要。這就要求使用增益可配置的放大器,以便我們隨時(shí)調(diào)整增益。要做到這一點(diǎn),系統(tǒng)必須能夠檢測(cè)信號(hào)變?nèi)醯臅r(shí)刻。這可以用跟蹤傳感器信號(hào)的ADC尋找近似的信號(hào)峰值來實(shí)現(xiàn)。
圖6顯示了一個(gè)完整的系統(tǒng)。最好將放大電路做成兩級(jí),用ADC接收第一級(jí)電路的輸出。這樣就無需高分辨率ADC,8位ADC就足以滿足這種應(yīng)用需求。第一級(jí)可以是固定增益的放大器,也可以是可變?cè)鲆娣糯笃?。第二?jí)是可變?cè)鲆娣糯笃鳌PU讀取ADC結(jié)果,并通過調(diào)整增益使第二級(jí)放大器的信號(hào)輸出達(dá)到最佳。第二級(jí)放大器的輸出送到峰值檢測(cè)器/磁滯比較器電路進(jìn)行峰值檢測(cè)。來自檢測(cè)器的脈沖輸出被饋送至定時(shí)器進(jìn)行時(shí)間差測(cè)量,然后由CPU解碼出1和0。
圖6:磁卡讀卡器框圖
至此仍然存在增益更新之前是否有數(shù)據(jù)丟失的問題。為了避免這個(gè)問題,磁卡的兩頭會(huì)用前導(dǎo)零進(jìn)行編碼以實(shí)現(xiàn)同步(這樣可以支持雙向劃卡)。這樣做的目的是使解碼器同步于劃卡速度。舉例來說,在磁道1中,共有約62個(gè)前導(dǎo)零。磁道1具有210個(gè)比特的數(shù)據(jù)密度。因此我們可以估算出劃卡速度為5 IPS時(shí)前導(dǎo)零將持續(xù)約60ms時(shí)間,劃卡速度為50 IPS時(shí)前導(dǎo)零將持續(xù)6ms.對(duì)另外兩個(gè)磁道來說或多或少是相同的,如圖7所示。在人為劃卡時(shí)一開始就是50 IPS的劃卡速度是不可能,因此系統(tǒng)具有比6ms長得多的時(shí)間來測(cè)量峰值并調(diào)整增益。圖8顯示了增益控制過程。
圖7:磁卡中三個(gè)磁道的內(nèi)容
需要注意的是,CPU在劃卡期間可能會(huì)持續(xù)精細(xì)調(diào)整增益以適應(yīng)變化的幅度。正常情況下,順著劃卡的方向,劃卡速度會(huì)增加,從而增加信號(hào)幅度。注意,在使用以恒定速度劃卡的自動(dòng)劃卡機(jī)時(shí)這個(gè)觀點(diǎn)是不正確的。
圖8:增益改變過程
實(shí)現(xiàn)磁卡讀卡器
圖9顯示了基于賽普拉斯PSoC 1的雙磁道磁卡讀卡器實(shí)現(xiàn)方案。PSoC 1處理器具有與8位處理器內(nèi)核集成在一起的可配置模擬和數(shù)字塊,在單顆芯片上集成了所有的功能。需要注意的是,圖中所示的無源器件是在處理器的外部。
圖9:PSoC 1磁卡讀卡器
由于傳感器信號(hào)可能是負(fù)的,因此必須用直流進(jìn)行偏置。在PSoC 1中,模擬信號(hào)可以以不同于電源地的地為參考。這個(gè)地被稱為模擬地(AGND),輸入信號(hào)被鉗位到這個(gè)模擬地。信號(hào)隨后用可編程增益放大器(PGA)進(jìn)行兩級(jí)放大。PGA是用連續(xù)時(shí)間模擬模塊實(shí)現(xiàn)的。它具有一個(gè)電阻陣列,當(dāng)配置為放大器時(shí)用于改變?cè)鲆妗T鲆婵梢员慌渲脼?至48之間18個(gè)選項(xiàng)之一。CY8C28243 PSoC 1集成了一個(gè)最大采樣速率為150ksps的10位SAR ADC。
CPU讀取ADC,然后控制放大器增益。放大后的信號(hào)送到磁滯比較器產(chǎn)生邊沿接近信號(hào)峰值的數(shù)字信號(hào)。CPU隨后必須調(diào)整放大器增益,使其閾值接近峰值但不超過峰值。這有助于避免磁卡發(fā)生抖動(dòng)時(shí)出現(xiàn)定時(shí)誤差。磁滯比較器輸出則送到定時(shí)器進(jìn)行脈沖寬度測(cè)量。CPU讀取定時(shí)器輸出,并解碼為邏輯1或0的數(shù)據(jù)。當(dāng)劃卡結(jié)束時(shí),CPU打包數(shù)據(jù)比特,檢查是否有錯(cuò)誤,然后通過I2C、SPI或UART接口將數(shù)據(jù)送給主機(jī)。
推薦閱讀:
CPU還是FPGA:圖像處理誰更適合?
詳讀無線傳感器網(wǎng)絡(luò)方案構(gòu)建的幾大要點(diǎn)
解讀LCD量子點(diǎn)OLED三種技術(shù)的優(yōu)勢(shì)和缺點(diǎn)
WiFi測(cè)試為何對(duì)智能手機(jī)如此重要?