AC’97 編解碼器硬體驅動程式範例

邏輯主頁

LM4550 ac’97 音訊編解碼器

這是關於將 Texas InstrumentsLM4550 AC97 音訊編解碼器與運行頻率為 100MHz 的 FPGA 連接起來的範例硬體驅動程式。這設計可以透過縮放內部計數器或實例化板載 PLL 來擴展到其他時脈速度,以獲得 100MHz 時脈。使用 Spartan 6 FPGA 來開發 ac’97 控制器,但只要考慮到主系統時脈的訊號時序,就可以使用任何 FPGA。LM4550 ac’97 編解碼器的規格書如下:

LM4550.pdf (611.3 KB)

輸入/輸出

控制器的輸入包括主 FPGA 振盪器、低電平有效重設、串列資料線、來自 ac’97 晶片的 12.288MHz 位元時脈、3bit 來源選擇器(滑動開關)和 5bit 音量控制(滑動開關)。控制器的輸出包括同步訊號、串列資料輸出和用於初始化 ac97 的 ac97 低電平有效重設訊號。有兩個內部訊號用於將主 ac’97 控制器與命令狀態機同步。其中一個訊號每 20us 脈衝一次,另一個訊號是用於標籤階段錯誤檢查的訊號。有關串列幀輸入/輸出的詳細信息,請參閱 LM4550 規格書。

VHDL 層次結構

該控制器有兩個主要部分,ac97 用於產生訊號,並將 18bit 平行數據轉換為串列數據,以使 ac97 晶片與 FPGA 接口,命令控制器狀態機用於以循環方式配置 ac97 中的寄存器。 FSM 可以變更為包含使用者匯流排訊號輸入,路由至對應於不同暫存器值的每個狀態,以便即時設定編解碼器。 ac97 硬體驅動程式的兩個部分與一個週期的脈衝就緒訊號同步。層次結構的頂部只是將控制器的平行輸出路由回到時脈邊緣的控制器的平行輸入。這使得 ac97 從輸入到輸出進行通話。頂層檔案中的這個過程可以被連接埠對映使用者元件取代,以完成各種訊號處理任務。 VHDL 系統層次結構可以在下圖 1 的 RTL 圖中看到。

圖 1:AC’97 對話電路的 RTL 方塊圖

Xilinx isim 波形

如下所示,紅色箭頭顯示了到 ac97 的串列輸出流上的暫存器位址和命令資料。在暫存器和命令資料之後的串列輸出中可以看到左、右聲道數據字串。兩個底部訊號 ready 和 latching_cmd 用於同步層次結構底層的兩個元件。在運行 18bit 並行資料匯流排至使用者元件時,就緒訊號也應該用作樣本就緒訊號。

圖 2:AC’97 ISim 測試輸出

發展

這設計已透過使用 Xilinx Spartan-6 AtlysDigilent 開發板硬體上進行了驗證。

VHD 檔案

附加的 .vhd 檔案可以直接貼上到新的或現有的項目中。訊號需要透過 .ucf 檔案或使用 Plan Ahead 樣式引腳分配工具進行指派。

ac97_VHD_Files.zip (5.8 KB)