《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于FPGA的微型數(shù)字存儲(chǔ)系統(tǒng)設(shè)計(jì)

基于FPGA的微型數(shù)字存儲(chǔ)系統(tǒng)設(shè)計(jì)

2015-09-17
關(guān)鍵詞: Protel DSP FPGA PROTEL99SE

  1 引言

  針對(duì)航天測試系統(tǒng)的應(yīng)用需求,提出一種基于FPGA的微型數(shù)字存儲(chǔ)系統(tǒng)設(shè)計(jì)方案。該系統(tǒng)是在傳統(tǒng)存儲(chǔ)測試系統(tǒng)的基礎(chǔ)上,利用可編程邏輯器件FPGA對(duì)傳統(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)的Sparran 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)試。

 ?。?.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)對(duì)Flash存儲(chǔ)器的塊擦除、頁編程、讀數(shù)據(jù)等操作。

2009114104547421.jpg

  塊擦除操作時(shí),計(jì)算機(jī)通過USB接口向FPGA發(fā)送指令,F(xiàn)PGA接收到指令后對(duì)Flash存儲(chǔ)器進(jìn)行塊擦除操作,并將狀態(tài)返回計(jì)算機(jī);頁編程操作時(shí), FPGA接收計(jì)算機(jī)并行接口發(fā)送的指令,立即對(duì)Flash存儲(chǔ)器進(jìn)行頁編程操作,先寫命令,再寫要編程的地址,然后將數(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語言的狀態(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í)行擦除操作。

2009114104550595.jpg

  讀操作較為復(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)對(duì)擦除的控制開關(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ù)線。

  讀數(shù)時(shí),首先由單片機(jī)發(fā)出讀數(shù)開始命令USBCTR1,F(xiàn)PGA接收到該命令后開始初始化,包括寫入讀數(shù)設(shè)置命令、地址及讀數(shù)命令,等待rb變高, USBS0置低,當(dāng)單片機(jī)檢測到USBS0變低后,開始給出一系列脈沖GPIF(USBRD),將2 KB數(shù)據(jù)依次讀出。與此同時(shí),F(xiàn)PGA在等待幾百納秒后將USBS0置高,單片機(jī)在判斷USBS0變高后也將USBCTR1拉高,為下一頁讀數(shù)做準(zhǔn)備。讀數(shù)時(shí)序如圖3所示。

2009114104552369.jpg

  按照上述控制邏輯關(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),用戶可通過編程設(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ù)傳送無需CPU參與。

2009114104552495.jpg

  固件程序代碼設(shè)計(jì)主要是根據(jù)系統(tǒng)需求設(shè)計(jì)相應(yīng)的程序框架圖,再調(diào)用同件函數(shù)庫 (Ezusb.lib)的函數(shù)進(jìn)行編程,初始化并重新列舉端點(diǎn),然后在任務(wù)處理器中設(shè)定任務(wù),在Keil C51環(huán)境中編譯代碼。編譯通過后,將同件代碼下載到USB單片機(jī)中,即可實(shí)現(xiàn)GPIF多字節(jié)讀操作。

  4 系統(tǒng)可靠性驗(yàn)證

  為驗(yàn)證系統(tǒng)可靠性,在數(shù)據(jù)輸入端循環(huán)輸入00~0F遞增數(shù)據(jù),通過上位機(jī)讀出、寫入Flash中的數(shù)據(jù),圖4為試驗(yàn)數(shù)據(jù)。通過讀出的數(shù)據(jù)驗(yàn)證了該系統(tǒng)數(shù)據(jù)存儲(chǔ)及回讀的正確性、可靠性。

  5 結(jié)束語

  采用FPGA對(duì)Flash進(jìn)行讀、寫、擦除操作,利用狀態(tài)機(jī)分時(shí)控制3種操作,簡化程序設(shè)計(jì),簡單修改地址將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ù)。通過多次驗(yàn)證,該系統(tǒng)工作穩(wěn)定、可靠。


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。