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