李雁
摘 要:介绍了基于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.