<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

基于FPGA的射頻卡實(shí)時(shí)消費記錄系統設計

作者: 時(shí)間:2014-04-04 來(lái)源:網(wǎng)絡(luò ) 收藏

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

本文引用地址:http://dyxdggzs.com/article/235931.htm

關(guān)鍵詞:;NIOS II;FM1702SL;SD;文件系統

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

1 硬件模塊設計

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

 

 

1)FPGA的選用——EP2C8Q208C8N

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

2)電源部分

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

3)液晶顯示

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

4)射頻卡通信

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

ISO/IEC組織根據接口設備與卡作用距離的不同定義了3個(gè)國際標準,如表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ā),它具有微型、低功耗、防震、非易失性和保存數據無(wú)需能量消耗等特點(diǎn),并且兼容MMC閃存卡,廣泛應用于手機、數碼相機、智能機器人、GPS、電子測試設備和大容量存儲設備。

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

2 軟件設計

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

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

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

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

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

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

1)復位應答

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

2)防沖突機制

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

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

3)選卡

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

4)三次相互認證

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

5)對卡的操作

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

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

 

 

2.2 液晶顯示模塊

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

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

 

 

2.3 SD卡的軟件設計

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

 

 

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

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

 

 

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

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

 

 

2.4 射頻卡實(shí)時(shí)消費記錄系統軟件設計

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

 

 

3 上位機設計

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

 

 

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

4 結束語(yǔ)

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

fpga相關(guān)文章:fpga是什么


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


關(guān)鍵詞: FPGA SOPC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>