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