一种用于智能卡测试的边界扫描模块、边界扫描系统
技术领域
本发明涉及智能卡测试技术领域,尤其涉及一种用于智能卡测试的边界扫描模块、边界扫描系统。
背景技术
边界扫描技术是为解决数字电路(特别是超大规模集成电路)的可测试性问题而设计的一种技术。边界扫描技术的基本原理是通过边界扫描器件周围的边界扫描单元实现对芯片管脚状态的串行设定和读取,提供芯片级、电路板级乃至系统级的标准测试框架。边界扫描技术是由美国的MIPS公司制定的规范,根据IEEE 1149.1协议的基本构造和功能扩展而来,支持片上调试。
目前,边界扫描技术在智能卡芯片上的应用主要限于智能卡芯片32位CPU的边界扫描技术。如图1所示,给出了智能卡芯片32位CPU的边界扫描框图。在智能卡芯片32位CPU的边界扫描应用中,主要是在处理器内部嵌入额外的控制模块,当满足了一定的触发条件时进入某种特殊状态。在该特殊状态下,被调试程序停止运行,主机的调试器可以通过处理器外部特设的通信接口访问各种资源如寄存器、存储器等,并执行指令。为了实现宿主机通信端口与目标机调试通信接口各引脚信号的匹配,二者通过一块简单的信号转换电路板(即调试卡),连接主机与边界扫描接口。
但对于智能卡芯片专用16位CPU的边界扫描技术,则没有较佳的解决方案。因此,基于边界扫描技术,如何利用边界扫描技术实现对智能卡芯片专用16位CPU的测试,成为当前需要解决的一个问题。
发明内容
本发明所要解决的技术问题在于,提供一种针对智能卡芯片专用16位CPU的边界扫描模块及边界扫描系统,解决如何利用边界扫描技术实现对智能卡芯片专用16位CPU的测试的问题。
为了解决上述问题,本发明提出了一种用于智能卡测试的边界扫描系统,包括:边界扫描模块、一个或多个智能卡芯片专用16位CPU、地址数据总线和一个或多个存储器,
所述边界扫描模块与智能卡芯片专用16位CPU连接,用于通过选择信号和中断信号控制智能卡芯片专用16位CPU,通过智能卡芯片专用16位CPU与存储器进行数据交互;所述边界扫描模块还通过地址/数据总线与存储器相连,用于直接与存储器进行数据交互。
进一步地,所述边界扫描模块是通过配置选择信号选定16位CPU,在选定后,通过对选定的16位CPU发出中断信号暂停其工作并对其进行检测;
所述边界扫描模块是通过串行输入端口,将检测指令通过16位CPU发送给存储器;所述16位CPU在存储器接收到检测指令后恢复正常工作状态,所述边界扫描模块自动被屏蔽;
处于正常工作状态的被选定的16位CPU是通过读取存储器指令并执行所读取到的指令后,再将其数据送至存储器中进行存储;
所述边界扫描模块是在存储器存储结束后自动解除屏蔽,重新开始工作,从存储器中读取数据,并从边界扫描模块的串行输出端口以串行的形式输出测试结果。
进一步地,所述边界扫描模块包括:指令寄存器、基本寄存器单元、状态机、解码器和寄存器堆;其中:
指令寄存器,用于接收并存放指令,输出指令至基本寄存器单元及解码器;
基本寄存器单元,用于将串行输入转换为并行数据发送给所述指令寄存器以及将寄存器堆输出的并行数据转换成串行的数据输出;
状态机,用于对边界扫描模块的数据和指令进行状态控制;
解码器,用于对从指令寄存器发出的中断指令、单步执行指令、CPU选择指令和对各种存储器的读写指令进行解码;
寄存器堆,用于直接与16位CPU相连接,负责与16位CPU进行数据的交互,用于执行对16位CPU的访问,测试智能卡芯片中的各个寄存器。
进一步地,所述状态机,若接收到人工输入的状态输入信号是指令,则进入capture_IR状态,状态机将指令寄存器中的内容传送到指令寄存器中的指令移位寄存器中;指令移位寄存器接收信号后,状态机进入shift_IR状态;
所述状态机进入shift_IR状态时,指令寄存器中指令信号在时钟信号的配合下进行右移,并将数据输出到移位寄存器中;同时将指令寄存器中的串行输入数据移入;
当状态机的shift_IR状态结束后,移位寄存器中的指令信号接收也已经完成;状态机此时处在upData_IR状态下,状态机又将指令移位寄存器中的指令并行输出到指令锁存器。
进一步地,所述状态机,若接收到的人工输入的状态输入信号是数据,则状态机进入capture_DR状态,状态机将数据寄存器中的信号输出到数据移位寄存器中,状态机完成数据寄存器中的信号输出后,状态机将进入shift_DR状态;
所述状态机进入shift_DR状态时,数据寄存器中的信号在时钟信号的配合下进行右移,并将数据输出到数据移位寄存器中;同时将数据寄存器中的串行输入数据移入;
当状态机的shift_DR状态结束后,数据移位寄存器中的数据接收也已经完成;状态机此时处在upData_DR状态下,状态机将数据移位寄存器中的数据并行输出到数据锁存器。
进一步地,所述边界扫描模块,用于在边界扫描模块控制16位CPU的工作过程中执行单步执行指令和中断指令,其中:
如果单步执行指令有效,则16位CPU可自动从Flash存储器中读取一条指令,16位CPU执行所读取的指令,再将该指令执行的结果送到存储器中存储,边界扫描模块再从存储器中读取数据,由边界扫描模块的串行输出端口以串行的形式输出存储器中数据,直到16位CPU所有指令执行结束;
如果中断指令有效,将致使16位CPU暂停工作。
本发明还提供一种用于测试的边界扫描模块包括:指令寄存器、基本寄存器单元、状态机、解码器和寄存器堆;其中:
指令寄存器,用于接收并存放指令,输出指令至基本寄存器单元及解码器;
基本寄存器单元,用于将串行输入转换为并行数据发送给所述指令寄存器以及将寄存器堆输出的并行数据转换成串行的数据输出;
状态机,用于对边界扫描模块的数据和指令进行状态控制;
解码器,用于对从指令寄存器发出的中断指令、单步执行指令、CPU选择指令和对各种存储器的读写指令进行解码;
寄存器堆,用于直接与16位CPU相连接,负责与16位CPU进行数据的交互,用于执行对16位CPU的访问,测试智能卡芯片中的各个寄存器。
进一步地,所述状态机,若接收到人工输入的状态输入信号是指令,则进入capture_IR状态,状态机将指令寄存器中的内容传送到指令寄存器中的指令移位寄存器中;指令移位寄存器接收信号后,状态机进入shift_IR状态;
所述状态机进入shift_IR状态时,指令寄存器中指令信号在时钟信号的配合下进行右移,并将数据输出到移位寄存器中;同时将指令寄存器中的串行输入数据移入;
当状态机的shift_IR状态结束后,移位寄存器中的指令信号接收也已经完成;状态机此时处在upData_IR状态下,状态机又将指令移位寄存器中的指令并行输出到指令锁存器。
进一步地,所述状态机,若接收到的人工输入的状态输入信号是数据,则状态机进入capture_DR状态,状态机将数据寄存器中的信号输出到数据移位寄存器中,状态机完成数据寄存器中的信号输出后,状态机将进入shift_DR状态;
所述状态机进入shift_DR状态时,数据寄存器中的信号在时钟信号的配合下进行右移,并将数据输出到数据移位寄存器中;同时将数据寄存器中的串行输入数据移入;
当状态机的shift_DR状态结束后,数据移位寄存器中的数据接收也已经完成;状态机此时处在upData_DR状态下,状态机将数据移位寄存器中的数据并行输出到数据锁存器。
进一步地,所述边界扫描模块的寄存器堆,用于在边界扫描模块控制16位CPU的工作过程中执行单步执行指令和中断指令,其中:
若寄存器堆输出单步执行指令有效,则16位CPU可自动从Flash存储器中读取一条指令,16位CPU执行所读取的指令,再将该指令执行的结果送到存储器中存储,寄存器堆再从存储器中读取数据,由寄存器堆通过串行输出端口以串行的形式输出存储器中数据,直到16位CPU所有指令执行结束;
若寄存器堆输出中断指令有效,将致使16位CPU暂停工作。
本发明的智能卡芯片专用16位CPU的边界扫描系统,基于智能卡芯片专用16位CPU的边界扫描模块而设计,可向多个存储器发出测试信号,并接收存储器反馈回来的测试结果信号,因而可以同时检测智能卡芯片专用16位CPU内部各种存储器,且具有高安全性;并且可以直接控制CPU;检测CPU各条指令;支持单步执行和断点测试。
附图说明
图1是智能卡芯片32位CPU的边界扫描的系统框图;
图2是智能卡芯片专用16位CPU的边界扫描系统示意图;
图3是智能卡芯片专用16位CPU的边界扫描系统的边界扫描模块结构图;
图4是边界扫描模块中状态机的状态转移示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。
为实现针对智能卡芯片专用16位CPU的边界扫描测试,本发明的边界扫描系统,是以边界扫描模块为依托,完成智能卡芯片专用16位CPU的边界扫描测试工作,可实现对多个存储器的检测。
如图2所示,智能卡芯片专用16位CPU的边界扫描系统,包括边界扫描模块、一个或多个智能卡芯片专用16位CPU、地址数据总线和存储器。
所述边界扫描模块与智能卡芯片专用16位CPU连接,该边界扫描模块通过选择信号和中断信号直接控制智能卡芯片专用16位CPU。该边界扫描模块还通过地址/数据总线与一个或多个存储器相连。
边界扫描模块开始对16位CPU控制时,首先要配置16位CPU选择信号,利用所配置的选择信号来选择对某个16位CPU进行操作;当某个16位CPU被选定后,边界扫描模块中的人为设定的中断信号使被选定的16位CPU暂停工作,此时边界扫描模块可直接控制通过选择信号所选定的16位CPU,并完成对选定的这个16位CPU的检测。
边界扫描模块与16位CPU连接的目的,是利用边界扫描模块来测试16位CPU的各条指令。所述边界扫描模块控制16位CPU,实现对16位CPU各条指令检测的工作原理如下:
通过边界扫描模块的串行输入端口,将各条指令通过16位CPU发送给存储器(例如Flash存储器)。该串行输入端口是测试时人为输入指令端口。
存储器接收到人为输入的指令后,边界扫描模块自动被屏蔽,使原来受控制的16位CPU处于正常工作状态。
这时,处于正常工作状态的这个被选定的16位CPU通过存储器读取指令,并执行所读取到的指令;这个被选定的16位CPU在执行指令结束后,再将其数据送至存储器中进行存储。
数据在存储器(例如Flash存储器)中存储结束后,边界扫描模块自动解除屏蔽,重新开始工作,从存储器中读取数据,并从边界扫描模块的串行输出端口以串行(或0,或1)的形式输出。
在边界扫描模块控制16位CPU的工作过程中,边界扫描模块可执行单步执行指令和中断指令。
如果单步执行指令有效,则16位CPU可以自动从存储器(例如Flash存储器)中读取一条指令,16位CPU执行所读取的指令,再将该指令执行的结果送到存储器(例如Flash存储器)中存储,边界扫描模块再从存储器(例如Flash存储器)中读取数据,由边界扫描模块的串行输出端口以串行的形式输出存储器中数据,直到16位CPU所有指令执行结束。
如果中断指令有效,将致使16位CPU暂停工作。
如图3所示,给出了基于智能卡芯片专用16位CPU的边界扫描方案总体示意图,所述边界扫描模块包括:指令寄存器、基本寄存器单元、状态机、解码器和寄存器堆。下面对边界扫描模块的各个模块进行详细描述。
(1)指令寄存器
所述指令寄存器是一个用于存放指令的模块,该指令寄存器具有7个输入信号和1个输出信号。其中:
所述指令寄存器的7个输入信号分别是:时钟信号、复位信号、串行输入信号、指令捕获信号、指令移位信号、指令更新信号和指令复位信号。
所述指令寄存器的1个输出信号是一个传给解码器的指令信号。
在所述的7个输入信号中,时钟信号是由智能卡芯片内的时钟源给出的信号;复位信号和串行输入信号是人为输入的信号;指令捕获信号、指令移位信号、指令更新信号和指令复位信号是由状态机给出,用于更新输入的指令。
(2)基本寄存器单元
基本寄存器单元是指令寄存器的一个子模块,具有二个功能:一个功能是用于将串行输入的序列以一种并行的传输方式传送到指令寄存器的数据输入端;另一个功能是用于将寄存器堆输出的并行数据转换成串行的数据输出给外围设备,如显示器、示波器。
(3)状态机
状态机,用于对边界扫描模块的数据和指令进行状态控制。
所述状态机具有3个输入信号和7个输出信号。其中,所述的3个输入信号分别是时钟信号、复位信号和状态输入信号。所述的7个输出信号分别是指令移位信号、指令捕获信号、指令更新信号、指令复位信号、数据捕获信号、数据移位信号和数据更新信号。
在所述的3个输入信号中,时钟信号来源于智能卡芯片内的时钟源;复位信号和状态输入信号是人为给出,状态输入信号用于为状态机提供给一个状态转移信息。
在所述的7个输出信号中,状态机输出的指令移位信号、指令捕获信号、指令更新信号和指令复位信号,又是指令寄存器的输入信号。状态机输出数据捕获信号、数据移位信号和数据更新信号,这些信号也是寄存器堆模块的输入信号,为寄存器堆模块提供数据信息。
如图4所示,给出了状态机的状态转移图。状态转移图中对人为给出的状态输入信号是指令还是数据,进行了明确的区分。其中:
针对指令:
如果人为给出的状态输入信号是指令,则状态机进入capture_IR状态。进入capture_IR状态时,状态机将指令寄存器中的内容传送到指令寄存器模块中指令移位寄存器中;指令移位寄存器接收信号后,状态机进入shift_IR状态。
进入shift_IR状态时,指令寄存器中指令信号在时钟信号的配合下进行右移,并将数据输出到移位寄存器中;同时将指令寄存器中的串行输入数据移入。
当状态机的shift_IR状态结束后,移位寄存器中的指令信号接收也已经完成。状态机此时处在upData_IR状态下,状态机又将指令移位寄存器中的指令并行输出到指令锁存器。
针对数据:
如果人为给出的状态输入信号是数据,则状态机进入capture_DR状态。进入capture_DR状态时,状态机将数据寄存器中的信号输出到数据移位寄存器中。状态机完成数据寄存器中的信号输出后,状态机将进入shift_DR状态。
进入shift_DR状态时,数据寄存器中的信号在时钟信号的配合下进行右移,并将数据输出到数据移位寄存器中;同时将数据寄存器中的串行输入数据移入。
当状态机的shift_DR状态结束后,数据移位寄存器中的数据接收也已经完成。状态机此时处在upData_DR状态下,状态机将数据移位寄存器中的数据并行输出到数据锁存器。
(4)解码器
解码器,用于对从指令寄存器发出的中断指令、单步执行指令、CPU选择指令和对各种存储器的读写指令进行解码。解码器将输入的指令以热独码的形式解析。解码后,解码器向寄存器堆发出控制指令,完成对寄存器堆的控制。
解码器具有1个输入信号和3个输出信号。
所述1个输入信号是从指令寄存器输出的指令信号;
所述3个输出信号分别是选择信号、冷启动信号和热启动信号,这三个输出信号同时传给寄存器堆。其中,所述选择信号,用于通知寄存器堆要进行的读写操作;所述冷启动信号是开机启动信号,用于通知寄存器堆在芯片通电后启动;所述热启动信号,用于在芯片通电后的情况下指示重新启动寄存器堆,使寄存器堆恢复原始设置。
(5)寄存器堆
所述寄存器堆是智能卡芯片专用16位CPU的边界扫描技术的核心,寄存器堆直接与16位CPU相连接,负责与16位CPU进行数据的交互,是最直接的接口模块。所述寄存器堆,用于执行对16位CPU的访问和测试智能卡芯片中的各个寄存器。
所述寄存器堆具有13个输入信号和24个输出信号。其中:
所述13个输入信号分别是时钟信号、复位信号、指令选择信号、热启动信号、冷启动信号、数据捕获信号、数据移位信号、数据更新信号和其它五个存储器返回的信号。
其中,时钟信号由智能卡芯片内的时钟源给出的信号;复位信号是人工输入的信号。指令选择信号、热启动信号和冷启动信号是由解码器给出的信号,用于给寄存器堆要执行的指令。
数据捕获信号、数据移位信号和数据更新信号由状态机给出,用于给寄存器堆模块进行指令操作时配合的数据及地址信息。
所述24个输出信号分别是输出信号、中断信号、单步执行信号、CPU选择信号和二十个与各个存储器相连信号。寄存器堆的输出信号是以并行信号的形式输入到基本寄存器中,再由基本寄存器转换成串行的数据。中断信号、单步执行信号和CPU选择信号分别控制CPU动作过程。中断信号用于中断正在运行的CPU,使边界扫描模块获得对CPU的控制权;单步执行信号用于控制CPU每次只执行一步操作;CPU选择信号则是当智能卡芯片中出现两个或者多个CPU时,选择对哪个CPU进行测试。剩下的二十一个输出信号分别为各个存储器的输入信号,致使各个存储器可以根据具体工作需求,是通过CPU或不通过CPU,完成对智能卡芯片中的各个存储器的间接检测或直接检测。
本发明以边界扫描模块为依托,实现了对智能卡芯片专用16位CPU的边界扫描测试工作。利用基于智能卡芯片专用16位CPU的边界扫描技术,可以同时检测智能卡芯片专用16位CPU内部各种存储器,且具有高安全性;并且可以直接控制CPU;检测CPU各条指令;支持单步执行和断点测试。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。