• 沒有找到結果。

第五章 實現

5.1 USB 介面

5.1.3 USB 實作

可以將工作分為二部分,USB 描述元–讓 PC 的作業系統能使用此 USB 裝置;8051 I/O 控制程式–將資料傳送給 FPGA。

1.USB 描述元

在 USB 規格中定義了一些裝置群組,有 Audio、Communication、Display、

以及 Printer 等等,而在此是要即時地傳送 44.1KHz、16-bits 的音樂資料,所以 裝置群組應為 Audio 類型,且傳輸模式為等時傳輸。而等時傳輸,時間的最小單 位是 1ms,即最快每 1ms 將資料送出一次,因此,每一次的資料應該為 44 或 45 筆 16bit 的資料。

將控制單板宣告為 USB audio 裝置,需要寫 USB 描述元。USB 描述元是記 錄關於裝置的各種訊息與其相關設定。宣告一個 USB audio 描述元,其架構圖如 圖 5.6 所示。其每個 Descriptor 都是填寫一份表格[14]。

USB audio 描述元完成後,接上 PC 端,會辨識新連接的 USB 描述元,新增 加一個可用硬體–USB audio 音效裝置。此時,啟動應用程式,音樂訊號就會從 PC 送到 USB 的端點暫存區。只要是符合 USB Class 規定的裝置,其驅動程式已 包含在作業系統,而不用另外再寫其驅動程式,應用程式就可以直接使用裝置。

在圖 5.7 中可以看到在 PC 端上的硬體裝置管理員新增 EZ-USB 2131 ,以及將此 控制單板裝置列舉的狀況。

Device Descriptor

Configuration Descriptor

Audio Streaming Interface Descriptors

String Descriptors

Audio Control Interface Descriptors

Standard AC Interface Descriptor

-Classspecific AC Interface Descriptor Input Terminal Descriptor

Output Terminal Descriptor

Standard AS Interface Descriptor (Alternate Setting 0) Standard AS Interf ace Descriptor (Alternate Setting 1) Class-specific AS General Interface Descriptor

Standard Endpoint Descriptor

Class-specific Isochronous Audio Data Endpoint Descriptor Format Type Descriptor

Manufacturer String Descriptor Product String Descriptor

圖 5.6 USB Audio Descriptor 架構圖

圖 5.7 USB 單板以 USB audio Class 描述元裝置列舉

2.8051 I/O 控制程式

等時傳輸最快以每 1ms 的速度傳輸一次資料,資料傳完後,會發出一次等 時中斷。而利用等時中斷機制,來知道端點暫存區是否有資料可以輸出到 I/O PORT。端點暫存區有個 count 機制,記錄目前暫存區內有多少 Byte 資料,每當 暫存區被讀出 1Byte 資料,count 會減 1。利用 count 機制,來知道端點暫存區是 否已經空了,如果空了,即可結束搬運。

Cypress USB 專用晶片與 8051 Core 相容,是 Enhanced 8051。寫 C code 指 定端點暫存區,利用等時中斷與暫存區的 count 機制,將資料搬移到指定 I/O PORT。8051 是八位元單晶片,所以必須利用二個 OUTPUT PORT 送出 16bit 的 音樂資料,分別輸出 high byte 與 low byte。規劃第三個 PORT 的二個腳位,當做 單版與 FPGA 的控制訊號(ch1/ch2 write enable),這樣就能夠在單版上的 I/O PORT 得到 44.1KHz、16bit 的 PCM 音樂訊號。圖 5.8 可以看到此主程式的流程 圖[15];圖 5.9 為中斷服務程式流程圖[15]。

設定 USB 在一般工作模式

初始化副程式:

1.設定 PORTA、B、C 為 OUTPUT PORT 2.Enable PORTA、B、C

3.reset PORTA、B、C 腳位到初始值 4.設定端點 8 暫存區大小

5.指定端點 8 發出 Sof(等時)中斷 6.Enable Sof(等時)中斷

load USB Descriptors

Enable 必要的其他中斷:

SUDAV 中斷

SUTOK(執照封包)中斷 SUSP(中止)中斷

URES(重置)中斷

Enable USB 中斷

while(1)

圖 5.8 主程式流程圖

讀端點8暫存區,輸出

由下表 5.1.2 可以看到分別為 USB Device 接收由 PC 端傳送的音訊資料、8051 的 OUTPUT PORTA 與 PORTB,以及 USB Device 傳送資料到 FPGA 的情形。USB 等時傳 輸時間最小單位為 1ms,由圖 5.10 可知,在此設定此傳輸時間為 1ms,而 USB Device

相關文件