新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于FPGA的射頻卡實時消費記錄系統(tǒng)設計

基于FPGA的射頻卡實時消費記錄系統(tǒng)設計

作者: 時間:2014-04-04 來源:網(wǎng)絡 收藏

摘要:基于使用戶刷卡消費的數(shù)據(jù)可進行采集存儲的目的,采用了在平臺上設計一種射頻卡實時消費記錄系統(tǒng)的方法。該系統(tǒng)采用了FATFS文件系統(tǒng),可將用戶數(shù)據(jù)及時保存到SD卡之中。通過對軟硬件模塊和上位機的設計,采用為開發(fā)平臺,對用戶刷卡消費的記錄寫入到SD卡中。利用SD卡的移動性,可方便地實現(xiàn)與計算機的數(shù)據(jù)交換,達到數(shù)據(jù)分析的目的。此法便于客戶對消費記錄的核對,具有實際商業(yè)價值。

本文引用地址:http://butianyuan.cn/article/235931.htm

關鍵詞:;NIOS II;FM1702SL;SD;文件系統(tǒng)

文中主要討論射頻卡實時消費記錄系統(tǒng)的硬件和軟件設計。硬件設計主要包括FPGA模塊、蜂鳴器、FM1702SL模塊、SD卡模塊、液晶顯示等模塊。軟件設計部分主要介紹射頻讀寫模塊的軟件設計、SD卡的軟件設計、FATFS文件系統(tǒng)移植、液晶顯示和上位機對IC卡充值和加密操作。

1 硬件模塊設計

射頻卡實時消費記錄系統(tǒng)組成如圖1所示,主要分為以下幾部分:FPGA、電源管理、射頻卡通信、SD卡、液晶顯示、蜂鳴器等。

 

 

1)FPGA的選用——EP2C8Q208C8N

EP2C8Q208C8N是ALTERA公司推出的Cyclone II芯片,該芯片有8 256個邏輯單元,208個引腳、用戶可用的I/O引腳為138個、18個嵌入式乘法器和2個鎖相環(huán)。與其他90-nm FPGAs同類產(chǎn)品相比在性能上提高了60%并且減少了一半的能量消耗。基于FPGA平臺設計的射頻消費記錄系統(tǒng)具有設計靈活、可裁剪、可擴充、可升級及軟、硬件在系統(tǒng)可編程的優(yōu)勢。

2)電源部分

本系統(tǒng)通過一個開關電源提供5 V的電源。系統(tǒng)中FPGA的工作電壓為3.3 V與1.2 V,配置芯片EPCS4S18工作電壓為3.3 V,射頻卡讀寫模塊、液晶顯示模塊還有蜂鳴器需要5 V供電,SD卡工作在3.3 V,通過AMS1117-1.2與AMS1117-3.3穩(wěn)壓器把5 V的轉換成1.2V和3.3V。

3)液晶顯示

液晶選用帶字庫的LCD12864。液晶顯示器工作電壓為5 V,通過開關電源來供電。液晶顯示系統(tǒng)可以顯示界面,如“一卡通研發(fā)”、“卡號”、“消費”、“余額”等信息。

4)射頻卡通信

考慮到開發(fā)性和經(jīng)濟性等因素,這里選用了復旦微電子股份有限公司設計的FM1702SL(該芯片與RC632結構類似),是基于ISO/EC14443標準的非接觸卡讀卡機專用芯片,工作頻率為13.56 MHz,并且支持多種加密算法。射頻卡我們選用的是Phihps公司的MIFARE標準IC卡,該類型卡的作用距離最大為10 cm,屬于緊耦合卡。

ISO/IEC組織根據(jù)接口設備與卡作用距離的不同定義了3個國際標準,如表1所示。

 

 

ISO/IEC14443標準又分為ISO/IEC14443A(代表產(chǎn)品是Philips公司的MIFARE射頻卡)和ISO/IEC14443B(ST、MoToRoLA、SAMSung、OTI和NEC公司生產(chǎn)的產(chǎn)品)標準。

5)SD卡模塊

SD卡是一種基于半導體快閃記憶器的新一代記憶設備,由日本松下、東芝及美國SanDisk公司共同研發(fā),它具有微型、低功耗、防震、非易失性和保存數(shù)據(jù)無需能量消耗等特點,并且兼容MMC閃存卡,廣泛應用于手機、數(shù)碼相機、智能機器人、GPS、電子測試設備和大容量存儲設備。

SD卡支持SPI和SD兩種通信接口模式,由于ALTERA公司提供了SPI接口IP核,因此在我們設計的系統(tǒng)中采用的是SPI模式。相對SD模式,SPI模式應用的更廣泛一些。

2 軟件設計

2.1 射頻通信模塊的軟件設計

系統(tǒng)采用的是FM1702SL非接觸卡讀卡機專用芯片和Philips公司的MIFARE標準IC卡共同組成了射頻卡讀寫模塊。了解S50非接觸式IC卡和FM1702SL的內(nèi)部結構與讀寫操作過程是編寫程序的關鍵,因此對其做簡單介紹。

MF1 IC S50由1KB的EEPROM、RF接口和數(shù)字式控制單元組成,能量和數(shù)據(jù)都通過天線傳送,天線由幾匝線圈組成并直接連接到MF1 IC S50。其與PCD之間的工作原理為:讀寫器向M1卡發(fā)一組固定頻率的電磁波,卡片內(nèi)有一個LC串聯(lián)諧振電路,其頻率與讀寫器發(fā)射的頻率相同,在電磁波的激勵下,LC諧振電路產(chǎn)生共振,從而使電容內(nèi)有了電荷,在這個電容的另一端,接有一個單向導通的電子泵,將電容內(nèi)的電荷送到另一個電容內(nèi)儲存,當所積累的電荷達到2 V時,此電容可做為電源為其它電路提供工作電壓,將卡內(nèi)數(shù)據(jù)發(fā)射出去或接取讀寫器的數(shù)據(jù)。

卡的內(nèi)部有16個扇區(qū),每個扇區(qū)分為4塊,分別是塊0、塊1、塊2、塊3。塊0~塊2為數(shù)據(jù)塊,用于存儲數(shù)據(jù)。塊3為控制塊,包括了密碼A、存取控制、密碼B。每個塊為16個字節(jié),以塊為存儲單元。第0扇區(qū)的塊0,用于存放廠商代碼,已經(jīng)固化不可更改。

每個扇區(qū)的密碼和存儲控制都是獨立的,根據(jù)實際需要設定各自的密碼及存儲控制。在控制塊中密碼A和密碼B各占6個字節(jié),存儲控制占4個字節(jié),在存儲控制中每個塊都有相應的3個控制位,通過設定不同的數(shù)就具有不同的意義。例如,存儲控制的4個字節(jié)為0xFF078069,表示塊0~塊3中分別對應的3個控制位都為0,通過驗證密碼A或者密碼B的正確性后就可以對數(shù)據(jù)塊0、1、2進行讀、寫、加、減、轉存和恢復操作,對于控制塊3來說,密碼A不能讀,存儲控制不能寫,通過驗證密碼A或密碼B的正確性后可以對密碼A進行寫、密碼B進行讀或寫、存取控制讀操作。

FM1702SL包含512字節(jié)的EEPROM和64字節(jié)的FIFO,F(xiàn)M1702SL的內(nèi)部寄存器組按功能不同分成8組,每組為一頁,包含8個寄存器,內(nèi)部還帶有加密單元,在FM1702SL中,6字節(jié)的密鑰必須以規(guī)定的格式存放在EEPROM內(nèi),需要12字節(jié)EEPROM。FM1702SL與S50 IC卡之間的通信可以簡單的分為下面幾個過程:

1)復位應答

射頻讀寫模塊上電復位后,然后進入復位應答模式。按照定義好的協(xié)議和波特率,讀卡器會對其有效工作范圍內(nèi)的卡進行檢驗,驗證卡片的類型。

2)防沖突機制

所謂防沖突就是當有多張卡在其工作范圍內(nèi)時,射頻讀寫模塊會根據(jù)控制命令選中其中的一張卡片進行后續(xù)操作。

那些沒有選中的卡片會處于空閑狀態(tài)等待下一次選卡操作。

3)選卡

射頻讀寫模塊對放入FM1702SL操作范圍之內(nèi)的某張卡片進行選中,獲得其卡序列號和卡片容量大小。

4)三次相互認證

當一張卡按照ISO14443A協(xié)議被選中后,射頻讀寫模塊根據(jù)命令訪問扇區(qū)號中的控制塊,并對該控制塊的密碼進行檢驗,檢驗方式使用三次認證令牌機制,該認證過程在執(zhí)行Authent1和Authent2指令時自動完成,在認證指令執(zhí)行之前,用戶必須保證在密鑰緩沖器中已經(jīng)準備好了密鑰,當密碼得到驗證,我們就可以通過加密進行相互通信了。

5)對卡的操作

通過認證后,就可以對特定扇區(qū)中的塊進行讀、寫、減值、加值、存儲、傳輸和中止操作。

在本項目中,F(xiàn)M1702SL非接觸讀卡機專用芯片與S50射頻卡通信的流程圖如圖2所示。

 

 

2.2 液晶顯示模塊

通過閱讀液晶數(shù)據(jù)手冊了解清楚基本原理后,根據(jù)我們項目的需求寫了12 864的驅動函數(shù)。驅動函數(shù)包括延時函數(shù)、液晶初始化函數(shù)、寫數(shù)據(jù)函數(shù)、寫命令函數(shù)、寫數(shù)據(jù)函數(shù)、液晶顯示函數(shù)、數(shù)值的轉換格式函數(shù)、顯示數(shù)值函數(shù)和射頻卡序列號顯示函數(shù)。

在液晶初始化函數(shù)中對通信方式、功能、顯示還有輸入方式進行了設置,同時也對液晶進行了清屏操作。在我們設計的模塊中選擇的是并口方式(PSB=1),功能設置為0x30(8字節(jié)界面、基本指令集),顯示設置為0x0C(整體顯示、光標不顯示、光標不反向),輸入方式設置0x06(光標右移、地址位加1、整體右移)。根據(jù)讀寫時序圖,我們對寫數(shù)據(jù)函數(shù)和寫命令函數(shù)進行了編寫。同時,根據(jù)項目要求對液晶界面顯示內(nèi)容的格式也進行了編寫。液晶部分軟件流程如圖3所示。

 

 

2.3 SD卡的軟件設計

builder中對SPI核進行相應的配置后,通過寫一些驅動函數(shù)就可以對外圍的SD卡進行讀寫操作了,這些讀寫操作只是簡單的對某個數(shù)據(jù)扇區(qū)進行讀寫操作,目的是測試底層通信是否正確,操作流程如圖4所示。

 

 

SD卡的底層通信測試正確后,我們只是把SD卡當做一塊大容量的Flash在用,為了讓時序寫入SD卡中的信息在PC中可以直接顯示,我們就要移植文件系統(tǒng)。目前流行的FAT文件系統(tǒng)模塊主要有:周立功公司的ZLG/FS、美國Micrium公司的UC/FS、SourceForge.net網(wǎng)站上發(fā)布的開源項目efsl(Embeded File System Library)以及日本電子愛好者設計并維護的FATFS文件系統(tǒng)模塊。由于FATFS具有開源、免費、高效等特點,并且相對其他文件系統(tǒng)模塊成熟一些。

在我們項目中用到了FatFS Module,F(xiàn)atFS Module是一個小型嵌入式系統(tǒng)下的FAT文件系統(tǒng)模塊,其代碼完全兼容ANSI C,而且與硬件平臺無關,可以簡單方便的移植到8051、PIC、AVR、SH、Z80、H8、ARM等MCU上,而不要做任何修改。FatFs有FatFs、Tiny-FatFs和Petit-Fat Fs 3個版本,F(xiàn)atFs適合比較大的RAM的設配;Ting-FatFs適合小RAM的系統(tǒng),比如單片機,代價是更慢的讀寫速度和更少的API函數(shù);Petit-FatFs適合8位處理器,占用極少的RAM,只對單文件進行讀寫操作。SD卡文件系統(tǒng)結構如表2所示。

 

 

各個層的作用:硬件抽象層完成NIOS2處理器對SD卡控制器相應寄存器的設置,把對SD卡的操作抽象為對相應的寄存器的操作;CRC校驗層實現(xiàn)了CRC校驗,對命令和響應使用CRC7校驗,對數(shù)據(jù)采用CRC16校驗;命令層定義了各種命令和響應,以向SD卡發(fā)送命令的函數(shù)為基礎,實現(xiàn)了讀寫SD卡內(nèi)部寄存器等功能;操作函數(shù)接口層向FatFS文件系統(tǒng)提供操作SD卡的函數(shù),包括:SD卡初始化、讀單塊數(shù)據(jù)、讀多塊數(shù)據(jù)、寫單塊數(shù)據(jù)、寫多塊數(shù)據(jù)、獲取SD卡信息等函數(shù);Disk I/O層起到一個橋梁作用,提供的函數(shù)都是在SD卡的函數(shù)基礎上編寫的;FatFS Mod ule層為應用程序提供函數(shù)。

FatFS Moudle移植只需對diskio.c、ff.h和integer.h進行相應的修改。diskio.c需要對6個接口函數(shù)進行編程,Disk_initialize、Disk_statue、Disk_read、Disk_write、Disk_ioct1和Get_fattime;ff.h需要根據(jù)處理器的類型進行設置;integer.h需要對數(shù)據(jù)類型進行修改以匹配處理器。在SD卡中創(chuàng)建文件并向文件寫入數(shù)據(jù)的流程圖如圖5所示。

 

 

2.4 射頻卡實時消費記錄系統(tǒng)軟件設計

通過對上面各個模塊的設計,結合各個模塊的操作,我們就可以把各個模塊整合成一個完整的系統(tǒng),整個系統(tǒng)流程圖如圖6所示。

 

 

3 上位機設計

上位機部分主要是對射頻卡進行操作,圖7為上位機的界面。

 

 

在我們項目中為了方便與上位機之間通信測試,在寫FM1702SL的驅動函數(shù)時,設置默認密碼為6個F,操作扇區(qū)為第1扇區(qū)(扇區(qū)號從0開始算起),對塊1進行寫操作。例如,對卡進行充值操作,前2個字節(jié)是任意的,第3個字節(jié)和第4個字節(jié)是金額,Ox****2710這個2710表示的十進制為10 000,對應的金額為100.00。

4 結束語

本系統(tǒng)采用FPGA為開發(fā)平臺,對用戶刷卡消費的記錄寫入到SD卡中,便于客戶對消費記錄的核對,具有實際商業(yè)價值。隨著電子系統(tǒng)向SOC方向發(fā)展,采用FPGA的系統(tǒng)設計將得到更加廣闊的發(fā)展。

fpga相關文章:fpga是什么


蜂鳴器相關文章:蜂鳴器原理
射頻卡相關文章:射頻卡原理
鎖相環(huán)相關文章:鎖相環(huán)原理
土壤濕度傳感器相關文章:土壤濕度傳感器原理


關鍵詞: FPGA SOPC

評論


相關推薦

技術專區(qū)

關閉