1 引言
隨著FPGA技術(shù)的不斷發(fā)展和EDA工具軟件的完善,在FPGA芯片上實(shí)現(xiàn)的各種復(fù)雜算法和構(gòu)建SOPC系統(tǒng)成為研究的熱點(diǎn)。在很多科研和教學(xué)開(kāi)展的實(shí)驗(yàn)中,都需要為大規(guī)模FPGA芯片提供高速的計(jì)算機(jī)接口以及各種功能部件模塊。目前市場(chǎng)上有不少FPGA實(shí)驗(yàn)系統(tǒng),但由于受目標(biāo)芯片容量、接口、功能部件模塊等方面的限制無(wú)法滿(mǎn)足科研和教學(xué)需要。針對(duì)研究項(xiàng)目以及對(duì)參與項(xiàng)目研究學(xué)生培訓(xùn)的需求,我們?cè)O(shè)計(jì)了一套通用的FPGA實(shí)驗(yàn)系統(tǒng),該實(shí)驗(yàn)系統(tǒng)以大規(guī)模FPGA芯片為核心,帶有通用的計(jì)算機(jī)接口以及豐富的板上功能擴(kuò)展部件,能較好地滿(mǎn)足我們項(xiàng)目研究的需求,并可用于產(chǎn)品開(kāi)發(fā)的原型驗(yàn)證、IC 前端設(shè)計(jì)驗(yàn)證,IP核驗(yàn)證以及EDA課程實(shí)驗(yàn)教學(xué)等,同時(shí)也可作為高速多通道邏輯分析儀使用。
2 實(shí)驗(yàn)系統(tǒng)的設(shè)計(jì)思想
為使實(shí)驗(yàn)系統(tǒng)達(dá)到通用性的目的,系統(tǒng)上的FPGA芯片應(yīng)可通過(guò)PCI、USB、串行、RJ45(網(wǎng)絡(luò))和計(jì)算機(jī)交換數(shù)據(jù),并擴(kuò)展FLASH、SRAM、SDRAM、JTAG、AS/PS口以及配置芯片等功能部件。為滿(mǎn)足學(xué)生研究和實(shí)驗(yàn)的需要,我們把卡上的FPGA剩余IO引腳擴(kuò)展到一塊教學(xué)實(shí)驗(yàn)用板中,教學(xué)實(shí)驗(yàn)板帶有A/D、D/A、LCD、數(shù)碼管、發(fā)光二極管、時(shí)鐘系統(tǒng)、鍵盤(pán)、VGA、PS/2、RAM/ROM、單片機(jī)等實(shí)驗(yàn)功能模塊。

圖1:FPGA實(shí)驗(yàn)系統(tǒng)的整體框圖
3 系統(tǒng)的軟硬件設(shè)計(jì)
本實(shí)驗(yàn)系統(tǒng)有多種計(jì)算機(jī)接口,都采用了成熟的接口芯片,驅(qū)動(dòng)程序由芯片廠家提供,直接調(diào)用其上的接口函數(shù)實(shí)現(xiàn)計(jì)算機(jī)和實(shí)驗(yàn)系統(tǒng)的數(shù)據(jù)傳輸。RS232接口設(shè)計(jì)中用一塊LTC1386CS芯片實(shí)現(xiàn)電平轉(zhuǎn)換后TXD、RXD信號(hào)直接連接到FPGA的IO引腳,USB接口芯片用ISP1581BD,PCI橋接芯片用PLX9054,網(wǎng)絡(luò)接口芯片用LAN91C111,由于這些接口及相關(guān)程序的設(shè)計(jì)方法有很多共同的地方,因此我們主要介紹PC接口部分中的PCI-FPGA的設(shè)計(jì)。
3.1 PCI-FPGA硬件設(shè)計(jì)
PCI-FPGA部分的電源包括3.3V和1.5V兩種電壓,1.5V(VCORE)用于EP1S20F672的內(nèi)核電源(VCCINT),除此之外其它電源都由3.3V(VIO)提供。3.3V電源直接從PCI插槽獲取,1.5V電源則通過(guò)凌特公司的LT1764AEQ-1.5穩(wěn)壓芯片獲得。PCI插槽部分的設(shè)計(jì)主要是如圖2所示把對(duì)應(yīng)信號(hào)和9054連接好,另外還需注意把PRSNT1#和PRSNT2中的至少一個(gè)接地,目的是讓主機(jī)認(rèn)出本PCI設(shè)備的存在。工作模式用C模式,配置芯片用的SPROM 93CS66,配置信息參照廠家推薦[1]。



3.2 PCI接口軟固件及測(cè)試結(jié)果
9054的SDK(軟件開(kāi)發(fā)套件)提供9054的驅(qū)動(dòng)程序和各種9054的接口訪(fǎng)問(wèn)函數(shù),在此基礎(chǔ)上我們開(kāi)發(fā)了幾個(gè)應(yīng)用程序接口函數(shù)(調(diào)用失敗返回0,否則返回非0):
int OpenSGLDMAChannel_0(HANDLE hDevice); //打開(kāi)傳輸通道
int CloseSGLDMAChannel_0(HANDLE hDevice); //關(guān)閉傳輸通道
int SglDma_Transfer( //用Dma方式傳輸數(shù)據(jù)
HANDLE hDevice, //設(shè)備號(hào)
U8 *sendDmaBuffer, //傳輸緩沖區(qū)首地址
U32 LocalAddress, //局部總線(xiàn)首地址
U32 DataLength, //數(shù)據(jù)塊長(zhǎng)度
unsigned int direction //0: PC to Card; 1: Card to Pc );
int Single_ReadWrite( //用單字節(jié)方式傳輸數(shù)據(jù)
HANDLE hDevice,
U8 *pdata,
int datalength,
DWORD localaddress,
unsigned int direction //0: PC to Card; 1: Card to Pc );
9054局部總線(xiàn)中LHOLDA和READY是輸入信號(hào)(如圖3),其余都為輸出。當(dāng)9054向局部總線(xiàn)寫(xiě)時(shí),LHOLD信號(hào)由低轉(zhuǎn)高, LHOLDA應(yīng)由低轉(zhuǎn)高以響應(yīng)9054,9054輸出ADS為低電平時(shí)表示LA上已經(jīng)出現(xiàn)有效地址,當(dāng)READY為低電平時(shí),LD上每個(gè)周期傳輸一個(gè)數(shù)據(jù)。當(dāng)傳輸?shù)阶詈笠粋€(gè)數(shù)據(jù)時(shí)9054輸出BLAST一個(gè)周期的低電平,接著LHOLD變?yōu)榈碗娖?,等LHOLDA也變低則一次DMA傳輸結(jié)束。
我們按以上所述設(shè)計(jì)并加工了PCI卡,利用FPGA片上的RAM作為輸入和輸出FIFO,局部總線(xiàn)時(shí)鐘為50MHz,主機(jī)把內(nèi)存中的數(shù)據(jù)通過(guò)DMA傳輸方式把數(shù)據(jù)寫(xiě)入FPGA上的FIFO中。FIFO的深度為1KByte時(shí)PCI的傳輸速度為360Mbps,當(dāng)FIFO的深度為100Kbytes時(shí),其傳輸速度達(dá)到916Mbps。
4 實(shí)驗(yàn)系統(tǒng)的應(yīng)用
實(shí)驗(yàn)系統(tǒng)接口部分研制成功后,主要起以下作用。
4.1 邏輯分析儀
以9054局部總線(xiàn)調(diào)試為例,本實(shí)驗(yàn)系統(tǒng)(EP1S20F672C7)可作邏輯分析儀使用。首先用VHDL按9054局部總線(xiàn)時(shí)序設(shè)計(jì)好傳輸數(shù)據(jù)控制器并綜合,接著用QuartusII5.0建立SignalTap文件并設(shè)置監(jiān)測(cè)信號(hào)及觸發(fā)條件,編譯下載到FPGA中,然后便可進(jìn)行邏輯分析。以ADS上升沿作為觸發(fā)條件,BLAST上升沿作為結(jié)束條件,對(duì)地址線(xiàn)LA[31:0]、數(shù)據(jù)線(xiàn)LD[31:0]、ADS、LW/R、LHOLD、LHOLDA、READY、BLAST等70路數(shù)據(jù)DMA傳輸時(shí)進(jìn)行邏輯分析,其結(jié)果如圖3所示。
根據(jù)綜合結(jié)果,作為邏輯分析儀,本系統(tǒng)支持最高頻率超過(guò)220MHz,可對(duì)從預(yù)留的128個(gè)IO口輸入的數(shù)據(jù)進(jìn)行邏輯分析,存儲(chǔ)深度超過(guò)1.6Mbits。除可通過(guò)QuartusII5.0提供的SignalTap功能對(duì)信號(hào)分析處理外,也可以把從IO口接收到的數(shù)據(jù)通過(guò)PCI或USB接口傳輸給主機(jī),然后通過(guò)主機(jī)編程[3]實(shí)現(xiàn)對(duì)數(shù)據(jù)的分析處理。

4.2 密碼協(xié)處理器
本實(shí)驗(yàn)系統(tǒng)作為密碼算法協(xié)處理器使用的邏輯框圖如圖4所示。以用3DES對(duì)一段長(zhǎng)消息加密為例,主機(jī)分別將控制、模式和密鑰等數(shù)據(jù)送到協(xié)處理器的指定寄存器中,接著把明文送到FIFO中,然后待協(xié)處理器處理好數(shù)據(jù)后接收結(jié)果。協(xié)處理器根據(jù)控制、模式等設(shè)定,把FIFO中的32位數(shù)據(jù)轉(zhuǎn)換成分組塊,然后啟動(dòng)密碼運(yùn)算模塊,處理完一個(gè)分組塊后再把結(jié)果轉(zhuǎn)換并寫(xiě)到FIFO中,并設(shè)置狀態(tài)寄存器,一直到所有數(shù)據(jù)處理完畢。

由于受到PCI接口傳輸速率的限制,作為協(xié)處理器本實(shí)驗(yàn)系統(tǒng)的最大處理速度低于460Mbps(數(shù)據(jù)進(jìn)和出)。通過(guò)對(duì)3DES、AES、SHA1等算法的研究與實(shí)現(xiàn),本實(shí)驗(yàn)系統(tǒng)可作為超過(guò)400Mbps的協(xié)處理器,用于GF(2163)上ECC點(diǎn)乘則可超過(guò)3400次/S。
4.3 LEON核的驗(yàn)證
Leon CPU核[4]是公開(kāi)源代碼的32位RISC嵌入式處理器,完全實(shí)現(xiàn)了SPARC V8指令體系,可以根據(jù)用戶(hù)的需要對(duì)其功能進(jìn)行剪裁。該處理器由可綜合的VHDL代碼描述,可在FPGA中實(shí)現(xiàn),并且已經(jīng)成功流片30次以上。其性能、功耗及配套工具雖比不上MIPS和ARM,但0.85MIPS/MHz的處理速度(Dhrystone2.1測(cè)試平臺(tái)),對(duì)嵌入式Linux, eCos, Thumbpod(java), SnapGear等多種嵌入式操作系統(tǒng)的支持,免費(fèi)獲取VHDL源代碼與其配套的交叉編譯工具、主機(jī)調(diào)試工具以及嵌入式操作系統(tǒng)是其優(yōu)勢(shì)所在。
在我們的實(shí)驗(yàn)中Leon2 CPU核使用9830個(gè)LE,系統(tǒng)時(shí)鐘頻率達(dá)到40MHz以上。
責(zé)任編輯:gt
電子發(fā)燒友App

















評(píng)論