JP2007004227A - データ通信装置、データ通信方法、プログラム - Google Patents
データ通信装置、データ通信方法、プログラム Download PDFInfo
- Publication number
- JP2007004227A JP2007004227A JP2005180242A JP2005180242A JP2007004227A JP 2007004227 A JP2007004227 A JP 2007004227A JP 2005180242 A JP2005180242 A JP 2005180242A JP 2005180242 A JP2005180242 A JP 2005180242A JP 2007004227 A JP2007004227 A JP 2007004227A
- Authority
- JP
- Japan
- Prior art keywords
- slave
- data
- output
- slave device
- designation information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】I2Cデータ通信システムにおいて、メモリデバイス間のデータコピーの高速化を図る。
【解決手段】マスタであるマイクロコンピュータ1は、コピー元メモリ2とコピー先メモリ3に対してWRITEのスレーブアドレス(W)とサブアドレスを出力する。次にコピー先メモリ3を信号線から切り離し、READのスレーブアドレス(R)を出力することで、スレーブアドレス(R)をコピー元メモリ2のみに検知させる。続いて、コピー元メモリ2とコピー先メモリ3を信号線に接続して、マイクロコンピュータ1が1ワード区間ごとのタイミングでクロックを出力すると、コピー元メモリ2からのデータの読み出しと、コピー先メモリ3のデータの書込が同期し、信号線を介しての直接的なコピー元メモリ2からコピー先メモリ3へのデータコピーが実現される。
【選択図】図2
【解決手段】マスタであるマイクロコンピュータ1は、コピー元メモリ2とコピー先メモリ3に対してWRITEのスレーブアドレス(W)とサブアドレスを出力する。次にコピー先メモリ3を信号線から切り離し、READのスレーブアドレス(R)を出力することで、スレーブアドレス(R)をコピー元メモリ2のみに検知させる。続いて、コピー元メモリ2とコピー先メモリ3を信号線に接続して、マイクロコンピュータ1が1ワード区間ごとのタイミングでクロックを出力すると、コピー元メモリ2からのデータの読み出しと、コピー先メモリ3のデータの書込が同期し、信号線を介しての直接的なコピー元メモリ2からコピー先メモリ3へのデータコピーが実現される。
【選択図】図2
Description
本発明は、マスタ、スレーブとなる各デバイス(装置)が信号線を共有するようにして接続されて成るべきデータ通信システムが備えるデータ通信装置と、その方法、及びデータ通信装置におけるマスタとしての装置が実行するプログラムに関するものである。
シリアルデータ通信規格の1つとして、I2C(Inter Integrated Circuit)が知られている。I2Cは、現状では、例えば各種電子機器におけるマイクロコンピュータ(CPU)などのコントロールデバイスと、EEPROM(Electrically Erasable and Programmable Read Only Memory)などのメモリデバイス、あるいはA/Dコンバータ、D/Aコンバータなどのデバイスとの間での通信を行うためのバスとして採用されている。
このようなI2Cを利用して、例えば、コピー元となるデータが記憶保持されたEEPROMから、コピー先となる他のEEPROMに対してデータをコピーする場合のシステム構成例を図7に示す。
一般に、I2Cでは、マスタとなるデバイス(ノード)と、スレーブとなるデバイス(ノード)を、データ線とクロック線を対とする信号線により接続するようにされる。図7では、マスタとしてマイクロコンピュータ1を備えることとし、スレーブとして、コピー元メモリ2(スレーブ1)及びコピー先メモリ3(スレーブ2)を備える。コピー元メモリ2及びコピー先メモリ3は、この場合には何れもEEPROMとされる。コピー元メモリ2には、コピー先メモリ3に対して書き込んで記憶保持させるべき、所定内容のデータが記憶済みの状態にある。
I2Cでは、データ線とクロック線の2本を対とする信号線が、各ノードにより共有されるようにして接続を行うようにされる。そこで、図7にあっては、データ線Ldtを、マイクロコンピュータ1のデータ端子DATM、コピー元メモリ2のデータ端子DAT1、コピー先メモリ3のデータ端子DAT2のそれぞれと接続するようにされる。また、クロック線Lclを、マイクロコンピュータ1のクロック端子CLKM、コピー元メモリ2のデータ端子CLK1、コピー先メモリ3のデータ端子CLK2のそれぞれと接続するようにされる。このようにして、いわゆるワイヤードオア(wired or)接続が形成される。また、各ノードは、オープンコレクタである。
また、クロック線Lclに対しては、プルアップ抵抗R1を介して直流電圧Vccが印加されており、データ線Ldtに対しては、プルアップ抵抗R2を介して直流電圧Vccが印加されている。これにより、クロック線Lcl及びデータ線Ldtは、それぞれ所定電位によりプルアップされる状態が得られる。従って、各ノードが信号を出力する場合には、Lレベルを出力するようにされる。Hレベルはプルアップの状態時の電位となる。
また、クロック線Lclに対しては、プルアップ抵抗R1を介して直流電圧Vccが印加されており、データ線Ldtに対しては、プルアップ抵抗R2を介して直流電圧Vccが印加されている。これにより、クロック線Lcl及びデータ線Ldtは、それぞれ所定電位によりプルアップされる状態が得られる。従って、各ノードが信号を出力する場合には、Lレベルを出力するようにされる。Hレベルはプルアップの状態時の電位となる。
上記図7に示すようにして構成されるデータ通信システムにより、コピー元メモリ2に記憶されているデータをコピー先メモリ3にコピーするための手順について、図8を参照しながら説明する。
I2Cの通信プロトコルでは、マスタとなるノードが、スレーブに対する制御を行う。従って、図6に示す構成の下では、マスタであるマイクロコンピュータ1が、スレーブであるコピー元メモリ2、及びコピー先メモリ3に対するデータの読み出し、書き込みのためのコントロールを実行するようにされる。このとき、クロック線Lclに対するクロックの出力は、マスタであるマイクロコンピュータ1が行い、このクロックに応じたタイミングで、データ線Ldtに対するデータ入出力が行われる。
図8のステップS101として示す手順では、先ず、マイクロコンピュータ1が、コピー元メモリ2から、コピー元となるデータを一定量読み出す。このためには、マイクロコンピュータ1が、コピー元メモリ2に対してデータリードを要求し、これに応答したコピー元メモリ2が、データリード要求により指定されたアドレスからデータの読み出しを実行して、そのデータの信号を出力する。そして、このようにして読み出されたデータを、例えばマイクロコンピュータ1が取り込んで、内部に備えるとされるRAM(バッファ)1aに対して書き込んで一旦保持させる(バッファリングする)。
そして、続くステップS102としての処理によって、上記ステップS101によりRAM1aに保持されたデータをコピー先メモリに対して書き込む。このためには、マイクロコンピュータ1が、コピー先メモリ3に対してデータの書き込みを実行することを通知したうえで、RAM1aからのデータを読み出して、データ端子DATMから出力する。コピー先メモリ3では、データ端子DATMに出力されたデータの読み込みを行って記憶保持するようにされる。これにより、コピー先メモリ3に対するデータ書き込みが行われたことになる。
そして、続くステップS102としての処理によって、上記ステップS101によりRAM1aに保持されたデータをコピー先メモリに対して書き込む。このためには、マイクロコンピュータ1が、コピー先メモリ3に対してデータの書き込みを実行することを通知したうえで、RAM1aからのデータを読み出して、データ端子DATMから出力する。コピー先メモリ3では、データ端子DATMに出力されたデータの読み込みを行って記憶保持するようにされる。これにより、コピー先メモリ3に対するデータ書き込みが行われたことになる。
そして、上記ステップS101,S102の処理を、ステップS103により、コピー対象であるデータの全てについての書き込み(コピー)が終了したと判別されるまで、繰り返し実行するようにされる。
例えば上記のようにしてコピー元からコピー先のメモリに対してデータをコピーする動作はできるだけ高速化されて、データコピーに要する時間としても短縮されることが好ましい。
しかしながら、上記図7及び図8により示したデータコピーの構成では、下記のような理由で、データコピー動作の高速化を図ることが困難となっている。
マイクロコンピュータ1が備えるRAM1aについては、比較的小さい容量が設定されることが一般的となっている。このRAM1aの容量の小さいことが、データコピーのときにはボトルネックとなる。つまり、RAM1aの容量が小さいことで、図8におけるステップS101によりコピー元メモリ2から読み出すデータ量も、RAM1aの容量に応じて制限されることとなる。このために、コピー対象となるデータのサイズにもよるが、コピー対象となるデータの全てを、コピー先メモリ3に対して記憶させるために繰り返すステップS101→S102の処理は、現実には相当の回数となる。つまり、コピー元メモリからデータを読み出してRAM1aに保持し、この保持したデータをコピー先メモリ3に書き込む、という処理を多数回実行することが必要になる。このようなことが要因となって処理の高速化が妨げられている。
しかしながら、上記図7及び図8により示したデータコピーの構成では、下記のような理由で、データコピー動作の高速化を図ることが困難となっている。
マイクロコンピュータ1が備えるRAM1aについては、比較的小さい容量が設定されることが一般的となっている。このRAM1aの容量の小さいことが、データコピーのときにはボトルネックとなる。つまり、RAM1aの容量が小さいことで、図8におけるステップS101によりコピー元メモリ2から読み出すデータ量も、RAM1aの容量に応じて制限されることとなる。このために、コピー対象となるデータのサイズにもよるが、コピー対象となるデータの全てを、コピー先メモリ3に対して記憶させるために繰り返すステップS101→S102の処理は、現実には相当の回数となる。つまり、コピー元メモリからデータを読み出してRAM1aに保持し、この保持したデータをコピー先メモリ3に書き込む、という処理を多数回実行することが必要になる。このようなことが要因となって処理の高速化が妨げられている。
そこで本発明は上記した課題を考慮して、例えばデータコピーなどのためのデバイス間のデータの授受について高速化が図られるようにすることを目的とし、このために、データ通信装置として次のように構成することとした。
本発明のデータ通信装置としては、マスタ装置と、スレーブ装置として少なくとも第1のスレーブ装置と、第2のスレーブ装置とを、信号線が共有可能なようにして接続する接続手段と、マスタ装置から、第1のスレーブ装置と第2のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第1の指定情報出力手段と、書込スレーブ指定情報が出力された後に、マスタ装置から、第2のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第2の指定情報出力手段と、読出スレーブ指定情報が出力された後において、第1のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した第2のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出/書込制御手段と、第1の指定情報出力手段により書込スレーブ指定情報が出力されるとき、及びデータ読出/書込制御手段による第1のスレーブ装置からのデータの読み出しと第2のスレーブ装置のデータ書き込みの動作が実行されているときには、マスタ装置と第1のスレーブ装置と第2のスレーブ装置との間での信号線の共有された接続状態を形成し、第2の指定情報出力手段により読出スレーブ指定情報が出力されるときには、マスタ装置と第1のスレーブ装置との間で信号線が共有され、第2のスレーブ装置は、信号線から切り離されるようにして接続手段としての回路の切り換えを行う第1の接続切換手段を備えることとした。
本発明のデータ通信装置としては、マスタ装置と、スレーブ装置として少なくとも第1のスレーブ装置と、第2のスレーブ装置とを、信号線が共有可能なようにして接続する接続手段と、マスタ装置から、第1のスレーブ装置と第2のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第1の指定情報出力手段と、書込スレーブ指定情報が出力された後に、マスタ装置から、第2のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第2の指定情報出力手段と、読出スレーブ指定情報が出力された後において、第1のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した第2のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出/書込制御手段と、第1の指定情報出力手段により書込スレーブ指定情報が出力されるとき、及びデータ読出/書込制御手段による第1のスレーブ装置からのデータの読み出しと第2のスレーブ装置のデータ書き込みの動作が実行されているときには、マスタ装置と第1のスレーブ装置と第2のスレーブ装置との間での信号線の共有された接続状態を形成し、第2の指定情報出力手段により読出スレーブ指定情報が出力されるときには、マスタ装置と第1のスレーブ装置との間で信号線が共有され、第2のスレーブ装置は、信号線から切り離されるようにして接続手段としての回路の切り換えを行う第1の接続切換手段を備えることとした。
上記構成によれば、マスタ装置から書込スレーブ指定情報を出力するときには、信号線を経由して、第1のスレーブ装置と第2のスレーブ装置とに対して入力させることになる。この段階では、第1のスレーブ装置と第2のスレーブ装置は、ともに、データ書込対象スレーブであると認識する。またこの後において出力される読出スレーブ指定情報は、第1のスレーブ装置のみに対して入力され、第2のスレーブ装置には入力されない。従って、読出スレーブ指定情報を出力した段階では、第1のスレーブ装置は、自身は、データ書込対象スレーブではなく、データ読み出し対象スレーブであると認識し、第2のスレーブ装置は、依然として、自身はデータ書込対象スレーブであると認識することになる。
そして、この後において、第1のスレーブ装置と第2のスレーブ装置との間で信号線が共有された状態で、上記データ読出対象スレーブからのデータの読み出しと、データ書込対象スレーブのデータ書き込みを実行させるための制御が行われることで、自身をデータ読出対象スレーブであると認識している第1のスレーブ装置が読み出して信号線に出力したデータは、自身をデータ書込対象スレーブであるとして認識している第2のスレーブ装置が取り込むことが可能になる。このようにして、本願発明では、マスタ装置を介在することなく、データ読出対象スレーブとデータ書込対象スレーブとによるスレーブ装置間での直接的なデータの授受が可能となる。
そして、この後において、第1のスレーブ装置と第2のスレーブ装置との間で信号線が共有された状態で、上記データ読出対象スレーブからのデータの読み出しと、データ書込対象スレーブのデータ書き込みを実行させるための制御が行われることで、自身をデータ読出対象スレーブであると認識している第1のスレーブ装置が読み出して信号線に出力したデータは、自身をデータ書込対象スレーブであるとして認識している第2のスレーブ装置が取り込むことが可能になる。このようにして、本願発明では、マスタ装置を介在することなく、データ読出対象スレーブとデータ書込対象スレーブとによるスレーブ装置間での直接的なデータの授受が可能となる。
上記のようにして本発明では、スレーブ装置間での直接的なデータの授受が可能なることで、従来のようにして、読出対象のスレーブ装置から読み出させたデータをマスタ装置が一時保持し、この保持したデータをデータ書込対象スレーブに対して出力して書き込ませる、というシーケンスを所要回数繰り返し実行する場合と比較して、データの授受が終了するまでに要する時間は短縮されることになる。つまり、データ授受の処理の高速化が図られる。本願発明において、この効果は、マスタ装置がデータ保持のために実際に備えるべきRAM(バッファ)などのメモリの容量が小さくなるほど、また、授受されるべきデータのサイズが相応に大きく、上記シーケンスの繰り返し回数が増加するほど、顕著となる。
以下、本願発明の実施の形態としてのデータ通信システム(データ通信装置)について説明を行っていくこととする。
本実施の形態としては、データ通信システムを構成するのにあたり、データ通信規格としてI2C(Inter Integrated Circuit)を採用した場合を例に挙げる。
本実施の形態としては、データ通信システムを構成するのにあたり、データ通信規格としてI2C(Inter Integrated Circuit)を採用した場合を例に挙げる。
I2Cは、シリアルデータ通信の規格の1つであり、データ線とクロック線の2本を対とする信号線により、マスタとしてのノードとスレーブとしてのノードとの間での接続を行い、その接続態様としてはワイヤードオア(Wired Or)接続となる。各ノードの出力はオープンコレクタであり、データ線とクロック線のそれぞれは、所定電位によりプルアップされるように回路が形成される。
また、ノードが、データ若しくはクロックを出力する場合には、信号線についてアクティブに駆動せずにプルアップさせた状態とすることでHレベルとし、信号線のプルアップされた電位をグランド電位となるようにしてアクティブに駆動することでLレベルを出力させることで行うようにされる。また、データのサンプルは、クロックがHレベルに立ち上がったタイミングで実行するものとされている。
また、データの入出力はワード単位となる。1ワードは9ビットで、先頭の第0ビット〜第7ビットまでの8ビットがデータとなり、最後の第8ビットの1ビットはACK(ACKNOWLEDGE)となる。
本実施の形態としては、例えばこのようなI2Cバスを採用することとしたうえで、コピー元とされるEEPROMに記憶されるデータを、コピー先のEEPROMに対して書き込んで記憶させるためのデータコピーの処理の高速化が図られるようにする。このような目的を達成するのにあたり、先ず、本実施の形態にかかわるところのI2Cの基本的な通信プロトコルについて考察してみる。
また、ノードが、データ若しくはクロックを出力する場合には、信号線についてアクティブに駆動せずにプルアップさせた状態とすることでHレベルとし、信号線のプルアップされた電位をグランド電位となるようにしてアクティブに駆動することでLレベルを出力させることで行うようにされる。また、データのサンプルは、クロックがHレベルに立ち上がったタイミングで実行するものとされている。
また、データの入出力はワード単位となる。1ワードは9ビットで、先頭の第0ビット〜第7ビットまでの8ビットがデータとなり、最後の第8ビットの1ビットはACK(ACKNOWLEDGE)となる。
本実施の形態としては、例えばこのようなI2Cバスを採用することとしたうえで、コピー元とされるEEPROMに記憶されるデータを、コピー先のEEPROMに対して書き込んで記憶させるためのデータコピーの処理の高速化が図られるようにする。このような目的を達成するのにあたり、先ず、本実施の形態にかかわるところのI2Cの基本的な通信プロトコルについて考察してみる。
図6(a)は、ランダムシーケンシャルリードといわれる、スレーブ及びアドレスを指定しての、特定のスレーブからのデータの読み出しを実行させる場合における、マスタのデータ出力端子(DAT)における信号状態を時間経過に従って示している。
先ず、マスタは、時点t0において、I2Cバス(信号線)により接続されたスレーブとの通信を開始するために、スタートコンディション(STRT)の信号状態を発生させる。I2Cにおけるスタートコンディションは、周知のようにして、マスタが、クロックについてはHレベルとした状態で、データについてはLレベルに駆動することで発生する。
そして、このスタートコンディションの発生後の所定タイミングとなる時点t1において、データ書込対象となるスレーブをスレーブアドレスにより指定するのための1ワードの出力期間が設定される。ここではスレーブアドレスは8ビットにより表現されるものとし、ここでのデータ書込対象となるスレーブを指定するスレーブアドレス(W)は、0xA0(0xは続く英数字が16進数表記のものであることを示す)とする。これに応じて、時点t1からの1ワード区間における先頭の第0ビットから第7ビットまでの8ビットとしては、10100000(=0xA0)となるようにして駆動される。この場合、1=Hレベル、0=Lレベルである。但し、この1ワード区間における第7ビットは、実際にはデータ通信方向に対応するWRITE(WRTE)/READ(書き込み/読み出し)のモードを指定するためのビットとされており、WRITEを指定する場合には0(L)で、READを指定する場合には1(H)であることが規定されている。ビットが0でWRITEモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが書き込まれるべきスレーブ(データ書込対象スレーブ)であることになる。一方、ビットが1でREADモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが読み出されるべきスレーブ(データ読出対象スレーブ)であることになる。
また、第7ビットが上記の扱いとされる場合、8ビットによるスレーブアドレスは、実際には、最小ビットが1となるアドレスは設定しないようにされる。例えばスレーブのアドレスとして、0xA0の次に高い値としては、0xA1(=10100001)ではなく、0xA2(=10100010)とすべきことになる。
上記のようにして、マスタが、時点t1から8ビットのスレーブアドレス(W)(WRITEモードのビットを含む)を出力したとされると、この信号が、データ線を介して接続されるスレーブの全てにおいて検知されることになる。そして、これらのスレーブのうちで、検知したスレーブアドレスと一致するスレーブアドレス(0xA0)が割り当てられているスレーブが、1ビット分のLレベル駆動をデータ線に対して行う。これが、時点t1における1ワード区間の第8ビットにおけるACKとして、マスタ側にて検知される。マスタは、このACKを検知したのに応じて、時点t1からの1ワード区間にて出力したスレーブアドレスに対する応答が正常に得られたものと認識し、次の手順に移行するようにされる。また、以降において通信が終了するまでは、この時点t1からの1ワード区間の段階でデータ書込対象スレーブとして指定された、スレーブアドレス=0xA0のスレーブのみが、マスタのコントロールに対して応答することになる。
先ず、マスタは、時点t0において、I2Cバス(信号線)により接続されたスレーブとの通信を開始するために、スタートコンディション(STRT)の信号状態を発生させる。I2Cにおけるスタートコンディションは、周知のようにして、マスタが、クロックについてはHレベルとした状態で、データについてはLレベルに駆動することで発生する。
そして、このスタートコンディションの発生後の所定タイミングとなる時点t1において、データ書込対象となるスレーブをスレーブアドレスにより指定するのための1ワードの出力期間が設定される。ここではスレーブアドレスは8ビットにより表現されるものとし、ここでのデータ書込対象となるスレーブを指定するスレーブアドレス(W)は、0xA0(0xは続く英数字が16進数表記のものであることを示す)とする。これに応じて、時点t1からの1ワード区間における先頭の第0ビットから第7ビットまでの8ビットとしては、10100000(=0xA0)となるようにして駆動される。この場合、1=Hレベル、0=Lレベルである。但し、この1ワード区間における第7ビットは、実際にはデータ通信方向に対応するWRITE(WRTE)/READ(書き込み/読み出し)のモードを指定するためのビットとされており、WRITEを指定する場合には0(L)で、READを指定する場合には1(H)であることが規定されている。ビットが0でWRITEモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが書き込まれるべきスレーブ(データ書込対象スレーブ)であることになる。一方、ビットが1でREADモードとされるときには、この1ワード区間により指定されたアドレスのスレーブは、データが読み出されるべきスレーブ(データ読出対象スレーブ)であることになる。
また、第7ビットが上記の扱いとされる場合、8ビットによるスレーブアドレスは、実際には、最小ビットが1となるアドレスは設定しないようにされる。例えばスレーブのアドレスとして、0xA0の次に高い値としては、0xA1(=10100001)ではなく、0xA2(=10100010)とすべきことになる。
上記のようにして、マスタが、時点t1から8ビットのスレーブアドレス(W)(WRITEモードのビットを含む)を出力したとされると、この信号が、データ線を介して接続されるスレーブの全てにおいて検知されることになる。そして、これらのスレーブのうちで、検知したスレーブアドレスと一致するスレーブアドレス(0xA0)が割り当てられているスレーブが、1ビット分のLレベル駆動をデータ線に対して行う。これが、時点t1における1ワード区間の第8ビットにおけるACKとして、マスタ側にて検知される。マスタは、このACKを検知したのに応じて、時点t1からの1ワード区間にて出力したスレーブアドレスに対する応答が正常に得られたものと認識し、次の手順に移行するようにされる。また、以降において通信が終了するまでは、この時点t1からの1ワード区間の段階でデータ書込対象スレーブとして指定された、スレーブアドレス=0xA0のスレーブのみが、マスタのコントロールに対して応答することになる。
時点t1からの1ワード区間を終了した次の1ワード区間となる時点t2からは、マスタは、サブアドレスを発生して出力する。サブアドレスは、スレーブ(ノード)内におけるデータ書込(読出)のアドレスを指定するもので、ここでも8ビットにより表現されるものとしている。今回、データ書込対象スレーブとして指定されたスレーブは、上記のようにして出力されたサブアドレスを検知すると、ここでもACKを出力することになり、マスタが、このACKを検知するようにされる。
この場合、マスタは、上記時点t2からの1ワード区間を終了した後の時点t3により、再度、スタートコンディション(リスタートコンディション)を発生させる。そして、続く時点t4からの1ワード区間により、マスタは、データが読み出しされるべきスレーブ(データ読出対象スレーブ)を指定するためのスレーブアドレス(R)を出力する。このときのスレーブアドレス(R)は、先の時点t1からの1ワード区間にて出力した、データ書込対象スレーブと同じスレーブを指定する。つまり、この場合には、スレーブアドレスとして0xA0を指定する。但し、このときには、データ読出対象スレーブを指定することから、この1ワード区間における第7ビットは、READを示すHレベルとなるようにされる。この場合、1ワード区間における第0〜第7ビットまでの8ビットの区間は、10100001(=0xA1)となるが、前述もしたように、スレーブアドレスとして0xA1は存在しないこととされており、0xA1の値は、0xA0であるとみなすようにされる。アドレス=0xA0のスレーブは、このスレーブアドレス(R)を検知したことに応答して、同じ1ワード区間の第8ビットとしてのACKを出力し、このACKをマスタが検知する。
I2Cでは、スレーブからデータを書き込むときと、読み出すときとにかかわらず、時点t1からの1ワード区間として示すように、スレーブからのデータの読み出しを行いたいときには、先ず、WRITEモード指定のスレーブアドレス(W)を発行してデータ書込対象スレーブ、若しくはデータ読出対象スレーブを指定すべきものとされている。従って、時点t1からの1ワード区間によるスレーブアドレス(W)に応答したスレーブは、先ず、自身がデータ書込対象スレーブとして指定されていると認識することになる。そして、読み出しの場合には、この後において、時点t3、時点t4からの動作として示すように、リスタートコンディションを発生させたうえで、READモード指定のスレーブアドレス(R)を発行させて、通信方向の切り換えを行うようにされる。データ書込対象スレーブとして先に指定されたスレーブが、このスレーブアドレス(R)を検知すると、そのスレーブは、改めて、自身がデータ読出対象スレーブとして指定されていると認識するようにされる。なお、読み出しのためのデバイス内のメモリアドレスについては、先の時点t2からの1ワード区間により発行されたサブアドレスが有効となる。
図6(a)において、上記時点t4からの1ワード区間が終了したとすると、次の時点t5以降において、データ読出対象スレーブからのデータの読み出しを実行させて、この読み出されたデータがデータ線に出力されるようにする動作を、1ワード区間ごとに実行する。このためには、マスタが、1ワード区間(9ビット)ごとのタイミングでのクロックの出力を行うようにされる。このクロックは、クロック線を伝達するようにしてスレーブであるデータ読出対象スレーブにて検知される。そして、データ読出対象スレーブは、このようにして検知したクロックのタイミングに同期するようにして、内部メモリから8ビット単位データの読み出しを行ってデータ線に対してシリアルに出力する。また、この場合には、マスタがデータを受信する側となるので、データ読出対象スレーブから出力された8ビット単位のデータをマスタが入力したのに応答して、1ワード区間における最終ビットとして、マスタがACKを出力することになる。マスタは、例えばデータ読出対象スレーブから出力されたデータの読み込み動作として、受信したデータを自身が備えるRAMなどの作業領域に保持させる。このようにして、1ワード区間ごとのデータの読み込みを開始していき、時点t6からの最後のデータ#nにおける8ビットのデータの読み込みを終了したとされると、この段階では、マスタはACKを発生させずに(NACK)、1ワード区間における最終ビットとしてはHレベルとなるように駆動する。
データ読出対象スレーブが上記のようにして発生されたNACKを検知した場合、データ読出対象スレーブは、それ以上のデータの読み出しを停止することになる。
そして、例えば時点t7において、マスタがストップコンディション(STOP)を発生させることで、マスタとデータ読出対象スレーブとの間の通信が終了する。ストップコンディションは、周知のようにして、クロック線をLレベルに駆動し、かつデータ線もLレベルとした状態から、クロック線をHレベルに切り換え、さらに、この状態から、データ線をHレベルに立ち上げる。
データ読出対象スレーブが上記のようにして発生されたNACKを検知した場合、データ読出対象スレーブは、それ以上のデータの読み出しを停止することになる。
そして、例えば時点t7において、マスタがストップコンディション(STOP)を発生させることで、マスタとデータ読出対象スレーブとの間の通信が終了する。ストップコンディションは、周知のようにして、クロック線をLレベルに駆動し、かつデータ線もLレベルとした状態から、クロック線をHレベルに切り換え、さらに、この状態から、データ線をHレベルに立ち上げる。
図6(b)は、ランダムシーケンシャルライトといわれる、スレーブ及びアドレスを指定しての、特定のスレーブに対するデータの書き込みを実行させる場合における、マスタのデータ出力端子(DAT)における信号状態を時間経過に従って示している。
この場合にも、先ず、マスタは、時点t0において、スレーブとの通信を開始するために、スタートコンディション(STRT)の信号状態を発生させ、この後の時点t1からの1ワード区間により、データ書込対象となるスレーブをスレーブアドレス(W)により指定する。ここでも、データ書込対象となるスレーブのスレーブアドレス(W)は、0xA0としている。従って、図6(b)においても、時点t1からの1ワード区間における先頭の8ビットとしては、10100000(=0xA0)となるようにして駆動される。なお、この場合にも、第7ビットは、通信方向としてWRITEモードを指定するために0(Lレベル)となっている。そして、この8ビットのスレーブアドレス(W)を受信したスレーブのうちで、指定されたスレーブアドレスが割り当てられたスレーブが、1ビットのACKを出力し、以降は、このスレーブがマスタに対して応答する。
さらに、時点t1からの1ワード区間を終了した次の1ワード区間となる時点t2からは、マスタは、サブアドレスを発生して出力し、今回、データ書込対象スレーブとして指定されたスレーブは、このサブアドレスに応答してACKを出力する。
さらに、時点t1からの1ワード区間を終了した次の1ワード区間となる時点t2からは、マスタは、サブアドレスを発生して出力し、今回、データ書込対象スレーブとして指定されたスレーブは、このサブアドレスに応答してACKを出力する。
上記時点t2からの1ワード区間の終了までは、上記した図6(a)のランダムシーケンシャルリードの場合と同様となる。しかしながら、図6(b)におけるランダムシーケンシャルライトの場合には、スレーブに対してデータを書き込むべきモードとなるために、ランダムシーケンシャルリードの場合のようにして通信方向の切り換えを行う必要はない。このために、図6(a)との比較として示すようにして、時点t3におけるリスタートと、時点t4からのスレーブアドレス(R)を出力する1ワード区間は省略され、時点t2からのサブアドレスの区間に続けて、時点t5からのデータの書き込みを実行していくことができる。
図6(b)の場合における時点t5からのデータ#0〜データ#nまでの書き込みにあたっては、マスタが、1ワード区間ごとのタイミングで9ビット対応のクロックを出力させるとともに、書き込みデータに応じてデータ線を駆動する。つまり、マスタ側においては、先の図6(a)に示したシーケンスにより読み出したデータをRAMに保持している。マスタは、図6(b)の時点t5からの動作として、クロックに同期させるようにして、最初の1ワード区間におけるデータ#0としての最初の8ビットの書き込み用のデータを内部RAMから読み出し、この読み出したデータに応じたビット値に応じて、データ線を駆動する。
このようにしてデータ線が駆動されることで、データ書込対象スレーブでは、このデータ線に発生した電位をデータとして検知して入力し、例えば内部のメモリに対して記憶保持するようにされる。そして、上記8ビットの書き込み用データの検知を終了したとされる次のビットのタイミングで、ACKを発生させる。このACKを検知することで、マスタは、自身が出力したデータが、正常にデータ書込対象スレーブに書き込まれたことを認識する。
そして、この場合にも、時点t6からの1ワード区間は、最後のデータ#nとしての8ビットを出力する期間となる。マスタは、この1ワード区間における先頭からの8ビットにより最後のデータをRAMから読み出してデータ線に出力する。このときにも、ACKはデータ書込対象スレーブから出力される。
マスタは、時点t6からの1ワード区間により最後のデータを出力したとされると、以降においてデータ出力期間は設けないようにされる。スレーブに対するデータの書き込みは、これで終了する。また、この場合にも、例えば時点t7によりストップコンディション(STOP)を発生させ、マスタとデータ書込対象スレーブとの間の通信を終了させる。
このようにしてデータ線が駆動されることで、データ書込対象スレーブでは、このデータ線に発生した電位をデータとして検知して入力し、例えば内部のメモリに対して記憶保持するようにされる。そして、上記8ビットの書き込み用データの検知を終了したとされる次のビットのタイミングで、ACKを発生させる。このACKを検知することで、マスタは、自身が出力したデータが、正常にデータ書込対象スレーブに書き込まれたことを認識する。
そして、この場合にも、時点t6からの1ワード区間は、最後のデータ#nとしての8ビットを出力する期間となる。マスタは、この1ワード区間における先頭からの8ビットにより最後のデータをRAMから読み出してデータ線に出力する。このときにも、ACKはデータ書込対象スレーブから出力される。
マスタは、時点t6からの1ワード区間により最後のデータを出力したとされると、以降においてデータ出力期間は設けないようにされる。スレーブに対するデータの書き込みは、これで終了する。また、この場合にも、例えば時点t7によりストップコンディション(STOP)を発生させ、マスタとデータ書込対象スレーブとの間の通信を終了させる。
例えば、従来として図7及び図8に示した構成、手順により、コピー元メモリ2に記憶されているデータを、コピー先メモリ3に記憶させるためには、先ず、ステップS101の処理として、図6(a)に示すシーケンスに従って、スレーブアドレス(W)、及びサブアドレスの発行により、コピー元メモリ2をデータ読出対象スレーブとして指定すると共に、デバイス内のアドレスを指定し、さらに、スレーブアドレス(R)により通信方向の切り換えを行ったうえで、データの読み込みを開始するようにされる。そして、例えば、マスタ側のRAMにおいて一時保持するデータ量が一定以上になったとされると、時点t6からの1ワード区間におけるようにして、NACKを発生させて、コピー元メモリ2からのデータの読み出し出力を停止させて通信を一旦終了する。
続いては、図6(b)に示すシーケンスに従って、ステップS102の処理を実行する。つまり、スレーブアドレス(W)、及びサブアドレスの発行により、コピー先メモリ3をデータ読出対象スレーブとして指定し、続けてマスタは、RAMに保持されているデータに応じてデータ線を駆動して、コピー先メモリ3にデータを書き込むことを行い、RAMに保持している書き込み用データを全て出力したとされると、通信を一旦終了させる。
そして、上記図6(a)に示される読み出しのシーケンスと、この後に実行される図6(b)に示される書き込みのシーケンスとを、図8のステップS103により、コピー元メモリ2からコピー先メモリに転送してコピーすべき全データのコピーが終了したことが判別されるまで、繰り返すようにされる。
続いては、図6(b)に示すシーケンスに従って、ステップS102の処理を実行する。つまり、スレーブアドレス(W)、及びサブアドレスの発行により、コピー先メモリ3をデータ読出対象スレーブとして指定し、続けてマスタは、RAMに保持されているデータに応じてデータ線を駆動して、コピー先メモリ3にデータを書き込むことを行い、RAMに保持している書き込み用データを全て出力したとされると、通信を一旦終了させる。
そして、上記図6(a)に示される読み出しのシーケンスと、この後に実行される図6(b)に示される書き込みのシーケンスとを、図8のステップS103により、コピー元メモリ2からコピー先メモリに転送してコピーすべき全データのコピーが終了したことが判別されるまで、繰り返すようにされる。
このようなデータコピーの処理シーケンスでは、RAM容量とコピーすべきデータのサイズとの兼ね合いに応じて決まる所要回数分、上記図6(a)のシーケンスと、これに続く図6(b)のシーケンスの組み合わせを繰り返し実行する必要がある。データのコピーは、EEPROMなどの物理的なメモリ素子を対象として行われることから、実際のデータの書き込みにあたっては、メモリ素子に対して物理的にデータが書き込まれるまでの待機時間が存在する。従って、例えば図6(b)に示すシーケンスに従ったステップS102としてのデータ書き込みの実行時においても、実際には、上記した待機時間を含むことになる。さらに、例えば図6(a)のシーケンスごとには、時点t5から実データの読み出しが開始される以前において、時点t1から時点t4までに対応したスレーブアドレス(W)、サブアドレス、及びスレーブアドレス(R)の出力期間が存在する。同様にして、図6(b)のシーケンスごとには、時点t5の実データの読み出しが開始される以前において、時点t1から時点t3までに対応するスレーブアドレス(W)、サブアドレスの出力期間が存在する。
従って、データコピーのために、図6(a)と図6(b)に示されるシーケンスを繰り返すことにより、上記した待機時間や、実データの書込/読出以前のアドレス指定などのための期間が蓄積されることになる。このことが、従来におけるデータコピー処理の速度が遅いことの要因となっている。
従って、データコピーのために、図6(a)と図6(b)に示されるシーケンスを繰り返すことにより、上記した待機時間や、実データの書込/読出以前のアドレス指定などのための期間が蓄積されることになる。このことが、従来におけるデータコピー処理の速度が遅いことの要因となっている。
この問題に関しては、マスタが作業領域として備えるRAMの容量を増加することが1つの解決策ではあるが、現実的なこととして、例えばマスタが各種の制御処理を実行するマイクロコンピュータである場合に、そのRAM容量は、コストなどの問題を考慮して、マイクロコンピュータ1が通常に制御処理を実行することを考えたときにほぼ必要最小限とされる容量を設定することが一般的である。従って、データコピーのみのために、RAM容量を増加させることは現実的には困難である。換言すれば、マスタが備えるRAMの容量は、相応に制限されているものであり、これにより、図6(a)と図6(b)に示されるシーケンスを多数回繰り返さざるを得ない。つまりは、RAMの容量の少ないことがボトルネックとなって、データコピーの高速化を困難としている。そこで、本実施の形態としては、RAMの容量増加に頼ることなく、データコピーの高速化が図られるようにすることを目的として、I2Cを適用したデータコピーのためのデータ通信システムを構成するものとする。
ここで、上記図6(a)(b)に示したランダムシーケンシャルリード(データ読出)とランダムシーケンシャルライト(データ書込)とを比較してみると、ワード単位によるシーケンスとしては共通の手順が多いことが分かる。具体的には、時点t0におけるスタートコンディション、時点t1からのスレーブアドレス(W)の区間、時点t2からのサブアドレスの区間は、図6(a)(b)とで何れもマスタがデータ線を駆動して発生させる。また、時点t5以降の実データの読み出し,書き込みは、図6(a)ではデータ読出対象スレーブがデータ線を駆動し、マスタがACK,NACKを発生させ、図6(b)ではマスタがデータ線を駆動して、データ書込対象スレーブがACKを発生させる相違はあるが、1ワード区間における先頭8ビットが実データであり、最後の1ビットがACK(あるいはNACK)であるという点では共通である。つまり、ランダムシーケンシャルリード(データ読出)にあって、時点t3、時点t4に対応するスレーブアドレス(R)の出力(通信方向切り換え)のためのリスタートが行われる以外は、共通しているものであるとみることができる。本実施の形態としては、このことを利用して、以降説明する構成により、I2Cの通信プロトコルを破綻させることなく、データコピーの高速化を図るようにされる。
図1は、本発明の第1の実施の形態としてのデータコピーのためのデータ通信システムの構成例を示している。
この図に示すようにして、このデータ通信システムは、I2Cに対応する装置(ノード)として、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3を備える。I2Cでは、マスタとスレーブとの間でのデータ通信となるのであるが、この場合において、マイクロコンピュータ1がマスタとして機能し、コピー元メモリ2及びコピー先メモリ3がそれぞれスレーブとして機能する。ここでは便宜上、コピー元メモリ2をスレーブ1とし、コピー先メモリ3をスレーブ2としている。
マイクロコンピュータ1は、例えばCPU、ROM等を備え、その動作は、例えばCPUがROMに格納されるプログラムを実行することで得られる。あるいは、次に説明するコピー元メモリ2にプログラムを記憶させ、CPUが、このプログラムを読み出して実行するような構成とすることも考えられる。
コピー元メモリ2及びコピー先メモリ3は、それぞれEEPROMとされる。コピー元メモリ2には、コピー先メモリ3に対して書き込んで記憶させるべきコピー用のデータが記憶されている。コピー先メモリ3は、上記しているように、コピー元メモリ2に記憶されるコピー用のデータがコピーされる空き領域を有していることになる。
この図に示すようにして、このデータ通信システムは、I2Cに対応する装置(ノード)として、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3を備える。I2Cでは、マスタとスレーブとの間でのデータ通信となるのであるが、この場合において、マイクロコンピュータ1がマスタとして機能し、コピー元メモリ2及びコピー先メモリ3がそれぞれスレーブとして機能する。ここでは便宜上、コピー元メモリ2をスレーブ1とし、コピー先メモリ3をスレーブ2としている。
マイクロコンピュータ1は、例えばCPU、ROM等を備え、その動作は、例えばCPUがROMに格納されるプログラムを実行することで得られる。あるいは、次に説明するコピー元メモリ2にプログラムを記憶させ、CPUが、このプログラムを読み出して実行するような構成とすることも考えられる。
コピー元メモリ2及びコピー先メモリ3は、それぞれEEPROMとされる。コピー元メモリ2には、コピー先メモリ3に対して書き込んで記憶させるべきコピー用のデータが記憶されている。コピー先メモリ3は、上記しているように、コピー元メモリ2に記憶されるコピー用のデータがコピーされる空き領域を有していることになる。
また、I2Cでは、先の図6による説明からも理解されるように、スレーブアドレスにより、マスタと通信を行うスレーブを指定する。第1の実施の形態としては、コピー元メモリ2とコピー先メモリ3に対して割り当てられるスレーブアドレスについて、同一の値を設定するものとする。ここでは、具体的には、0xA0を設定するようにされる。
I2Cは、先にも述べたように、各ノードをワイヤードオアにより信号線で接続する。また、信号線は、データ線とクロック線の2本を対とする。図1に示すシステムにおいても、基本的には、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3は、この信号線を相互に共有するようにしてワイヤードオア接続される。ただし、次に説明するようにして、所要の信号線の部位に対してスイッチSW1、SW2を挿入している。スイッチSW1、SW2は、それぞれ、オン/オフ(開閉)の切り換えが可能な構成となっている。
先ず、この場合のマスタであるマイクロコンピュータ1は、I2Cに対応する端子(ポート)として、クロック端子CLKM、データ端子DATM、スイッチ制御端子SWM1、SWM2を備える。また、コピー元メモリ2は、I2Cに対応する端子(ポート)として、クロック端子CLK1、データ端子DAT1を備える。コピー先メモリ3は、I2Cに対応する端子(ポート)として、クロック端子CLK2、データ端子DAT2を備える。
信号線のうち、クロック線Lclは、マイクロコンピュータ1のクロック端子CLKMとコピー元メモリ2のクロック端子CLK1とを、a点が共有されるようにして接続する。また、このa点と、コピー先メモリ3のクロック端子CLK2とを、スイッチSW1を介するようにして接続する。
また、データ線Ldtは、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT1とを、b点が共有されるようにして接続する。また、このb点と、コピー元メモリ2のデータ端子DAT2とを、スイッチSW2を介するようにして接続する。
また、データ線Ldtは、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT1とを、b点が共有されるようにして接続する。また、このb点と、コピー元メモリ2のデータ端子DAT2とを、スイッチSW2を介するようにして接続する。
また、I2Cでは、信号線としてのデータ線、クロック線は、それぞれ、所定電位(例えば5V)によりプルアップされるべきこととなっている。このために、図1に示す構成の下では、クロック線Lclについては、マイクロコンピュータ1のクロック端子CLKMとコピー元メモリ2のクロック端子CLK1とが共有する信号線部分(a点)に対して、プルアップ抵抗R1を介して直流電圧Vccを印加することとしている。また、スイッチSW1とコピー先メモリ3のクロック端子CLK2との間のクロック線Lclに対しては、アースとの間にプルダウン抵抗R4を挿入している。
なお、スイッチSW1がオン状態では、直流電圧Vccとアース間に対してプルアップ抵抗R1とプルダウン抵抗R4の直列接続回路が形成され、このプルアップ抵抗R1とプルダウン抵抗R4の接続点に対してクロック線Lclが接続される状態となる。しかしながら、この場合のプルダウン抵抗R4としては、スイッチSW1がオフとなったときにオープンとなるコピー先メモリ3のクロック端子CLK2をアース電位で安定させるためのものであり、プルアップ抵抗R1に対して充分に大きなインピーダンス(抵抗値)を与えることとしている。このために、例えば、スイッチSW1がオフになったときとオンになったときとで、動作に支障を与えるようなプルアップ電位の変化は生じないものである。
また、データ線Ldtについては、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT2とが共有する信号線部分(b点)に対して、プルアップ抵抗R2を介して直流電圧Vccを印加することとしている。さらに、コピー元メモリ2のデータ端子DAT1とスイッチSW2の間のデータ線Ldtに対しても、プルアップ抵抗R3を介して直流電圧Vccを印加することとしている。
なお、スイッチSW1がオン状態では、直流電圧Vccとアース間に対してプルアップ抵抗R1とプルダウン抵抗R4の直列接続回路が形成され、このプルアップ抵抗R1とプルダウン抵抗R4の接続点に対してクロック線Lclが接続される状態となる。しかしながら、この場合のプルダウン抵抗R4としては、スイッチSW1がオフとなったときにオープンとなるコピー先メモリ3のクロック端子CLK2をアース電位で安定させるためのものであり、プルアップ抵抗R1に対して充分に大きなインピーダンス(抵抗値)を与えることとしている。このために、例えば、スイッチSW1がオフになったときとオンになったときとで、動作に支障を与えるようなプルアップ電位の変化は生じないものである。
また、データ線Ldtについては、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT2とが共有する信号線部分(b点)に対して、プルアップ抵抗R2を介して直流電圧Vccを印加することとしている。さらに、コピー元メモリ2のデータ端子DAT1とスイッチSW2の間のデータ線Ldtに対しても、プルアップ抵抗R3を介して直流電圧Vccを印加することとしている。
また、スイッチSW1は、マイクロコンピュータ1のスイッチ制御端子SWM1から出力されるスイッチ制御信号によりオン/オフ制御されるようになっている。同様にして、スイッチSW2は、マイクロコンピュータ1のスイッチ制御端子SWM2から出力されるスイッチ制御信号によりオン/オフ制御されるようになっている。
図2のタイミングチャートは、上記図1に示した回路構成を採るシステムにおけるデータコピーのための動作を示している。この図では、マイクロコンピュータ1のスイッチ制御端子SWM1、SWM2、クロック端子CLKM、データ端子DATM、コピー元メモリ2のクロック端子CLK1、データ端子DAT1、コピー先メモリ3のクロック端子CLK2、データ端子DAT2の各信号状態を示している。
図2において、先ず、通信を開始する時点t0の時点において、スイッチ制御端子SWM1、SWM2から出力するスイッチ制御信号は、ともにHレベルの状態としておくようにされる。この場合、スイッチSW1、SW2は、スイッチ制御信号がHレベルのときにはオンとなるように制御され、スイッチ制御信号がLレベルのときにはオフとなるように制御される。従って、時点t0の時点ではスイッチSW1、SW2は共にオンの状態にあるようにされている。時点t0におけるスイッチSW1がオンの状態は、後述する時点t3に至るまで継続され、スイッチSW2がオンの状態は、後述する時点t9に至るまで継続される。
そして、時点t0において、マスタであるマイクロコンピュータ1は、I2Cの通信プロトコルに従って、スタートコンディション(STRT)を発生させる。このスタートコンディションは、信号線(クロック線Lcl、データ線Ldt)を介するようにして、コピー元メモリ2のクロック端子CLK1、データ端子DAT1と、コピー先メモリ3のクロック端子CLK2、データ端子DAT2とに伝達される。これにより、スレーブであるコピー元メモリ2及びコピー先メモリ3の各々は、スタートコンディションが発生したことを認識する。
上記のようにしてスタートコンディションを発生させるのに続き、マイクロコンピュータ1は、先ず、時点t1からの1ワード区間において、先頭の8ビット(第0ビット〜第7ビット)により、データ書込対象スレーブを指定するためのスレーブアドレス(W)を発生させる。
このときには、マイクロコンピュータ1がクロックをドライブし、これがクロック線Lcl経由で、コピー元メモリ2及びコピー先メモリ3の各クロック端子CLK1、CLK2に入力される。そして、コピー元メモリ2及びコピー先メモリ3は、上記のようにして発生されたスレーブアドレス(W)を、クロックの立ち上がりタイミングによりサンプルして取り込むようにして入力する。
このときには、マイクロコンピュータ1がクロックをドライブし、これがクロック線Lcl経由で、コピー元メモリ2及びコピー先メモリ3の各クロック端子CLK1、CLK2に入力される。そして、コピー元メモリ2及びコピー先メモリ3は、上記のようにして発生されたスレーブアドレス(W)を、クロックの立ち上がりタイミングによりサンプルして取り込むようにして入力する。
この場合のスレーブアドレス(W)は、10100000(第7ビットはWRITEモードを示す)となっていることから、データ書込対象スレーブとして、0xA0のスレーブアドレスを持つスレーブを指定していることになる。
このときにはスイッチSW1、SW2はオン状態となっている。スイッチSW1がオンとなっていることで、クロック線Lclは、マイクロコンピュータ1(マスタ)、コピー元メモリ2(スレーブ1)、及びコピー先メモリ3(スレーブ2)の3つのノードにより共有される状態となっている。従って、マイクロコンピュータ1が駆動してクロック線CLKMから出力されるクロックは、コピー元メモリ2だけではなく、コピー先メモリ3においても検知される。また、スイッチSW2がオンとなっていることで、データ線Ldtも、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3の3つのノードにより共有される状態となっている。このために、時点t1からの1ワード区間において発生されたスレーブアドレス(W)は、コピー元メモリ2とコピー先メモリ3の両者によりサンプルすることができる。つまり、スイッチSW1,SW2がともにオンの状態では、信号線(クロック線Lcl、データ線Ldt)が、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3の3つのノードにより共有されており、通常の信号線の接続となっている。
さらに、先に述べたように、第1の実施の形態にあっては、コピー元メモリ2及びコピー先メモリ3のスレーブアドレスは、0xA0で同一であることとしている。従って、スレーブアドレス(W)をサンプルした結果として、コピー元メモリ2とコピー先メモリ3のそれぞれが、自身についてデータ書込対象スレーブとして指定されたものであると認識することになる。
これに応じて、時点t1からの1ワード区間における最後のビット(第8ビット)のタイミングで、コピー元メモリ2及びコピー先メモリ3の両者が、データ線LdtをLレベル駆動することでACKを出力する。これに応じて、このときのデータ線LdtとしてはLレベルとなり、マイクロコンピュータ1側にあってもACKを検知できることになる。なお、確認のために述べておくと、信号線はワイヤードオア接続であるから、コピー元メモリ2とコピー先メモリ3の少なくとも一方がACKとしてのLレベル駆動を行うことで、データ線LdtにはLレベルが現れることになる。
このときにはスイッチSW1、SW2はオン状態となっている。スイッチSW1がオンとなっていることで、クロック線Lclは、マイクロコンピュータ1(マスタ)、コピー元メモリ2(スレーブ1)、及びコピー先メモリ3(スレーブ2)の3つのノードにより共有される状態となっている。従って、マイクロコンピュータ1が駆動してクロック線CLKMから出力されるクロックは、コピー元メモリ2だけではなく、コピー先メモリ3においても検知される。また、スイッチSW2がオンとなっていることで、データ線Ldtも、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3の3つのノードにより共有される状態となっている。このために、時点t1からの1ワード区間において発生されたスレーブアドレス(W)は、コピー元メモリ2とコピー先メモリ3の両者によりサンプルすることができる。つまり、スイッチSW1,SW2がともにオンの状態では、信号線(クロック線Lcl、データ線Ldt)が、マイクロコンピュータ1、コピー元メモリ2、及びコピー先メモリ3の3つのノードにより共有されており、通常の信号線の接続となっている。
さらに、先に述べたように、第1の実施の形態にあっては、コピー元メモリ2及びコピー先メモリ3のスレーブアドレスは、0xA0で同一であることとしている。従って、スレーブアドレス(W)をサンプルした結果として、コピー元メモリ2とコピー先メモリ3のそれぞれが、自身についてデータ書込対象スレーブとして指定されたものであると認識することになる。
これに応じて、時点t1からの1ワード区間における最後のビット(第8ビット)のタイミングで、コピー元メモリ2及びコピー先メモリ3の両者が、データ線LdtをLレベル駆動することでACKを出力する。これに応じて、このときのデータ線LdtとしてはLレベルとなり、マイクロコンピュータ1側にあってもACKを検知できることになる。なお、確認のために述べておくと、信号線はワイヤードオア接続であるから、コピー元メモリ2とコピー先メモリ3の少なくとも一方がACKとしてのLレベル駆動を行うことで、データ線LdtにはLレベルが現れることになる。
上記スレーブアドレス(W)に応答したACKを検知したマイクロコンピュータ1は、時点t2からの1ワード区間における先頭の8ビット(第0ビット〜第7ビット)により、サブアドレスを発生させる。このサブアドレスも、コピー元メモリ2とコピー先メモリ3の両者においてサンプルされ、コピー元メモリ2とコピー先メモリ3のそれぞれが、自身についてのサブアドレスが指定されたものであると、この段階での認識を行うことになる。
そして、コピー元メモリ2とコピー先メモリ3は、8ビットのサブアドレスをサンプルした後の9ビット目のタイミングで、データ線LdtをLレベル駆動してACKを出力する。
そして、コピー元メモリ2とコピー先メモリ3は、8ビットのサブアドレスをサンプルした後の9ビット目のタイミングで、データ線LdtをLレベル駆動してACKを出力する。
この場合、マイクロコンピュータ1は、サブアドレスの発生に応答したACKを受け取ると、次の手順として、時点t3として示すように、スイッチ制御端子SWM1をLレベル駆動することで、スイッチSW1をオンからオフに切り換える。これにより、クロック線Lclは、マイクロコンピュータ1とコピー元メモリ2が共有する部分のみが有効となって、コピー先メモリ3は、クロック線Lclからは切り離される状態となる。これにより、コピー先メモリ3は、信号線を介して他のノード(マイクロコンピュータ1、コピー元メモリ2)との通信は行えなくなる。
なお、このようにして、或るノードが信号線を介して通信できなくなるようにするためには、信号線であるデータ線とクロック線の両方を遮断する必要はなく、少なくとも一方を遮断すればよい。I2Cでは、クロックの立ち上がりタイミングでデータをサンプルすることとされているので、データとクロックのうちの何れか一方が入力されない状態を形成すれば、そのノードにおいては、データを検知できることにはならないからである。本実施の形態では、このことに着目して、コピー先メモリ3の通信を不可とするために、クロック線Lclのみに対してスイッチSW1を設けている。そして、上記したことによれば、コピー先メモリ3の通信を不可とするためには、スイッチSW1を、クロック線Lcl側ではなく、データ線Ldtのb点とデータ端子DAT2との間に挿入するようにしてもよい。
このようにして、本実施の形態では、ノードの通信を一時的に不可となるように設定するために、例えばクロック線Lclとデータ線Ldtとの両方に対して、スイッチを備えることをしていないが、これにより、マスタであるマイクロコンピュータ1が消費するポート(端子)の数は削減されることになる。例えば、近年においては、マイクロコンピュータの多機能化などに伴い、消費されるポートの数が増加してきている。ポートの数は有限であるので、ポート数が削減されることの効果は高い。
なお、このようにして、或るノードが信号線を介して通信できなくなるようにするためには、信号線であるデータ線とクロック線の両方を遮断する必要はなく、少なくとも一方を遮断すればよい。I2Cでは、クロックの立ち上がりタイミングでデータをサンプルすることとされているので、データとクロックのうちの何れか一方が入力されない状態を形成すれば、そのノードにおいては、データを検知できることにはならないからである。本実施の形態では、このことに着目して、コピー先メモリ3の通信を不可とするために、クロック線Lclのみに対してスイッチSW1を設けている。そして、上記したことによれば、コピー先メモリ3の通信を不可とするためには、スイッチSW1を、クロック線Lcl側ではなく、データ線Ldtのb点とデータ端子DAT2との間に挿入するようにしてもよい。
このようにして、本実施の形態では、ノードの通信を一時的に不可となるように設定するために、例えばクロック線Lclとデータ線Ldtとの両方に対して、スイッチを備えることをしていないが、これにより、マスタであるマイクロコンピュータ1が消費するポート(端子)の数は削減されることになる。例えば、近年においては、マイクロコンピュータの多機能化などに伴い、消費されるポートの数が増加してきている。ポートの数は有限であるので、ポート数が削減されることの効果は高い。
また、スイッチSW1がオフのときには、コピー先メモリ3のクロック端子CLK2は、プルダウン抵抗R4を介してアースと接続される。これより、クロック端子CLK2は、アース電位(Lレベル)にて固定されるようにしてプルダウンされる状態となる。クロック端子CLK2を単純にオープンにすると、クロック端子CLK2の電位が不定となる可能性があるが、このようにしてプルダウンさせることで、Lレベルで安定させることができる。
なお、スイッチSW1がオフのときにおける、コピー先メモリ3のクロック端子CLK2の電位状態については、例えばプルアップ電位に応じたHレベルで維持されるようにしてもよい。この場合には、プルダウン抵抗R4に代えて、例えばプルアップ抵抗Rを介して直流電圧Vccを印加するような回路とすればよい。ただし、現状における一般的なマイクロコンピュータをマスタとして実際に使用することを想定した場合、コピー先メモリ3のクロック端子CLK2についてHレベルでプルアップさせるためのスイッチSW1の切り換え制御のタイミングを考慮すると、マイクロコンピュータ側のファームウェアのプログラムの記述の難易度が高くなる可能性がある。
なお、スイッチSW1がオフのときにおける、コピー先メモリ3のクロック端子CLK2の電位状態については、例えばプルアップ電位に応じたHレベルで維持されるようにしてもよい。この場合には、プルダウン抵抗R4に代えて、例えばプルアップ抵抗Rを介して直流電圧Vccを印加するような回路とすればよい。ただし、現状における一般的なマイクロコンピュータをマスタとして実際に使用することを想定した場合、コピー先メモリ3のクロック端子CLK2についてHレベルでプルアップさせるためのスイッチSW1の切り換え制御のタイミングを考慮すると、マイクロコンピュータ側のファームウェアのプログラムの記述の難易度が高くなる可能性がある。
上記のようにして時点t3においてスイッチSW1をオフとして、コピー先メモリ3をI2Cバス(信号線)から切り離したのと等価の状態としたうえで、マイクロコンピュータ1は、時点t4としてのタイミングでリスタートのコンディションを発生させる。続いて時点t5からの1ワード区間において、8ビットのスレーブアドレス(R)を発生させる。このリスタートコンディションとスレーブアドレス(R)は、前述もしたように、通信方向の切り換えを指示するためのシーケンスであり、このスレーブアドレス(R)をスレーブ側にて受け取ることで、そのスレーブは、自身が読出対象スレーブとして指定されていることを認識し、データ読出のモードを設定できる。
上記リスタートコンディション及びスレーブアドレス(R)に対応してマイクロコンピュータ1が駆動したデータ及びクロックは、コピー元メモリ2のデータ端子DAT2及びクロック端子CLK1に対しては通常に入力される。確認のために、この場合のスレーブアドレス(R)は、10100001(第7ビットの1はREADモードを指定する)となっており、スレーブアドレスとして0xA0を指定している。従って、コピー元メモリ2では、リスタートコンディションとスレーブアドレス(R)が正常に検知され、自身がデータ読出対象スレーブであることを認識することになる。そして、コピー先メモリ3は、8ビットのスレーブアドレス(R)に続く9ビット目とされるタイミングで、ACKを出力し、マイクロコンピュータ1(マスタ)がこのACKを受け取ることになる。
一方、このときにはコピー先メモリ3は、スイッチSW1がオフとされてクロック端子CLK2がLレベルでプルダウンされている状態を維持する。このために、データ端子DAT2に対して、マイクロコンピュータ1が出力したスレーブアドレス(R)が入力されているとしても、クロックの立ち上がりタイミングは生じないために、スレーブアドレス(R)としてのビットを検知することはない。このようにしてコピー先メモリ3は、I2Cバスから切り離された状態となっている。そして、このようにして、コピー先メモリ3がスレーブアドレス(R)を検知しないことで、コピー先メモリ3は、自身がデータ書込対象スレーブであるとして認識したままであることになる。また、コピー先メモリ3は、スレーブアドレス(R)を検知しないので、ACKの出力は行わない。
上記リスタートコンディション及びスレーブアドレス(R)に対応してマイクロコンピュータ1が駆動したデータ及びクロックは、コピー元メモリ2のデータ端子DAT2及びクロック端子CLK1に対しては通常に入力される。確認のために、この場合のスレーブアドレス(R)は、10100001(第7ビットの1はREADモードを指定する)となっており、スレーブアドレスとして0xA0を指定している。従って、コピー元メモリ2では、リスタートコンディションとスレーブアドレス(R)が正常に検知され、自身がデータ読出対象スレーブであることを認識することになる。そして、コピー先メモリ3は、8ビットのスレーブアドレス(R)に続く9ビット目とされるタイミングで、ACKを出力し、マイクロコンピュータ1(マスタ)がこのACKを受け取ることになる。
一方、このときにはコピー先メモリ3は、スイッチSW1がオフとされてクロック端子CLK2がLレベルでプルダウンされている状態を維持する。このために、データ端子DAT2に対して、マイクロコンピュータ1が出力したスレーブアドレス(R)が入力されているとしても、クロックの立ち上がりタイミングは生じないために、スレーブアドレス(R)としてのビットを検知することはない。このようにしてコピー先メモリ3は、I2Cバスから切り離された状態となっている。そして、このようにして、コピー先メモリ3がスレーブアドレス(R)を検知しないことで、コピー先メモリ3は、自身がデータ書込対象スレーブであるとして認識したままであることになる。また、コピー先メモリ3は、スレーブアドレス(R)を検知しないので、ACKの出力は行わない。
そして、この時点t5の1ワード区間が終了した後の時点t6のタイミングで、マイクロコンピュータ1は、スイッチ制御端子SWM1から出力するスイッチ制御信号についてHレベルに反転させることで、再度、スイッチSW1をオン状態に切り換える。このとき、スイッチSW2はオン状態を維持している。これにより、コピー先メモリ3は、マイクロコンピュータ1、及びコピー元メモリ2と信号線を共有して、I2Cバスにより通信が可能な状態に復帰する。
そして、上記時点t6によるスイッチSW1の切り換えを実行した後において、マイクロコンピュータ1は、時点t7から、1ワード単位に対応するクロックの出力を開始する。つまり、クロック端子CLKMについて、1ワード単位に対応して所定タイミングでH/Lレベルの反転駆動を行う。
ここで、時点t5からの1ワード区間が終了して以降においては、コピー元メモリ2は、自身がデータ読出対象スレーブとして指定されているものであると認識してREADモードとしており、一方、コピー先メモリ3は、自身がデータ書込対象スレーブとして指定されているものであると認識してWRITEモードとしていることになる。時点t7から開始されるクロックの出力は、このようにして、コピー元メモリ2がREADモードで通信可能な状態で待機し、コピー先メモリ3がWRITEモードで通信可能な状態で待機している状況で行われる。
このようにしてマイクロコンピュータ1(マスタ)が出力したクロックは、クロック線Lclを介するようにして、コピー元メモリ2のクロック端子CLK1にて検知されるので、READモードで待機していたコピー元メモリ2は、検知したクロックタイミングに応じて、サブアドレスにより指定された内部アドレスを起点として、データ#0としての8ビットのデータを読み出して、この読み出したデータに応じてデータ端子DAT2を駆動する。このときスイッチSW2はオンとなっているので、データ線Ldtには、コピー元メモリ2の駆動に応じた電位としてのデータが現れることになる。
また、同じ時点t7から開始されるクロックは、スイッチSW1がオンとなっていることで、コピー先メモリ3のクロック端子CLK2にても検知されることとなる。これまでコピー先メモリ3は、WRITEモードで待機していたことから、このクロックに応じてデータ端子DAT2に入力されてくるデータをサンプリングしてサブアドレスにより指定された内部アドレスを起点として書き込んで記憶させる動作を実行することになる。このときにデータ端子DAT2にて取り込まれるデータは、上記もしているように、コピー元メモリ2から読み出してデータ線Ldtに出力されたものである。つまり、本実施の形態では、時点t7以降において、マイクロコンピュータ1が出力するクロックに応じて、コピー元メモリ2から読み出したデータを、コピー先メモリ3に転送して書き込むという、メモリデバイス間での直接的なデータの授受によるコピー処理が実現されていることになる。
ここで、時点t5からの1ワード区間が終了して以降においては、コピー元メモリ2は、自身がデータ読出対象スレーブとして指定されているものであると認識してREADモードとしており、一方、コピー先メモリ3は、自身がデータ書込対象スレーブとして指定されているものであると認識してWRITEモードとしていることになる。時点t7から開始されるクロックの出力は、このようにして、コピー元メモリ2がREADモードで通信可能な状態で待機し、コピー先メモリ3がWRITEモードで通信可能な状態で待機している状況で行われる。
このようにしてマイクロコンピュータ1(マスタ)が出力したクロックは、クロック線Lclを介するようにして、コピー元メモリ2のクロック端子CLK1にて検知されるので、READモードで待機していたコピー元メモリ2は、検知したクロックタイミングに応じて、サブアドレスにより指定された内部アドレスを起点として、データ#0としての8ビットのデータを読み出して、この読み出したデータに応じてデータ端子DAT2を駆動する。このときスイッチSW2はオンとなっているので、データ線Ldtには、コピー元メモリ2の駆動に応じた電位としてのデータが現れることになる。
また、同じ時点t7から開始されるクロックは、スイッチSW1がオンとなっていることで、コピー先メモリ3のクロック端子CLK2にても検知されることとなる。これまでコピー先メモリ3は、WRITEモードで待機していたことから、このクロックに応じてデータ端子DAT2に入力されてくるデータをサンプリングしてサブアドレスにより指定された内部アドレスを起点として書き込んで記憶させる動作を実行することになる。このときにデータ端子DAT2にて取り込まれるデータは、上記もしているように、コピー元メモリ2から読み出してデータ線Ldtに出力されたものである。つまり、本実施の形態では、時点t7以降において、マイクロコンピュータ1が出力するクロックに応じて、コピー元メモリ2から読み出したデータを、コピー先メモリ3に転送して書き込むという、メモリデバイス間での直接的なデータの授受によるコピー処理が実現されていることになる。
また、時点t7から開始されるクロックに応じてコピー元メモリ2が出力するデータ#0は、データ線Ldtを介するようにして、マイクロコンピュータ1(マスタ)のデータ端子DATMにも入力されることになる。マイクロコンピュータ1(マスタ)は、このようにして入力されるデータに基づいてそのビット数のカウントを行って、コピーされるデータサイズを判定するようにされる。ただし、従来のようにして、次のデータ書き込みのシーケンスのために内部RAMにそのまま保持する必要はない。
なお、ここで留意すべきことは、メモリデバイスであるコピー元メモリ2としては、通常のI2Cの通信プロトコルによる通信を行っているときと同様にして、通信相手がマスタである場合と同様のデータ読出の動作、振る舞いをしていることである。同じく、コピー先メモリ3としても、通信相手がマスタである場合と同様のデータ書込の動作、振る舞いをしている。
このために、例えば時点t7からのデータ#0としての8ビットをコピー元メモリ2が出力した次の9ビット目のタイミングにおいてACKを返すのは、従来であれば、マスタということなるのであるが、本実施の形態では、データを受信して書き込んだコピー先メモリ3が行うこととなる。このようにして、コピー先メモリ3から出力されたACKは、マイクロコンピュータ1のデータ端子DATM、及びコピー元メモリ2のデータ端子DAT1にて検知される。マイクロコンピュータ1は、このACKを検知することで、コピー元メモリ2とコピー先メモリ3との間でのデータ#0の授受が正常に実行されたものと認識することができる。また、コピー元メモリ2としては、自身は、あたかも、マスタ(マイクロコンピュータ1)を通信相手と想定したデータ出力を行っているのではあるが、上記のようにしてコピー先メモリ3が出力するACKは、現象としてデータ線LdtがLレベルに駆動されるものである。従って、コピー元メモリ2としては、このACKを、例えばマスタが返してきたものとして受け取り、データ#0の授受は、正常に終了したものと認識できる。
このために、例えば時点t7からのデータ#0としての8ビットをコピー元メモリ2が出力した次の9ビット目のタイミングにおいてACKを返すのは、従来であれば、マスタということなるのであるが、本実施の形態では、データを受信して書き込んだコピー先メモリ3が行うこととなる。このようにして、コピー先メモリ3から出力されたACKは、マイクロコンピュータ1のデータ端子DATM、及びコピー元メモリ2のデータ端子DAT1にて検知される。マイクロコンピュータ1は、このACKを検知することで、コピー元メモリ2とコピー先メモリ3との間でのデータ#0の授受が正常に実行されたものと認識することができる。また、コピー元メモリ2としては、自身は、あたかも、マスタ(マイクロコンピュータ1)を通信相手と想定したデータ出力を行っているのではあるが、上記のようにしてコピー先メモリ3が出力するACKは、現象としてデータ線LdtがLレベルに駆動されるものである。従って、コピー元メモリ2としては、このACKを、例えばマスタが返してきたものとして受け取り、データ#0の授受は、正常に終了したものと認識できる。
そして、時点t7以降において、マイクロコンピュータ1が1ワード区間ごとに対応するクロックを順次、所定のタイミングで出力していくことにより、コピーに必要なデータを、データ#0〜#nまでの1ワード単位のシーケンスにより8ビット(1バイト)ずつ、コピー元メモリ2からデータ線Ldtに出力させ、この出力されたデータをコピー先メモリ3が入力して書き込むというコピー動作が繰り返し実行されることになる。
また、最後の1つ前の1バイト分のデータであるデータ#n−1をコピーするまでの1ワード区間におけるACKの授受は、データ#0の1ワード区間におけるACKと同様となる。
また、最後の1つ前の1バイト分のデータであるデータ#n−1をコピーするまでの1ワード区間におけるACKの授受は、データ#0の1ワード区間におけるACKと同様となる。
ここで、先に説明したように、マスタであるマイクロコンピュータ1は、時点t7以降において、コピー元メモリ2から出力されるデータをデータ端子DATMにて検知することで、コピー先メモリ3に書き込まれた(コピーされた)データのサイズを認識することができる。また、マイクロコンピュータ1は、コピー元メモリ2からコピー先メモリ3に対してコピーすべきデータのサイズを把握している。このためにマイクロコンピュータ1は、コピーすべきデータの総サイズと、これまでに実際にコピーされたデータのサイズとを比較することで、データ#nの出力の完了に応じて、データコピーを終了させるべきことを認識することができる。
そして、マイクロコンピュータ1は、データ#nとしての最後の8ビットのデータをカウントし、全てのデータのコピーが終了したことを認識すると、このデータ#nとしての8ビットに応答したACKの出力タイミングとなるビット期間t9〜t10において、スイッチ制御端子SWM2から出力するスイッチ制御信号をLレベルに切り換える。これにより、スイッチSW2はオフ状態となって、データ線Ldtは、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT2とをb点にて接続した部分のみが有効となり、コピー元メモリ2のデータ端子DAT1は、このデータ線Ldtから切り離されることになる。また、コピー元メモリ2のデータ端子DAT1は、プルアップ抵抗R3を介して直流電圧Vccが印加されているので、スイッチSW2がオフとなってデータ線Ldtから切り離されると同時に、無条件でHレベルにプルアップされる。
データ書込対象スレーブであるコピー先メモリ3は、I2Cの通信プロトコルに従って、このデータ#nとしての最後の8ビットを入力した場合にも、ACKを返すようにしてデータ端子DAT2をLレベル駆動する。I2Cの通信プロトコルでは、マスタとデータ書込対象スレーブとの関係において、データの授受を終了させるときは、マスタ側がデータ出力を停止すればよく、データ書込対象スレーブとしては、最後のデータ受信に応答して通常にACKを返してよいこととなっている。
マイクロコンピュータ1としては、期間t9〜t10において、コピー先メモリ3が出力したとされるACKを検知することで、コピー元メモリ2からコピー先メモリ3へのデータ#0の授受が正常に実行されたことを認識できる。この点で、コピー先メモリ3が出力したACKが、マイクロコンピュータ1に対して入力されるようにすることは必要である。
マイクロコンピュータ1としては、期間t9〜t10において、コピー先メモリ3が出力したとされるACKを検知することで、コピー元メモリ2からコピー先メモリ3へのデータ#0の授受が正常に実行されたことを認識できる。この点で、コピー先メモリ3が出力したACKが、マイクロコンピュータ1に対して入力されるようにすることは必要である。
しかしながら、コピー元メモリ2はデータ読出対象スレーブとして機能している。I2Cの通信プロトコルでは、データ読出対象スレーブは、マスタからのACKが返されないこと(NACK)を以て、データ出力の終了であることを認識するようにされている。従って、期間t9〜t10において、コピー元メモリ2がコピー先メモリ3により出力されたACKを検知すると、引き続き、読み出しデータの出力を継続してしまうことになる。つまり、コピー元メモリ2に対してはACKが返されない状態を作ることが必要になる。
このために、本実施の形態では、上記のようにして、スイッチSW2をオフとして、コピー元メモリ2のデータ端子DAT1がHレベルでプルアップされるようにしている。これにより、コピー元メモリ2は、データ#0に応答するACKが得られなかったと認識して、これ以上のデータの送信は停止することができる。
このために、本実施の形態では、上記のようにして、スイッチSW2をオフとして、コピー元メモリ2のデータ端子DAT1がHレベルでプルアップされるようにしている。これにより、コピー元メモリ2は、データ#0に応答するACKが得られなかったと認識して、これ以上のデータの送信は停止することができる。
そして、マイクロコンピュータ1は、期間t9〜t10を経過した後の時点t11のタイミングで、ストップコンディションを発生させ、時点t0から開始されたデータコピーのための通信を終了させる。
I2Cは、本来はマスタとスレーブとの間での通信を行うべきものとされている。このために、従来としては、例えばメモリデバイス間でのデータの授受には、先ず、データ読出対象スレーブとマスタとの通信によりマスタがデータを読み出して保持し、次いで、マスタがこの保持したデータをデータ書込対象スレーブに対して書き込んで記憶させるという手順を実行することとなっていたものである。
これに対して、本実施の形態では、上記のようにして、メモリデバイス間での直接的なデータの授受を実現している。ただし、本実施の形態としては、先に説明したように、メモリデバイスであるコピー元メモリ2としては、通常のI2Cの通信プロトコルによる通信を行っているときと同様にして、通信相手がマスタである場合と同様のデータ読出の動作、振る舞いをしている。同じく、コピー先メモリ3としても、通信相手がマスタである場合と同様のデータ書込の動作、振る舞いをしている。また、データの読み出し/書き込みを実行させるまでの時点t7以前におけるマイクロコンピュータ1(マスタ)の、スレーブ指定、サブアドレス指定の手順としても、基本的には、データ読み出しのためのI2Cの通信プロトコルに従い、スレーブアドレス(W)、サブアドレス、スレーブアドレス(R)を順次出力するシーケンスとなっている。そのうえで、マスタであるマイクロコンピュータ1が、スイッチSW1,SW2のオン/オフ制御をしかるべきタイミングで行うことで、上記のようにして、コピー元メモリ2の読み出し動作と、コピー先メモリ3のデータ書き込み動作を、クロックに同期させて同時的に実行させることを可能としている。これにより、I2Cの通信プロトコルに従ったうえで、マイクロコンピュータ1(マスタ)におけるデータ保持の動作を介在させることなく、コピー元メモリ2からコピー先メモリ3に対する直接的なデータ授受によるデータコピーを実現している。
これに対して、本実施の形態では、上記のようにして、メモリデバイス間での直接的なデータの授受を実現している。ただし、本実施の形態としては、先に説明したように、メモリデバイスであるコピー元メモリ2としては、通常のI2Cの通信プロトコルによる通信を行っているときと同様にして、通信相手がマスタである場合と同様のデータ読出の動作、振る舞いをしている。同じく、コピー先メモリ3としても、通信相手がマスタである場合と同様のデータ書込の動作、振る舞いをしている。また、データの読み出し/書き込みを実行させるまでの時点t7以前におけるマイクロコンピュータ1(マスタ)の、スレーブ指定、サブアドレス指定の手順としても、基本的には、データ読み出しのためのI2Cの通信プロトコルに従い、スレーブアドレス(W)、サブアドレス、スレーブアドレス(R)を順次出力するシーケンスとなっている。そのうえで、マスタであるマイクロコンピュータ1が、スイッチSW1,SW2のオン/オフ制御をしかるべきタイミングで行うことで、上記のようにして、コピー元メモリ2の読み出し動作と、コピー先メモリ3のデータ書き込み動作を、クロックに同期させて同時的に実行させることを可能としている。これにより、I2Cの通信プロトコルに従ったうえで、マイクロコンピュータ1(マスタ)におけるデータ保持の動作を介在させることなく、コピー元メモリ2からコピー先メモリ3に対する直接的なデータ授受によるデータコピーを実現している。
このようにして、コピー元メモリ2からコピー先メモリ3に対する直接的なデータコピーの動作が実現されることで、一定サイズのデータをコピーするために要する時間が短縮されることになり、データコピー処理の高速化が図られることになる。その効果は、従来との比較では、コピーすべきデータサイズの総量が大きくなるほど顕著になる。従来においては、マスタ(マイクロコンピュータ)の作業領域であるRAMサイズに制限があり、このRAMサイズとコピーすべきデータサイズの容量との関係によっては、図6(a)(b)に示したマスタによるデータの読み込み/書き込みの手順(図8のステップS101、S102)を多数回繰り返して実行する必要があったからである。このデータの読み込み/書き込みの手順においては、アドレス指定のための通信(スレーブアドレス(W)、サブアドレス、スレーブアドレス(R))を行う必要がある。また、実際には、EEPROMに対して物理的にデータが書き込まれるまでの待機時間などが含まれる。このために、現実には、データの読み込み/書き込みの手順の繰り返し回数が多くなるほど、上記アドレス指定の通信及び待機時間などが累積されて、処理時間の遅延が増長していたものである。
また、例えば、マスタとして機能するマイクロコンピュータ1などのデバイスについては、コピーするべきデータを一時保持(バッファリング)するためのRAM領域は不要となる。これにより、例えば、RAMの必要最小限なサイズはより縮小されることとなって、現実に実装されるRAMの容量についても、これまでより小さいものとすることができる。このことは、例えばコストダウンなどにつなげることができる。
また、例えば、マスタとして機能するマイクロコンピュータ1などのデバイスについては、コピーするべきデータを一時保持(バッファリング)するためのRAM領域は不要となる。これにより、例えば、RAMの必要最小限なサイズはより縮小されることとなって、現実に実装されるRAMの容量についても、これまでより小さいものとすることができる。このことは、例えばコストダウンなどにつなげることができる。
図3は、第2の実施の形態としてのデータ通信システムの構成例を示している。なお、この図において図1と同一部分については同一符号を付すこととして、その説明は省略する。
先ず、図3においても、スレーブ1,2として、コピー元メモリ2及びコピー先メモリ3が示されている。ただし、第1の実施の形態では、コピー元メモリ2とコピー先メモリ3とでスレーブアドレスについては同じく設定していたのに対して、第2の実施の形態では、互いに異なるスレーブアドレスを設定する。第2の実施の形態としては、このようにして、コピー元メモリ2とコピー先メモリ3とでスレーブアドレスが異なる場合に対応したデータコピーのための構成となる。
先ず、図3においても、スレーブ1,2として、コピー元メモリ2及びコピー先メモリ3が示されている。ただし、第1の実施の形態では、コピー元メモリ2とコピー先メモリ3とでスレーブアドレスについては同じく設定していたのに対して、第2の実施の形態では、互いに異なるスレーブアドレスを設定する。第2の実施の形態としては、このようにして、コピー元メモリ2とコピー先メモリ3とでスレーブアドレスが異なる場合に対応したデータコピーのための構成となる。
このために、図3に示す回路構成においては、スイッチSW3が追加される。このスイッチSW3は、データ線Ldtにおけるb点と、コピー先メモリ3のデータ端子DAT2との間に挿入されるようにして設けられる。また、マスタであるマイクロコンピュータ1には、スイッチSW3に対応したスイッチ制御端子SWM3が設けられ、このスイッチ制御端子SWM3から出力されるスイッチ制御信号に応じて、スイッチSW3は、オン/オフの切り換えが行われるようにして制御される。スイッチSW3も、スイッチ制御信号がHレベルのときにオンとなり、Lレベルのときにオフとなるようにされる。また、コピー先メモリ3のデータ端子DAT2に対しては、プルアップ抵抗R5を介して直流電圧Vccが印加されている。
図4は、第2の実施の形態に対応して、コピー元メモリ2からコピー先メモリ3に対してデータをコピーするための動作を示すタイミングチャートとして、時点t1からの1ワード区間においてスレーブアドレス(W)を出力する期間を示している。
先ず、時点t0においては、例えば図2における時点t0と同様にして、マイクロコンピュータ1から通信開始のためのスタートコンディションが発生される。そして、続く時点t1からの1ワード区間における先頭8ビットのスレーブアドレス(W)として、この場合のマイクロコンピュータ1は、00000000をシリアルに出力するようにされる。つまり、8ビットの全てのタイミングで、データ線LdtをLレベルにより駆動する。
そのうえで、マイクロコンピュータ1は、スレーブアドレス(W)の8ビットのシリアル出力に対応させて、スイッチ制御端子SWM2から出力するスイッチ制御信号については、LHLHHHLHのようにして駆動する。また、スイッチ制御端子SWM3から出力するスイッチ制御信号については、HLLLLLHHのようにして駆動する。
先ず、時点t0においては、例えば図2における時点t0と同様にして、マイクロコンピュータ1から通信開始のためのスタートコンディションが発生される。そして、続く時点t1からの1ワード区間における先頭8ビットのスレーブアドレス(W)として、この場合のマイクロコンピュータ1は、00000000をシリアルに出力するようにされる。つまり、8ビットの全てのタイミングで、データ線LdtをLレベルにより駆動する。
そのうえで、マイクロコンピュータ1は、スレーブアドレス(W)の8ビットのシリアル出力に対応させて、スイッチ制御端子SWM2から出力するスイッチ制御信号については、LHLHHHLHのようにして駆動する。また、スイッチ制御端子SWM3から出力するスイッチ制御信号については、HLLLLLHHのようにして駆動する。
上記のようにして、スイッチ制御端子SWM2、SWM3からスイッチ制御信号が出力されることで、スイッチSW2は、スレーブアドレス(W)の8ビットのシリアル出力に対応してオフ・オン・オフ・オン・オン・オン・オフ・オンとなるようにして制御される。また、スイッチSW3は、スレーブアドレス(W)の8ビットシリアル出力に対応してオン・オフ・オフ・オフ・オフ・オフ・オン・オンとなるようにして制御される。
スイッチSW2がオンのときには、データ線Ldt上で、マイクロコンピュータ1のデータ端子DATMとコピー元メモリ2のデータ端子DAT1とが接続されることになって、データ端子DAT1はLレベルを検知することになる。このときには、データ端子DATMによりLレベルによる駆動が行われているからである。スイッチSW2がオフのときには、コピー元メモリ2のデータ端子DAT1は、プルアップ抵抗R3を介して接続される直流電圧Vccの印加によりプルアップされ、Hレベルが検知される。
また、スイッチSW3がオンのときには、データ線Ldt上で、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT2とが接続されることになって、データ端子DAT2はLレベルを検知する。また、スイッチSW3がオフのときには、コピー先メモリ3のデータ端子DAT2は、プルアップ抵抗R4を介して接続される直流電圧Vccの印加によりプルアップされ、Lレベルが検知される。
データ端子DAT1,DAT2にて検知される信号のHレベルはビット値1として、Lレベルはビット値0として扱われる。このことから、時点t1からのスレーブアドレス(W)の期間において、コピー元メモリ2がデータ端子DAT1により入力するビット値としては、10100010となる。この値はコピー元メモリ2に割り当てられたスレーブアドレス=0xA2と一致するものであり、また、第7ビットが0であることでWRITEモードについても適正に指定している。また、コピー先メモリ3がデータ端子DAT2により入力するビット値としては、01111100となる。この値も、コピー先メモリ3に割り当てられたスレーブアドレス=0x7Cと一致し、第7ビットが0であることでWRITEモードについても適正な指定を行っている。
スイッチSW2がオンのときには、データ線Ldt上で、マイクロコンピュータ1のデータ端子DATMとコピー元メモリ2のデータ端子DAT1とが接続されることになって、データ端子DAT1はLレベルを検知することになる。このときには、データ端子DATMによりLレベルによる駆動が行われているからである。スイッチSW2がオフのときには、コピー元メモリ2のデータ端子DAT1は、プルアップ抵抗R3を介して接続される直流電圧Vccの印加によりプルアップされ、Hレベルが検知される。
また、スイッチSW3がオンのときには、データ線Ldt上で、マイクロコンピュータ1のデータ端子DATMとコピー先メモリ3のデータ端子DAT2とが接続されることになって、データ端子DAT2はLレベルを検知する。また、スイッチSW3がオフのときには、コピー先メモリ3のデータ端子DAT2は、プルアップ抵抗R4を介して接続される直流電圧Vccの印加によりプルアップされ、Lレベルが検知される。
データ端子DAT1,DAT2にて検知される信号のHレベルはビット値1として、Lレベルはビット値0として扱われる。このことから、時点t1からのスレーブアドレス(W)の期間において、コピー元メモリ2がデータ端子DAT1により入力するビット値としては、10100010となる。この値はコピー元メモリ2に割り当てられたスレーブアドレス=0xA2と一致するものであり、また、第7ビットが0であることでWRITEモードについても適正に指定している。また、コピー先メモリ3がデータ端子DAT2により入力するビット値としては、01111100となる。この値も、コピー先メモリ3に割り当てられたスレーブアドレス=0x7Cと一致し、第7ビットが0であることでWRITEモードについても適正な指定を行っている。
このようにして、第2の実施の形態では、スレーブアドレス(W)を指定するときには、マイクロコンピュータ1が出力する8ビット分のH/Lのパターンと、スイッチSW2、SW3の切り換えパターンとを組み合わせて動作させる。これによって、1回のスレーブアドレス(W)の出力により、スレーブアドレスの異なるコピー元メモリ2(スレーブ1)とコピー先メモリ3(スレーブ2)とに対して、同時にスレーブアドレス(W)を出力して、双方との通信を確立することができるようになっている。
この場合において、マイクロコンピュータ1が出力する8ビット分のH/Lのパターンと、スイッチSW2、SW3の切り換えパターンとをどのように設定するのかについては、簡単なビット演算に基づいて求めることができる。
この第2の実施の形態の場合には、マイクロコンピュータ1(マスタ)のデータ端子DATMから出力する、スレーブアドレスの元となるべきビットパターン(原スレーブアドレス)としては、8ビットを全てLレベル(ビット値0)としている。そのうえで、スイッチSW2については、コピー元メモリ2のスレーブアドレスである0xA2=(10100010)を反転した01011101を求め、この01011101に対応して、スイッチSW2のオン/オフ(スイッチ制御信号のH/L)を設定している。スイッチSW3については、コピー先メモリ3のスレーブアドレスである0x7C=(01111100)を反転した10000011を求め、このビット値に対応して、スイッチSW3のオン/オフ(スイッチ制御信号のH/L)を設定している。
この場合において、マイクロコンピュータ1が出力する8ビット分のH/Lのパターンと、スイッチSW2、SW3の切り換えパターンとをどのように設定するのかについては、簡単なビット演算に基づいて求めることができる。
この第2の実施の形態の場合には、マイクロコンピュータ1(マスタ)のデータ端子DATMから出力する、スレーブアドレスの元となるべきビットパターン(原スレーブアドレス)としては、8ビットを全てLレベル(ビット値0)としている。そのうえで、スイッチSW2については、コピー元メモリ2のスレーブアドレスである0xA2=(10100010)を反転した01011101を求め、この01011101に対応して、スイッチSW2のオン/オフ(スイッチ制御信号のH/L)を設定している。スイッチSW3については、コピー先メモリ3のスレーブアドレスである0x7C=(01111100)を反転した10000011を求め、このビット値に対応して、スイッチSW3のオン/オフ(スイッチ制御信号のH/L)を設定している。
図4に示される時点t1からの1ワード区間を終了した後の手順は、図2における時点t2に準じたものとなる。ただし、時点t5からのスレーブアドレス(R)のための1ワード区間においては、マイクロコンピュータ1(マスタ)のデータ端子DATMから出力するスレーブアドレス(R)の8ビットのパターンと、スイッチSW1についての切り換えパターンは、図4の時点t1からのスレーブアドレス(W)の8ビット区間と同様とする。これにより、コピー元メモリ2に対して、READモードを設定できる。
また、図4に示される時点t1以降の手順として期間t9〜t10に至ったときにも、図2に準じて、スイッチSW2を制御して、コピー元メモリ2のデータ端子DAT1をHレベルとして、コピー元メモリ2のデータ端子DAT1にはコピー先メモリ3からのACK(Lレベル信号)が入力されないのと等価の状態を発生させる。つまり、第2の実施の形態では、コピー用データ転送の終了タイミングで、コピー元メモリ2のデータ端子DAT1にNACKを生じさせるためのスイッチSW2を、コピー元メモリ2側のスレーブアドレス(W)を発生させるためのスイッチとしても共用しているものである。
なお、スイッチSW3については、オン/オフ切り換えは行わずに、例えばオン状態(あるいはオフ状態でもより)のままとしておいてもよい。第2の実施の形態においても、図2における時点t3〜時点t6までの期間においては、スイッチSW1をオフとして、コピー先メモリ3を信号線から切り離して、コピー先メモリ3にスレーブアドレス(R)を受信させないほうが好ましいからである。
そして、例えば図2の時点t6と同様にして、この時点からマイクロコンピュータ1が1ワード区間ごととなるタイミングでクロックを出力していくことで、第1の実施の形態と同様にして、コピー先メモリ3のデータ読み出し出力と、コピー元メモリ2のデータ入力書き込みとが同期して実行され、コピー先メモリ3からコピー元メモリ2への直接的なデータコピーが実現される。
また、図4に示される時点t1以降の手順として期間t9〜t10に至ったときにも、図2に準じて、スイッチSW2を制御して、コピー元メモリ2のデータ端子DAT1をHレベルとして、コピー元メモリ2のデータ端子DAT1にはコピー先メモリ3からのACK(Lレベル信号)が入力されないのと等価の状態を発生させる。つまり、第2の実施の形態では、コピー用データ転送の終了タイミングで、コピー元メモリ2のデータ端子DAT1にNACKを生じさせるためのスイッチSW2を、コピー元メモリ2側のスレーブアドレス(W)を発生させるためのスイッチとしても共用しているものである。
なお、スイッチSW3については、オン/オフ切り換えは行わずに、例えばオン状態(あるいはオフ状態でもより)のままとしておいてもよい。第2の実施の形態においても、図2における時点t3〜時点t6までの期間においては、スイッチSW1をオフとして、コピー先メモリ3を信号線から切り離して、コピー先メモリ3にスレーブアドレス(R)を受信させないほうが好ましいからである。
そして、例えば図2の時点t6と同様にして、この時点からマイクロコンピュータ1が1ワード区間ごととなるタイミングでクロックを出力していくことで、第1の実施の形態と同様にして、コピー先メモリ3のデータ読み出し出力と、コピー元メモリ2のデータ入力書き込みとが同期して実行され、コピー先メモリ3からコピー元メモリ2への直接的なデータコピーが実現される。
なお、コピー元メモリ2とコピー先メモリ3とで異なるスレーブアドレスを設定した場合としては、上記図4に示したようにスイッチSW2、SW3を切り換えることを行わなくとも、適正に、コピー元メモリ2をデータ読出対象スレーブとして指定し、コピー先メモリ3をデータ書込対象スレーブとして指定し、コピー先メモリ3からコピー元メモリ2への直接的なデータコピーを実行させることは可能である。
このためには、例えば、マイクロコンピュータ1は、先ず所定の信号線の回路切り換えを行って、コピー先メモリ3の通信を不可としておいて、コピー元メモリ2のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定し、さらにスレーブアドレス(R)を指定して通信方向の切り換えを行う。つまり、コピー元メモリ2に対してデータ読出対象スレーブとしての指定を行う。
続いては、マイクロコンピュータ1は、コピー先メモリ3の通信が可能な状態に復帰させ、コピー元メモリ2は通信不可の状態となるようにして信号線の回路切り換えを行う。そして、この状態で、コピー先メモリ2のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定するようにされる。つまり、コピー先メモリ3に対してデータ書込対象スレーブとしての指定を行う。
そして、ここまでの手順を実行したうえで、マイクロコンピュータ1と、コピー元メモリ2と、コピー先メモリ3との間での信号線を接続するようにして回路を切り換え、マイクロコンピュータ1による1ワード区間ごとのタイミングでのクロックの駆動を行うようにする。
このためには、例えば、マイクロコンピュータ1は、先ず所定の信号線の回路切り換えを行って、コピー先メモリ3の通信を不可としておいて、コピー元メモリ2のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定し、さらにスレーブアドレス(R)を指定して通信方向の切り換えを行う。つまり、コピー元メモリ2に対してデータ読出対象スレーブとしての指定を行う。
続いては、マイクロコンピュータ1は、コピー先メモリ3の通信が可能な状態に復帰させ、コピー元メモリ2は通信不可の状態となるようにして信号線の回路切り換えを行う。そして、この状態で、コピー先メモリ2のスレーブアドレスによりスレーブアドレス(W)を指定し、次にサブアドレスを指定するようにされる。つまり、コピー先メモリ3に対してデータ書込対象スレーブとしての指定を行う。
そして、ここまでの手順を実行したうえで、マイクロコンピュータ1と、コピー元メモリ2と、コピー先メモリ3との間での信号線を接続するようにして回路を切り換え、マイクロコンピュータ1による1ワード区間ごとのタイミングでのクロックの駆動を行うようにする。
しかしながら、このような手順では、上記のようにして、コピー元メモリ2とコピー先メモリ3とについて、時分割的にデータ読出対象スレーブ、データ書込対象スレーブの指定を行うことになる。図4に示した手順であれば、このようなコピー元メモリ2とコピー先メモリ3に対するデータ読出対象スレーブ、データ書込対象スレーブの指定は、1回のデータ読出対象スレーブを指定するためのシーケンスにより同時的に行えるものであり、それだけ効率が高く、また、時間短縮も図られることになるので、高速化に有利である。
ここで、これまでに説明した本実施の形態としてのデータ通信システムの実用例を挙げることとする。また、ここでは第1の実施の形態を適用した実用例を挙げることとするが、第2の実施の形態によるデータ通信システムも同様に適用が可能である。
実用例として先ず、製造工程において電子機器に実装されるEEPROMに対してデータを書き込む作業を行うのにあたって、本実施の形態のデータ通信システムを適用することが考えられる。このようなシステムの構成例を図5に示す。
この図においては、大きく、書込治具10と、コピー対象機器20とに分けられる。
コピー対象機器20は、所定機能に対応した例えば量産型の電子機器である。この図においては、コピー対象機器20の内部構成として、本実施の形態に関連する、CPU21とEEPROM22のみを示している。CPU21は、完成されたコピー対象機器20の動作を制御するもので、EEPROM22には、CPU21が利用すべき所定のデータが格納される。EEPROM22が、コピー先メモリ3に相当する。また、CPU21がEEPROM22による通信にはI2Cを採用している。このために、CPU21においてはI2Cに対応したクロック端子CLKCとデータ端子DATCを備えている。また、EEPROM22も、I2Cに対応したクロック端子CLKCとデータ端子DATCを備える。また、CPU21のクロック端子CLKCとクロック線Lclの間にはスイッチSW11が挿入され、CPU21のデータ端子DATCとデータ線Ldtの間にはスイッチSW12が挿入されている。これらスイッチSW11、SW12は、CPU21のスイッチ制御端子SWCから出力されるスイッチ制御信号により同期してオン/オフ制御される。
また、この場合のクロック線Lclは、コネクタCN2における所定の端子と接続され、データ線Ldtも、コネクタCN2における所定の端子と接続される。
また、この場合のCPU21は、共通端子COMMを備えている。この共通端子COMMもコネクタCN2における所定の端子と接続される。
この図においては、大きく、書込治具10と、コピー対象機器20とに分けられる。
コピー対象機器20は、所定機能に対応した例えば量産型の電子機器である。この図においては、コピー対象機器20の内部構成として、本実施の形態に関連する、CPU21とEEPROM22のみを示している。CPU21は、完成されたコピー対象機器20の動作を制御するもので、EEPROM22には、CPU21が利用すべき所定のデータが格納される。EEPROM22が、コピー先メモリ3に相当する。また、CPU21がEEPROM22による通信にはI2Cを採用している。このために、CPU21においてはI2Cに対応したクロック端子CLKCとデータ端子DATCを備えている。また、EEPROM22も、I2Cに対応したクロック端子CLKCとデータ端子DATCを備える。また、CPU21のクロック端子CLKCとクロック線Lclの間にはスイッチSW11が挿入され、CPU21のデータ端子DATCとデータ線Ldtの間にはスイッチSW12が挿入されている。これらスイッチSW11、SW12は、CPU21のスイッチ制御端子SWCから出力されるスイッチ制御信号により同期してオン/オフ制御される。
また、この場合のクロック線Lclは、コネクタCN2における所定の端子と接続され、データ線Ldtも、コネクタCN2における所定の端子と接続される。
また、この場合のCPU21は、共通端子COMMを備えている。この共通端子COMMもコネクタCN2における所定の端子と接続される。
書込治具10は、コピー対象機器20のEEPROM22(スレーブ2)に対してデータをコピーさせるための治具であり、図示するようにして、マイクロコンピュータ11及びEEPROM12を備える。EEPROM12(スレーブ1)には、コピー対象機器20のEEPROM22(スレーブ2)にコピーして格納(記憶)させるべきデータが既に記憶されている。マイクロコンピュータ11とEEPROM12が、図1に示したマイクロコンピュータ1とコピー元メモリ2に相当する。
この書込治具10におけるI2Cに対応した構成をみると、コネクタCN1におけるクロック線Lclとデータ線Ldtの接続端子が、コピー先メモリ3のクロック端子CLK1、データ端子Ldt2に置き換わっているものと考えれば、図1と同様となっていることがわかる。但し、この場合におマイクロコンピュータ11においては、共通端子COMMも設けられており、コネクタCN1における所定端子と接続されている。
コピー対象機器20のEEPROM22に対してデータをコピーするための作業を行うのに当たっては、先ず、書込治具10のコネクタCN1と、コピー対象機器のコネクタCN2とを接続する。これにより、書込治具10のマイクロコンピュータ1とコピー対象機器20のCPU21との共通端子COMMが相互に接続されることになるが、この状態となると、CPU21は、スイッチ制御端子SWCから制御信号を出力して、スイッチSW11、SW12をオフ状態とする。これにより、CPU21は、I2Cの信号線と切り離されることになるが、この結果、I2Cに対応したノードの接続態様としては、マイクロコンピュータ11をマスタとし、EEPROM12をスレーブ1とし、EEPROM22をスレーブ2とすれば、図1と同様となる。
そして、この状態のもとで、書込治具10のマイクロコンピュータ11は、先の図2に示した手順によるデータコピーのための通信手順を開始する。これにより、EEPROM12からEEPROM22へのデータコピーが実行されることになる。
このようにして、本実施の形態の構成を、電子機器の製造工程におけるEEPROMのデータコピーに適用すれば、コピーに要する時間がこれまでよりも短縮されることとなって、作業効率が向上することになる。
そして、この状態のもとで、書込治具10のマイクロコンピュータ11は、先の図2に示した手順によるデータコピーのための通信手順を開始する。これにより、EEPROM12からEEPROM22へのデータコピーが実行されることになる。
このようにして、本実施の形態の構成を、電子機器の製造工程におけるEEPROMのデータコピーに適用すれば、コピーに要する時間がこれまでよりも短縮されることとなって、作業効率が向上することになる。
また、図示は省略するが、以下のような適用も考えられる。
先ず、或る電子機器が、特定のEEPROMに記憶されるプログラム、設定データなどを使用して動作するメインシステムの構成である場合に、上記特定のEEPROMを、本実施の形態のコピー先メモリ3とし、この特定のEEPROMと同一のデータを記憶したバックアップ用のEEPROMを、コピー元メモリ2として実装する。
そして、システムに何らかの異常が生じたときに、本実施の形態としてのデータコピーを実行させる。つまり、バックアップ用のEEPROMから、上記特定のEEPROMに対してデータをコピーする。本実施の形態のデータコピーは、高速であると共に、マスターにおいてコピー用データを一時保持する必要性がないので、システムになんらかの障害が生じているときにも、より安定した動作でのコピーが実行されるのを期待できる。
また、例えば、自動車、列車、航空機などにあって、走行履歴、運行履歴などをはじめとして、例えば事故原因等の解析に利用できる情報を、コピー元メモリ2に対して逐次書き込んで記憶させていくこととする。そして、実際に事故などが生じて、システムが緊急にシャットダウンすることとなった場合において、バックアップ先として実装したコピー先メモリ3に対してデータをコピーするようにされる。このようにして、コピー先メモリ3にデータがバックアップされることで、例えば、コピー元メモリ2が衝撃などで不具合が生じたとしても、コピー先メモリ3が正常であれば、このコピー先メモリ3に記憶されたデータを利用した解析が行える。また、このような状況では、システムが緊急にシャットダウンしないうちに、できるだけ速くコピーが完了することが好ましいことから、本実施の形態のデータコピーの構成を適用することは非常に有効である。
先ず、或る電子機器が、特定のEEPROMに記憶されるプログラム、設定データなどを使用して動作するメインシステムの構成である場合に、上記特定のEEPROMを、本実施の形態のコピー先メモリ3とし、この特定のEEPROMと同一のデータを記憶したバックアップ用のEEPROMを、コピー元メモリ2として実装する。
そして、システムに何らかの異常が生じたときに、本実施の形態としてのデータコピーを実行させる。つまり、バックアップ用のEEPROMから、上記特定のEEPROMに対してデータをコピーする。本実施の形態のデータコピーは、高速であると共に、マスターにおいてコピー用データを一時保持する必要性がないので、システムになんらかの障害が生じているときにも、より安定した動作でのコピーが実行されるのを期待できる。
また、例えば、自動車、列車、航空機などにあって、走行履歴、運行履歴などをはじめとして、例えば事故原因等の解析に利用できる情報を、コピー元メモリ2に対して逐次書き込んで記憶させていくこととする。そして、実際に事故などが生じて、システムが緊急にシャットダウンすることとなった場合において、バックアップ先として実装したコピー先メモリ3に対してデータをコピーするようにされる。このようにして、コピー先メモリ3にデータがバックアップされることで、例えば、コピー元メモリ2が衝撃などで不具合が生じたとしても、コピー先メモリ3が正常であれば、このコピー先メモリ3に記憶されたデータを利用した解析が行える。また、このような状況では、システムが緊急にシャットダウンしないうちに、できるだけ速くコピーが完了することが好ましいことから、本実施の形態のデータコピーの構成を適用することは非常に有効である。
なお、本発明の概念として、データ通信装置を構成する必要最小限の要素としては、マスタとして機能するマスタ装置と、本願発明に基づいた信号線の接続回路部位となる。実施例との対応では、図1又は図2の構成から、コピー元メモリ2とコピー先メモリ3を省略したものが相当する。これまでの説明から理解されるように、コピー元メモリ2とコピー先メモリ3そのものは、I2Cの通信プロトコルに従って、あくまでも、マスタとの通信を行うという振る舞いをするものだからである。
また、上記各実施の形態として示したシステム構成は必要に応じて適宜変更されてよい。例えば、実施の形態では、1つのデータ読出対象スレーブと1つのデータ書込対象スレーブとの関係により説明したが、例えば1つのデータ読出対象スレーブに対して、2以上のデータ書込対象スレーブを設け、これらのデータ書込対象スレーブに対して、同時的にデータコピーがされるように構成することも、先に説明した実施の形態の通信手順に準じて構成することは可能である。
また、このような変更に応じて、信号線の回路系も適宜変更されて良い。特に、所定のノードを信号線から切り離すためのスイッチについては、上記各実施の形態では、必要最小限のものを備えることとしているが、しかるべき位置に対してさらにスイッチを挿入するようにして、信号切り換えの自由度、汎用性が高められるようにすることも考えられる。また、実施の形態では、コピー元メモリとコピー先メモリとについてEEPROMを挙げているが、例えばフラッシュメモリなど、これ以外の不揮発性のメモリデバイスなどとされてよい。
また、上記実施の形態では、本発明をデータコピーの用途に適用しているが、データ書込対象スレーブとしては、必ずしもデータ読出対象スレーブから読み込んだデータを内部に記憶保持させる動作を実行する必要はない。例えば、データ書込対象スレーブにて何らかのデータの解析を行うことなどを目的として、データ読出対象スレーブから読み出したデータをデータ書込対象スレーブ側に転送させる場合などにも本発明に基づく構成を適用できる。
また、このような変更に応じて、信号線の回路系も適宜変更されて良い。特に、所定のノードを信号線から切り離すためのスイッチについては、上記各実施の形態では、必要最小限のものを備えることとしているが、しかるべき位置に対してさらにスイッチを挿入するようにして、信号切り換えの自由度、汎用性が高められるようにすることも考えられる。また、実施の形態では、コピー元メモリとコピー先メモリとについてEEPROMを挙げているが、例えばフラッシュメモリなど、これ以外の不揮発性のメモリデバイスなどとされてよい。
また、上記実施の形態では、本発明をデータコピーの用途に適用しているが、データ書込対象スレーブとしては、必ずしもデータ読出対象スレーブから読み込んだデータを内部に記憶保持させる動作を実行する必要はない。例えば、データ書込対象スレーブにて何らかのデータの解析を行うことなどを目的として、データ読出対象スレーブから読み出したデータをデータ書込対象スレーブ側に転送させる場合などにも本発明に基づく構成を適用できる。
1 マイクロコンピュータ1、2 コピー元メモリ、3 コピー先メモリ、SW1,SW2,SW3 スイッチ
Claims (9)
- マスタ装置と、スレーブ装置として少なくとも第1のスレーブ装置と、第2のスレーブ装置とを、信号線が共有可能なようにして接続する接続手段と、
上記マスタ装置から、上記第1のスレーブ装置と上記第2のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第1の指定情報出力手段と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第2のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第2の指定情報出力手段と、
上記読出スレーブ指定情報が出力された後において、上記第1のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第2のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出/書込制御手段と、
上記第1の指定情報出力手段により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出/書込制御手段による上記第1のスレーブ装置からのデータの読み出しと上記第2のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第1のスレーブ装置と上記第2のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第2の指定情報出力手段により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第1のスレーブ装置との間で上記信号線が共有され、上記第2のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う第1の接続切換手段と、
を備えることを特徴とするデータ通信装置。 - 上記接続手段は、
上記マスタ装置と上記第1のスレーブ装置とを接続する上記信号線の接続点と、上記第2のスレーブ装置との間に挿入されて、上記信号線のオン/オフが可能に構成される第1のスイッチを備え、
上記第1の接続切換手段は、
上記第1の指定情報出力手段により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出/書込制御手段による上記第1のスレーブ装置からのデータの読み出しと上記第2のスレーブ装置のデータ書き込みの動作が実行されているときには、上記第1のスイッチをオンとし、
上記第2の指定情報出力手段により上記読出スレーブ指定情報が出力されるときには、上記第1のスイッチをオフとするように制御する、
ことを特徴とする請求項1に記載のデータ通信装置。 - 上記信号線は、データ線とクロック線を対として成り、
上記スイッチは、上記データ線とクロック線の何れか一方に対して備えられる、
ことを特徴とする請求項2に記載のデータ通信装置。 - 所定単位のデータの書き込みに応じた上記第2のスレーブ装置からの応答出力が行われるときに、上記マスタ装置には上記応答出力が入力され、上記第1のスレーブ装置には、上記応答出力に相当する信号が入力されないように、上記接続手段としての回路の切換を行う第2の接続切換手段、
を備えることを特徴とする請求項1に記載のデータ通信装置。 - 上記接続手段は、
上記マスタ装置と上記第2のスレーブ装置とを接続する上記信号線の接続点と、上記第1のスレーブ装置との間に挿入されて、上記信号線のオン/オフが可能に構成される第2のスイッチと、上記第1のスレーブ装置が信号線と接続される端子を所定電位とする電圧を印加する電圧印加回路を備え、
上記第2の接続切換手段は、
所定単位のデータの書き込みに応じた上記第2のスレーブ装置からの応答出力が行われるときには、上記第2のスイッチをオフの状態とするようにされている、
ことを特徴とする請求項4に記載のデータ通信装置。 - 上記第1の指定情報出力手段は、上記データ書込対象スレーブであることをスレーブアドレスにより指定するものとされており、上記第1のスレーブ装置と上記第2のスレーブ装置とでスレーブアドレスが異なる場合には、
所定のビット値による原スレーブアドレスを出力させる原スレーブアドレス出力手段と、
上記原スレーブアドレス出力手段により出力される原スレーブアドレスについて、上記第1のスレーブ装置のスレーブアドレスに変換されるようにして所定のビット位置にて反転制御を行って上記第1のスレーブ装置に入力する第1の反転制御手段と、
上記原スレーブアドレス出力手段により出力される原スレーブアドレスについて、上記第2のスレーブ装置のスレーブアドレスに変換されるようにして所定のビット位置にて反転制御を行って上記第2のスレーブ装置に入力する第2の反転制御手段とを備えて構成される、
ことを特徴とする請求項1に記載のデータ通信装置。 - 上記接続手段は、上記原スレーブアドレスが伝送される信号線における、上記マスタ装置と上記第2のスレーブ装置とを接続する接続点と、上記第1のスレーブ装置との間に挿入されて、この信号線のオン/オフが可能に構成される第1スレーブ側スイッチと、上記第1のスレーブ装置がこの信号線と接続される端子を所定電位とする電圧を印加する第1スレーブ側電圧印加回路を備えるとともに、
上記原スレーブアドレスが伝送される信号線における、上記マスタ装置と上記第1のスレーブ装置とを接続する接続点と、上記第2のスレーブ装置との間に挿入されて、この信号線のオン/オフが可能に構成される第2スレーブ側スイッチと、上記第2のスレーブ装置がこの信号線と接続される端子を所定電位とする電圧を印加する第2スレーブ側電圧印加回路を備え、
上記第1の反転制御手段は、上記第1スレーブ側スイッチのオン/オフ制御により反転制御を行い、
上記第2の反転制御手段は、上記第2スレーブ側スイッチのオン/オフ制御により反転制御を行うようにされる、
ことを特徴とする請求項6に記載のデータ通信装置。 - マスタ装置と、データ読出対象となる第1のスレーブ装置と、データ書込対象となる第2のスレーブ装置とを、信号線が共有されるようにして接続して成るデータ通信装置におけるデータ通信方法であって、
上記マスタ装置から、上記第1のスレーブ装置と上記第2のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第1の指定情報出力手順と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第2のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第2の指定情報出力手順と、
上記読出スレーブ指定情報が出力された後において、上記第1のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第2のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出/書込制御手順と、
上記第1の指定情報出力手順により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出/書込制御手段による上記第1のスレーブ装置からのデータの読み出しと上記第2のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第1のスレーブ装置と上記第2のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第2の指定情報出力手順により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第1のスレーブ装置との間で上記信号線が共有され、上記第2のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う接続切換手順と、
を実行することを特徴とするデータ通信方法。 - マスタ装置と、データ読出対象となる第1のスレーブ装置と、データ書込対象となる第2のスレーブ装置とを、信号線が共有されるようにして接続してデータ通信装置を形成する場合において、上記マスタ装置に実行させるプログラムであって、
上記マスタ装置から、上記第1のスレーブ装置と上記第2のスレーブ装置がデータ書込対象スレーブであることを指定する内容を有する書込スレーブ指定情報を出力させるための第1の指定情報出力手順と、
上記書込スレーブ指定情報が出力された後に、上記マスタ装置から、上記第2のスレーブ装置がデータ読出対象スレーブであることを指定する内容を有する読出スレーブ指定情報を出力させるための第2の指定情報出力手順と、
上記読出スレーブ指定情報が出力された後において、上記第1のスレーブ装置からのデータの読み出しの動作と、この読み出し動作と同期した上記第2のスレーブ装置におけるデータ書き込みの動作とが実行されるように制御するデータ読出/書込制御手順と、
上記第1の指定情報出力手順により上記書込スレーブ指定情報が出力されるとき、及び上記データ読出/書込制御手段による上記第1のスレーブ装置からのデータの読み出しと上記第2のスレーブ装置のデータ書き込みの動作が実行されているときには、上記マスタ装置と上記第1のスレーブ装置と上記第2のスレーブ装置との間での上記信号線の共有された接続状態を形成し、上記第2の指定情報出力手順により上記読出スレーブ指定情報が出力されるときには、上記マスタ装置と上記第1のスレーブ装置との間で上記信号線が共有され、上記第2のスレーブ装置は、上記信号線から切り離されるようにして、上記接続手段としての回路の切り換えを行う接続切換手順と、
を実行させるプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005180242A JP2007004227A (ja) | 2005-06-21 | 2005-06-21 | データ通信装置、データ通信方法、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005180242A JP2007004227A (ja) | 2005-06-21 | 2005-06-21 | データ通信装置、データ通信方法、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007004227A true JP2007004227A (ja) | 2007-01-11 |
Family
ID=37689827
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005180242A Pending JP2007004227A (ja) | 2005-06-21 | 2005-06-21 | データ通信装置、データ通信方法、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2007004227A (ja) |
-
2005
- 2005-06-21 JP JP2005180242A patent/JP2007004227A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4896450B2 (ja) | 記憶装置 | |
EP0258872B1 (en) | Serial data transfer system | |
KR100196091B1 (ko) | 주변장치 선택 시스템 | |
JP4791696B2 (ja) | データ転送メモリ及びモジュール | |
JPH09128330A (ja) | 映像表示装置 | |
US20100064083A1 (en) | Communications device without passive pullup components | |
JP4739349B2 (ja) | マルチメディア・カード・インターフェース方法、コンピュータ・プログラム及び装置 | |
KR20080078977A (ko) | Mmc 또는 sd 프로토콜을 사용하는 다수의 메모리장치들을 인터페이스하는 방법 및 시스템 | |
JPH10116187A (ja) | マイクロコンピュータ | |
JP5476956B2 (ja) | 通信システム及び通信方法 | |
JP3643539B2 (ja) | 複数の機能を有する多機能カード、同カードに用いられる単機能チップ及び多機能カードを構成するための単機能チップの動作方法 | |
JP2007004227A (ja) | データ通信装置、データ通信方法、プログラム | |
US6917994B2 (en) | Device and method for automatically generating an appropriate number of wait cycles while reading a nonvolatile memory | |
KR20050046932A (ko) | i2C 버스를 이용한 슬레이브 장치들의 상태 검사 시스템 | |
JP2011248456A (ja) | 電子装置およびマイクロコントローラ | |
CN113722261A (zh) | Spi扩展片选数目和增强读写响应时间灵活性的方法 | |
JP7006410B2 (ja) | 制御装置、画像形成装置および回路装置 | |
JP2003141062A (ja) | Iicバス制御システム | |
TWI638265B (zh) | 電子裝置、記憶體裝置及其資料交換方法 | |
US20080082704A1 (en) | Data processing apparatus for data transmission and reception and data transfer method for data transfer system including the data processing apparatus | |
JP2008186077A (ja) | バスインタフェース装置 | |
KR100298904B1 (ko) | 플래쉬메모리의 인터페이스 방법 | |
JP2000099452A (ja) | Dma制御装置 | |
KR100295683B1 (ko) | 인터아이씨의 제너럴콜 어크날리지장치및 방법 | |
US20210297283A1 (en) | Master slave communication system capable of reducing manufacturing cost, electronic device, control method for master slave communication system, and control method for electronic device |