FPGA的嵌入式系統(tǒng)USB接口設計
3.2 USB驅動程序
USB系統(tǒng)軟件由主機中的軟件和設備同件構成。USB主機中的軟件主要包括USB設備驅動(USBDD)、USB總線驅動(USBD)和USB主控制器驅動(HCD)。
USB設備驅動程序(或客戶驅動程序)處于最頂層,它支持特定設備類的驅動,負責與其對應的USB設備進行通信和讀寫控制,實現(xiàn)各個USB設備特殊的功能應用。連接USB設備的每種類型的功能單元都必須具有客戶驅動程序??蛻趄寗映绦虬裊SB設備看作是一個可被訪問的端點的集合。USB設備可以被控制并與其功能單元通信。USB設備驅動程序通過I/O請求包(IRP)向USB總線驅動程序發(fā)送請求。這些請求包將一個給定的傳輸初始化。這種傳輸可以來自于一個USB目標設備或發(fā)送到USB設備。
USB總線驅動(USBD)是在主機控制器驅動和USB設備驅動之間的模塊,它對應USB協(xié)議的USBD,在Windows系統(tǒng)中由USBD.SYS模塊提供。它是在某一操作系統(tǒng)上對USB總線和協(xié)議提供支持的軟件,獨立于USB設備和USB設備驅動,并對它們進行控制和提供統(tǒng)一編程接口。
USB主控制器驅動程序(HCD)處于最底層,它負責對主機控制器進行抽象和對USB提供低級支持。
3.3 PC端的軟件設計
PC端的軟件設計采用面向對象程序設計,分為核心類(包括Provider,Data,Net)和應用類(包括UI,Call,Record)。其中核心類提供對硬件、操作系統(tǒng)和網(wǎng)絡環(huán)境的支持,應用類在核心類的基礎上提供對用戶操作的支持。Provider類定義對USB設備的讀寫操作,提供讀取數(shù)據(jù)方法(readusb())和寫數(shù)據(jù)方法(writeusb());Data類包括地址數(shù)據(jù)(Address)、音頻數(shù)據(jù)(Audio)和控制數(shù)據(jù)(Command)的定義,并提供數(shù)據(jù)的分解方法(Decompose())和組合方法(Compose());Net類提供對網(wǎng)絡的支持,包括網(wǎng)絡協(xié)議的選擇和數(shù)據(jù)的接收與發(fā)送。UI類提供對用戶界面的支持,包括窗口、對話框等,實現(xiàn)基本用戶框架與應用入口;Call類提供通話功能;Record類則提供電話錄音功能;根據(jù)不同應用要求,可擴展其他應用類。具體結構如圖5所示。
4 結束語
USB靈活的接口和可編程特性可簡化外部硬件的設計,提高系統(tǒng)可靠性。而USB2.O控制器CY7C68013A也廣泛應用于許多數(shù)據(jù)傳輸領域。FPGA已成為通信、計算機、消費類電子產品等領域的基礎器件。這里所介紹的USB設備就是一個基于FPGA的嵌入式系統(tǒng),該系統(tǒng)軟硬件都具有模塊化的特性,易于改造成其他應用場合的語音控制系統(tǒng)(DAA除外)。該設計的應用可節(jié)省大量的人力、物力。具有較大的推廣意義和使用價值。
評論