基于SOPC的高速數(shù)據(jù)采集系統(tǒng)的分析與設計
本系統(tǒng)軟件包括SOPC系統(tǒng)程序、USB固件程序、驅動程序和應用程序等4個方面的設計。其中SOPC系統(tǒng)程序和USB固件程序是整個程序設計的核心。
3.1 SOPC系統(tǒng)程序設計
基于QuartusII和Nios的SOPC設計流程如圖4所示。
本系統(tǒng)中的SOPC系統(tǒng)軟件設計是指在FPGA中配置ALTERA公司NiosII嵌入式處理器的硬件環(huán)境。其中NiosII處理器的配置可基于QuartusII,它是ALTERA公司的大規(guī)模FPGA/CPLD開發(fā)工具。為了進行Nios處理器的開發(fā),通常要在Quartus里裝入NiosII的軟硬件開發(fā)工具,同時在提供的開發(fā)包中使用軟件SOPC Builder開發(fā)工具加載NiosII核和外圍接口,并定義相應的指令,然后對系統(tǒng)進行綜合后,再下載到FPGA中,就可以完成特定功能的處理器設計。
3.2 USB固件程序設計
CY68013芯片的固件程序主要負責處理PC機發(fā)來的各種USB設備請求,并與外圍電路進行數(shù)據(jù)傳輸。CYPRESS公司提供的固件程序框架中的兩個程序分別是FW.C和PERIPH.C。其中FW.C是固件運行的主程序文件,負責處理各種USB設備請求,包含程序框架的MAIN函數(shù),它可管理整個51內(nèi)核的運行。而對于PERIPH.C,則必須將PERIPH.C實例化,以實現(xiàn)所需的功能。固件程序中最重要的是TD_init()和TD_poll()兩個函數(shù)。TD_Init函數(shù)負責對CY7C68013的初始化,它一般在固件運行開始時調(diào)用;TD_poll函數(shù)是數(shù)據(jù)采集的執(zhí)行子程序,它首先判斷內(nèi)部端點6的緩沖區(qū)和外部FIFO緩沖器是否非空,如滿足條件,則啟動A/D轉換,并根據(jù)USB設備工作在高速和全速的不同來設置不同的傳輸計數(shù)。本設計中將接收數(shù)據(jù)端點6設為SLAVE FIFO模式,并使用AUTO IN模式來接收FPGA發(fā)來的數(shù)據(jù),數(shù)據(jù)流由外部FIFO控制器控制,并直接傳人端點6的FIFO,以等待主機提取。這里,CY7C68013僅作為數(shù)據(jù)通道,CPU不參與此過程。因此,只需在固件的初始化程序中配置好端點6的SLAVE FIFO接口模式,剩下的傳輸控制和其它的工作則可由FPGA來完成。以下是針對本設計的部分固件程序:
Void TD_Poll(void)//在設備運行時反復被調(diào)用,主要完成外部FIFO狀態(tài)檢測和數(shù)據(jù)傳輸
3.3 USB驅動程序設計
Windows下的USB驅動程序通常由3部分組成:USB設備驅動程序、USB總線驅動程序和USB主控制器驅動程序。其中,Windows操作系統(tǒng)已經(jīng)提供了處于驅動程序棧底的USB總線驅動程序和USB主控制器驅動程序。而USB設備驅動程序則要由設備開發(fā)者編寫。它應能通過向USB總線驅動程序發(fā)送包含URB(USB Request Block)的IRP(I/O Request Packet)來實現(xiàn)USB外設之間的信息交換。本設計采用Jungo公司的Win Driver進行驅動程序開發(fā),并根據(jù)Win Driver提供的驅動向導和用戶需要,來自動生成代碼框架,從而簡化驅動程序的開發(fā)。
3.4應用程序設計
本設計采用NI公司的虛擬儀器(VI)開發(fā)平臺Labview來進行應用程序的設計。VI包括三部分:前面板、框圖程序和圖標/連接器。其中前面板用于設置輸入數(shù)值和觀察輸出量。每一個前面板都對應著一段框圖程序。框圖程序可用Labview圖形編程語言―G語言來編寫。圖標/連接器是子VI可被其它Ⅵ調(diào)用的接口。圖標是子VI在其它程序框圖中被調(diào)用的節(jié)點表現(xiàn)形式;而連接器則是節(jié)點數(shù)據(jù)的輸入/輸出口。連接器端口與前面板的控制和顯示一一對應。
4結束語
本文介紹了一種基于SOPC和USB2.0接口的高速數(shù)據(jù)采集系統(tǒng)及其虛擬儀器的設計方法。實驗表明,基于本設計的高速數(shù)據(jù)采集系統(tǒng)具有抗干擾、可靠性高、失碼率低等優(yōu)點。
評論