基于CY7C68013A和 LGS一8GL5的USB電視棒設計

4 USB固件設計要求
USB固件設計考慮代碼容量絕不能超過CY7C68013A代碼空間的限制。雖然CY7C68013A的128腳封裝可以擴展代碼和數據空間,基于成本考慮,要求代碼和數據不超過USB芯片內部SRAM的容量限制,這也是制約固件功能不能太復雜的一個關鍵因素。CY7C68013A支持從EEPROM或主機加載固件兩種模式。直接將固件燒入EEPROM,對固件的升級相對比較繁瑣,適合固件比較穩定的情況。采用動態加載固件的方法,能夠方便地升級固件,是一種推薦的方法。USB固件的主要功能如下:初始化USB芯片狀態,包括CPU時鐘的設置、USB端點(EP)的設置以及針對實際物理連接的slave FIFO的設置;接收主機的I2C命令,轉化為本地設備的操作;接收紅外信息傳送給主機。
TS流的傳輸因為設置為自動傳輸,發送過程中USB芯片中CPU不干預,故在流程圖不可見。對遙控器的紅外接收數據和I2C設備執行結果統一通過EPlIN采用中斷模式上傳給主機。
5 上位機控制要求
上位機對數字電視的應用針對不同操作系統已經定義出不同的架構。在常見的微軟Windows平臺上有TVand Broadcast Driver Architecture(簡稱BDA架構)。有關BDA詳細信息請參考微軟官方網站http://www.mi―crosoft.com/whdc/archive/broadcast.mspx;在Linux平臺上有Linux Digital Video Broadcast(DVB) subsystem,其維護網站為http://linuxtv.org/。兩種架構都對上層應用屏蔽了具體設備的細節,實現這種屏蔽需要編寫相應的驅動完成從系統調用到自定義操作的轉換過程。虛擬設備的操作直接暴露給操作系統以增強靈活性,而實際的操作轉換為基本的I2C操作或紅外操作,并經過USB進行包裝發送給底層固件,固件剝離出原始數據后對模塊執行實際的I2C操作或返回紅外設備數據。針對不同操作系統,各自驅動的編寫分別為:在Linux上主要為注冊dvb_USB_devlceproperties結構中相關的方法;在BDA架構上主要為填充Bda―sup.1ib中要求的屬性方法集。對主機的要求主要集中在兩個方面:具備能夠流暢解碼當前數字電視壓縮的音視頻的能力;操作系統最好支持多線程,以方便解碼和播放同步操作。


評論