新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > 基于SOPC的高速數據采集系統的分析與設計

        基于SOPC的高速數據采集系統的分析與設計

        作者: 時間:2009-12-28 來源:網絡 收藏
        3數據軟件設計

        本系統軟件包括系統程序、USB固件程序、驅動程序和應用程序等4個方面的設計。其中系統程序和USB固件程序是整個程序設計的核心。

        3.1 系統程序設計

        基于QuartusII和Nios的SOPC設計流程如圖4所示。


        本系統中的SOPC系統軟件設計是指在FPGA中配置ALTERA公司NiosII嵌入式處理器的硬件環境。其中NiosII處理器的配置可基于QuartusII,它是ALTERA公司的大規模FPGA/CPLD開發工具。為了進行Nios處理器的開發,通常要在Quartus里裝入NiosII的軟硬件開發工具,同時在提供的開發包中使用軟件SOPC Builder開發工具加載NiosII核和外圍接口,并定義相應的指令,然后對系統進行綜合后,再下載到FPGA中,就可以完成特定功能的處理器設計。

        3.2 USB固件程序設計

        CY68013芯片的固件程序主要負責處理PC機發來的各種USB設備請求,并與外圍電路進行數據傳輸。CYPRESS公司提供的固件程序框架中的兩個程序分別是FW.C和PERIPH.C。其中FW.C是固件運行的主程序文件,負責處理各種USB設備請求,包含程序框架的MAIN函數,它可管理整個51內核的運行。而對于PERIPH.C,則必須將PERIPH.C實例化,以實現所需的功能。固件程序中最重要的是TD_init()和TD_poll()兩個函數。TD_Init函數負責對CY7C68013的初始化,它一般在固件運行開始時調用;TD_poll函數是數據采集的執行子程序,它首先判斷內部端點6的緩沖區和外部FIFO緩沖器是否非空,如滿足條件,則啟動A/D轉換,并根據USB設備工作在高速和全速的不同來設置不同的傳輸計數。本設計中將接收數據端點6設為SLAVE FIFO模式,并使用AUTO IN模式來接收FPGA發來的數據,數據流由外部FIFO控制器控制,并直接傳人端點6的FIFO,以等待主機提取。這里,CY7C68013僅作為數據通道,CPU不參與此過程。因此,只需在固件的初始化程序中配置好端點6的SLAVE FIFO接口模式,剩下的傳輸控制和其它的工作則可由FPGA來完成。以下是針對本設計的部分固件程序:

        Void TD_Poll(void)//在設備運行時反復被調用,主要完成外部FIFO狀態檢測和數據傳輸


        3.3 USB驅動程序設計

        Windows下的USB驅動程序通常由3部分組成:USB設備驅動程序、USB總線驅動程序和USB主控制器驅動程序。其中,Windows操作系統已經提供了處于驅動程序棧底的USB總線驅動程序和USB主控制器驅動程序。而USB設備驅動程序則要由設備開發者編寫。它應能通過向USB總線驅動程序發送包含URB(USB Request Block)的IRP(I/O Request Packet)來實現USB外設之間的信息交換。本設計采用Jungo公司的Win Driver進行驅動程序開發,并根據Win Driver提供的驅動向導和用戶需要,來自動生成代碼框架,從而簡化驅動程序的開發。

        3.4應用程序設計

        本設計采用NI公司的虛擬儀器(VI)開發平臺Labview來進行應用程序的設計。VI包括三部分:前面板、框圖程序和圖標/連接器。其中前面板用于設置輸入數值和觀察輸出量。每一個前面板都對應著一段框圖程序。框圖程序可用Labview圖形編程語言―G語言來編寫。圖標/連接器是子VI可被其它Ⅵ調用的接口。圖標是子VI在其它程序框圖中被調用的節點表現形式;而連接器則是節點數據的輸入/輸出口。連接器端口與前面板的控制和顯示一一對應。

        4結束語

        本文介紹了一種基于SOPC和USB2.0接口的及其虛擬儀器的設計方法。實驗表明,基于本設計的具有抗干擾、可靠性高、失碼率低等優點。

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 白河县| 辉县市| 航空| 吕梁市| 乌兰察布市| 平谷区| 三都| 长子县| 长武县| 苗栗县| 博湖县| 公安县| 金堂县| 甘孜县| 米林县| 云安县| 昌邑市| 江西省| 金堂县| 上高县| 房山区| 镇安县| 咸宁市| 商都县| 子洲县| 石首市| 固原市| 从化市| 图木舒克市| 绿春县| 乳山市| 会宁县| 潍坊市| 长武县| 土默特左旗| 理塘县| 德钦县| 区。| 洮南市| 鄂托克旗| 南京市|