具体实施方式
以下,根据附图对本发明的实施方式进行详细说明。另外,在用于说明实施方式的所有图中,对相同部分原则上附加相同标号,省略其重复的说明。
(实施方式1)
对作为本发明的实施方式1的处理装置进行说明。图1是示出本实施方式的处理装置的内部结构的例子的图。另外,图2是示出本实施方式的处理装置的外部端子的配置例子的图。
在图1中,处理装置100构成为作为ISO 7816互换的外部接口,具有EX_CLK 110、EX_RESET 111、UART_I/O 112、D+113、D-114、Vcc 115、GND 116,并且,具有内部振荡器120、时钟控制电路130、CPU 141、UART控制电路142、USB控制电路143。
作为处理装置100,主要对应IC卡芯片、带有安全功能的存储器卡等,但只要是具有多个数据传送的接口的装置,则不限于这些。另外,不限于1个芯片,也可以构成为针对各电路或各电路的集合的每一个分别设置芯片。
EX_CLK 110是用于从外部终端向处理装置100输入为了进行依照ISO 7816的处理而所需的时钟信号的外部接口,在ISO 7816中分配了图2中的C3端子203。以下,将经由EX_CLK 110供给的时钟记载为外部时钟。EX_RESET 111是用于从外部终端向处理装置100输入复位信号的外部接口,在ISO 7816中分配了图2中的C2端子202。以下,将经由EX_RESET 111的复位记载为外部复位。
UART_I/O 112是用于在外部终端和处理装置100之间发送接收APDU(Application Protocol Data Unit,应用协议数据单元)的外部接口,在ISO 7816中分配了C7端子207。D+113以及D-114用于在依照ISO 7816-12的USB传送中,在外部终端和处理装置100之间传送指令和数据,在ISO 7816中作为D+113分配了C4端子204,作为D-114分配了C8端子208。
Vcc 115是取得向处理装置100的输入电压的外部接口,在ISO7816中分配了C1端子201。GND 116是向处理装置100的地线,在ISO 7816中分配了C5端子205。另外,在依照ISO 7816-3的数据传送以及依照ISO 7816-12的USB传送中,不论哪个外部端子分配给哪个外部接口,只要该分配明确,就不会对本实施方式中的处理装置100以及时钟控制方法的本质造成影响。
UART控制电路142是实现ISO 7816-3的规定中确定的APDU传送的电路。以下,将与外部时钟同步地进行依照ISO 7816-3的APDU传送的接口记载为ISO 7816接口。USB控制电路143是实现依照ISO 7816-12的规定中确定的USB标准的数据传送的电路。以下,将进行依照ISO 7816-12的规定中确定的USB标准的数据传送的接口记载为USB接口。另外,以下,作为UART控制电路142以及USB控制电路143的总称有时记载为接口控制电路。
还可以将各接口控制电路的功能安装成由CPU 141来进行。但是,在独自地具有各接口控制电路,且可以与用于使CPU 141动作的电力相区别地控制用于使这些动作的电力的情况下,当在数据传送时选择了某一个接口时,通过停止向另一方的接口控制电路的电力供给,可以使处理装置100的功耗降低。
即使在基于USB接口的传送数据的情况下,也可以利用外部时钟,但由于其动作频率为4MHz左右的低速,所以不适合于由处理大容量的数据的USB接口进行的数据传送。进而,也不存在在基于USB接口的处理中继续从外部终端供给来外部时钟那样的保证。
因此,在本实施方式的处理装置100中,构成为作为时钟生成电路设有内部振荡器120,在基于USB接口的处理时使用由内部振荡器120生成的时钟。另外,内部振荡器120不限于处理装置100的内部,也可以构成为从处理装置100的外部连接。以下,将内部振荡器120所生成的时钟记载为内部时钟。
图3是示出处理装置100那样的、具有ISO 7816接口和USB接口的IC卡的初始动作的流程的一个例子的图。首先,在电压接通前,在步骤300中,将EX_CLK 110设定成Low状态,将EX_RESET 111设定成Low状态,将UART_I/O 112设定成High状态,将D+113设定成High状态,将D-114设定成High状态。在电压接通后,在达到了规定的动作电压后,判定D+113和D-114是否在至少10ms期间为Low状态(步骤301)。仅在满足了步骤301中的判定条件的情况下,进行以下叙述的USB接口激活步骤。
在USB接口激活步骤中,首先,处理装置100在USB接口对应于USB标准中的Full Speed或High Speed的情况下使D+113变为High状态,在仅对应于Low Speed的情况下使D-114变为High状态(步骤302)。接下来,通过D+113或D-114成为High状态,与处理装置100连接的外部终端检测到连接有具有USB接口的处理装置100,使成为High状态的D+113或D-114变为Low状态(步骤303)。
仅在正常地进行了步骤301~步骤303的各处理的情况下,USB接口被激活,处理装置100作为使用USB接口来进行数据传送的装置来动作。在没有正常地进行了步骤301~步骤303的各处理的情况下,判定是否从外部装置经由EX_CLK 110已供给了/正在供给动作频率4MHz左右的外部时钟(步骤311)。在已供给了/正在供给外部时钟的情况下,进行以下叙述的ISO 7816接口激活步骤。
在ISO 7816接口激活步骤中,首先,在从供给外部时钟后400时钟的期间,外部终端使EX_RESET 111变为High状态(步骤312)。
接下来,在EX_RESET 111成为High状态后40,000时钟的期间,处理装置100经由UART_I/O 112向外部终端发送ATR(Answer ToReset,复位响应)(步骤313)。
仅在正常地进行了步骤311~步骤313的各处理的情况下,ISO
7816接口被激活,处理装置100作为使用ISO 7816接口来进行数据传送的装置来动作。在没有正常地进行了步骤301~步骤303的各处理以及步骤311~步骤313的各处理的情况下,处理装置100等待D+113和D-114在至少10ms的期间成为Low状态么(步骤301)?或经由EX_CLK 110供给来外部时钟么(步骤311)?中的某一个条件成立。
为了进行以上所示那样的各接口的激活的处理,处理装置100如图1所示那样构成为具有时钟控制电路130。时钟控制电路130是根据处理装置100为了与外部终端之间进行数据传送而使用的接口,进行向CPU 141、各接口控制电路等供给的时钟和复位的选择的模块。以下,将向CPU 141、各接口控制电路等供给的时钟记载为系统时钟。
图4是示出本实施方式中的时钟控制电路130中包含的模块的结构例子的图。时钟控制电路130构成为具有时钟切换电路410、复位控制电路420、USB检测电路430。时钟切换电路410是从经由EX_CLK 110自外部终端供给的外部时钟411和由内部振荡器120生成的内部时钟412,选择向CUP 141、各接口控制电路等供给的系统时钟413的模块。
另外,时钟切换电路410向复位控制电路420供给外部时钟检测信号414以及内部时钟开始信号415。此处,外部时钟检测信号414是如果检测到经由EX_CLK 110供给外部时钟411则设为High状态的信号。另外,内部时钟开始信号415是当向CPU 141、各接口控制电路等供给由内部振荡器120生成的内部时钟412时设为High状态的信号。
进而,时钟切换电路410构成为从CPU 141输入休眠信号416,并且向CPU 141、其他模块输出时钟切换信号417,在后面对这些信号进行叙述。
复位控制电路420是对向CPU 141、各接口控制电路等供给的复位进行控制的模块。作为复位控制电路420所供给的复位,有系统复位422、UART复位423、USB复位424。系统复位422是对处理装置100内的所有模块供给复位的信号。UART复位423是仅对为了经由ISO 7816接口传送的数据的处理而所需的模块供给复位的信号。USB复位424是仅对为了经由USB接口传送的数据的处理而所需的模块供给复位的信号。
USB检测电路430是对D+113以及D-114的信号线的状态进行监视,而如果检测到D+113和D-114这两方的信号线在至少10ms期间是Low状态,则使USB检测信号431为High状态的模块。USB检测信号431是用于向CPU 141以及其他模块通知利用USB接口传送了数据的信号。
如果USB检测信号431成为High状态,则内部振荡器120开始时钟的生成。但是,需要等待到时钟的振荡稳定后,向CPU 141等供给时钟。通常,从振荡器的标准等可以得知直到时钟稳定为止的时间,所以利用根据该时间制成的专用硬件定时器等来等待振荡稳定,在稳定后向CPU 141等供给。该定时器也可以位于时钟切换电路410、内部振荡器120内。
以下,对本实施方式的处理装置100中的USB接口的激活方法以及ISO 7816接口的激活方法进行说明。图5是示出本实施方式的处理装置100中的USB接口的激活步骤以及ISO 7816接口的激活步骤的例子的流程图。另外,图6是本实施方式的处理装置100中的USB接口的激活步骤的时序图的例子。另外,图7是本实施方式的处理装置100中的ISO 7816接口的激活步骤的时序图的例子。
首先,在图6、图7中,在电压接通前,分别将EX_CLK 110设定成Low状态,将EX_RESET 111设定成Low状态,将UART_I/O 112设定成High状态,将D+113设定成High状态,将D-114设定成High状态(定时610,定时710)。在图5中的电压接通后(步骤501),在USB检测电路430检测到D+113和D-114在至少10ms期间是Low状态的情况下(步骤502),开始USB接口激活步骤。此时,USB检测电路430使USB检测信号431为High状态(定时620)。
USB检测电路430利用由与内部振荡器120独立的振荡器生成的时钟来动作。但是,为了降低功耗,将其动作频率设为几MHz左右。另外,该时钟也可以是由内部振荡器120生成的时钟。但是,在该情况下,需要在电压接通时起动内部振荡器120。
内部振荡器120如果检测到USB检测信号431成为High状态,则生成内部时钟412(步骤511,定时620)。之后,利用内部振荡器120内的定时器,等待内部时钟412的振荡稳定,在稳定之后,经由时钟切换电路410,向CPU 141以及各接口控制电路等供给内部时钟412来作为系统时钟413(步骤512)。此时,时钟切换电路410使内部时钟开始信号415为High状态(定时630)。另外,也可以不向UART控制电路142供给内部时钟412。
接下来,复位控制电路420在确认了USB检测信号431为High状态且内部时钟开始信号415为High状态之后,使系统复位422为High状态(步骤513,定时640)。另外,也可以使USB复位424为High状态,而并非系统复位422。
在系统复位422成为High状态后,USB控制电路143在处理装置100对应于Full Speed或High Speed的情况下使D+113为High状态,在仅对应于Low Speed的情况下使D-114为High状态(步骤514,定时650)。另外,在以后的说明中,本实施方式的处理装置100对应于High Speed。
也可以构成为代替USB控制电路143通过专用硬件使D+113或D-114为High状态。在使用专用硬件的情况下,由于即使不供给内部时钟412也可以动作,所以降低处理装置100整体的功耗,故优选尽可能在晚的定时、即步骤515之后进行内部时钟412的生成·供给(步骤511、S512)、复位处理(步骤513)
通过D+113成为High状态,外部终端检测到连接有具有USB接口的处理装置100,使成为High状态的D+113为Low状态(步骤515,定时660)。仅在正常地进行了以上的处理的情况下,USB接口被激活,处理装置100可以作为使用USB接口来进行数据传送的装置来动作。
在步骤502中,USB检测电路430没有检测到D+113和D-114在10ms的期间成为Low状态,进而在步骤521中,时钟切换电路410检测到经由EX_CLK 110供给来外部时钟411的情况下,开始ISO7816接口激活步骤。此时,时钟切换电路410在确认了USB检测信号431是Low状态之后,将外部时钟411作为系统时钟413来供给,使外部时钟检测信号414变为High状态(定时720)。
接下来,复位控制电路420如果检测到从外部时钟检测信号414成为High状态之后在400时钟以内经由EX_RESRT 111的外部复位421成为High状态,则使系统复位422变为High状态(步骤522,定时730)。另外,也可以使UART复位423而并非系统复位422变为High状态。另外,也可以在检测到外部复位421成为High状态之后而非外部时钟411的检测之后转移到ISO 7816接口激活步骤。
在系统复位422成为High状态之后,UART控制电路142在40,000时钟以内经由UART_I/O 112向外部终端发送ATR(Answer ToReset)(步骤523,定时740)。仅在正常地进行了以上的处理的情况下,ISO 7816接口被激活,处理装置100可以作为使用ISO 7816接口来进行数据传送的装置来动作。另外,在激活了ISO 7816接口时,也可以不向USB控制电路143供给外部时钟411。
对于以上的处理,除了时钟控制电路130之外,通过利用UART控制电路142和USB控制电路143,从而可以使用所有的硬件来进行,但在以下,对使用搭载于CPU 141中内置的ROM等的固件来进行USB接口以及ISO 7816接口的激活的方法的例子进行说明。
图15是示出本实施方式的处理装置100中的、USB接口以及ISO7816接口的激活时所使用的寄存器的结构例子的一部分的图。另外,图16是示出本实施方式的处理装置100中的使用了固件的USB接口的激活步骤以及ISO 7816接口的激活步骤的例子的流程图。
在图15中,CLK_SELECT 1501是表示系统时钟413的供给源的位。例如,在“0”的情况下表示供给源为外部时钟411,在“1”的情况下表示供给源为内部时钟412。RESET_SELECT 1502是表示外部复位421的有效/无效的位。例如,在“0”的情况下表示外部复位421无效,在“1”的情况下表示有效。MODE_SELECT 1503是表示可以使用的接口的位。例如,在“01”的情况下表示ISO 7816接口可以使用,在“10”的情况下表示USB接口可以使用。进而,在“11”的情况下表示两方的接口可以使用。
DPPU 1511是如果例如设定“1”则拉起D+113或D-114的位。USB_DETECT 1512是USB检测电路430检测到D+113以及D-114在至少10ms期间是Low状态则被设定成“1”的位。USB_MODE1513是表示USB接口的速度的位。例如,在“0”的情况下表示是LowSpeed,在“1”的情况下表示是Full Speed。
DP 1521是表示D+113的状态的位。例如,在“0”的情况下表示D+113为Low状态,在“1”的情况下表示为High状态。DM 1522是表示D-114的状态的位。例如,在“0”的情况下表示D-114为Low状态,在“1”的情况下表示为High状态。
在图16中,在电压接通前,分别对CLK_SELECT 1501设定“0”,对RESET_SELECT 1502设定“1”,对MODE_SELECT 1503设定“01”,并且,对DPPU 1511设定“0”,对USB_DETECT 1512设定“0”(步骤1600)。另外,对USB_MODE 1513、DP 1521、DM 1522,根据处理装置100的标准而可以设定不同的值,但在本实施方式的处理装置100中全部设定“1”。
在电压接通后,如果对CPU 141发生了复位中断(步骤1601),则固件在复位中断函数内确认MODE_SELECT 1503的值(步骤1602)。另外,MODE_SELECT 1503的值设为由复位控制电路420设定的值。在MODE_SELECT 1503的值为“10”的情况下,固件对DPPU 1511设定“1”,使D+113为High状态(步骤1611)。之后,固件监视DP 1521的值是否为“0”(步骤1612),在变成“0”的情况下,处理装置100使用USB接口来动作。
另外,也可以在D+113成为Low状态时,USB检测电路430或USB控制电路143对CPU 141发生中断。仅在正常地进行了以上那样的处理的情况下,USB接口被激活,处理装置100可以作为使用USB接口来进行数据传送的装置来动作。
另外,当在步骤1602中MODE_SELECT 1503的值为“01”的情况下,固件在40,000时钟以内在复位中断函数内经由UART_I/O 112向外部终端发送ATR(步骤1621)。仅在正常地进行了以上那样的处理的情况下,ISO 7816接口被激活,处理装置100可以作为使用ISO7816接口来进行数据传送的装置来动作。
通过以上的处理,可以在一个处理装置100中,激活ISO 7816接口以及USB接口,可以对应于使用多个接口的数据传送。此处,如图2所示,基于ISO 7816接口的数据传送中使用的外部端子和基于USB接口的数据传送中使用的外部端子不重复。因此,还可以在物理上同时使用两方的接口。
但是,上述的初始动作时的处理的结果,处理装置100在使用ISO7816接口来动作时使用外部时钟411来动作,在使用USB接口来动作时使用内部时钟412来动作。因此,在同时使用两方的接口的情况下,需要将系统时钟413统一成外部时钟411或内部时钟412中的某一个。
如上所述,即使在基于USB接口的数据传送的情况下,也可以利用外部时钟411,但其动作频率为4MHz左右的低速,所以不适合于处理大容量的数据的基于USB接口的数据传送。因此,在本实施方式的处理装置100中,当使用两方的接口时,作为系统时钟413使用内部时钟412来动作。但是,还可以构成为在外部时钟411为高速的情况下,作为系统时钟413使用外部时钟411。
此处,当在处理装置100使用ISO 7816接口来正在动作时激活USB接口的情况下,需要将系统时钟413从外部时钟411切换成内部时钟412。但是,如果在处理装置100的动作中从外部时钟411切换成内部时钟412,则在切换时产生噪声,存在CUP 141有可能误动作的问题点。
因此在本实施方式的处理装置100中,构成为如图4所示那样在时钟控制电路130中具有休眠信号416以及时钟切换信号417。休眠信号416是在CPU 141转移到休眠状态时设为High状态的信号,时钟切换信号417是在时钟切换电路410将系统时钟413从外部时钟411切换成内部时钟412时设为High状态的信号。
以下,对本实施方式的处理装置100中的、利用USB接口动作中进行ISO 7816接口的激活的方法、以及利用ISO 7816接口动作中进行USB接口的激活的方法进行说明。
图8是示出本实施方式的处理装置100的、利用USB接口动作中的ISO 7816接口的激活步骤、以及利用ISO 7816接口动作中的USB接口的激活步骤的例子的流程图。另外,图9是本实施方式的处理装置100的、利用USB接口动作中的ISO 7816接口的激活步骤的时序图的例子。另外,图10是本实施方式的处理装置100的、利用ISO 7816接口动作中的USB接口的激活步骤的时序图的例子。
首先,在处理装置100使用USB接口来动作时,如果时钟切换电路410检测到经由EX_CLK 110供给了外部时钟411(步骤801),开始ISO 7816接口激活步骤。此时,时钟切换电路410使外部时钟检测信号414为High状态(定时910)。
此时,时钟切换电路410向UART控制电路142供给内部时钟412。但是,在UART控制电路142内存在经由UART_I/O 112与外部终端进行数据传送的模块,这些模块需要利用外部时钟411来动作,所以时钟切换电路410供给仅针对这些模块的外部时钟411。
复位控制电路420如果从外部时钟检测信号414成为High状态后在400时钟以内,检测到经由EX_RESET 111的外部复位421成为High状态(步骤802),则使UART复位423为High状态(定时920)。在UART复位423成为High状态之后,UART控制电路142在40,000时钟以内经由UART_I/O 112向外部终端发送ATR(步骤803,定时930)。另外,也可以使系统复位422而非UART复位423为High状态。
仅在正常地进行了以上的处理的情况下,在使用USB接口的动作中ISO 7816接口被激活,处理装置100可以同时使用USB接口和ISO7816接口这双方来动作。
在处理装置100使用ISO 7816接口来动作时,如果USB检测电路430检测到D+113和D-114在至少10ms期间是Low状态(步骤811),则开始USB激活步骤。此时,USB检测电路430使USB检测信号431为High状态(定时1010)。
内部振荡器120如果检测到USB检测信号431成为High状态,则生成内部时钟412(步骤812,定时1010)。时钟切换电路410在内部时钟412稳定之后,使内部时钟开始信号415为High状态,并且在确认了供给外部时钟411以及内部时钟412这两方之后,使时钟切换信号417为High状态(定时1020)。另外,复位控制电路420如果检测到内部时钟开始信号415成为High状态,则使USB复位424为High状态(定时1020)。另外,使USB复位424为High状态的定时也可以是后述的定时1040之后。
CPU 141如果检测到时钟切换信号417成为High状态,则进行与为了转移到休眠状态而所需的处理(寄存器的设定、当前的状态的保存等)以及USB接口的处理相关的复位处理。在完成了所需的处理之后,使休眠信号416为High状态,转移到休眠状态(步骤813,定时1030)。
时钟切换电路410如果检测到休眠信号416变为High状态,则将系统时钟413从外部时钟411切换成内部时钟412(步骤814,定时1040)。在切换了系统时钟413之后,向CPU 141发送中断信号,使CPU 141的动作再次开始(步骤815)。此时,时钟切换电路410使时钟切换信号417以及休眠信号416为Low状态(定时1040)。
在CPU 141的动作再次开始后,USB控制电路143使D+113为High状态(步骤816,定时1050)。另外,也可以代替USB控制电路143由专用硬件使D+113变为High状态。另外,也可以当使USB复位424变为High状态定时为定时1040之后而并非定时1020的情况下,在USB复位424成为High状态之后,由USB控制电路143使D+113为High状态。通过D+113成为High状态,外部终端检测到连接有具有USB接口的处理装置100,使成为High状态的D+113为Low状态(步骤817,定时1060)。
仅在正常地进行了以上的处理的情况下,在ISO 7816动作中USB接口被激活,处理装置100可以同时使用USB接口和ISO 7816接口这两方来动作。
另外,在本实施方式的处理装置100中,构成为当同时使用两方的接口时,作为系统时钟413使用内部时钟412,但在作为系统时钟413使用外部时钟411的情况下,在使用USB接口的动作中,在激活ISO 7816接口的处理中,进行上述的CPU 141的向休眠状态的转移、时钟切换处理、CPU 141的动作再次开始的一连串的处理(步骤813~步骤815)。
对于以上的处理,除了时钟控制电路130之外,通过利用UART控制电路142和USB控制电路143,从而全部可以使用硬件来进行,在以下,说明使用搭载于CPU 141中内置的ROM等的固件在利用USB接口动作中进行ISO 7816接口的激活的方法、以及在利用ISO7816接口动作中进行USB接口的激活的方法的例子。
图17是示出本实施方式的处理装置100的、使用了固件的利用USB接口动作中的ISO 7816接口的激活步骤、以及利用ISO 7816接口动作中的USB接口的激活步骤的例子的流程图。
在图17中,在处理装置100使用USB接口来动作时,分别对CLK_SELECT 1501设定“1”,对RESET_SELECT 1502设定“0”,对MODE_SELECT 1503设定“10”,对USB_DETECT 1512设定“1”(步骤1700)。
时钟控制电路130或UART控制电路142如果检测到ISO 7816接口激活步骤的开始以及外部复位412成为High状态,则对CPU 141发生UART中断(步骤1701)。此时,时钟控制电路130将MODE_SELECT 1503设定成“11”。如果检测到UART中断,则固件在40,000时钟以内,在UART中断函数内经由UART_I/O 112发送ATR(步骤1702)。另外,也可以在ATR发送后向MODE_SELECT1503设定“11”。
仅在正常地进行了以上那样的处理的情况下,在使用USB接口的动作中ISO 7816接口被激活,处理装置100可以同时使用USB接口以及ISO 7816接口这两方来动作。
在处理装置100使用ISO 7816接口来动作时,分别对CLK_SELECT 1501设定“0”,对RESET_SELECT 1502设定“1”,对MODE_SELECT 1503设定“01”,对USB_DETECT 1512设定“0”(步骤1710)。
USB检测电路430或USB控制电路143如果检测到D+113以及D-114在至少10ms期间是Low状态,则对CPU 141发生USB检测中断(步骤1711)。如果检测到USB检测中断,则固件在USB检测中断函数内,对CLK_SELECT 1501设定“1”(步骤1712),执行休眠命令而使CPU 141转移到休眠状态(步骤1713)。另外,也可以是如下的方法:如果USB检测信号432成为High状态,则USB_DETECT 1512被设定成“1”,所以不利用USB检测中断,而使用固件来监视USB_DETECT 1512成为“1”。
如果执行了休眠命令,则休眠信号416变为High状态,所以时钟切换电路410将系统时钟413切换成内部时钟412,向CPU 141发送中断信号,使CPU 141的动作再次开始(步骤1714)。在CPU 141的动作再次开始之后,固件对DPPU 1511设定“1”,使D+113变为High状态(步骤1715)。之后,固件监视DP 1521的值是否为“0”(步骤1716),在成为“0”的情况下使用USB接口来动作。另外,也可以在D+113成为Low状态时对CPU 141再次发生中断。
仅在正常地进行了以上那样的处理的情况下,在利用ISO 7816接口动作中USB接口被激活,处理装置100可以同时使用USB接口以及ISO 7816接口来动作。
在转移到休眠状态的期间,CPU 141的动作停止,所以通过如上述那样在作为系统时钟413供给的时钟系统的切换中使CPU 141变为休眠状态,可以不受噪声的影响而切换时钟系统。进而,即使在时钟系统的切换中从外部受到了针对时钟的攻击的情况下,由于CPU 141的动作停止,所以CPU 141也不会误动作,可以维持处理装置100的抗解析与篡改性。
接下来,说明本实施方式的处理装置100中的、利用两方的接口动作中进行ISO 7816接口的非激活的方法、以及利用两方的接口动作中进行USB接口的非激活的方法。
图11是示出本实施方式的处理装置100的、利用两方的接口动作中的ISO 7816接口的非激活步骤、以及利用两方的接口动作中的USB接口的非激活步骤的例子的流程图。另外,图12是本实施方式的处理装置100的、利用两方的接口动作中的ISO 7816接口的非激活步骤的时序图的例子。另外。图13是本实施方式的处理装置100的、利用两方的接口动作中的USB接口的非激活步骤的时序图的例子。
首先,在处理装置100利用两方的接口来动作时,复位控制电路420在检测到经由EX_RESET 111的外部复位421成为Low状态的情况下(步骤1101),开始ISO 7816接口非激活步骤。此时,复位控制电路420使UART复位423为Low状态(定时1210)。在检测到外部复位421成为Low状态之后,时钟切换电路410检测经由EX CLK 110的外部时钟411的供给停止的情况(步骤1102)。此时,使外部时钟检测信号414为Low状态(定时1220)。
在正常地进行了以上的处理时,ISO 7816接口被非激活,处理装置100仅使用USB接口来动作。之后,通过时钟控制电路130检测外部时钟411的供给,可以再次激活ISO 7816接口。另外,即使在外部终端不使外部复位421变为Low状态而停止了外部时钟411的供给的情况下,虽然与ISO 7816的规格相反,但也可以使ISO 7816接口进行非激活,而处理装置100仅使用USB接口来动作。
在处理装置100利用两方的接口来动作时,在USB检测电路430检测到D+113以及D-114的信号线的状态成为挂起状态的情况下(步骤1111),开始USB接口非激活步骤。此时,USB检测电路430使USB检测信号431变为Low状态(定时1310)。所谓挂起状态是指,当在3ms以上的期间与外部终端之间没有进行数据传送时,为了降低功耗,使处理装置100以省电模式动作的情况的状态。另外,也可以代替USB检测电路430而由USB控制电路143或专用硬件进行挂起状态的检测。
CPU 141如果检测到USB检测信号431成为Low状态,则进行为了转移到休眠状态而所需的处理(寄存器的设定、当前的状态的保存等)。在所需的处理完成之后,使休眠信号416变为High状态,转移到休眠状态(步骤1112,定时1310)。时钟切换电路410如果检测到休眠信号416成为High状态,则将系统时钟413从内部时钟412切换成外部时钟411(步骤1113,定时1330)。此时,也可以停止内部时钟412。另外,还可以通过使内部时钟开始信号415变为Low状态来使内部时钟412停止(定时1330)。
在系统时钟413的切换后,向CPU 141发送中断信号,利用外部时钟411来使CPU 141的动作再次开始(步骤1114,定时1340)。另外,即使在步骤1111中检测到USB接口成为挂起状态的情况下,也可以仍利用内部时钟412来动作,而不像上述那样将系统时钟413从内部时钟412切换到外部时钟411。
在正常地进行了以上的处理时,USB接口被非激活,处理装置100仅使用ISO 7816接口来动作。之后,通过USB检测电路430或CPU141检测D+113以及D-114的信号线的状态成为再继续(レジユ一ム(Resume))状态,从而可以再次激活USB接口。
对于以上的处理,除了时钟控制电路130之外,通过利用UART控制电路142和USB控制电路143,可以全部使用硬件来进行,但在以下,说明使用搭载于CPU 141中内置的ROM等的固件在利用两方的接口动作中进行ISO 7816接口的非激活的方法、以及利用两方的接口动作中进行USB接口的非激活的方法的例子。
图18是示出本实施方式的处理装置100的、使用了固件的利用两方的接口动作中的ISO 7816接口的非激活步骤、以及利用两方的接口动作中的USB接口的非激活步骤的例子的流程图。
在图18中,在处理装置100利用两方的接口来动作时,分别对CLK_SELECT 1501设定“1”,对RESET_SELECT 1502设定“0”,对MODE_SELECT 1503设定“11”,对USB_DETECT 1512设定“1”(步骤1800)。
在处理装置100利用两方的接口来动作时,在开始了ISO 7816接口的非激活步骤的情况下(步骤1801),无需在固件中进行特别的处理,所以如果时钟控制电路130中的ISO 7816接口的非激活步骤完成,则处理装置100仅使用USB接口来动作。另外,也可以使时钟控制电路130或UART控制电路142向CPU 141发生通知经由EX_CLK100的外部时钟411的供给停止的中断。
在处理装置100利用两方的接口来动作时,如果USB检测电路430或USB控制电路143检测到D+113以及D-114的信号线的状态成为挂起状态,则对CPU 141发生USB挂起中断(步骤1811)。此时,固件在USB挂起中断函数内向CLK_SELECT 1501设定“0”(步骤1812),执行休眠命令而使CPU 141转移到休眠状态(步骤1813)。另外,如果D+113以及D-114的信号线的状态成为挂起状态,则也可以使用被设定有“1”的那样的寄存器,来检测挂起状态。
如果执行了休眠命令,则休眠信号416成为High状态,所以时钟切换电路410将系统时钟413切换成外部时钟411,向CPU 141发送中断信号,使CPU 141的动作再次开始(步骤1814)。在正常地进行了以上的处理时,USB接口被非激活,处理装置100仅使用ISO 7816接口来动作。
如以上说明,根据本实施方式的处理装置100,即使在具有多个用于数据传送的接口的情况下,也可以与接口的状态对应地在外部时钟411和内部时钟412之间切换系统时钟413,并且可以利用无由于时钟切换时的噪声引起的CPU 141的误动作的步骤来进行切换。
由此,在具有依照ISO 7816-12的外部端子的处理装置100中,可以同时使用进行依照ISO 7816-3的数据传送的接口和进行依照ISO 7816-12的USB传送的接口这两方,可以在进行依照ISO 7816-3的少量的数据的传送时,利用功耗低的外部时钟411来动作,在进行依照ISO 7816-12的大容量的数据的传送时,利用功耗高的内部时钟412来动作。
(实施方式2)
对作为本发明的实施方式2的处理装置进行说明。图14是示出本实施方式的处理装置100的内部结构的例子的图,构成为向图1所示的处理装置100的结构追加有指令分析模块1401。
处理装置100在利用实施方式1中的图5的步骤521~S523的处理等来激活了ISO 7816接口之后,如果外部终端经由UART_I/O 112向处理装置100输入了特定的指令,则指令分析模块1401对该指令进行分析,使CPU 141转移到休眠状态。
之后,与实施方式1中的图8的步骤814~步骤815同样地,将系统时钟413从外部时钟411切换成内部时钟412后,使CPU 141的动作开始。进而,还可以通过与上述同样地使用经由UART_I/O 112的特定的指令来进行从内部时钟412向外部时钟411的切换。
另外,也可以不使用指令分析模块1401,而使用搭载于CPU 141中内置的ROM等中的固件来分析指令,与实施方式1的图17中的步骤1712~步骤1714同样地,将系统时钟413从外部时钟411切换成内部时钟412后,使CPU 141的动作开始。进而,还可以同样地进行从内部时钟412向外部时钟411的切换。
也可以在利用上述步骤将系统时钟413从外部时钟411切换成内部时钟412后,在检测到D+113以及D-114在至少10ms的期间是Low状态的情况下,在进行了USB接口的激活步骤后,与ISO 7816接口同时利用USB接口来动作。另外,在本实施方式的处理装置100中,利用使用了ISO 7816接口的指令的输入来切换系统时钟413,所以也可以构成为不存在为了基于USB接口的传送数据而所需的模块以及端子。
如上述说明,根据本实施方式的处理装置100,可以利用来自外部的指令来在外部时钟411和内部时钟412之间切换系统时钟413,并且,可以利用不存在由于时钟切换时的噪声而引起的CPU 141的误动作的步骤来进行切换。
(实施方式3)
使用图19~图30对作为本发明的实施方式3的处理装置进行说明。图19是示出本实施方式的处理装置100的内部结构的例子的图,构成为向实施方式1的图1所示的处理装置100的结构追加有SWP_I/O 1917、SWP用内部振荡器1921、以及SWP控制电路1944。
SWP_I/O 1917是用于在外部终端和处理装置100之间进行依照SWP(Single Wire Protocol,单线协议)的数据传送的外部接口,在ETSI(European Telecommunications Standards Institute,欧洲电信标准协会)规格下分配图2中的C6端子206。SWP控制电路1944是实现依照SWP的数据传送的电路。以下,将进行依照SWP的数据传送的接口记载为SWP接口。在基于SWP接口的数据传送中,例如,一般为与具有RF电路的外部终端利用非接触通信来进行数据传送的那样的形式。
即使在基于SWP接口的数据传送的情况下,也可以利用外部时钟,但不存在在基于SWP接口的处理中继续从外部终端供给来外部时钟那样的保证。另外,还可以利用USB接口的处理中使用的内部振荡器120所生成的内部时钟,但SWP接口不处理大容量的数据,进而需要尽可能使功耗降低,所以USB接口的处理中使用的内部时钟不适合。
此处,在本实施方式的处理装置100中,构成为设有SWP用内部振荡器1921作为时钟生成电路,在基于SWP接口的处理时使用由SWP用内部振荡器1921生成的时钟。另外,SWP用内部振荡器1921不限于处理装置100的内部,而也可以构成为从处理装置100的外部连接。以下,将SWP用内部振荡器1921所生成的时钟记载为SWP用内部时钟。
图20是示出具有SWP接口的处理装置100的初始动作的流程的一个例子的图。另外,SWP接口与ISO 7816接口、USB接口相独立地动作。因此,具有SWP接口的处理装置100中的ISO 7816接口、USB接口的初始动作的流程与实施方式1的图3相同。
在电压接通前,将SWP_I/O 1917设定成Low状态(步骤2000)。在电压接通后,达到了规定的动作电压后,判定SWP_I/O 1917是否为High状态(步骤2001)。仅在满足了步骤2001中的判定条件的情况下,进行以下叙述的SWP接口激活步骤。
在SWP接口激活步骤中,处理装置100如果检测到SWP_I/O1917成为High状态,则作为其响应向外部终端发送ACT_SYNC帧(步骤2002)。接收到ACT_SYNC帧的外部终端向处理装置100发送所接收到的ACT_SYNC帧、与外部终端的标准对应的ACT_POWER_MODE帧(步骤2003)。在外部终端所发送的ACT_POWER_MODE帧中,包含有表示外部终端所依照的模式(满功率模式或低功率模式)的位、表示所接收到的ACT_SYNC帧中存在异常的位等。
在所接收到的ACT_POWER_MODE帧表示ACT_SYNC帧中存在异常的情况下(步骤2004),返回到步骤2002,处理装置100进行ACT_SYNC帧的重发。当在步骤2004中,所接收到的ACT_POWER_MODE帧没有表示ACT_SYNC帧中存在异常的情况下,向外部终端发送ACT_READY帧(步骤2005)。
仅在正常地进行了以上的处理的情况下,SWP接口被激活,处理装置100作为使用SWP接口进行数据传送的装置来动作。在没有正常地进行以上的处理的情况下,在SWP接口中不进行动作。此时,在正常地进行了ISO 7816接口或USB接口的激活的情况下,处理装置100使用该接口来动作。
图21是示出本实施方式的处理装置100中的时钟控制电路130中包含的模块的结构例子的图。此处,构成为向实施方式1的图4所示的时钟控制电路130的结构追加有SWP检测电路2140、SWP检测信号2141、SWP用内部时钟2118、SWP用内部时钟开始信号2119以及SWP复位2125。另外,也可以构成为SWP检测电路2140搭载于SWP控制电路1944。
SWP检测电路2140是对SWP_I/O 1917的信号线的状态进行监视,而当检测到SWP_I/O 1917是High状态则使SWP检测信号2124为High状态的模块。SWP检测信号2141是用于向CPU 141以及其他模块通知利用SWP接口来传送了数据的信号。
如果SWP检测信号2141成为High状态,则SWP用内部振荡器1921开始SWP用内部时钟2118的生成。但是,需要等待到时钟的振荡稳定后,向CPU 141等供给SWP用内部时钟2118。SWP用内部时钟开始信号2119是当向CPU 141、各接口控制电路等供给由SWP用内部振荡器1921生成的SWP用内部时钟2118时变为High状态的信号。SWP复位2125是仅向为了经由SWP接口传送的数据的处理而所需的模块供给复位的信号。
图22是示出本实施方式的处理装置100中的SWP接口的激活步骤的时序图的例子的图。首先,在电压接通前,将EX_CLK 110设定成Low状态,将EX_RESET 111设定成Low状态,将UART_I/O 112设定成High状态,将SWP_I/O 1917设定成Low状态,将D+113设定成High状态,将D-114设定成High状态(定时2210)。在电压接通后,在SWP检测电路2140检测到SWP_I/O 1917成为High状态的情况下,SWP检测电路2140使SWP检测信号2141变为High状态(定时2220)。
SWP用内部振荡器1921如果检测到SWP检测信号2141成为Hig状态,则生成SWP用内部时钟2118。之后,利用SWP用内部振荡器1921内的定时器,等待SWP用内部时钟2118的振荡稳定,在稳定之后,经由时钟切换电路410,向CPU 141以及各接口控制电路等供给SWP用内部时钟2118来作为系统时钟413(定时2230)。
此时,时钟切换电路410使SWP用内部时钟开始信号2219变为High状态。另外,也可以不向UART控制电路142以及USB控制电路143供给SWP用内部时钟2118。另外,复位控制电路420在确认了SWP检测信号2141为High状态且SWP用内部时钟开始信号2119为High状态之后,使系统复位422为High状态(定时2230)。另外,也可以使SWP复位2125而非系统复位422变为High状态。
在系统复位422变成High状态后,SWP控制电路1944向外部终端发送ACT_SYNC帧(定时2240)。接收到ACT_SYNC帧的外部终端向处理装置100发送ACT_POWER_MODE帧(定时2250)。接收到ACT_POWER_MODE帧的处理装置100对该帧进行确认,仅在不存在异常的情况下向外部终端发送ACT_READY帧(定时2260)。另外,也可以取代SWP控制电路1944由专用硬件来进行以上的处理。
对于以上的处理,除了时钟控制电路130之外,通过利用SWP控制电路1944,可以全部使用硬件来进行,在以下,说明使用搭载于CPU 141中内置的ROM等中的固件来进行SWP接口的激活的方法的例子。
在SWP接口的激活时使用的寄存器的结构与实施方式1的图15的结构相同,但所设定的值不同。在本实施方式中,在图15中,CLK_SELECT 1501是表示系统时钟413的供给源的位,例如,在“00”的情况下表示供给源是外部时钟411,在“01”的情况下表示供给源是内部时钟412,在“10”的情况下表示供给源是SWP用内部时钟2118。RESET_SELECT 1502是表示外部复位421的有效/无效的位,例如,在“0”的情况下表示外部复位421无效,在“1”的情况下表示有效。
MODE_SELECT 1503是表示可以使用的接口的位,例如,在“001”的情况下表示ISO 7816接口可以使用,在“010”的情况下表示USB接口可以使用,在“100”的情况下表示SWP接口可以使用。进而,在“011”的情况下表示ISO 7816接口和USB接口这两方可以使用,在“101”的情况下表示ISO 7816接口和SWP接口这两方可以使用,在“110”的情况下表示USB接口和SWP接口这两方可以使用,在“111”的情况下表示所有的接口可以使用。
DPPU 1511是例如设定“1”则拉起D+113或D-114的位。USB_DETECT 1512是如果USB检测电路430检测到D+113以及D-114在至少10ms期间为Low状态则被设定为“1”的位。USB_MODE 1513是表示USB接口的速度的位。例如,在“0”的情况下表示是Low Speed,在“1”的情况下表示是Full Speed。
DP 1521是表示D+113的状态的位,例如,在“0”的情况下表示D+113为Low状态,在“1”的情况下表示为High状态。DM 1522是表示D-114的状态的位,例如,在“0”的情况下表示D-114为Low状态,在“1”的情况下表示为High状态。
图23是示出本实施方式的处理装置100中的使用了固件的SWP接口的激活步骤的例子的流程图。在电压接通前,分别对CLK_SELECT 1501设定“00”,对RESET_SELECT 1502设定“1”,对MODE_SELECT 1503设定“001”,对DPPU 1511设定“0”,对USB_DETECT 1512设定“0”(步骤2300)。另外,向USB_MODE 1513、DP 1521、DM 1522,根据处理装置100的标准而可以设定不同的值,但在本实施方式的处理装置100中全部设定“1”。
在电压接通后,如果对CPU 141发生了复位中断(步骤2301),则固件在复位中断函数内确认MODE_SELECT 1503的值(步骤2302)。另外,由复位控制电路420设定MODE_SELECT 1503的值。
在MODE_SELECT 1503的值为“100”的情况下,固件向外部终端发送ACT_SYNC帧(步骤2303)。接收到ACT_SYNC帧的外部终端向处理装置100发送ACT_POWER_MODE帧(步骤2304)。接收到ACT_POWER_MODE帧的处理装置100确认所接收到的帧(步骤2305),仅在所接收到的ACT_SYNC帧中无异常的情况下向外部终端发送ACT_READY帧(步骤2306)。
仅在正常地进行了以上的处理的情况下,SWP接口被激活,处理装置100作为使用SWP接口进行数据传送的装置来动作。另外,也可以构成为SWP控制电路1944直到ACT_READY帧的发送为止使用硬件来进行,仅在全部正常地进行了的情况下,对CPU 141发生中断。
在步骤2302中,在MODE_SELECT 1503的值为“100”以外的“001”、“010”、“011”的情况下,利用实施方式1中说明的步骤,进行ISO 7816接口、USB接口的激活步骤(步骤2311)。
利用以上的处理,可以在处理装置100中,激活SWP接口。此处,如图2所示,基于SWP接口的数据传送中使用的外部端子和基于ISO 7816接口以及USB接口的数据传送中使用的外部端子不重复。因此,还可以物理上同时使用3个接口。
但是,上述的初始动作的处理的结果,处理装置100在使用ISO7816接口动作时使用外部时钟411来动作,在使用USB接口动作时使用内部时钟412来动作,在使用SWP接口动作时使用SWP用内部时钟2118来动作。因此,需要与所使用的接口的组合对应地统一系统时钟413中使用的时钟。
一般,SWP接口作为非接触通信用途来使用。因此,难以在时间上在使用SWP接口来正在动作中将系统时钟切换成外部时钟411或内部时钟412。因此,当在SWP接口动作中开始了ISO 7816接口或USB接口的激活步骤的情况下,不进行时钟系统的变更,而仍将系统时钟413保持为SWP用内部时钟2118。
另外,在对USB接口和SWP接口进行比较的情况下,USB接口的一方处理大容量的数据,所以,通常,内部时钟412的一方比SWP用内部时钟2118高速。因此,当在USB接口动作中开始了SWP接口的激活步骤的情况下,不进行时钟系统的变更,而仍将系统时钟413保持为内部时钟412。
另外,即使在基于SWP接口的数据传送的情况下,也可以利用外部时钟411。但是,不存在在SWP接口的动作中继续供给来外部时钟411的那样的保证。此处,当在ISO 7816接口动作中开始了SWP接口的激活的情况下,将系统时钟413从外部时钟411变更成SWP用内部时钟2118。
但是,如果在处理装置100的动作中从外部时钟411切换成SWP用内部时钟2118,则在切换时产生噪声,存在CPU 141可能误动作的问题点。因此在本实施方式的处理装置100中,构成为与实施方式1的图4同样地,在时钟控制电路430中具有休眠信号416以及时钟切换信号417。
以下,说明本实施方式的处理装置100在利用USB接口动作中进行SWP接口的激活步骤的方法、以及在利用ISO 7816接口动作中进行SWP接口的激活步骤的方法。图24是示出本实施方式的处理装置100的、利用USB接口或ISO 7816接口动作中的SWP接口的激活步骤的流程的流程图。另外,图25是本实施方式的处理装置100的、利用USB接口动作中的SWP接口的激活步骤的时序图的例子。另外,图26是本实施方式的处理装置100的、利用ISO 7816接口动作中的SWP接口的激活步骤的时序图的例子。
首先,在处理装置100使用USB接口来动作时,如果SWP检测电路2140检测到SWP_I/O 1917从Low状态变化成High状态(步骤2401),则开始SWP激活步骤。此时,SWP检测电路2140使SWP检测信号2141为High状态(定时2510)。
SWP用内部振荡器1921如果检测到SWP检测信号2141成为High状态,则生成SWP用内部时钟2118(定时2510)。时钟切换电路410在SWP用内部时钟2118稳定之后,使SWP用内部时钟开始信号2119为High状态(定时2520)。此时,时钟切换电路410向SWP用控制电路1944供给内部时钟412。
复位控制电路420如果检测到SWP用内部时钟开始信号2119成为High状态,则使SWP复位信号2125为High状态(定时2520)。另外,使SWP复位信号2125为High状态的定时也可以是SWP检测信号2141成为High状态的定时(定时2510)。
SWP控制电路1944如果检测到SWP复位信号2125成为High状态,则向外部终端发送ACT_SYNC帧(步骤2402,定时2530)。另外,SWP控制电路1944也可以通过检测SWP检测信号2141成为High状态,来向外部终端发送ACT_SYNC帧。
接收到ACT_SYNC帧的外部终端向处理装置100发送ACT_POWER_MODE帧(步骤2403,定时2540)。接收到ACT_POWER_MODE帧的处理装置100向外部终端发送ACT_READY帧(步骤2404,定时2550)。
仅在正常地进行了以上的处理的情况下,在使用USB接口的动作中SWP接口被激活,处理装置100可以同时使用USB接口和SWP接口这两方来动作。
在处理装置100使用ISO 7816接口来动作时,SWP检测电路2140如果检测到SWP_I/O 1917从Low状态变化成High状态(步骤2411),则开始SWP激活步骤。此时,SWP检测电路2140使SWP检测信号2141为High状态(定时2610)。
SWP用内部振荡器1921如果检测到SWP检测信号2141成为High状态,则生成SWP用内部时钟2118(步骤2412,定时2610)。时钟切换电路410在SWP用内部时钟2118稳定之后,使SWP用内部时钟开始信号2119为High状态,在确认了供给来外部时钟411以及SWP用内部时钟2118这两方之后,使时钟切换信号417为High状态(定时2620)。另外,复位控制电路420如果检测到SWP用内部时钟开始信号2119成为High状态,则使SWP复位信号2125为High状态(定时2620)。
CPU 141如果检测到时钟切换信号417成为High状态,则进行为了转移到休眠状态而所需的处理(寄存器的设定、当前的状态的保存等)以及与SWP接口的处理相关的复位处理。在所需的处理完成后,使休眠信号416为High状态,转移到休眠状态(步骤2413,定时2630)。
时钟切换电路410如果检测到休眠信号416成为High状态,则将系统时钟413从外部时钟411切换成SWP用内部时钟2118(步骤2414,定时2640)。在切换了系统时钟413后,向CPU 141发送中断信号,使CPU 141的动作再次开始(步骤2415)。此时,时钟切换电路410使时钟切换信号417以及休眠信号416变为Low状态(定时2640)。
在CPU 141的动作再次开始后,SWP控制电路1944向外部终端发送ACT_SYNC帧(步骤2416,定时2650)。接收到ACT_SYNC帧的外部终端向处理装置100发送ACT_POWER_MODE帧(步骤2417)。接收到ACT_POWER_MODE帧的处理装置100向外部终端发送ACT_READY帧(步骤2418)。
仅在正常地进行了以上的处理的情况下,在使用ISO 7816接口的动作中SWP接口被激活,处理装置100可以同时使用ISO 7816接口和SWP接口这两方来动作。另外,也可以当在使用ISO 7816接口的动作中进行SWP接口激活步骤时,与当在使用USB接口的动作中进行SWP接口激活步骤的情况同样地,不进行从外部时钟向SWP用内部时钟2118的系统时钟413的切换,而将系统时钟413维持成外部时钟411来动作。
当在处理装置100利用USB接口以及ISO 7816接口这两方动作中进行SWP接口的激活步骤的情况下,使用与步骤2401~步骤2404同样的方法来进行SWP接口的激活。另外,也可以当在处理装置100利用USB接口以及ISO 7816接口这两方动作中进行SWP接口的激活步骤的情况下,使用与步骤2411~步骤2418同样的方法来将系统时钟413切换成SWP用内部内部时钟2118。
对于以上的处理,除了时钟控制电路130之外,通过利用UART控制电路142、USB控制电路143、SWP控制电路1944,可以全部使用硬件来进行,在以下,说明使用搭载于CPU 141中内置的ROM等中的固件在使用ISO 7816接口的动作中进行SWP接口的激活的方法的例子。
图27是示出本实施方式的处理装置100的、使用了固件的利用ISO 7816接口动作中的SWP接口的激活步骤的流程的例子的流程图。在处理装置100使用ISO 7816接口来动作时,分别对CLK_SELECT1501设定“00”,对RESET_SELECT 1502设定“1”,对MODE_SELECT 1503设定“001”,对USB_DETECT 1512设定“0”(步骤2700)。
在处理装置100使用ISO 7816接口来动作时,如果时钟控制电路130或SWP控制电路1944检测到SWP_I/O 1917从Low状态变化成High状态,则对CPU 141发生SWP检测中断(步骤2701)。固件在SWP检测中断函数内,向CLK_SELECT 1501设定“10”(步骤2702),执行休眠命令而使CPU 141转移到休眠状态(步骤2703)。
如果执行了休眠命令,则休眠信号416成为High状态,所以时钟切换电路410将系统时钟413切换到SWP用内部时钟2118,向CPU141发送中断信号,使CPU 141的动作再次开始(步骤2704)。在CPU141的动作再次开始之后,固件向外部终端发送ACT_SYNC帧(步骤2705)。
接收到ACT_SYNC帧的外部终端向处理装置100发送ACT_POWER_MODE帧(步骤2706)。接收到ACT_POWER_MODE帧的处理装置100向外部终端发送ACT_READY帧(步骤2707)。
仅在正常地进行了以上的处理的情况下,在使用ISO 7816接口的动作中SWP接口被激活,处理装置100可以同时使用ISO 7816接口和SWP接口这两方来动作。另外,即使在处理装置100使用USB接口、或使用ISO 7816接口和USB接口这两方动作中,在SWP接口激活步骤中将系统时钟413从内部时钟412切换成SWP用时钟2118的情况下,也可以使用与步骤2701~步骤2707同样的步骤来进行。
接下来,对本实施方式的处理装置100在利用ISO 7816接口以及SWP接口这两方动作中,使SWP接口非激活的方法进行说明。另外,当在利用ISO 7816接口以及SWP接口这两方动作中使ISO 7816接口非激活时,可以使用与实施方式1的图11中的步骤1101~步骤1102以及定时1210~定时1220同样的步骤来进行。
图28是示出本实施方式的处理装置100的、利用ISO 7816接口以及SWP接口这两方动作中的SWP接口的非激活步骤的流程的例子的流程图。另外,图29是本实施方式的处理装置100的、利用ISO 7816接口以及SWP接口这两方动作中的SWP接口的非激活步骤的时序图的例子。
当处理装置100利用ISO 7816接口以及SWP接口这两方来动作时,在SWP检测电路2140检测到SWP_I/O 1917成为De-Active状态的情况下(步骤2801),开始SWP接口非激活步骤。SWP检测电路2140如果检测到SWP_I/O 1917成为De-Active状态,则使SWP检测信号2141为Low状态(定时2910)。
CPU 141如果检测到SWP检测信号2141成为Low状态,则进行为了转移到休眠状态而所需的处理(寄存器的设定、当前的状态的保存等)。在所需的处理完成后,使休眠信号416变为High状态,转移到休眠状态(步骤2802,定时2920)。
时钟切换电路410如果检测到休眠信号416成为High状态,则将系统时钟413从SWP用内部时钟2118切换成外部时钟411(步骤2803,定时2930)。此时,也可以停止SWP用内部时钟2118。另外,还可以通过使SWP用内部时钟开始信号2119变为Low状态来使SWP用内部时钟2118停止(定时2930)。
在系统时钟413的切换后,向CPU 141发送中断信号,利用外部时钟411来使CPU 141的动作再次开始(步骤2804,定时2940)。在正常地进行了以上的处理时,SWP接口被非激活,处理装置100仅使用ISO 7816接口来动作。
对于以上的处理,通过除了时钟控制电路130之外,利用UART控制电路144、SWP控制电路1944,从而可以全部使用硬件来进行,在以下,说明使用搭载于CPU 141中内置的ROM中的固件在利用ISO7816接口以及SWP接口这两方动作中进行SWP接口的非激活的方法的例子。
图30是示出本实施方式的处理装置100的、使用了固件的利用ISO 7816接口以及SWP接口这两方动作中的SWP接口的非激活步骤的流程的例子的流程图。在处理装置100利用ISO 7816接口以及SWP接口这两方来动作时,分别对CLK_SELECT 1501设定“10”,对RESET_SELECT 1502设定“0”,对MODE_SELECT 1503设定“101”,对USB_DETECT 1512设定“1”(步骤3000)。
如果SWP检测电路2140或SWP控制电路1944检测到SWP I/O1917成为De-Active状态,则向CPU 141发生SWP非激活中断(步骤3001)。固件在SWP非激活中断函数内,向CLK_SELECT 1501设定“00”(步骤3002),执行休眠命令而使CPU 141转移到休眠状态(步骤3003)。
如果执行了休眠命令,则休眠信号416成为High状态,所以时钟切换电路410将系统时钟413切换成外部时钟411,向CPU 141发送中断信号,使CPU 141的动作再次开始(步骤3004)。在正常地进行了以上的处理时,SWP接口被非激活,处理装置100仅使用ISO7816接口来动作。
当处理装置100利用USB接口以及SWP接口来动作时,在利用USB接口的非激活来变更系统时钟413的时钟系统的情况下,可以利用与实施方式1的图11的步骤1111~步骤1114、或图18的步骤1811~步骤1814同样的步骤来进行。另外,在利用SWP接口的非激活来变更系统时钟413的时钟系统的情况下,可以利用与图28的步骤2801~步骤2804、或图30的步骤3001~步骤3004同样的步骤来进行。
如上述说明,根据本实施方式的处理装置100,即使在具有用于进行依照SWP的数据传送的SWP接口的情况下,也可以在外部时钟411、内部时钟412、以及SWP用内部时钟2118之间切换系统时钟413,并且也可以利用无由于时钟切换时的噪声而引起的CPU 141的误动作的手段来切换。
以上,根据实施方式对由本发明者完成的发明进行了具体说明,但本发明不限于上述实施方式,当然可以在不脱离其宗旨的范围内进行各种变更。
本发明可以利用于具有用于数据传送的多个接口的处理装置及其时钟控制方法、特别是依照ISO 7816的IC卡等处理装置。