從音頻輸入到輸出,現(xiàn)有的實(shí)時(shí)數(shù)字音頻系統(tǒng)很難實(shí)現(xiàn)低于 1ms 的時(shí)延。實(shí)際上,200μs 是到目前為止可實(shí)現(xiàn)的最佳時(shí)延。INSA(法國)的 Emeraude 研究團(tuán)隊(duì)正在開發(fā) Syfala 編譯器,該編譯器結(jié)合了 Faust (一種用于實(shí)時(shí)音頻 DSP 的領(lǐng)域特定語言)和 AMD Vitis? HLS,使其為音頻 DSP 用戶提供非常高級(jí)的音頻合成工具。
Emeraude 采用基于 AMD Zynq? 的FPGA 板卡、低時(shí)延音頻編解碼器和 Syfala 編譯器,在眾多簡單的 DSP 程序上實(shí)現(xiàn)了 11μs 的低時(shí)延。這項(xiàng)新技術(shù)適用于聲音合成和主動(dòng)聲學(xué)控制。
實(shí)時(shí)音頻數(shù)字信號(hào)處理(DSP)已經(jīng)在廣泛的計(jì)算機(jī)架構(gòu)上實(shí)現(xiàn):采用馮?諾依曼架構(gòu)的 CPU、多核 CPU、GPU、專用電路、FPGA 等。然而,實(shí)現(xiàn)超低時(shí)延(即小于 1ms)的唯一方法是使用專用電路,如 ASIC 或 FPGA。
盡管如此,對(duì)于 DSP 程序員而言,使用 FPGA 幾乎是不可能的事情,因?yàn)樗麄儧]有掌握硬件設(shè)計(jì)技能。
因此,該項(xiàng)目的主要挑戰(zhàn)在于設(shè)計(jì)出一款工具,允許音頻 DSP 程序員以極低時(shí)延(即小于 100μs)在 FPGA 上實(shí)現(xiàn)任意音頻 DSP 算法。
解決方案
采用的解決方案是將音頻 DSP 語言編譯器(即 Faust)的輸出與 HLS 工具 Vitis HLS連接起來。Faust 編譯器不僅可處理軟硬件分區(qū),而且還可隔離將在 FPGA 上實(shí)施的內(nèi)核 DSP 算法,如圖 1 所示。
圖 1:從 Faust 程序到 FPGA 的 Syfala 編譯流程
Vitis HLS 用于實(shí)現(xiàn)該內(nèi)核 DSP 的硬件,允許訪問外部 DDR 內(nèi)存以及使用 ARM Zynq 處理系統(tǒng)驅(qū)動(dòng)程序的硬件控制器。
圖 2:DSP 硬件控制在 Digilent Zybo 板上實(shí)現(xiàn)
INSA-LYON 的研究團(tuán)隊(duì)主管 Tanguy Risset 表示:“Vitis HLS 允許我們直接重復(fù)使用 Faust 編譯器生成的 C++ 代碼,因此從 Faust 高級(jí)規(guī)范直至 FPGA 比特流都無需經(jīng)歷手動(dòng)設(shè)計(jì)流程。此外,Vitis HLS 與 AMD 的設(shè)計(jì)流程能夠很好地集成在一起,方便我們進(jìn)行硬件/軟件的協(xié)同設(shè)計(jì)。”
設(shè)計(jì)成效
最終成效就是獲得一個(gè)新的編譯流程,可將任意音頻 DSP 程序自動(dòng)編譯到基于 AMD Zynq 7000 的 FPGA 板卡(如 Digilent Zybo 或 Genesys)上。這樣一來,從模擬輸入到模擬輸出,所實(shí)現(xiàn)的程序的時(shí)延可低至 11μs。如此短的時(shí)延是前所未有的。該編譯器是開源的,目前用于實(shí)現(xiàn)主動(dòng)聲學(xué)控制算法和 3D 音頻編解碼流程。
Risset 補(bǔ)充道:“Vitis HLS 使我們能夠精確控制 IP 的時(shí)延。特別是 Vitis HLS 能夠生成一個(gè)有一個(gè)樣本延遲時(shí)延的 IP。這對(duì)于實(shí)現(xiàn)我們?cè)谀M與模擬之間實(shí)現(xiàn)的時(shí)延極為重要。”
Risset 表示,Vitis HLS IP 的調(diào)度視圖有助于我們了解 Vitis HLS 是如何引導(dǎo)并行化,以及內(nèi)存訪問是如何對(duì) IP 時(shí)延產(chǎn)生影響的。他補(bǔ)充道:“這促使我們?cè)?Faust 生成的 C++ 代碼中對(duì)內(nèi)存訪問進(jìn)行優(yōu)化,這是實(shí)現(xiàn)低時(shí)延的必要步驟。”