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

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



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

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

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















評論