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