1 引言
針對(duì)航天測(cè)試系統(tǒng)的應(yīng)用需求,提出一種基于FPGA的微型數(shù)字存儲(chǔ)系統(tǒng)設(shè)計(jì)方案,。該系統(tǒng)是在傳統(tǒng)存儲(chǔ)測(cè)試系統(tǒng)的基礎(chǔ)上,,利用可編程邏輯器件FPGA對(duì)傳統(tǒng)存儲(chǔ)測(cè)試系統(tǒng)進(jìn)行單元電路的二次集成,使測(cè)試系統(tǒng)體積大幅減小,,功耗急劇降低,,從而提高系統(tǒng)的抗高過(guò)載性能,增加系統(tǒng)靈活性,、通用性和可靠性,。FPGA不僅完成控制存儲(chǔ)及大部分的相關(guān)數(shù)字邏輯單元電路,而且使得整個(gè)存儲(chǔ)系統(tǒng)更為簡(jiǎn)單,,布線也更容易,。另外,系統(tǒng)FPGA編程就是按照預(yù)定功能連接器件內(nèi)的熔絲,,從而使其完成特定邏輯功能的過(guò)程,,一旦完成編程,F(xiàn)PGA就相當(dāng)于一片能夠完成特定功能的集成電路,因而無(wú)需擔(dān)心程序運(yùn)行路徑出錯(cuò),,這與單片機(jī)有本質(zhì)區(qū)別,。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 器件選型
2.1.1 電源轉(zhuǎn)換器TPS70358
系統(tǒng)中,F(xiàn)PGA工作電壓為3.3 V和2.5 V,,USB接口器件CY7C68013 工作電壓為3.3 V,,F(xiàn)lash工作電壓為3.3 V,系統(tǒng)需通過(guò)電源器件TPS70358將電壓轉(zhuǎn)換為3.3 V和2.5 V,,為系統(tǒng)各器件提供電源,。TPS70358是新一代的集成穩(wěn)壓器,是一個(gè)自耗很低的微型片上系統(tǒng),,具有極低的自有噪音和較高的電源紋波抑制性能,,因此,該器件適用于一塊電路板或一片重要器件(如FPGA,、DSP)供電的電壓轉(zhuǎn)換
2.1.2 現(xiàn)場(chǎng)可編程門陣列(FPGA)XC2S50
該系統(tǒng)采用XC2S50型FPGA控制各個(gè)接口,,該器件是xilinx公司生產(chǎn)的Sparran II系列高性能現(xiàn)場(chǎng)可編程門陣列(FPGA),具有如下特點(diǎn):內(nèi)置標(biāo)準(zhǔn)JTAG接口,,支持3.3 V在系統(tǒng)可編程(ISP),;3.3 V電源,集成密度為50 000個(gè)可用門,;引腳到引腳的延時(shí)7.5 ns,,系統(tǒng)頻率高達(dá)200 MHz。采用單片F(xiàn)PGA實(shí)現(xiàn)邏輯控制功能簡(jiǎn)化電路設(shè)計(jì),,提高系統(tǒng)可靠性,。且XC2S50系統(tǒng)可編程,只需將一根下載電纜連接到目標(biāo)板上,,就可多次重復(fù)編程,,方便電路調(diào)試。
?。?.3 USB 2.0控制器CY7C68013
CY7C68013是Cypress公司生產(chǎn)的一款USB 2.0控制器,,該器件具有運(yùn)算速度快、功耗小和性價(jià)比高等特點(diǎn),。時(shí)鐘周期高達(dá)40 MHz,,每執(zhí)行1條指令需4個(gè)時(shí)鐘周期;其內(nèi)部集成有USB接口,,I2C總線接口等,,該系統(tǒng)設(shè)計(jì)實(shí)際數(shù)據(jù)傳輸速度高達(dá)10 MHz。
2.2 電路設(shè)計(jì)思路
圖1為系統(tǒng)硬件結(jié)構(gòu)框圖,,計(jì)算機(jī)通過(guò)USB接口控制可編程邏輯器件FPGA實(shí)現(xiàn)對(duì)Flash存儲(chǔ)器的塊擦除,、頁(yè)編程,、讀數(shù)據(jù)等操作。
塊擦除操作時(shí),,計(jì)算機(jī)通過(guò)USB接口向FPGA發(fā)送指令,,F(xiàn)PGA接收到指令后對(duì)Flash存儲(chǔ)器進(jìn)行塊擦除操作,并將狀態(tài)返回計(jì)算機(jī),;頁(yè)編程操作時(shí),, FPGA接收計(jì)算機(jī)并行接口發(fā)送的指令,立即對(duì)Flash存儲(chǔ)器進(jìn)行頁(yè)編程操作,,先寫命令,,再寫要編程的地址,然后將數(shù)據(jù)發(fā)送到Flash存儲(chǔ)器中,;讀取數(shù)據(jù)操作時(shí),,F(xiàn)PGA首先接收計(jì)算機(jī)發(fā)出的指令,,然后對(duì)Flash存儲(chǔ)器進(jìn)行讀取數(shù)據(jù)操作,,先寫命令,再寫要讀取的地址,,然后開始輸出數(shù)據(jù),,并將狀態(tài)返回計(jì)算機(jī)并行接口。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 FPGA對(duì)Flash的讀,、寫,、擦除操作
FPGA執(zhí)行對(duì)Flash的讀、寫,、擦除操作是利用VHDL語(yǔ)言的狀態(tài)機(jī)實(shí)現(xiàn)的,。狀態(tài)機(jī)控制Flash的時(shí)序電路簡(jiǎn)單易行,邏輯關(guān)系一目了然,。XC2S50接收到CY7C68013傳來(lái)的擦除控制命令,,立即執(zhí)行擦除操作。按照時(shí)序,,首先寫入自動(dòng)塊擦除設(shè)置命令60H,,之后依次寫入2個(gè)行地址和1個(gè)列地址進(jìn)行尋址,而后寫入擦除命令D0H開始執(zhí)行擦除操作,。
讀操作較為復(fù)雜,,需要XC2S50和CY7C68013協(xié)同工作。這里只給出讀信號(hào)的操作過(guò)程,。先寫人讀設(shè)置命令00H,,因?yàn)樽x一次執(zhí)行一頁(yè),所以地址的寫入是2個(gè)行地址和3個(gè)列地址,,之后寫入讀命令,,在等待rb變高后就可發(fā)送re信號(hào)將數(shù)據(jù)從Flash讀出,。寫操作過(guò)程與讀操作類似,但寫操作完全由 XC2S50控制,,寫完命令,、地址后,開始寫入數(shù)據(jù),,直到寫滿2 KB數(shù)據(jù),,最后輸入頁(yè)編程命令。需要注意每寫完2 KB數(shù)據(jù),,F(xiàn)lash返回的狀態(tài)信號(hào)rb所等待的時(shí)間較長(zhǎng),,大約是140μs。圖2為頁(yè)編程的流程,。
3.2 CY7C68013控制邏輯及固件程序設(shè)計(jì)
CY7C68013主要完成兩部分工作,,一是實(shí)現(xiàn)對(duì)擦除的控制開關(guān)命令,即上位機(jī)通過(guò)USB接口發(fā)送擦除命令,,CY7C68013接收到這個(gè)命令后,,會(huì)發(fā)送一個(gè)約為200 ms低脈沖通知FPGA啟動(dòng)擦除操作;二是通過(guò)與FPGA配合,,完成從Flash通過(guò)CY7C68013的GPIF接口讀入上位機(jī)的任務(wù),。 CY7C68013所用到的I/O包括控制線USBCTR1,狀態(tài)線US-BS0,,讀信號(hào)線USBRD及8條數(shù)據(jù)線,。
讀數(shù)時(shí),首先由單片機(jī)發(fā)出讀數(shù)開始命令USBCTR1,,F(xiàn)PGA接收到該命令后開始初始化,,包括寫入讀數(shù)設(shè)置命令、地址及讀數(shù)命令,,等待rb變高,, USBS0置低,當(dāng)單片機(jī)檢測(cè)到USBS0變低后,,開始給出一系列脈沖GPIF(USBRD),,將2 KB數(shù)據(jù)依次讀出。與此同時(shí),,F(xiàn)PGA在等待幾百納秒后將USBS0置高,,單片機(jī)在判斷USBS0變高后也將USBCTR1拉高,為下一頁(yè)讀數(shù)做準(zhǔn)備,。讀數(shù)時(shí)序如圖3所示,。
按照上述控制邏輯關(guān)系編寫CY7C68013的同件程序。CY7C68013有3種可用接口模式:端口,、GPIF主控和從FI-FO,?!癎PIF主控”接口模式使用PORTB和PORTD構(gòu)成通向4個(gè)FX2端點(diǎn)FIFO(EP2、EP4,、EP6和EP8)的16位數(shù)據(jù)接口,。GPIF作為內(nèi)部的主控制器與 FIFO直接相連.具有6個(gè)可編程控制輸出信號(hào)(CTR0~CTR5)和6個(gè)通用準(zhǔn)備就緒輸入信號(hào)(RDY0~RDY5),用戶可通過(guò)編程設(shè)置控制信號(hào)的輸出狀態(tài),,即器件在接收到何種就緒信號(hào)后執(zhí)行相應(yīng)操作,,GPIF控制代碼存放于器件內(nèi)部RAM的波形描述器中。從該系統(tǒng)需求出發(fā),,將CY7C68013設(shè)為FIFO Read模式,,使GPIF中的Slave FIFO與USB通信中端點(diǎn)緩沖直接建立連接,數(shù)據(jù)傳送無(wú)需CPU參與,。
固件程序代碼設(shè)計(jì)主要是根據(jù)系統(tǒng)需求設(shè)計(jì)相應(yīng)的程序框架圖,,再調(diào)用同件函數(shù)庫(kù) (Ezusb.lib)的函數(shù)進(jìn)行編程,初始化并重新列舉端點(diǎn),,然后在任務(wù)處理器中設(shè)定任務(wù),,在Keil C51環(huán)境中編譯代碼。編譯通過(guò)后,,將同件代碼下載到USB單片機(jī)中,,即可實(shí)現(xiàn)GPIF多字節(jié)讀操作,。
4 系統(tǒng)可靠性驗(yàn)證
為驗(yàn)證系統(tǒng)可靠性,,在數(shù)據(jù)輸入端循環(huán)輸入00~0F遞增數(shù)據(jù),通過(guò)上位機(jī)讀出,、寫入Flash中的數(shù)據(jù),,圖4為試驗(yàn)數(shù)據(jù)。通過(guò)讀出的數(shù)據(jù)驗(yàn)證了該系統(tǒng)數(shù)據(jù)存儲(chǔ)及回讀的正確性,、可靠性,。
5 結(jié)束語(yǔ)
采用FPGA對(duì)Flash進(jìn)行讀、寫,、擦除操作,,利用狀態(tài)機(jī)分時(shí)控制3種操作,簡(jiǎn)化程序設(shè)計(jì),,簡(jiǎn)單修改地址將Flash的容量從32 MB增加到1 GB,,提高了系統(tǒng)的可移植性、可擴(kuò)展性和通用性,,便于維護(hù)設(shè)備,,有利于產(chǎn)品的優(yōu)化和改進(jìn),縮短了開發(fā)周期,。采用USB單片機(jī)與PC機(jī)建立通信連接,,與現(xiàn)有設(shè)備很好兼容,,數(shù)據(jù)讀取速度可達(dá)1O MB/s,可方便,、快捷地讀取數(shù)據(jù),。通過(guò)多次驗(yàn)證,該系統(tǒng)工作穩(wěn)定,、可靠,。