一、引言
演播室及转播车视音频系统的监看和制作,离不开信号源名和Tally灯的显示,不同厂商监看设备对于源名和Tally灯的显示支持有不同的协议,目前演播室及转播车上主流管理和控制Tally及源名的设备为TSL公司的TallyMan控制系统。本文主要目的在于,通过自主研发、制作相关转换设备,实现TallyMan控制系统对BMD多画面的Tally显示及源名跟随。
二、设计原理及需求
2.1、TallyMan源名及Tally显示原理
TallyMan控制系统支持目前大部分广电设备的接入,如视频切换台、矩阵、多画面、串行和并行Tally输入输出等。TallyMany控制系统对视频多画面的控制主要使用的是TSL UMD协议,此次项目中对BMD多画面的Tally和源名显示主要解析的是TSL UMD V3.1协议。TallyMan服务器内包含有矩阵源名信息和视频信号切点状态,TallyMany与多画面建立连接并单向发送UMD数据到多画面服务器,UMD数据内包含对多画面内每个窗口的源名、Tally信息记录,当多画面服务器接收并解析UMD数据包以后,获取源名和Tally信息,并记录到多画面的输出。
2.1.1、TallyMan系统内部配置方法如下
1、添加“UMD Display Interface”设备并命名,选择UMD类型为“MultiView(TSL Protocol)”,即UMD V3.1协议,一台多画面对应一台“UMD Display Interface”设备。
2、点击“Edit Comms Parameters”配置通信端口,通信类型为“Network UDP”,端口号为8900,IP地址对应多画面服务器地址(此次项目中IP地址对应UMD转换设备的地址)。
3、选中新添加的“UMD Display Interface”设备,添加多画面输出配置“Add/Delete displays in Layout”,确认在多画面中需要显示的画面数,此次项目为4画面输出,如图2.2所示,多画面内部地址从0~3自动分配。
4、双击多画面内每个Display,进入显示配置界面,配置界面内,选择源名显示为“Follow Matrix Destination”(此次项目中多画面的输入信号均由矩阵提供),之后在“Matrix Assignment”配置项,设定矩阵的目的端口,对应为实际矩阵输出到多画面的端口,最后再“Tally Channel”中打开需要对应的Tally通道,一般为PGM和PVW的Tally显示。
5、配置完多画面内每个通道对应为跟随矩阵源名后,保存TallyMan配置信息,发送到TallyMan主机并重启。
2.1.2、TSL UMD协议分析
TSL UMD协议也称作动态源名显示协议,该协议支持RS422/485、UDP、TCP等多种传输方式,TSL UMD协议每隔200ms发送一个数据包,每个数据包内包含有18字节数据,数据以16进制方式传输,数据包的格式如下图所示。
第1个字节“Header”和“0x80”相减,对应多画面内部显示地址,第2个字节“Control”对应Tally状态以及显示的亮暗信息,第3~18个字节“Display Data”表示多画面内显示源名的内容,显示的内容由16进制数据对应的ASCII码表示。
例如多画面内以16进制接收到18个字符为“81 21 43 41 4D 20 31 20 20 20 20 20 20 20 20 20 20 20”,“81”表示在多画面内显示地址是“1”,“21”表示PGM Tally点亮,PST Tally熄灭,后面3~16个字节通过ASCII码表转换成相应的字符是“CAM 1”。
2.1.3、动态UMD协议工作方式
1、当没有Tally及源名变化时,每隔200毫秒,会从地址“0x80“递增发送到地址”0xfd“,也就是循环发送126个数据包,每隔25秒所有Tally及源名信息发生一次更新。
2、如果没有对动态源名进行设定,默认多画面内字符串显示内容为“LOCAL1“~”LOCAL126。
3、当PGM信号切换引起Tally变换时,多画面会收到一个长数据包,共36字节数据,其中前18个字节说明需要熄灭Tally灯的多画面地址和源名信息,后18个字节说明需要点亮Tally灯的多画面地址和源名信息。
4、当矩阵输出到多画面内的视频源发生变换时,多画面会马上接收到1个数据包,共18字节数据,指定该矩阵到多画面内对应的信号源名发生了改变。
2.2、BMD矩阵源名及Tally显示原理
2.2.1、BMD多画面和矩阵控制协议
BMD矩阵和多画面支持相同的控制协议,协议全称为“Blcakmagic Videohub Enthernet Protocol V2.3”,该协议支持外部TCP控制,端口号为9990,协议目前只适用于BMD内矩阵和多画面的控制(可以把BMD多画面理解为带内部信号分配、并只有一个多画面输出口的矩阵),控制方式包括内部输入和输出信号路由分配、名称修改。如图2.5所示,为修改输入和输出口0和1标签的命令方式。
目前在TallyMan系统软件V1.85版本以上,能够支持对BMD矩阵控制的接入,但是还不包括对BMD多画面控制,尤其是动态源名和Tally灯显示那一块,因此我们还是要通过第三方硬件加以转换,以便满足系统上对动态源名和Tally显示的需求。
2.2.2、BMD多画面Tally显示协议
BMD多画面只支持SDI Tally协议,即通过在单根SDI信号中嵌入Tally信息,发送到多画面最后一个输入口,并在多画面配置中打开Tally显示功能。SDI Tally是BMD内部Tally显示协议,目前只有ATEM系列切换台的Program端口支持SDI Tally输出。
2.3、系统设计需求
综合上述TallyMan和BMD控制协议,我们在系统设计时,首先需要确保BMD矩阵、BMD多画面、TallyMan控制系统、协议转换设备在同一局域网内,TallyMan能够连接并控制BMD矩阵;其次协议转换设备通过UDP方式读取并解析TallyMan输出的UMD控制协议,将UMD控制协议的Tally信息转换成SDI Tally,输出到BMD多画面最后一路输入,将UMD控制协议的多画面源名信息,转换成Videohub协议,输出给BMD多画面;最后BMD多画面读取SDI Tally,确认多画面内Tally显示地址,同时通过TCP方式接收Videohub控制数据,修改对应多画面内信号显示的源名信息。
系统连接框图图下图2.6所示。BMD矩阵8路输出分别给两个BMD多画面的输入,其中矩阵送给多画面的最后一路SDI信号经过“BMD Shield for Arduino”,嵌入SDI Tally信号后,再输送给多画面,同时“BMD Shield for Arduino“与系统内其他设备处于一个局域网内,负责解析TSL UMD数据并发送动态源名数据给BMD多画面。其中“BMD Shield for Arduino”就是此次项目中研发的协议转换设备,该协议转换设备由BMD官方提供的相关SDI Tally嵌入设备“3G-SDI Shield for Arduino”(简称Shield板),配合网络收发模块和单片机组合而成,Arduino Uno单片机开发板通过烧录自制程序循环运行,通过I2C总线与Shield板内部通信,完成对SDI信号内Tally信息的嵌入;同时Arduino Uno单片机TTL串口输出给网络模块,将TTL串口数据转换成网口数据,完成与TallyMan和BMD多画面之间的各项通信工作。
三、协议转化的设计与实现
3.1、转换设备电路图
转换设备电路图如图3.1所示,设备供电方面,转换设备整体采用12V稳压电源供电,电源经过BMD Shield板内部转换成5V电压,再分别供电给Arduino Uno单片机开发板和USR-TCP232网络模块;内部通信方面,Arduino Uno开发板和Shield板之间,通过SDA数据线和SCL时钟线连接,采用I2C总线通信协议,将Tally信息嵌入SDI信号,Arduino
Uno开发板串口接收(RX)连接网络模块发送端口0(TX0),接收TSL UMD数据包,串口发送(TX)连接网络模块接收端口1(RX1),发送BMD Videohub数据包;信号收发状态监看,可从网络模块的
Work端口连接数据线到LED灯,收发数据时会对应LED灯的闪烁。
网络模块USR-TCP232能实现双TTL串口转网口,双TTL串口通信互不干扰,TTL0转网口工作在UDP Server模式,网络地址和TallyMan对应,端口号为8900,负责专门接收TallyMan发送的TSL UMD数据包;TTL1转网口工作在TCP Client模式,网络地址和BMD多画面对应,端口号9990,负责专门发送Videohub数据包到多画面服务器。如图3.2为网络模块内部配置。
TTL串口转网口网络模块具体配置原理和方法如下:
1、模块和TallyMan控制系统进行通信时,使用TTL0接收数据,在配置页面左侧选择“RS232”,设定Socket A工作方式为UDP Server模式,本地端口设定为8900,远程端口设定为0,Socket B工作方式None,TallyMan作为UDP Client,只负责向模块发送UMD协议的数据,不负责接收,此时模块内部端口0(端口号8900)接收到TallyMan数据后,转成串口TX0,发送给Arduino开发板的串口RX接收。
2、模块和BMD多画面进行通信时,使用TTL1发送数据,在配置界面左侧选择“RS485”,设定Socket A工作方式为TCP Client模式,本地端口设定为0,远程端口设定为9990,Socket B工作方式None,BMD多画面作为TCP Server,只负责接收模块发送过来的VideoHub协议数据,不负责发送,此时Arduino开发板的串口TX发送到模块的串口RX1,转成网络端口1(端口号9990),发送给BMD多画面。
3、由于Arduino Uno开发板的串口不会同时处于发送和接收状态,此种连接方法很好地利用了串口资源,节省了网口数量,方便了内部系统的接入。
3.2、Arduino Uno开发板实现程序编译及上载
3.2.1、程序设计流程
BMD Shield板的开发套件中,包含有SDI Tally的SDK开发包,并支持C语言,具体程序设计流程如下,如图3.3所示:
1、安装Arduino开发IDE工具,使用USB并连接Arduino Uno开发板,安装PC驱动程序。
2、打开Arduino IDE开发工具,加载BMD SDK开发包内“BMDSDIControl.h”头文件。
3、通过调用内部程序“BMD_SDITallyControl_I2C sdiTallyControl(0x6E)”,设定I2C总线通讯地址,默认Shield开发板I3C通讯地址是“0x6E”,也可以通过BMD官网下载Shield驱动程序,修改I2C通讯地址。
4、初始化单片机,设定串口通信波特率,打开SDI Tally控制和写入功能。
5、进入单片机循环程序,通过串口读取TSL UMD协议数据包,数据包每隔200毫秒自动往单片机串口发送一次,每个数据包内包含18位或者36位数据。
当接收到18位数据时,从第1位、2位、3~18位中分别提取多画面显示地址码,Tally显示状态,多画面内字符名称,将显示地址码和Tally状态,通过sdiTallyControl.setCameraTally()函数,嵌入到Shield板的SDI输出信号中,将地址码和字符名称,转换成VideoHub协议,通过串口转网口,发送给对应BMD多画面。
当接收到36位数据时,说明Tally信号发生了变化,分别提取前18位和后18位,处理方式跟处理标准18位数据时一样。
3.2.2、程序编译以及上载
Arduino Uno开发板通过USB数据线连接电脑并安装驱动后,可以直接通过IDE工具,将程序编译并烧写到Arduino Uno开发板上,由于烧录程序采用的原理是USB转串口方式,会占用单片机内串口资源,因此烧录开始前,需要断开单片机串口和外部设备的连接,并在烧录程序成功后,断开USB线,重新将单片机串口和外部设备连接。
3.3、设备加工及安装
3.3.1、功能模块安装
BMD Shield板、Arduino Uno开发板、TTL转网口网络模块,是构成协议转换设备的3大模块,Shield板和Arduino
Uno开发板在针脚定义及孔位上一致,可通过排针插口直接将Shied板安放在Arduino Uno开发板上面;网络模块需要另外固定安装,为了方便后期固定,先将网络模块固定在洞洞板上,然后通过飞线和开发板进行供电和通信。
3.3.2、设备外壳加工
BMD官方在提供Shield板和开发包时,并未提供相关的设备安装和外壳信息,因此所有的设备安装调试完都是裸露在外,如果要安装到转播车或者考虑户外使用,需要固定安装在保护壳内。Shield板和Arduino Uno开发板叠加的厚度为35mm,深度为70mm,加上网络模块后宽度为82mm,因此综合考虑,能够放入82mm*44mm*100mm的铝合金外壳,并固定到标准1U机架内。
铝壳开孔方式通过雕刻机设计刀路路径精确进行,铝壳底部打M3螺丝孔位,用于固定电路板;铝壳侧面开槽,预留出转换设备网口、USB口、12V供电口,SDI IN和SDI
OUT口;铝壳内部用5mm铜柱将电路板进行垫高并进行绝缘隔离。雕刻机雕刻后的实际样式及最终效果如图3.4所示
四、总结
综上,这次转换设备的研发和制作,解决了TallyMan系统对BMD矩阵和多画面互联互通问题,通过TallyMan实现了在BMD多画面内显示动态源名和Tally的功能,转换设备在项目安装应用中,配置简单,对系统改动要求少,方便接入和安装,有效满足了我台8讯道转播车系统项目扩展对于多画面制作监看上的需求,节省了设备成本开支。
同时,此次研发制作也是对SDI信号内嵌入控制信息的一次有效探索,BMD公司提供的Shield板,除了提供控制SDI Tally功能外,还包含了对摄像机、镜头、音频、云台等各类参数的控制,如果能够有效的将这些控制信息嵌入到单根SDI线,并在末端进行解析分发,能够极大简化视音频系统内控制信号的传输和接入,给广播电视节目的制作带来更多的可操作性和便捷性。