李雁



摘 要:介紹了基于XILINX FPGA的12G-SDI相關IP SMPTE UHD-SDI和UHD SDI Audio的使用,設計與IP對接的AXIS接口模塊,將各種業務變成統一的接口進行傳送。對于連續的音頻信號,持續采集并插入到系統中。對于突發的低速串口信號,也采用持續采集的方式。對于常見的高速突發信號,則需要編碼組幀。
關鍵詞:FPGA;SDI;DataStream(DS);I2S;UART
中圖分類號:TN948.1 文獻標識碼:A 文章編號:1671-2064(2020)08-0046-03
0 引言
數字視頻SDI是一種使用最廣泛的視頻接口,設計并應用于數字音視頻網絡,SDI視頻不具有傳統意義上的行消隱區間和場消隱區間,對應的它含有自己的空白區域,即附屬數據區域。為了充分利用資源,設計者可以在空白區間添加一些輔助數據或者是其他任意需要的信息。SDI接口最大優點就是提供了大量的附屬數據區,可以用來嵌入用戶所需要的信息數據,其中最常見的就是嵌入音頻數據。在高清時代,3G-SDI只能支持32路音頻數據,到了超高清時代,12G-SDI能支持128路音頻數據,容量達到了147M,從而可以支持更多的輔助數據業務[1]。
1 FPGA內部實現架構
FPGA采用XILINX公司的XCKU035-FBVA676-2,該芯片的GTH高速串行收發器能支持我們系統所需的11.88G速率,輔助數據使用音頻數據和串口數據來測試。
在發送端,12G-SDI信號進入FPGA的GTH,GTH主要完成時鐘恢復,串并轉換,得到40bit位寬的并行數據輸出,使用XILINX的IPCORE SMPTE UHD-SDI完成12G-SDI信號解析,解析出8路DataStream(DS),DS中除了視頻數據外,還有一定空白區間給用戶添加一些輔助數據[2],使用XILINX的IPCORE UHD SDI Audio可以將輔助數據通過AXIS接口插入到DS中,插入輔助數據的DS再接回SMPTE UHD-SDI的DS_IN,形成40bit的并行數據后通過GTH發送出12G-SDI,從而完成輔助數據的插入[3]。發送端內部框圖入圖1所示。
在接收端,數據接收路徑與上述發送端相同,IPCORE SMPTE UHD-SDI解析出8路DS送入IPCORE UHD SDI Audio,該IPCORE將DS中的輔助數據解出后通過AXIS發送給后級,后級的I2S發送模塊和UART發送模塊分別將AXIS中對應的時隙數據接收并按相應接口時序發送。完成輔助數據的輸出。12G-SDI的原始數據在GTH中使用內部環回發送出去。接收端內部框圖如圖2所示。
2 FPGA內部詳細設計
2.1 高速串行接口設計
使用VIVADO2018.3進行邏輯開發,在IP Catalog里選擇UltraScale FPGA Transceivers Wizard,在向導中選擇GTH-12G_SDI,向導會根據12G-SDI的數據結構對GTH內部進行配置。包括鏈路速率11.88G,參考時鐘148.5M,并行數據位寬40bit,編碼模式(無編碼)。在向導的最后一頁,把loopback勾選,這樣用戶才能配置環回功能。GTH的環回有4種模式可選,分別是Near-end PCS Loopback,Near-end PMA Loopback,Far-end PMA Loopback,Far-end PCS Loopback,在此選擇Near-end PMA Loopback,需要注意的是,GTH發送的時鐘要和接收的恢復時鐘同源。
2.2 SMPTE UHD-SDI
在IP Catalog里選擇SMPTE UHD-SDI,將Maximum Line Rate設置為12G SDI 8DS,勾選Insert ST352 in C-Stream,因為12G-SDI的C碼流中要求插入ST352。生成后的模塊提供給客戶的接口可以在XILINX的官方IP手冊《pg205-v-smpte-uhdsdi.pdf》中查到。本次設計的接口設置如表1所示。
2.3 UHD SDI Audio(Embed)
在IP Catalog里選擇SMPTE UHD-SDI, Audio Function選擇Embed時為輔助數據嵌入功能,UHD-SDI Standard設置為12G SDI 8DS,Maxmum Audio Channels設置為4,因為我們本次嵌入2路音頻和2路UART。不勾選Enable AxiLite Interface,因為我們使用接口直接配置模式。在生成模塊實例化時,端口sdi_embed_anc_ctrl_in[31∶0]設置如表2所示。
2.4 UHD SDI Audio(Extract)
在IP Catalog里選擇SMPTE UHD-SDI, Audio Function選擇Extract時為輔助數據解嵌功能,UHD-SDI Standard設置為12G SDI 8DS,Maxmum Audio Channels設置為4,因為我們本次嵌入2路音頻和2路UART。不勾選Enable AxiLite Interface,因為我們使用接口直接配置模式。在生成模塊實例化時,端口sdi_extract_anc_ctrl_in [31∶0]設置對接前級相應解析出來的控制信號。
2.5 AXIS接口合成
該模塊可以通過參數設定N個通道輸入,每個通道有1bit輸出使能信號和24bit輸入數據信號。這也就規定了前級無論是什么業務,都要變成這個接口。由于SDI音頻默認采樣率是48KHz,音頻位寬24bit,所以每個通道數據吞吐量為1152000bps。本次設計中,模塊工作時鐘為18.432M,是采樣速率的384倍。設置一個分頻計數器,產生384分頻使能,在該使能的作用下,產生通道有效計數器,將輸出給AXIS的valid信號拉高,當AXIS接口的ready信號有效時,通道計數器加1,當通道計數器的值大于設定的N通道時,valid信號拉低。結束本次采樣的AXIS傳輸。當通道計數器為某通道時,且AXIS的valid和ready都有效時,產生相應通道的輸出使能,向前級模塊索取更新輸入數據。
2.6 AXIS接口分解
接口分解模塊從AXIS接口總提取指定時隙數據,存入內部緩存,后級模塊從該緩存中提取數據。本次設計需要解析2路音頻和2路UART,所以會調用4次該模塊。為了防止后級的讀地址和本模塊的寫地址相同,造成讀取數據錯誤,需要進行讀寫操作控制。當后級有讀信號時,說明后級已經準備好,此時才允許前級寫緩存。當前級寫緩存寫到一半后,才響應后級的讀信號,讀地址才能累加。從而確保不會因為后級沒準備好就開始寫,頁確保了讀寫地址有了足夠的安全距離。考慮到系統設計的靈活性,讀緩存的深度也進行了參數可調設計。
2.7 I2S收發
常見的音頻接口信號主要有I2S,PDM,TDM,本設計支持I2S接口,I2S接口包含左右兩聲道音頻。FPGA作為I2S的主機,向外部提供SCLK,BCLK,LRCLK。本設計的音頻采樣率為48K,所以LRCLK頻率為48K,每路音頻采樣位寬為24bit,所以BCLK頻率為2.304MHz。
在I2S接收方向,串行數據由前級音頻ADC芯片提供,FPGA內設置兩個個24bit移位寄存器,分別對左右聲道的數據進行移位寄存。當接收完一次采樣的最后1bit數據后,將移位寄存器的值存入內部緩存,為了保護同一個地址的數據不被同時寫入讀出,地址保護的方案與2.6AXIS接口分解模塊中的方法一致,在此不再累述。當后級AXIS接口合成模塊每次來一個讀請求時,更新一個數據。從而完成模塊間的連接。
在I2S發送方向,在產生LRCLK左聲道有效前一個時鐘,產生左聲道讀使能,從后級AXIS接口分解模塊的緩存中讀取一個數據進入左聲道移位寄存器,之后每個BCLK的下降沿將數據移位輸出。右聲道的處理方式與之類似,唯一不同的是右聲道的讀使能是在右聲道有效前一個時鐘產生。
2.8 串口收發
與音頻數據源源不斷的采樣,持續有數據不同,串口數據是時有時無的。也就是當主機需要發起通信時,串口上才有有效數據,平時保持高電平的空閑狀態。這種突發通信的數據要插入到持續的數據流中,往往需要做出成幀編碼,從而使得接收端能夠從源源不斷的接收數據中分析出哪些是有效數據,哪些是空閑數據。常見的編碼方式有HDLC編碼和GFP封裝。對于串口這種低速率通信系統而言,本身的技術優勢是簡單,加入編解碼組幀解幀后,無疑大大增加了技術難度。并且UART本身有很多可選項,例如是否有奇偶校驗,奇偶校驗是奇校驗還是偶校驗等。這些都給我們的UART解析提取裸數據帶來了復雜度。在此根據我們的系統要求,波特率為19200,我們采取了不提取數據,直接對UART線路進行采樣的方案,根據前面章節所述,每路音頻數據量為1152000bps,所以我們的串口采樣率也是1152000,是波特率的60倍,一般而言,超過16倍即可。這樣通過采樣,UART的數據由突發模式也變成了持續模式的數據流,進入系統就無需再進行復雜的編解碼設計。
在UART接收方向,使用18.432M的音頻處理時鐘,進行16分頻,得到1152000的采樣時鐘使能,數據處理方案與音頻的類似,串并轉換后存入內部緩存,并做好讀寫地址保護。在UART發送方向,從AXIS數據分解模塊中獲取數據后,進行并串轉換發送即可實現UART的透明傳輸。
3 結語
本次通過FPGA將音頻和串口嵌入到12G-SDI并在接收端正確解嵌,在滿足AXIS接口的信號時序下,還可以將更多不同的業務嵌入傳輸,由于12G-SDI的輔助數據容量高達147M,因此還能實現更大容量業務的透傳,例如百兆以太網。設備能接通到網絡后,可實現各種靈活控制,與后臺操作,遠程升級。因此12G-SDI的輔助數據嵌入帶來的優點是以前高清時代無可比擬的。
參考文獻
[1] 季小俊.基于FPGA的SDI音頻加解嵌設計[D].南京:南京林業大學,2016.
[2] Xilinx.PG205-SMPTE UHD-SDI v1.0 IP Product Guide (v1.0)[Z].https://china.xilinx.com/support/documentation/ip_documentation/v_smpte_uhdsdi/v1_0/pg205-v-smpte-uhdsdi.pdf,2018-12-05.
[3] Xilinx.PG309-UHD SDI Audio v2.0 Product Guide (v2.0)[Z].https://china.xilinx.com/support/documentation/ip_documentation/v_uhdsdi_audio/v2_0/pg309-v-uhdsdi-audio.pdf,2018-12-05.