TC9012协议建模实现
2016-05-14聂玉庆许悦
聂玉庆 许悦
摘 要本文研究TC9012通信协议建模实现。通过深入理解TC9012编码协议,仔细分析一帧完整数据,对一帧数据里每一部分信息参数化,使得该模型复用性更好,适用于常用串行协议对脉冲频率、位置和宽度调制模式。
【关键词】TC9012通信协议,协议建模,SystemVerilog
1 TC9012协议简介
TC9012通信协议使用脉冲位置编码方式(PPM)对各比特数据进行调制,
该编码方式效率高,抗干扰性能好。支持38KHz载波频率,每个脉冲为560us时间宽度,逻辑1发送比特占据2.25ms时间宽度,逻辑0发送比特占据1.12ms时间宽度,调制载波占空比为1/4。
一完整数据帧为108ms,包括导引码、用户码、数据码以及同步位。导引码包括4.5ms宽度载波作为红外接收器增益参数和4.5ms载波关断波形。用户码是连续两次8比特数据原码,数据码是8比特数据原码以及8比特数据反码,发送两次是为提高可靠性考虑。最后是同步位,用于确定数据码反码最后一比特是逻辑0还是逻辑1。一完整数据帧格式如图1所示。
用户操作红外发射器时,如果一直按住按键,TC9012协议码指令也仅发送一次,并在每间隔108ms时间长度发送一帧重复码,重复码包含4.5ms高电平增益脉冲和4.5ms低电平脉冲,以及1比特逻辑1或逻辑0,还有560us高电平脉冲同步位。数据传送波形如图2所示。
2 TC9012协议分析
TC9012协议可以分为四种工作模式,分别为正常非重复码模式,正常重复码模式,错误非重复码模式和错误重复码模式,下面分别进行分析。
2.1 正常非重复码模式
导引码是严格4.5ms高电平脉冲和4.5ms低电平脉冲。用户码虽然是16比特,但是是一个8比特序列的重复,因此只需按8比特序列处理。对每一比特,需要判断是逻辑1还是逻辑0,并且判断脉冲宽度。数据码也是16比特,但是第二个8比特刚好是第一个8比特的反码,因此也可以按8比特序列处理。对每一比特,需要判断是逻辑1还是逻辑0,并且判断脉冲宽度。同步位是560us宽度高电平脉冲。
2.2 正常重复码模式
导引码是严格的4.5ms高电平脉冲和4.5ms低电平脉冲。判断导引码后的那一比特是逻辑1还是逻辑0,并且判断脉冲宽度。同步位是宽度为560us高电平脉冲。
2.3 错误非重复码模式
无论是高低电平逻辑出错还是脉冲宽度违例,均认为是导引码错误。用户码8比特里任意1比特无论高低电平逻辑出错还是脉冲宽度违例,均认为是用户码错误。数据码8比特里任意1比特无论高低电平逻辑出错还是脉冲宽度违例,均认为是数据码错误。同时注意第二个8比特是反码。同步位不是严格的560us宽度高电平脉冲,则认为同步位出错。
2.4 错误重复码模式
导引码无论是高低电平逻辑出错还是脉冲宽度违例,均认为是导引码错误。导引码后的那一比特,需要区分是逻辑1还是逻辑0,无论是高低电平逻辑出错还是脉冲宽度不符合协议规范,均认为错误。同步位不是高电平脉冲或者宽度不是560us,均认为错误。
考虑到通用性,多设置一个参数,控制各数据帧之间的时间间隔。
3 实际仿真结果及分析
把开发好的TC9012协议模型集成到某验证环境,得到实际仿真波形如图4、图5所示,与TC9012协议规范保持一致。
4 结论
本文研究TC9012通信协议,并使用高级验证语言SystemVerilog实现
了协议建模。当前业界流行的三种验证方法学VMM、OVM和UVM均使用SystemVerilog编程语言,因此便于验证环境集成,具有很好复用性,可以在任何使用TC9012协议或基于TC9012规范自定义协议的验证环境里作为一个VIP使用。进一步扩展开来,该方法适用于常用串行协议对脉冲频率编码调制、脉冲位置编码调制以及脉冲宽度编码调制。在协议建模时对一帧数据的每一部分信息都参数化,根据实际工作场景对各参数设置约束,通过大量跑随机仿真用例,能够覆盖到所有验证场景,并达到覆盖率出口条件。
参考文献
[1]Verification Methodology Manual for SystemVerilog.Janick Bergeron, Eduard Cerny,AlanHunter,Andrew Nightingale. ISBN-10: 0-387-25556-7.
[2]TC9012红外解码[Z].深圳市明芯微电子有限公司,2015.
[3]红外遥控编码资料[Z].深圳市明芯微电子有限公司,2015.
作者单位
1.炬芯(珠海)科技有限公司 广东省珠海市 519085
2.西安联合学院 陕西省西安市 710014