1 引言
針對航天測試系統(tǒng)的應(yīng)用需求,提出一種基于FPGA的微型數(shù)字存儲(chǔ)系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)是在傳統(tǒng)存儲(chǔ)測試系統(tǒng)的基礎(chǔ)上,利用可編程邏輯器件FPGA對傳統(tǒng)存儲(chǔ)測試系統(tǒng)進(jìn)行單元電路的二次集成,使測試系統(tǒng)體積大幅減小,功耗急劇降低,從而提高系統(tǒng)的抗高過載性能,增加系統(tǒng)靈活性、通用性和可靠性。FPGA不僅完成控制存儲(chǔ)及大部分的相關(guān)數(shù)字邏輯單元電路,而且使得整個(gè)存儲(chǔ)系統(tǒng)更為簡單,布線也更容易。另外,系統(tǒng)FPGA編程就是按照預(yù)定功能連接器件內(nèi)的熔絲,從而使其完成特定邏輯功能的過程,一旦完成編程,F(xiàn)PGA就相當(dāng)于一片能夠完成特定功能的集成電路,因而無需擔(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)需通過電源器件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)場可編程門陣列(FPGA)XC2S50
該系統(tǒng)采用XC2S50型FPGA控制各個(gè)接口,該器件是xilinx公司生產(chǎn)的Spartan II系列高性能現(xiàn)場可編程門陣列(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)邏輯控制功能簡化電路設(shè)計(jì),提高系統(tǒng)可靠性。且XC2S50系統(tǒng)可編程,只需將一根下載電纜連接到目標(biāo)板上,就可多次重復(fù)編程,方便電路調(diào)試。
2.1.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ī)通過USB接口控制可編程邏輯器件FPGA實(shí)現(xiàn)對Flash存儲(chǔ)器的塊擦除、頁編程、讀數(shù)據(jù)等操作。
塊擦除操作時(shí),計(jì)算機(jī)通過USB接口向FPGA發(fā)送指令,F(xiàn)PGA接收到指令后對Flash存儲(chǔ)器進(jìn)行塊擦除操作,并將狀態(tài)返回計(jì)算機(jī);頁編程操作時(shí), FPGA接收計(jì)算機(jī)并行接口發(fā)送的指令,立即對Flash存儲(chǔ)器進(jìn)行頁編程操作,先寫命令,再寫要編程的地址,然后將數(shù)據(jù)發(fā)送到Flash存儲(chǔ)器中;讀取數(shù)據(jù)操作時(shí),F(xiàn)PGA首先接收計(jì)算機(jī)發(fā)出的指令,然后對Flash存儲(chǔ)器進(jìn)行讀取數(shù)據(jù)操作,先寫命令,再寫要讀取的地址,然后開始輸出數(shù)據(jù),并將狀態(tài)返回計(jì)算機(jī)并行接口。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 FPGA對Flash的讀、寫、擦除操作
FPGA執(zhí)行對Flash的讀、寫、擦除操作是利用VHDL語言的狀態(tài)機(jī)實(shí)現(xiàn)的。狀態(tài)機(jī)控制Flash的時(shí)序電路簡單易行,邏輯關(guān)系一目了然。XC2S50接收到CY7C68013傳來的擦除控制命令,立即執(zhí)行擦除操作。按照時(shí)序,首先寫入自動(dòng)塊擦除設(shè)置命令60H,之后依次寫入2個(gè)行地址和1個(gè)列地址進(jìn)行尋址,而后寫入擦除命令D0H開始執(zhí)行擦除操作。
讀操作較為復(fù)雜,需要XC2S50和CY7C68013協(xié)同工作。這里只給出讀信號(hào)的操作過程。先寫人讀設(shè)置命令00H,因?yàn)樽x一次執(zhí)行一頁,所以地址的寫入是2個(gè)行地址和3個(gè)列地址,之后寫入讀命令,在等待rb變高后就可發(fā)送re信號(hào)將數(shù)據(jù)從Flash讀出。寫操作過程與讀操作類似,但寫操作完全由 XC2S50控制,寫完命令、地址后,開始寫入數(shù)據(jù),直到寫滿2 KB數(shù)據(jù),最后輸入頁編程命令。需要注意每寫完2 KB數(shù)據(jù),F(xiàn)lash返回的狀態(tài)信號(hào)rb所等待的時(shí)間較長,大約是140μs。圖2為頁編程的流程。
3.2 CY7C68013控制邏輯及固件程序設(shè)計(jì)
CY7C68013主要完成兩部分工作,一是實(shí)現(xiàn)對擦除的控制開關(guān)命令,即上位機(jī)通過USB接口發(fā)送擦除命令,CY7C68013接收到這個(gè)命令后,會(huì)發(fā)送一個(gè)約為200 ms低脈沖通知FPGA啟動(dòng)擦除操作;二是通過與FPGA配合,完成從Flash通過CY7C68013的GPIF接口讀入上位機(jī)的任務(wù)。 CY7C68013所用到的I/O包括控制線USBCTR1,狀態(tài)線US-BS0,讀信號(hào)線USBRD及8條數(shù)據(jù)線。