DTMB 标准数字电视ASIC 设计测试平台的研究
摘 要:本文介绍了DTMB 标准数字电视ASIC 设计测试硬件平台的搭建以及控制界面程序的设计。重点讲述了PC 如何控制多台测试仪器,以及它们之间的可靠通信,并且对于自动测试的程序设计进行了详细的说明,有一定的借鉴作用。本文的内容不仅适用于DTMB标准数字电视ASIC 设计测试,而且适用于其它同类型的测试平台的搭建和软件设计。
关键词:VB;Winsock;自动测试;测试平台
1.引 言
数字电视ASIC 设计测试平台主要用于各种标准数字电视IP 机顶盒的内部芯片算法与RTL 的研发服务,在数字电视芯片设计的研发过程中起着至关重要的作用。通过合理地搭建硬件平台以及编写可靠的命令收发程序,可以实现由一台PC 控制所有仪器设备,通过简单的按钮操作,一个人就可以完成整个测试。另外,可以编写自动测试程序,进行自动测试,大大降低测试人员的工作量。
2.测试平台概述
数字电视IP 机顶盒的内部芯片的研发过程中,需要验证测试性能,一般是将RTL 实现的代码比特流下载到FPGA 芯片中,相当于一个数字电视接收机,然后接收不同的输入信号(PRBS 码流),再对处理后的信号进行误码检测,计算误码率。为了能测试在多种复杂的环境下接收机的工作状况,我们需要在实验室内模拟出多种信源和多种信道的信号。因此,DTMB 系统的测试中,会用到DTV Signal Generator(SG), Fading Simulator 和BER Tester 三台仪器。DTV Signal Generator(SG)能产生不同模式的信源信号,加上Fading Simulator 产生的干扰信号,输出给FPGA 测试板。SG 的输出为射频信号,可以使用频谱仪进行观测。
实验室测试平台硬件结构, PC 机通过局域网通信,对SG 和FM 仪器进行控制,设置不同的模式的信源和不同信道的噪声,连接好PC 与仪器之后,可以发送指令进行通信;通过USB1 接口连接USB2I2C 电路采用I2C 通信协议,完成FPGA 板的所有寄存器的读写,软件分析读出的寄存器值,进行工作状态观测。通过USB2 接口连接USB2I2C电路采用I2C 通信协议,完成Tuner 的设置;通过GPIB 通信,完成与BER Tester之间通信,主要是读取误码率和测试时间,对BER Tester 执行Clear 的操作。
有时需要不止一台PC 机,只需将其它的PC 机加入与SG、FM 组建的局域网中。另,为了提高仪器的使用率,在SG 仪器的输出处加入分路器,分为两路,可以同时进行其它测试。也可以将分路器反接,其中一路加入其它仪器产生的干扰,例如CCI 和CW 信号,观察FPGA 测试板的工作状况。
3.测试界面程序设计
测试系统的软件开发使用VB 开发,简单的按钮操作即可实现控制。
PC 机通过LAN 通信,对SG 和FM 仪器进行控制,因此采用VB 中的Winsock 控件来进行命令的收发。添加Timer,实时读取寄存器值,并且巧妙运用Label控件组,持续在界面中显示寄存器值。
软件设计中包括:SG、FM 各个参数的设置以及当前设置值的显示,误操作的报错,收发命令的显示,寄存器读写,各种状态的观测结果的显示,BER 的控制以及多种模式多种信道自动测试等功能。
在软件设计中,对于那些经常需要修改的部分,例如初始值,信道编号,测试时间,信道条件,测试条件的设置,将其保存在INI 文件中,程序内部可通过“GetPrivateProfileString”函数读取INI 中的存储值处理。测试结果可充分利用VB 中的open,print 语句打印出来,便于查找与整理。
3.1 平台Winsock 通信
PC 机对SG 和FM 仪器的控制采用VB 中的Winsock 控件来进行命令的收发。
Winsock 控件可以使用两种协议:TCP 协议和UDP 协议,由于测试平台需要明确连接路径,陆续传输对应的命令,有一定的先后顺序,对于数据的完整性的要求较高,所以测试平台的数据传输部分采用的是面向连接的 TCP 协议。
测试平台控制界面的设计主要以TCP 客户端程序的创建为主,在创建客户应用程序时,首先确定服务器的IP 地址(RemoteHost 属性)和进行监听的端口(RemotePort 属性),然后调用Connect 方法对服务器发出连接请求。当服务器与其建立了连接后,调用SendData方法向服务器传送数据。当服务器的应答数据到达时,发生DataArrival 事件,调用GetData方法获得对方传送的数据。客户端完成实验后,调用Close方法断开与服务器的连接。
设计中发现,如果根据一般情况下常用的TCP 客户端程序设计流程进行设计,长时间测试或频繁修改设备参数时,容易出现设备死机或修改参数不可靠的现象。死机主要原因是:
长时间测试,连续发送命令,发送间隔时间较短,设备处在忙的工作状态,来不及处理,造成设备内部紊乱。一般检查设备是否接收到命令并且设置成功,都是根据上层到达的服务器的应答数据为准来判断的,大多数时候都是可行的,但是偶尔会有错误出现,因此造成Winsock 通信的不可靠。一味地增加发送命令的次数和延长发送命令之间的间隔,会导致代码冗余以及测试时间较长的后果。
为了可靠地发送与接收命令,修改Winsock 内部发送与接收的代码,在底层和上层进行可靠的判断机制,并且设置一个定时器(Timer)对Winsock 控件tcpClient.State 的不同状态实时作相应的处理。以控制SG 仪器为例,重点在于设置全局变量SG_flag,SG_data ,在tcpClient_DataArrival和Senddata部分加入判断机制。由标志完成三个状态的转换:0-idle,1- busy ,2-data ready。
连接完成后,上层执行发送命令,先判断设备是否处于空闲状态,也就是标志是否为0,如果空闲就进行后续操作,否则等待。空闲后,立刻将标志修改为忙的状态,表示正在处理命令,然后将命令数据放入缓存,将缓存数据发送给SG,SG 接收到命令后,执行相应的服务请求,发送应答数据给PC。
对于应答数据的处理如下:再次判断标志是否为“忙”,如果不是,就作为No 来处理。
如果是,从底层Winsock 通信Getdata 获取服务器应答数据,判断应答数据是否是正确设置后的预期结果,例如是否是RVOPE=000,如果不是,就作为No来处理。如果是,修改标志为“data ready”,此时视为Yes。循环20 次,如果20 次的判断结果都是No,就忽略,继续执行后面的程序,确保程序执行的连贯性。
如果对于应答数据的处理结果为No,并且小于20 次,就需要再次执行SendData 发送该命令数据给SG,再次处理应答数据。如果Yes,就将Getdata 赋给变量SG_Data,用数据SG_Data 来作为上层判断的设备应答数据。如果SG_Data 有误(一般只会发生在20 次的判断结果都是通信不正常后,忽略处理),也需要再次执行SendData 发送该命令数据给SG,再次处理应答数据。只是不管怎样,重复执行SendData 发送同一命令的次数不超过15 次。
如果SG_Data 正确,将标志由“忙”修改为“闲”,等待处理下一条命令。
加入该判断机制后,通过长时间测试验证发现,死机现象没有再出现,Winsock 的不可靠通信几乎完全消失。
3.2 自动测试
测试平台只需要满足,PC 机可以通过发送命令控制SG、FM 以及BERT(设置和获取设备状态),那么就可以用VB 编写程序,完成自动测试,大大减少人力。为了能完全模拟手动测试,需要特别注意一些细节。
软件测试的原理为:对于需要测试的量(如C/N),首先设定一个初始值,如果该值不能达到TOV(调整参数如果误码率刚好小于3E-06,即视频图像上观测不到马赛克,则称为在该点上达到TOV),则改变该值(DU/CN 增大,Doppler 减小),直至达到TOV。为测试的程序流程图(括号中为相应操作的指令)。其他信道的测试原理基本与之相同。过这几个步骤的预处理工作,ICA 的计算过程大大简化。图5 给出了ICA 的基函数。
测试中一般先设置SG 设备信源信号,主要的参数包括:帧头模式,交织方式,码率,是否加导频,调制方式,电平,频率以及码流格式等。然后设置信道,在FM 设备中调出存储的信道,并根据不同的测试要求修改信道参数,并且每次修改都需要执行一次reset 操作,自动测试程序的设计中通过将SG 信号断开来实现,由于实际测试时难以做到将SG 信号断开的过程(通常需要拔掉电缆),可以通过控制SG 的信号强度进行模拟,方法为,将RF Level设为-99.9dBm,此时信号极其微弱,可以认为信号已经断开。等待一段时间(大约4”)之后,再将RF Level 恢复为规定值,相当于重新接上信号。
将 SG 信号断开又接上之后,即可开始测试。等待几秒钟,PC 通过GPIB 接口,发送指令给BERT,以读取BERT 的状态,包括此时的时间,BER,锁定状态等。发送指令后BERT的应答信号包括 Bit Error Rate,Bit Error Count,Measuring Bit,Measuring Time,Sync Gain,如果读得BERT 为锁定状态,则发送Clear 命令将其清零,开始观测;在以下情况下,需要调整测试量:
1、等待一定时间(大于Time Out)后BERT 不能锁定。2、BERT 为锁定状态,在一定时间内(通常为2min),出现当前BER 太大(如>5E-6)或者系统突然失锁。
如果在观察时间内始终满足系统锁定且BER 较小(如<5E-6),并且在观察时间结束时满足BER<=3E-6(TOV),则说明当前测量值为最终性能。需要注意的是,由于BER 在测试过程中会略有波动,因此不能因为观察到BER> TOV 时就调整;如果BER 在测试过程中出现略大于TOV 的情况(3E-6<BER<=5E-6),而2min 观察时间结束时BER<=TOV,应当认为当前的无需调整。
4.结 论
测试是各种项目研发和工程设计中的关键部分,测试平台的搭建与控制软件的程序设计是测试系统的核心内容,本文的研究对于同类型的测试平台的搭建,尤其是在提高测试效率,缩减人力和硬件设施的投入方面都有一定的借鉴作用。
关键词:VB;Winsock;自动测试;测试平台
1.引 言
数字电视ASIC 设计测试平台主要用于各种标准数字电视IP 机顶盒的内部芯片算法与RTL 的研发服务,在数字电视芯片设计的研发过程中起着至关重要的作用。通过合理地搭建硬件平台以及编写可靠的命令收发程序,可以实现由一台PC 控制所有仪器设备,通过简单的按钮操作,一个人就可以完成整个测试。另外,可以编写自动测试程序,进行自动测试,大大降低测试人员的工作量。
2.测试平台概述
数字电视IP 机顶盒的内部芯片的研发过程中,需要验证测试性能,一般是将RTL 实现的代码比特流下载到FPGA 芯片中,相当于一个数字电视接收机,然后接收不同的输入信号(PRBS 码流),再对处理后的信号进行误码检测,计算误码率。为了能测试在多种复杂的环境下接收机的工作状况,我们需要在实验室内模拟出多种信源和多种信道的信号。因此,DTMB 系统的测试中,会用到DTV Signal Generator(SG), Fading Simulator 和BER Tester 三台仪器。DTV Signal Generator(SG)能产生不同模式的信源信号,加上Fading Simulator 产生的干扰信号,输出给FPGA 测试板。SG 的输出为射频信号,可以使用频谱仪进行观测。
实验室测试平台硬件结构, PC 机通过局域网通信,对SG 和FM 仪器进行控制,设置不同的模式的信源和不同信道的噪声,连接好PC 与仪器之后,可以发送指令进行通信;通过USB1 接口连接USB2I2C 电路采用I2C 通信协议,完成FPGA 板的所有寄存器的读写,软件分析读出的寄存器值,进行工作状态观测。通过USB2 接口连接USB2I2C电路采用I2C 通信协议,完成Tuner 的设置;通过GPIB 通信,完成与BER Tester之间通信,主要是读取误码率和测试时间,对BER Tester 执行Clear 的操作。
有时需要不止一台PC 机,只需将其它的PC 机加入与SG、FM 组建的局域网中。另,为了提高仪器的使用率,在SG 仪器的输出处加入分路器,分为两路,可以同时进行其它测试。也可以将分路器反接,其中一路加入其它仪器产生的干扰,例如CCI 和CW 信号,观察FPGA 测试板的工作状况。
3.测试界面程序设计
测试系统的软件开发使用VB 开发,简单的按钮操作即可实现控制。
PC 机通过LAN 通信,对SG 和FM 仪器进行控制,因此采用VB 中的Winsock 控件来进行命令的收发。添加Timer,实时读取寄存器值,并且巧妙运用Label控件组,持续在界面中显示寄存器值。
软件设计中包括:SG、FM 各个参数的设置以及当前设置值的显示,误操作的报错,收发命令的显示,寄存器读写,各种状态的观测结果的显示,BER 的控制以及多种模式多种信道自动测试等功能。
在软件设计中,对于那些经常需要修改的部分,例如初始值,信道编号,测试时间,信道条件,测试条件的设置,将其保存在INI 文件中,程序内部可通过“GetPrivateProfileString”函数读取INI 中的存储值处理。测试结果可充分利用VB 中的open,print 语句打印出来,便于查找与整理。
3.1 平台Winsock 通信
PC 机对SG 和FM 仪器的控制采用VB 中的Winsock 控件来进行命令的收发。
Winsock 控件可以使用两种协议:TCP 协议和UDP 协议,由于测试平台需要明确连接路径,陆续传输对应的命令,有一定的先后顺序,对于数据的完整性的要求较高,所以测试平台的数据传输部分采用的是面向连接的 TCP 协议。
测试平台控制界面的设计主要以TCP 客户端程序的创建为主,在创建客户应用程序时,首先确定服务器的IP 地址(RemoteHost 属性)和进行监听的端口(RemotePort 属性),然后调用Connect 方法对服务器发出连接请求。当服务器与其建立了连接后,调用SendData方法向服务器传送数据。当服务器的应答数据到达时,发生DataArrival 事件,调用GetData方法获得对方传送的数据。客户端完成实验后,调用Close方法断开与服务器的连接。
设计中发现,如果根据一般情况下常用的TCP 客户端程序设计流程进行设计,长时间测试或频繁修改设备参数时,容易出现设备死机或修改参数不可靠的现象。死机主要原因是:
长时间测试,连续发送命令,发送间隔时间较短,设备处在忙的工作状态,来不及处理,造成设备内部紊乱。一般检查设备是否接收到命令并且设置成功,都是根据上层到达的服务器的应答数据为准来判断的,大多数时候都是可行的,但是偶尔会有错误出现,因此造成Winsock 通信的不可靠。一味地增加发送命令的次数和延长发送命令之间的间隔,会导致代码冗余以及测试时间较长的后果。
为了可靠地发送与接收命令,修改Winsock 内部发送与接收的代码,在底层和上层进行可靠的判断机制,并且设置一个定时器(Timer)对Winsock 控件tcpClient.State 的不同状态实时作相应的处理。以控制SG 仪器为例,重点在于设置全局变量SG_flag,SG_data ,在tcpClient_DataArrival和Senddata部分加入判断机制。由标志完成三个状态的转换:0-idle,1- busy ,2-data ready。
连接完成后,上层执行发送命令,先判断设备是否处于空闲状态,也就是标志是否为0,如果空闲就进行后续操作,否则等待。空闲后,立刻将标志修改为忙的状态,表示正在处理命令,然后将命令数据放入缓存,将缓存数据发送给SG,SG 接收到命令后,执行相应的服务请求,发送应答数据给PC。
对于应答数据的处理如下:再次判断标志是否为“忙”,如果不是,就作为No 来处理。
如果是,从底层Winsock 通信Getdata 获取服务器应答数据,判断应答数据是否是正确设置后的预期结果,例如是否是RVOPE=000,如果不是,就作为No来处理。如果是,修改标志为“data ready”,此时视为Yes。循环20 次,如果20 次的判断结果都是No,就忽略,继续执行后面的程序,确保程序执行的连贯性。
如果对于应答数据的处理结果为No,并且小于20 次,就需要再次执行SendData 发送该命令数据给SG,再次处理应答数据。如果Yes,就将Getdata 赋给变量SG_Data,用数据SG_Data 来作为上层判断的设备应答数据。如果SG_Data 有误(一般只会发生在20 次的判断结果都是通信不正常后,忽略处理),也需要再次执行SendData 发送该命令数据给SG,再次处理应答数据。只是不管怎样,重复执行SendData 发送同一命令的次数不超过15 次。
如果SG_Data 正确,将标志由“忙”修改为“闲”,等待处理下一条命令。
加入该判断机制后,通过长时间测试验证发现,死机现象没有再出现,Winsock 的不可靠通信几乎完全消失。
3.2 自动测试
测试平台只需要满足,PC 机可以通过发送命令控制SG、FM 以及BERT(设置和获取设备状态),那么就可以用VB 编写程序,完成自动测试,大大减少人力。为了能完全模拟手动测试,需要特别注意一些细节。
软件测试的原理为:对于需要测试的量(如C/N),首先设定一个初始值,如果该值不能达到TOV(调整参数如果误码率刚好小于3E-06,即视频图像上观测不到马赛克,则称为在该点上达到TOV),则改变该值(DU/CN 增大,Doppler 减小),直至达到TOV。为测试的程序流程图(括号中为相应操作的指令)。其他信道的测试原理基本与之相同。过这几个步骤的预处理工作,ICA 的计算过程大大简化。图5 给出了ICA 的基函数。
测试中一般先设置SG 设备信源信号,主要的参数包括:帧头模式,交织方式,码率,是否加导频,调制方式,电平,频率以及码流格式等。然后设置信道,在FM 设备中调出存储的信道,并根据不同的测试要求修改信道参数,并且每次修改都需要执行一次reset 操作,自动测试程序的设计中通过将SG 信号断开来实现,由于实际测试时难以做到将SG 信号断开的过程(通常需要拔掉电缆),可以通过控制SG 的信号强度进行模拟,方法为,将RF Level设为-99.9dBm,此时信号极其微弱,可以认为信号已经断开。等待一段时间(大约4”)之后,再将RF Level 恢复为规定值,相当于重新接上信号。
将 SG 信号断开又接上之后,即可开始测试。等待几秒钟,PC 通过GPIB 接口,发送指令给BERT,以读取BERT 的状态,包括此时的时间,BER,锁定状态等。发送指令后BERT的应答信号包括 Bit Error Rate,Bit Error Count,Measuring Bit,Measuring Time,Sync Gain,如果读得BERT 为锁定状态,则发送Clear 命令将其清零,开始观测;在以下情况下,需要调整测试量:
1、等待一定时间(大于Time Out)后BERT 不能锁定。2、BERT 为锁定状态,在一定时间内(通常为2min),出现当前BER 太大(如>5E-6)或者系统突然失锁。
如果在观察时间内始终满足系统锁定且BER 较小(如<5E-6),并且在观察时间结束时满足BER<=3E-6(TOV),则说明当前测量值为最终性能。需要注意的是,由于BER 在测试过程中会略有波动,因此不能因为观察到BER> TOV 时就调整;如果BER 在测试过程中出现略大于TOV 的情况(3E-6<BER<=5E-6),而2min 观察时间结束时BER<=TOV,应当认为当前的无需调整。
4.结 论
测试是各种项目研发和工程设计中的关键部分,测试平台的搭建与控制软件的程序设计是测试系统的核心内容,本文的研究对于同类型的测试平台的搭建,尤其是在提高测试效率,缩减人力和硬件设施的投入方面都有一定的借鉴作用。

