基于CPCI總線的FPGA加載設(shè)計(jì)
4.2 參數(shù)模塊
由于以突發(fā)模式下載到Spartan-3E 的數(shù)據(jù)是以32 bit 為單位的,且三片F(xiàn)PGA 需要的參數(shù)各不相同,因此需要對下載到Spartan-3E 的數(shù)據(jù)進(jìn)行整理分類,再根據(jù)不同需求,下載到三片F(xiàn)PGA 中去。
狀態(tài)參數(shù)的上傳與下載流程相反。
4.3 FPGA 加載模塊
DMA 方式下載到Spartan-3E 的32 bit數(shù)據(jù)在塊內(nèi)是連續(xù)的,但是塊與塊之間是不連續(xù)的,為了保證FPGA 加載過程不中斷,在Spartan-3E 中需要一個(gè)FIFO 將數(shù)據(jù)進(jìn)行緩沖,從而保證BIT 數(shù)據(jù)流的連續(xù)性。為了確保加載數(shù)據(jù)在FIFO 中讀不空,在設(shè)計(jì)中當(dāng)FIFO 中的可讀的數(shù)據(jù)大于一定門限的時(shí)候觸發(fā)加載邏輯,同時(shí)為了防止FIFO 寫滿導(dǎo)致丟失數(shù)據(jù),當(dāng)FIFO中可讀的數(shù)據(jù)到達(dá)一定門限后,就不再請求DMA.通過這樣的保護(hù),可以保證BIT 流加載文件在加載邏輯開始后可以連續(xù)不斷的輸入給FPGA,直到FPGA 加載完成。
工控機(jī)按照32 bit 讀取BIT 文件存在Byte 翻轉(zhuǎn)的情況,下載到Spartan-3E 后需要再把32 bit的數(shù)據(jù)進(jìn)行翻轉(zhuǎn)過來,只需要用FIFO 讀時(shí)鐘32 倍頻的時(shí)鐘進(jìn)行計(jì)數(shù),將FIFO 讀出的32 bit 數(shù)據(jù)按照翻轉(zhuǎn)的對應(yīng)關(guān)系順序送出讀取即可滿足要求。
為了區(qū)分3片F(xiàn)PGA 的加載,設(shè)計(jì)兩比特的標(biāo)志位,用以區(qū)分不同的FPGA.在加載FPGA 之前先通過軟件先下載兩比特標(biāo)志位,配置模塊根據(jù)標(biāo)志位,切換數(shù)據(jù)流向,從而可以配置3 片不同的FPGA.
5 軟件設(shè)計(jì)
PCI9656 芯片的驅(qū)動(dòng)程序從其配套的SDK 開發(fā)包中獲取,工控機(jī)的控制軟件由C++語言完成,開發(fā)環(huán)境基于Borland 公司的C++Builder6.
在PLX公司提供的軟件開發(fā)包中,含有PCI9656與上位機(jī)通信的動(dòng)態(tài)庫文件Plxapi.dll.該文件包含了眾多函數(shù),可以直接調(diào)用。在設(shè)計(jì)中用PlxIoPortWrite 和PlxIoPortRead 來實(shí)現(xiàn)突發(fā)數(shù)據(jù)的下載和上傳,用PlxDmaBlockTransfer來實(shí)現(xiàn)FPGA的配置數(shù)據(jù)流的下載和大量實(shí)時(shí)數(shù)據(jù)的上傳。
6 結(jié)語
本文提出了基于CPCI 總線的FPGA 動(dòng)態(tài)加載的設(shè)計(jì)與實(shí)現(xiàn),在40 M 的工作時(shí)鐘下,在對同一塊FPGA 進(jìn)行加載時(shí),加載速度可以達(dá)到JTAG 加載方式的10 倍之多。該設(shè)計(jì)可以對三片F(xiàn)PGA 芯片進(jìn)行快速穩(wěn)定的下載,與常規(guī)PROM 加載方式相比有著快速靈活的優(yōu)勢,對加載速度和實(shí)時(shí)性要求比較高的系統(tǒng)設(shè)計(jì)中,具有很強(qiáng)的可操作性和可借鑒性。
評論