音视频采集系统的电路设计

2016-09-19 01:13邓旭同陈建春
电子科技 2016年8期
关键词:音视频寄存器串口

邓旭同,陈建春

(西安电子科技大学 电子工程学院,陕西 西安 710071)



音视频采集系统的电路设计

邓旭同,陈建春

(西安电子科技大学 电子工程学院,陕西 西安 710071)

随着对视频图像清晰度要求的不断提高,文中设计了音视频采集系统电路,该电路可实现音频和视频信号的采集,以及硬件底层可变参数的采集音视频功能。同时通过外围接口功能,可实现与计算机和互联网的通信。实验结果表明,所设计的应用电路,其稳定性满足项目要求,且具有较好的工程实用价值。

音视频采集;V4L2; ALSA;电路设计

随着安防监控和视频通讯的重要,均要求具有更高的图像质量和更好的音频清晰度,以及可调参数的音视频流。音视频采集系统逐步向高质量化和网络化发展。因此对于音视频采集系统,需要进行可调参数设计,以及计算机和网络通信的接口设计。

1 系统总体设计

图1 硬件系统的总体设计

音视频采集系统的设计方案如图1所示。音频采集模块使用TLV320AIC3101,视频采集模块采用TVP5146,将采集到的模拟信号转化为数字信号输入到DSP中。以太网通信模块采用KS8001实现和网络的直连。串口模块采用MAX3221与计算机相连,作为调试使用。同时,DSP通过I2C总线,来实现对TVP5146和AIC3101的寄存器配置,从而达到对音视频底层参数设置的目的。

2 音视频采集模块

本设计的音视频模块结构设计如图2所示。视频采集部分,使用TVP5146芯片,其解码功能强大,支持对各种常用信号形式进行解码[1]。对TVP5146的02H和33H寄存器分别设置为00H和40H就能够实现自动检测P/N制式,并且输出10位内嵌同步信号的ITU-R BT 656标准YUV4:2:2格式的视频流。对08H和0EH写入00H和04H,则能实现对亮度和色度的最优化捕获[2]。本设计舍弃了低2位,采用8 bit内嵌同步信号的YUV4:2:2输出格式。

在Linux下的V4L2是为视频设备开发的驱动框架,其抹平了硬件底层驱动细节,可简单地通过API接口进行硬件驱动[3]。TMS320DM365的视频处理模块就是基于V4L2设计的,因此可通过其对视频进行底层参数设置,如帧率、分辨率等。

图2 音视频采集模块结构设计

TMS320DM365中视频处理模块是基于V4L2标准进行设计的,所以可用V4L2接口来实现对TVP5146的驱动[3],在Linux内核文件中的vl42-common.c和tvp514x.c文件,这两个文件就是V4L2框架下的TVP5146的驱动文件。

static int tvp514x_i2c_write_reg(struct i2c_client *client, u8 reg, u8 val)

{int err = 0;

struct i2c_msg msg[1];

unsigned char data[2];

if (!client->adapter) {

err = -ENODEV;

} else {

msg->addr = client->addr;

msg->flags = 0;

msg->len = 2;

msg->buf = data;

data[0] = reg;

data[1] = val;

err = i2c_transfer(client->adapter, msg, 1);

}

return ((err < 0) ? err : 0);

}

上述代码的功能是向寄存器里写入配置值。在tvp514x.c文件中,也能对CCD摄像头捕获的视频流进行处理。 V4l2程序中,控制函数的一般形式为ioctl(int fd, int request,*argp)。其中int fd=open (“/dev/video0”,O_RDWR),fd是打开设备后的标识符信息[4]。

对于多路采集信号的输入选择,同样也能在tvp514x.c文件中进行设置。在tvp514x_setinput(int *index, void *dec)中,可对输入进行设置。找到input_sel参数和TVP514X_INPUT_SEL参数,这里TVP514X_INPUT_SEL是输入寄存器的地址00H,而input_sel则是该寄存器的配置值。通过tvp514x_i2c_write_reg函数对输入寄存器配置输入引脚的值,便能实现对多路视频信号的输入选择。

TVP5146外接CCD摄像头,进行模拟视频的采集。与DSP连接I2C控制信号,行场信号,8 bit的亮度和色度信号以及时钟输出信号。虽然是ITU-R BT 656标准,仅需9根线即可,但本设计的电路依然按照ITU-R BT 601标准进行设计,这样设计电路,既可满足656标准也便于切换601标准。

音频采集部分,使用TLV320AIC3101芯片,其可实现可编程单端或全差分的多输入输出配置。本设计使用MIC1LP和MIC1RP作为一组单端输入,HPLOUT和HPROUT作为输出,因此对AIC3101的19,22,51,65寄存器分别配置为04H,04H,0FH,0FH,对相应的ADC和DAC上电且音量为0 dB。可对26~35寄存器配置,来调节音量[5]。

在Linux2.6版本内核中,有一套音频驱动程序集ALSA,其不但提供了音频驱动程序模块,且开发了相应的音频函数库[6],通过其来对AIC3101进行驱动设置。

通过tlv320aic31_write ( chip_addr, reg_addr, value ) 函数来对AIC3101的寄存器进行配置[7],这个函数内嵌了I2C控制函数i2c_write(chip_addr, reg_addr, value),其中chip addr是AIC3101设备地址,本文中为18H。当设备上电时,启动tlv320aic31_int()函数,对寄存器进行初始化。复位时,通过soft_reset(chip_num)函数进行复位[8]。

AIC3101外接MIC进行单端模拟音频的采集。与DSP连接I2C控制信号,字时钟信号,位时钟信号以及数据输入输出信号。同时主时钟信号通过外接27 MHz有源晶振产生。最后外接耳机,可通过DIN来回放D/A转换后的单端音频信号。

3 以太网通信模块

TMS320DM365处理器内置支持10/100 Mbit·ps-1的EMAC模块和MDIO模块的网络控制模块。KS8001与TMS320DM365的MII接口连接,提供1路100 Mbit·ps-1的网络接口。其中EMAC模块内部集成了8 kB RAM,用于存放缓冲描述和以太网数据包。MDIO模块实现对KS8001的寄存器设置和控制。KS8001外接25 MHz晶振作为时钟源。并且通过标准的RJ-45接口连接到网络[9]。

对于本设计而言,采用MII模式传输,使用25 MHz的晶振作为时钟,工作在100 Mbit·ps-1下,所以将30引脚PD#,27引脚SPD100/NoFEF/LED1和29引脚NWAYEN/LED3悬空,即可保证KS8001工作在上述条件下。

4 串口模块

TMS320DM365的UART0连接RS-232调试串口。RS-232调试串口在调试时接到PC机的串口上,用于打印调试信息。因UART0是CMOS逻辑电平,其中高电平为3.3 V,低电平为 0 V,但RS-232使用负逻辑电平,其中3~15 V为逻辑高电平,-3~-15 V为逻辑低电平,所以两者电平不可匹配,因此设计采用MAX3221芯片用作电平转换芯片,用于使电平信号能够得到正确的识别[10]。T1OUT和R1OUT引脚连接DSP,传输发送数据(TXD)和接收数据(RXD)信号。

5 实验结果

当设置好输入引脚寄存器后,输入一路PAL制式的CVBS信号时,从显示屏中可以看到采集到的视频图像如图3所示,为分辨率的视频图像。

图3 分辨率 的图像

在V4L2框架中的以下程序中进行参数设置,可实现对分辨率的修改。

struct v4l2_format fmt;

struct v4l2_crop crop;

int image_height, image_width;

image_height = 288; //调节高度

image_width = 352; //调节宽度

fmt.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;

fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_UYVY;

fmt.fmt.pix.height = image_width;

fmt.fmt.pix.width = image_height;

fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;

ret = ioctl(fd, VIDIOC_S_FMT, &fmt);

if(ret) {perror("VIDIOC_S_FMT ");

close(fd);

return -1;}

最后利用VIDIOC_S_FMT设置视频格式的函数,完成对分辨率的设置。可以看到,在V4L2框架下,对image_height和image_width两个参数的修改,能明显看出图像长宽比缩小为之前的一半,输出分辨率从原720×576变为352×288,如图4所示。

图4 分辨率的图像

将测试板通过网口和串口连接计算机,能在超级终端中显示采集相关信息。当输入PAL制式的信号,帧率为标准的25帧/s时,从超级终端的信息栏中可看到采集到的视频分辨率为25帧/s,如图5所示。

图5 帧率25帧/s

在V4L2框架中,对以下结构体参数进行设置,可实现帧率的修改。

struct v4l2_streamparm

{enum v4l2_buf_type type;

union

{ struct v4l2_captureparm capture;

struct v4l2_outputparm output;

__u8 raw_data[200];

} parm; }

其中,struct v4l2_captureparm是捕获时的设置,文中所需设置的捕获视频的帧率参数就在这一结构体中,该结构体如下

struct v4l2_captureparm

{ __u32 capability;

__u32 capturemode;

struct v4l2_fract timeperframe;

__u32 extendedmode;

__u32 readbuffers;

__u32 reserved[4];}

capability表示能否支持可变帧率,capturemode表示是否支持高清图像捕捉。其中,timeperframe也是一个结构体,在这个结构体中设置帧率。

struct v4l2_fract {

__u32 numerator;

__u32 denominator; }

其中,numerator和denominator是帧率的分子和分母,若设置为9帧/s,可令numerator=1和denominator=9。一般通过V4L2修改帧率需要设置如下

P->parm.capture. capability =V4L2_CAP_TIMEPERFRAME //调节可变帧率使能

P->parm.capture.timeperframe. numerator = 1; //调节帧率分子

P->parm.capture.timeperframe. denominator = 9; //调节帧率分母

ioctl(fd_v4l,VIDIOC_S_PARM,&parm) ;

这种设置方法属于硬件底层设置,受限与硬件的限制,通过这种方法设置帧率不一定成功,所以一般设置后可通过VIDIOC_G_PARM函数查看设定是否成功。设置参数将调用vidioc_s_parm(),不成功时会自动设置为最接近硬件设备的标准。通过V4L2框架设置帧率为9帧/s,可从超级终端的信息栏中看到采集结果,原本25帧/s的输出视频变为9帧/s,如图6所示。

图6 帧率9帧/s

6 结束语

本文以DSP为核心处理器,设计了一种音视频采集系统,包含采集模块、串口模块和以太网通信模块。系统能采集CVBS信号和S-Video信号以及单端立体声。并通过V4L2框架,可实现视频的分辨率和帧率的调节。同时,通过ALSA实现音频音量调节。

[1]胡伟峰.基于DM365的网络视频监控系统设备接入的实现[D].杭州:浙江工业大学,2013.

[2]王巧玉.基于FPGA的网络视频监控系统[D].西安:西安电子科技大学,2011.

[3]宋经纬.嵌入式网络视频监控设备的驱动设计与开发[D].杭州:浙江工业大学,2013.

[4]李春茂,林振,王鹏.基于TMS320DM368的高清网络摄像机的设计[J].科学技术与工程,2012,12(19):4804-4808.

[5]苏莎莎.基于TMS320DM8168多核处理器的嵌入式高清视音频处理系统的研究与实现[D].南京:南京邮电大学,2014.

[6]胡烨.音频数据采集系统的设计与实现[D].西安:西安电子科技大学,2012.

[7]朱朝文.基于DSP的高速音频采集与处理系统的设计[D].北京:北方工业大学,2010.

[8]赵兴海.基于FPGA的多路音频信号采集与传输系统[D].太原:中北大学,2015.

[9]Micrel Semiconductor Company. KS8001 physical layer transceiver product Data sheet[M].Texas, USA: Micrel Semiconductor Company, 2005.

[10] Texas Instruments. MAX3221 RS-232 line driver and receiver product data sheet[M].Texas, USA: Texas Instruments ,1999.

Circuit Design of the Audio and Video Acquisition System

DENG Xutong, CHEN Jianchun

(School of Electronic Engineering, Xidian University, Xi’an710071, China)

A design of the audio and video acquisition system circuit is proposed to meet the increasing demand for video image sharpness. The circuit is capable of audio and video signal acquisition with underlying hardware of variable parameters. The peripheral interface enables communication between the computer and the Internet. The experimental results show that the designed circuit offers good stability and is of value in practical engineering.

audio and video capture; V4L2; ALSA; circuit design

10.16180/j.cnki.issn1007-7820.2016.08.012

2015-11-26

邓旭同 (1991-),男,硕士研究生。研究方向:音视频采集。陈建春 (1962-),男,博士,教授。研究方向:信号与信息处理。

TN946

A

1007-7820(2016)08-039-04

猜你喜欢
音视频寄存器串口
STM32和51单片机寄存器映射原理异同分析
Microchip推出首款车载以太网音视频桥接(AVB)全集成解决方案
浅谈AB PLC串口跟RFID传感器的通讯应用
Lite寄存器模型的设计与实现
3KB深圳市一禾音视频科技有限公司
WIFI音视频信号传输的关键问题探究
移位寄存器及算术运算应用
高速公路整合移动音视频系统应用
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索