IIS接口的FPGA實現
如圖1所示,FPGA負責連接S3C4510B和UDA1341TS,需要實現S3C4510B總線接口、IIS總線和L3接口等。采用模塊化設計思想,劃分幾個功能相對獨立的模塊,并將各個功能模塊封裝成元件(Component),分別設計、仿真、測試、驗證各元件,最后在頂層調用各元件,并將元件信號與實際輸入輸出信號關聯,實現整體功能。實際實現了4個元件,如圖2所示。
圖2中,元件ARM_Interface負責實現與S3C4510B接口,主要是實現幾個可以映射成存儲器的地址單元,并提供這些單元與其他元件的接口。其中左右聲道單元為16位,在內部分別與2個FIFO相連接,以便音頻數據以選定的速率回放;IIS_out元件負責產生IIS總線或MSB對齊模式時序;L3_3B_Mod元件實現UDA1341TS數據傳輸模式中的DATA0擴展地址模式,共需傳輸3個字節;L3_2B_Mod元件則負責UDA1341TS其余的操作模式,只需傳輸2字節,即1字節地址和1字節數據。采用這種元件模塊設計的方法主要考慮到FPGA容易實現并行操作,但對復雜條件操作和邏輯判斷則不如處理器編程實現方便。因此并行實現多個元件,再由簡單邏輯和條件及輸入參數控制選定的元件工作,以實現需要的功能,這是FPGA設計的主要思想。
2.1 嵌入式處理器接口實現
此模塊主要負責處理與嵌入式系統的數據傳輸接口。主要輸入信號包括全局時鐘GCLK、片選信號nCS、寫信號nWBE0、讀信號nOE以及地址信號ADDR[4..0],其中地址信號確定相對于片選地址的偏移地址,5位地址信號最多可尋址32個16位地址單元。所有總線數據操作與全局時鐘同步。根據需要,實際設計實現了7個寄存器,分別是DATA0直接地址寄存器、DATA0擴展地址寄存器、DATA1寄存器、STATUS寄存器、左聲道音頻數據緩存器、右聲道音頻數據緩存器、FPGA控制寄存器,它們的偏移地址分別是0x00100、0x00110、0x01000、0x10100、0x00000、0x00010、0x01100。上述寄存器中,只有左右聲道音頻數據緩存器為16位,其余均為8位,因此只能實現不超過16位的IIS總線和MSB對齊模式。
測試本元件時,首先應測試單元的讀寫特性,通過ARM仿真器直接對編程單元進行讀寫即可驗證擴展的正確性。對于內建16x8的FIFO的左右聲道數據緩存器,可以通過讀寫多次測試其滿空狀態,并通過1個接在FPGA的I/O口線上的LED直接觀察。測試無誤后,該元件便可使用。
2.2 IIS總線實現
IIS總線通過IIS_out元件來實現,其接口信號如圖3所示。輸入信號是ARM_Interface提供的左右聲道音頻數據,輸出信號是IIS總線要求的3個串行信號,即bclk、sync和dout,分別與SCK、WS和SD對應,這3個信號通過FPGA的I/O口線與UDA1341的BCK、WS以及DATAI與DATAO信號線相連。IIS 格式的信號無論有多少位有效數據,數據的最高位(MSB)總是被最先傳輸,在WS 變化后的第2 個SCK脈沖處,因此最高位擁有固定的位置,而最低位的位置則依賴于數據的有效位數。實際設計的數據有效位是16位,低于16位數據時高位填充‘0’,處理器將數據以16位方式寫入左右聲道音頻數據緩存器時,自動進行高位填充。

實現IIS總線時序時,關鍵是要正確處理各種時鐘信號之間以及生成的IIS總線3個信號之間的時序關系。要依據音頻信號的采樣速率選擇FPGA系統時鐘和UDA1341時鐘選項,同時要合理使用計數器并正確讀取左右聲道音頻數據緩存器,最終實現音頻數據通過IIS總線的正確傳輸。
設計實現的IIS時序仿真圖如圖4所示。

圖4顯示的是IIS_out元件將左右聲道音頻數據緩存器內2個16位數據由IIS總線輸出的時序仿真結果。bclk信號的上升沿數據dout穩定有效,在bclk為低電平時dout才變化。當左右聲道控制信號sync為低電平時,傳輸左聲道數據‘0111011101110111’;當sync為高電平時,傳輸右聲道數據‘1010101010101010’。從仿真波形可知,每聲道數據反映在dout波形上是從sync電平變化后的第2個bclk周期開始的。
圖2所示的最高位對齊模式與IIS使用相同的信號,很容易在IIS總線的基礎上修改實現。實際實現的最高位對齊模式仿真時序正確,在此不再詳述。













評論