APP下载

数字指令驱动电路测试方法研究

2020-05-11张春宇

微处理机 2020年2期
关键词:关键字字节端口

张春宇

(中国电子科技集团公司第四十七研究所,沈阳110032)

1 引 言

在当今社会,基于嵌入式技术的产品随处可见,大到航空航天,小到家电设备。各行各业都提倡智能管理,这其中应用最多的就是嵌入式技术。由于嵌入式技术具有可控制、可编程、成本低等优点,所以近十年得到了空前高速发展[1-4]。应用嵌入式技术,可更加有效地完成数字指令驱动电路的测试[5]。

2 系统概要

数字指令驱动电路是一种ASIC 电路[6]。它的外围端口有两路串行输入、一路串行输出、九十六路并行输出、控制端口若干,其工作过程为接收串行输入的指令,内部状态机对串行指令进行接收并解析,并将解析结果通过并行输出。没有指令执行时九十六路输出端口全为高电平,当有指令执行时,指令中指定的输出端口输出固定时间长度的低电平,其他端口输出高电平。

ASIC 电路能够接收的指令分为两种,执行指令和查询指令,每种指令都由若干字节组成,执行指令中包含输出端口号和输出端口保持时间,查询指令用于查询ASIC 电路内部各寄存器状态。ASIC 电路有四位地址编码,当多个ASIC 电路接到总线上时,只有指令中的地址编码与ASIC 电路的地址编码一致时,指令才会被执行,否则被丢弃。

要实现对ASIC 电路指令的测试,必须按照电路指定的时序发送固定的指令,才会被ASIC 电路解析并正确的执行。计算机程序可以实现指令发送工作。单片机具有检测ASIC 电路输出端口保持低电平时间的功能。这样搭建计算机-单片机-ASIC 电路三级互连系统,相互联系,协同工作,可完成ASIC电路的指令及功能测试工作[7-8]。

3 系统设计

系统设计包括硬件电路设计、软件程序设计和通讯协议设计三个方面。

3.1 硬件电路设计

根据ASIC 电路介绍,设计如图1 所示电路来完成测试工作。

图1 系统硬件电路构成示意图

计算机采用普通PC 机,单片机采用飞利浦公司的P89C51RD2 型。计算机、单片机、ASIC 电路连接到RS422 总线上进行通讯,ASIC 电路可以直接接到总线上,而计算机与单片机需要增加总线转换器件。ASIC 电路的并行输出信号,通过十二个八路的数据选择电路和一个三线-八线译码电路构成的组合逻辑,接到单片机的一个输入口上。ASIC 电路的两个串行输入口通过一个数据分配器电路连接到系统总线上。在这个硬件系统里,计算机作为主机负责发送指令给单片机或者ASIC 电路,并接收它们的返回信息。单片机作为第一个从机负责接收计算机的指令,根据不同指令,执行占有总线、释放总线和选择测试通道等。ASIC 电路作为第二个从机负责接收计算机发送的指令并执行。对于执行指令,执行结果被单片机采集并反馈给计算机,对于查询指令,直接反馈给计算机。在这个一主机双从机的系统里,主机和从机之间采用RS422 总线数据传输协议,双从机采用分时占用总线的形式与主机进行通讯。

3.2 软件设计

软件设计包括计算机软件设计和单片机软件设计两部分。

3.2.1 计算机软件设计

计算机软件采用Visual Studio 2010 中的C#语言在Windows 7 环境下开发。C#是一种最新的、面向对象的编程语言,使得程序员可以快速地编写各种基于Microsoft .NET 平台的应用程序[9]。在Visual Studio 2010 中编写串口通讯程序非常方便,它提供了一个串口通讯类,所有与串口相关的操作都可以用此类的实例来完成。

ASIC 电路有执行和查询两种指令,计算机机软件设计了针对这两种指令的测试程序。

测试执行指令的程序执行过程为:发送执行指令之前,计算机先发送两条指令给单片机,第一条指令告诉单片机将它的发送端接到系统总线上,这样执行指令执行完的结果能及时反馈给计算机,第二条指令告诉单片机待测试指令中的通道号,单片机将此ASIC 电路的并行输出端口连接到单片机的采集信号管脚上。两条指令发送完毕后,计算机发送执行指令给ASIC 电路,ASIC 电路的执行结果被单片机采集到,并反馈给计算机。执行指令中的通道执行时间与单片机采集到的执行时间一致时,计算机软件显示执行指令执行正确,否则显示错误。

另外计算机软件中可以设置四位的ID 号,即ASIC 电路的地址,地址一致的ASIC 电路才能接收执行指令并执行,计算机软件可以对最多十六个ASIC 电路进行测试。对于指令的执行时间,可以设置1ms 到255ms。执行指令测试界面如图2 所示。

图2 执行指令测试界面

测试查询指令的程序执行过程为:发送查询指令之前,计算机先发送一条指令给单片机,告诉单片机将其发送端从系统总线上断开,将ASIC 电路的发送端连接到总线上,这样查询指令执行完的结果能及时反馈给计算机[10-11]。待这条指令执行完后系统做好了执行查询指令的准备,这时计算机开始发送查询指令,并接收ASIC 电路的返回信息。ASIC 电路执行查询指令后将内部各寄存器的值按固定格式发送给计算机,计算机接收到查询指令的返回信息,进行解读并显示。查询指令测试界面如图3 所示。

图3 查询指令测试界面

3.2.2 单片机软件设计

单片机软件在Keil μVision5 环境下采用C 语言编写。Keil C51 是美国Keil Software 公司出品的51 系列兼容单片机C 语言软件开发系统。Keil 提供了包括C 编译器、宏汇编、链接器、库管理和功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。

在这里,单片机软件负责接收计算机软件发送的指令,执行后将结果反馈给计算机软件。单片机软件主要会接收三个指令,第一个是关键字为“AA”或“AB”的指令,单片机接收到这个指令后,提取出指令中的待测试通道号,然后将这个通道接到单片机采集端口上,并开始监视该端口的状态,当该端口出现一个正脉冲变化时,单片机记录了脉冲保持的时间,然后把这个时间发送给计算机,并且关闭测试通道与单片机采集端口的连接,这就是第一个指令的完整执行过程。第二个是关键字为“AC”的指令,单片机接收到这个指令后直接将其向计算机发送数据的通路在系统总线上断开,这是为了测试查询指令做准备。第三个是关键字为“AD”的指令,单片机接收到这个指令后将其向计算机发送数据的通路连接到系统总线上,这是为了测试执行指令做准备。单片机串口中断程序流程图如图4 所示。

图4 单片机串口中断程序流程图

单片机在执行采集指令执行时间之前, 要先将ASIC 电路的待测试并行输出端口连接到单片机的采集端口上,实现方法是P2 口通过一系列组合逻辑器件将ASIC 电路的九十六路并行输出端口进行了编址,要测试哪个通道,P2 口输出其地址即可。

单片机测试正脉冲保持时间的方法是采用定时器0 记录待测试通道的正脉冲时间,硬件上将单片机的P3.2 端口,即外部中断0 端口作为ASIC 电路并行输出通道的采集端口,在单片机程序初始化中,设置定时器方式选择寄存器(TMOD)的值为09H,当执行指令开始执行后,P3.2 口由低电平变为高电平,定时器0 启动计时,当执行指令结束后,P3.2 口由高电平变为低电平,单片机外部中断0 触发。在中断程序里,停止定时器0 工作,整个计时过程结束。最后将这个时间发送给计算机,和计算机发送的指令执行时间对比,即完成了执行指令的测试。为了保证测试精度,减小测试误差,这里设置定时器0 的溢出时间为0.4ms。

执行指令完整的测试过程为:计算机发送关键字为“AD”的指令,单片机收到后,将其向计算机发送数据的通路连接到系统总线上。计算机发送关键字为“AA”或“AB”的指令,单片机收到后将待测试通道连接到采集端口上,并监测端口上信号变化。计算机发送执行指令给ASIC 电路,ASIC 电路接收并执行,单片机将ASIC 电路执行结果发送给计算机。计算机收到执行指令的执行结果进行比对并显示,执行指令测试结束。

查询指令的完整测试过程为:计算机发送关键字为“AC”的指令,单片机收到后,将ASIC 电路向计算机发送数据的通路连接到系统总线上。计算机发送查询指令给ASIC 电路,ASIC 电路收到查询指令后,读取各寄存器状态,将查询结果发送给计算机,计算机收到查询指令的结果后进行显示,查询指令测试结束。

3.3 通讯协议设计

通讯协议是计算机与ASIC 电路或单片机之间能够协同工作的重要依据,通常由一帧若干字节合在一起的数据组成,包括协议头、协议尾、校验位和有效数据位等。本系统所有通讯协议都以相同的协议头开始,以相同的协议尾结束,每条协议的有效数据位中设置了一个字节的关键字,以便区分。

计算机和ASIC 电路之间的通讯协议包括:

执行指令:长度为7 字节,有效数据位包括接收指令电路地址,待测试指令通道,执行时间,协议关键字为“0xAE”。

查询指令:长度为7 字节,有效数据位包括接收指令电路地址,协议关键字为“0xAF”。

查询返回指令:长度为8 字节,有效数据位包括电路地址,包长,指令循环计数,接收错误指令条数,最后执行指令通道号,协议关键字为“0xAG”。

计算机与单片机之间的通讯协议包括:

打开单片机返回通路协议:长度为9 字节,有效数据位包括接收指令电路地址、协议长度、待测试通道号、执行时间、数码管显示,协议关键字为“0xAD”;

打开ASIC 电路返回通路协议:长度为9 字节,有效数据位中协议关键字为“0xAC”,其他与打开单片机返回通路协议相同;

打开待测试通道协议:长度为9 字节,有效数据位中协议关键字为“0xAA”或者“0xAB”,其他与打开单片机返回通路协议相同,当计算机发送关键字为“0xAA”的指令时,测试ASIC 电路串行输入A 口,当计算机发送关键字为“0xAB”的指令时,测试ASIC 电路串行输入B 口;

测试结果返回协议:长度为11 字节,有效数据位包括ASIC 电路地址,指令长度,测试通道号,指令执行时间,实际采集时间,协议关键字为“0xAH”。

通过以上制定的通讯协议:计算机与ASIC 电路,计算机与单片机之间协同工作,有效完成ASIC电路的测试工作。

4 结 束 语

所设计的测试系统已经应用于ASIC 电路的测试工作中,达到了预期的效果。使用软件的自动测试功能,缩短了测试时间,且实现无人值守。通过对ASIC 电路测试方法的研究与实际应用,验证了将嵌入式技术应用于集成电路测试工作的可行性与优越性,对未来集成电路的测试工作提供了一条有效便捷的途径。

猜你喜欢

关键字字节端口
履职尽责求实效 真抓实干勇作为——十个关键字,盘点江苏统战的2021
No.8 字节跳动将推出独立出口电商APP
一种有源二端口网络参数计算方法
一种端口故障的解决方案
多按键情况下,单片机端口不足的解决方法
成功避开“关键字”
No.10 “字节跳动手机”要来了?
现有网络架构及迁移方案
轻量级分组密码Midori64的积分攻击
人类进入“泽它时代”