(57)【要約】【課題】本発明はシリアルメモリサイズ自動認識方法において、事前書き込み用定型ビット列を与えて事前書き込み処理を行い、第１、第２の読み出し処理を行い、前記第１、第２の読み出したデータの組順に基づきメモリサイズを判定するようにしたので、出力データに応答ビットが付与されないＳＰＩ準拠のシリアルメモリにも対応可能なシリアルメモリサイズ自動認識方法を提供するのに著効を奏す。【解決手段】メモリサイズを自動的に判別する方法であって、定型ビット列を与え書き込みを行う処理ステップと、第１、２定型ビット列を与え第１、第２読み出し処理を行う処理ステップと、前記第１、第２の読み出し処理で得たデータから第１、第２の判定データを抽出し該当するメモリサイズを判別する第１、第２の判定処理ステップとを備えたことを特徴とするシリアルメモリの自動判別方法。【選択図】　　　　　　　　　図１
2004046649.tif 000002
【特許請求の範囲】
【請求項１】
未知のシリアルメモリにアクセスし該シリアルメモリのメモリサイズを自動的に判別する方法であって、書き込みコマンドを含む所定ビット長の事前書き込み用定型ビット列を該シリアルメモリに与え事前書き込み処理を行う処理ステップと、読み出しコマンドを含む所定ビット長の第１読み出し用定型ビット列を前記シリアルメモリに与え第１読み出し処理を行う処理ステップと、読み出しコマンドを含む所定ビット長の第２読み出し用定型ビット列を前記シリアルメモリに与え第２読み出し処理を行う処理ステップと、前記第１読み出し処理で読み出したデータから第１判定データを抽出し該当するメモリサイズを判別する第１判定処理ステップと、前記第２読み出し処理で読み出したデータから第２判定データを抽出し該当するメモリサイズを判別する第２判定処理ステップとを備えたことを特徴とするシリアルメモリの自動判別方法。
【請求項２】
前記書き込みコマンドを含む所定ビット長の事前書き込み定型ビット列のうち、前記事前書き込み定型ビット列先頭の２バイト目から４バイト目までの各１バイトのデータ或いは文字コードをそれぞれ０または４の倍数となるように設定すると共に、前記書き込みコマンドを含む所定ビット長の事前書き込み定型ビット列のうち、前記事前書き込み定型ビット列先頭の５バイト目から７バイト目までの各１バイトのデータ或いは文字コードをそれぞれ互いに異なるように設定したことを特徴とする請求項１記載のシリアルメモリの自動判別方法。
【請求項３】
前記所定ビット長の事前書き込み定型ビット列先頭の２バイト目から４バイト目までの各１バイトのデータ或いは文字コードにおいて、前記各１バイトに対する１６進表示をそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ、Ｚ２Ｚ１ｈとしたとき、前記読み出しコマンドを含む所定ビット長の第１読み出し用定型ビット列のうち、前記第１読み出し用定型ビット列先頭の２バイト目から３バイト目までの各１バイトのデータ或いは文字コードをそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ＋０１ｈとすると共に、前記読み出しコマンドを含む所定ビット長の第２読み出し用定型ビット列のうち、前記第２読み出し用定型ビット列先頭の２バイト目から４バイト目までの各１バイトのデータ或いは文字コードをそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ、Ｚ２Ｚ１ｈ＋０１ｈとしたことを特徴とする請求項１、２記載のシリアルメモリの自動判別方法。
【請求項４】
前記未知のシリアルメモリをＳＰＩ（Ｓｅｒｉａｌ　Ｐｅｒｉｐｈｅｒａｌ　Ｉｎｔｅｒｆａｃｅ）に準拠するシリアルメモリとし、前記事前書き込み用定型ビット列を１バイト書き込みコマンドと１バイトデータ００ｈと１バイト文字コード“Ｔ”と１バイト文字コード“Ｐ”と１バイト文字コード“Ｒ”と１バイト文字コード“Ｄ”と１バイト文字コード“Ｇ”からなる７バイトのビット列とし、前記第１読み出し用定型ビット列を１バイト読み出しコマンドと１バイトデータ００ｈと１バイト文字コード“Ｕ”と２バイトの任意データからなる５バイトのビット列とし、前記第２読み出し用定型ビット列を１バイト読み出しコマンドと１バイトデータ００ｈと１バイト文字コード“Ｔ”と１バイト文字コード“Ｑ”と２バイトの任意データからなる６バイトのビット列としたことを特徴とする請求項１記載のシリアルメモリの自動判別方法。
【請求項５】
前記事前書き込み用定型ビット列の１バイト文字コード“Ｒ”と１バイト文字コード“Ｄ”と１バイト文字コード“Ｇ”とが互いに異なるよう任意に設定したことを特徴とする請求項１、または請求項４記載のシリアルメモリの自動判別方法。
【請求項６】
前記第１読み出し処理で読み出したデータから第１判定データを少なくとも１バイト抽出すると共に、前記第２読み出し処理で読み出したデータから第２判定データを少なくとも１バイト抽出したことを特徴とする請求項１、請求項４、または請求項５記載のシリアルメモリの自動判別方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、シリアルメモリのメモリタイプ自動判別方法に関する。
【０００２】
【従来の技術】
近年、半導体技術の進歩により携帯端末等の電子機器に搭載されるメモリの容量はますます拡大する傾向にある。また、入出力のポート数が少ないため小型化にも対応しやすいシリアルインタフェースを備えたメモリがよく使われていることは周知のことである。
【０００３】
図１４（ａ）は一般的なシリアルメモリのブロック図を示したものである。
図１４（ａ）において、一般的なシリアルメモリは最低限４つのポートＤＩ（入力）、Ｄｏ（出力）、Ｃｓ（チップセレクト）、ＳＫ（シリアルクロック）を備えていることが知られている。
ここで、ＤＩポートは書き込みコマンドや読み込みコマンド、並びにアドレスを指定する一連のシリアルデータを入力するためのポートであり、Ｄｏはメモリから読み出したシリアルデータが出力されるポートである。
【０００４】
また、Ｃｓはメモリをアクセス可能とするためのポートであって、通常ＣｓをＬｏレベルに設定することでメモリがアクティブな状態となり、データを書き込んだり、或いは読み出すといったことができるようになっている。さらに、ＳＫはシリアルクロックを入力するためのポートであって、ＣｓをＨｉ→Ｌｏレベルに設定後、ここへシリアルクロックを入力し所定の書き込みや、読み出しを行うようになっている。
【０００５】
図１４（ｂ）（ｃ）は前記シリアルメモリの読み出しタイミングチャート、及び書き込みタイミングチャートをそれぞれ示したものである。図１４（ｂ）に示すように、読み出し時にはＤＩポートに読み出しコマンド及び読み出しアドレスを一連のシリアルデータとしてあたえ、さらにこれに同期したシリアルクロックデータをＳＫポートに与える。すると読み出しアドレスに対応した読み出しデータが前記シリアルクロック信号に同期して出力される。
【０００６】
一方、図１４（ｃ）に示すように、書き込み時には一旦ＣｓをＨｉ→Ｌｏに設定しておいて、ＤＩポートから書き込みコマンド、書き込みアドレス及び書き込みデータを一連のシリアルデータとして与えておく。そして、ＣｓをＬｏ→Ｈｉレベルに戻すと書き込みが実行される。
【０００７】
一般的に電子機器に搭載するシリアルメモリには様々なメモリサイズが用意されているが、メモリサイズによって前記読み出し（書き込み）アドレスのビット長のみが異なっている。したがって、対応するメモリサイズによってアドレスのビット長だけを変えれば、様々なメモリサイズに対応することが可能である。また、特開２０００−１２２９２１号公報において、搭載したメモリサイズが未知のものであっても、前記ＤＩポートに与えるシリアルデータの先頭とＤｏポートから出力される読み出しデータのタイミングがメモリサイズによって異なることを利用して、メモリサイズを自動認識する方法が提案されている。
【０００８】
【発明が解決しようとする課題】
しかしながら、特開２０００−１２２９２１号公報にて提案されているメモリサイズ自動認識方法は以下のような問題点がある。すなわち、従来のメモリサイズ自動認識方法は、未知のメモリのＤＩポートに所定ビットの読み出しコマンドと読み出しアドレスをあたえたとき、Ｄｏポートから出力される読み出しデータの先頭に応答ビット（Ｌｏレベル）が付与されているものを想定しており、前記読み出しデータの先頭がＨｉレベル→Ｌｏレベル（応答ビット）となる変化を検出し、前記読み出しコマンドの先頭と検出した応答ビットとの時間差によってメモリサイズを判定するようになっている。このため、例えば応答ビットが付与されていないＳＰＩ（Ｓｅｒｉａｌ　Ｐｅｒｉｐｈｅｒａｌ　Ｉｎｔｅｒｆａｃｅ）といった一般的に良く普及したインタフェースのシリアルメモリには、この自動認識方法は対応できない。
【０００９】
また、読み出しデータ先頭のＨｉレベル→Ｌｏレベルの変化を検出するためにはＤｏポートが応答ビットを出力する前のデータ不確定の状態において、ポートの出力電圧をＨｉレベルに固定しなければならないため、ポートには電源へのプルアップ抵抗を付加しなければならず部品点数が増えてしまうという問題があった。
本発明は上記問題点を解決するためになされたものであって、ＳＰＩタイプのシリアルメモリにも対応可能なメモリサイズ自動判別方法を提供することを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を解決する為に、本発明に係わるシリアルメモリ自動判定方法の請求項１記載の発明は、未知のシリアルメモリにアクセスし該シリアルメモリのメモリサイズを自動的に判別する方法であって、書き込みコマンドを含む所定ビット長の事前書き込み用定型ビット列を該シリアルメモリに与え事前書き込み処理を行う処理ステップと、読み出しコマンドを含む所定ビット長の第１読み出し用定型ビット列を前記シリアルメモリに与え第１読み出し処理を行う処理ステップと、読み出しコマンドを含む所定ビット長の第２読み出し用定型ビット列を前記シリアルメモリに与え第２読み出し処理を行う処理ステップと、前記第１読み出し処理で読み出したデータから第１判定データを抽出し該当するメモリサイズを判別する第１判定処理ステップと、前記第２読み出し処理で読み出したデータから第２判定データを抽出し該当するメモリサイズを判別する第２判定処理ステップとを備えるよう構成したものである。
従って、本構成は未知のメモリサイズを判別するための基本的処理を与える作用がある。
【００１１】
本発明に係わる請求項２記載の発明は請求項１において、前記書き込みコマンドを含む所定ビット長の事前書き込み定型ビット列のうち、前記事前書き込み定型ビット列先頭の２バイト目から４バイト目までの各１バイトのデータ或いは文字コードをそれぞれ０または４の倍数となるように設定すると共に、前記書き込みコマンドを含む所定ビット長の事前書き込み定型ビット列のうち、前記事前書き込み定型ビット列先頭の５バイト目から７バイト目までの各１バイトのデータ或いは文字コードをそれぞれ互いに異なるように設定したものである。
【００１２】
さらに、本発明に係わる請求項３記載の発明は請求項１、２において、前記所定ビット長の事前書き込み定型ビット列の書き込みコマンドを除く２バイト目から４バイト目までの各１バイトのデータ或いは文字コードにおいて、前記各１バイトに対する１６進表示をそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ、Ｚ２Ｚ１ｈとしたとき、前記読み出しコマンドを含む所定ビット長の第１読み出し用定型ビット列のうち、前記第１読み出し用定型ビット列先頭の２バイト目から３バイト目までの各１バイトのデータ或いは文字コードをそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ＋０１ｈとすると共に、前記読み出しコマンドを含む所定ビット長の第２読み出し用定型ビット列のうち、前記第２読み出し用定型ビット列先頭の２バイト目から４バイト目までの各１バイトのデータ或いは文字コードをそれぞれＸ２Ｘ１ｈ、Ｙ２Ｙ１ｈ、Ｚ２Ｚ１ｈ＋０１ｈとするように構成したものである。
従って、請求項２、３の本構成で未知のメモリに対応した、事前書き込みと読み出しに適切なビット列の設定例を与える作用がある。
【００１３】
本発明に係わる請求項４記載の発明は請求項１において、前記未知のシリアルメモリをＳＰＩ（Ｓｅｒｉａｌ　Ｐｅｒｉｐｈｅｒａｌ　Ｉｎｔｅｒｆａｃｅ）に準拠するシリアルメモリとし、前記事前書き込み用定型ビット列を１バイト書き込みコマンドと１バイトデータ００ｈと１バイト文字コード“Ｔ”と１バイト文字コード“Ｐ”と１バイト文字コード“Ｒ”と１バイト文字コード“Ｄ”と１バイト文字コード“Ｇ”からなる７バイトのビット列とし、前記第１読み出し用定型ビット列を１バイト読み出しコマンドと１バイトデータ００ｈと１バイト文字コード“Ｕ”と２バイトの任意データからなる５バイトのビット列とし、前記第２読み出し用定型ビット列を１バイト読み出しコマンドと１バイトデータ００ｈと１バイト文字コード“Ｔ”と１バイト文字コード“Ｑ”と２バイトの任意データからなる６バイトのビット列とするように構成したものである。
【００１４】
また、本発明に係わる請求項５記載の発明は請求項１、４において、前記事前書き込み用定型ビット列の１バイト文字コード“Ｒ”と１バイト文字コード“Ｄ”と１バイト文字コード“Ｇ”とが互いに異なるよう任意に設定する構成としたものである。
【００１５】
さらに、本発明に係わる請求項６記載の発明は請求項１、４、５において前記第１読み出し処理で読み出したデータから第１判定データを少なくとも１バイト抽出すると共に、前記第２読み出し処理で読み出したデータから第２判定データを少なくとも１バイト抽出するように構成したものである。
したがって請求項４、５、６の本構成で、ＳＰＩ準拠の未知のメモリサイズに対応する事前書き込みと読み出しに適切なビット列を供給し、判定の確実性と処理速度を向上させる作用がある。
【００１６】
【発明の実施の形態】
以下、図示した実施例に基づいて本発明を詳細に説明する。
図１は本発明に係わるシリアルメモリの自動判別方法の処理ステップをフローチャートで示したものである。なお、ここで説明するシリアルメモリはＳＰＩ（Ｓｅｒｉａｌ　Ｐｅｒｉｐｈｅｒａｌ　Ｉｎｔｅｒｆａｃｅ）に準拠したものを想定しているが、メモリの入出力ポートやアクセスのタイミングについては基本的には図１４に示したものと等しいので省略する。なお、図１のフローチャートはＣＰＵが実行する処理プログラムを説明したものであり、ＣＰＵが備える汎用ポートを介してシリアルメモリの各ポートにアクセスするものとする。
【００１７】
以下、図１に示したフローチャートの処理手順を説明する。
まず、図１のフローチャート全体の流れについて説明する。この処理手順においては、事前書き込み処理１において後述する所定長の書き込み用定型ビット列を複数のアドレスと共に指定して未知のシリアルメモリに書き込む。そして第１読み出し処理２によって前記書き込んだデータを読み出し、このうち２アドレスの２バイト分（１アドレス＝１バイトと仮定）を第１判定処理３にて判定すると、未知のシリアルメモリは８、９ビットタイプか１６ビットタイプかそれ以外のものに分類される。
【００１８】
さらに、８、９ビット、１６ビットいずれのタイプでもないと判定されたものについては、第２判定読み出し処理４において、前記第１読み出し処理２で指定したアドレスとは異なる別アドレスを指定し、別のデータが読み出される。そして、このうち２アドレス分の２バイトのデータを第２判定処理５において判定し、２４ビットタイプか或いは故障品かの判定をして処理フローが終了するようになっている。
【００１９】
そこで、各処理ステップを説明する前にＳＰＩ準拠のシリアルメモリのデータ構造とページ書き込み（読み出し）について説明する。一般にＳＰＩ準拠のシリアルメモリにはページという概念が使われている。これについてアドレス８ビット或いは９ビットのメモリを例に説明しよう。
図２（ａ）（ｂ）は８ビットアドレス、９ビットアドレスのメモリのデータ構造を示したものである。図２において、例えば（ａ）の８ビットアドレスのメモリについては、アドレスを００ｈ〜ＦＦｈまで指定でき、Ｄ１〜Ｄ２５６（各データは１バイト単位とする）の合計２５６バイトのデータを記憶させることができる。
【００２０】
ここで、各データの何バイトかのまとまりを１ページと呼んでいる。通常１ページはメモリサイズによって４、８、１６、３２、２５６バイトといった４の倍数のページサイズになっているのが一般的であるので、ここでは４バイト／ページとして説明している。
従って、４バイト／ページとすると８ビットアドレスのメモリは６４ページのデータ構造となっている。
【００２１】
また、図２（ｂ）に示した９ビットアドレスのメモリについては、アドレス００ｈ〜１ＦＦｈまで指定でき、Ｄ１〜Ｄ５１２の５１２バイトを格納でき、１２８ページのデータ構造となっている。
ここで、データをメモリに書き込む際、図１４においてＤＩ（入力）ポートから書き込みコマンドとアドレスを入力し、それに続いて書き込みデータを４バイト分連続的に入力する。すると、前記書き込みデータは前記アドレスから順番に１バイトずつ同一ページ内に連続的に書き込まれるようになっている。例えば、８ビットアドレスのメモリで説明すると、アドレスを００ｈに指定しそれに続いてＤ１〜Ｄ４を４バイト分のデータとして入力すると、アドレス００ｈ〜０３ｈにＤ１〜Ｄ４の１バイトずつが連続的に書き込まれる。
【００２２】
ただし、次ページをまたいでデータを連続的に書き込むことは禁止されている。
例えばアドレス００ｈを指定しそれに続いてＤ１〜Ｄ５の５バイト分を指定しても、００ｈ〜０３ｈにＤ１〜Ｄ４を書き込み、続いてＤ５を次のアドレス０４ｈに書き込もうとするが次ページに進むことが出来ない。よって、同一ページの先頭のアドレス００ｈに戻り、先に書き込まれたＤ１をＤ５で上書きするようになっている。
【００２３】
一方、読み出しの場合は読み出しコマンドと共にアドレスを入力し、それに続いてダミーデータを必要バイト分入力する。すると、該アドレスから連続したアドレス順で前記入力したダミーデータに同期してデータが１バイトずつ連続的に読み出されるようになっている。なお、読み出しの場合ダミーデータを付加すれば、ページに関係なく連続的に読み出しが可能である。ここで、ダミーデータはどのようなデータであっても構わない。
【００２４】
さて、以下図１の事前書き込み処理１について詳細に説明する。
まず、図３（ａ）にＤＩポートから入力する書き込みコマンドを含む事前書き込み用定型ビット列を図示する。
先頭のコマンド（１）は書き込みを指定するデータであり、通常１バイトのデータとして与えるが上位５ビットについては各ビットを０に設定し、下位の３ビットに書き込みに相当するビットを設定している。さらに前記１バイトの書き込みコマンド（１）に続き一連のデータ（２）〜（７）を入力する。
ここで、００ｈは１バイトのオールゼロのデータ（１６進表示）であり、また“Ｔ”、“Ｐ”、“Ｒ”、“Ｄ”、“Ｇ”は各文字の１バイトコードを示す。（以下、アドレス、データ、或いは文字コードを１６進表示で表現する場合は、例えば１Ｆｈというように、末尾にｈを添字する。）
また、前記事前書き込み用定型ビット列を入力する際、図１４に示したＣｓポートやＳＫポートには所定の信号が与えられているが、説明を簡単にするため、以下それらの説明は省略する。
【００２５】
さて、図３（ａ）に示した書き込みコマンドを含む事前書き込み用定型ビット列を８ビットアドレスのメモリに入力すると、コマンド（１）に続く（２）の１バイト（８ビット）がアドレスとして認識されるので、以降（３）〜（７）の５バイトは書き込みデータとして処理される。
ただし、前述した理由により１ページ目と２ページ目をまたいで書き込むことは出来ない。従って、図３（ｂ）に示すように１ページ目のアドレス００ｈ〜０３ｈに順次“Ｔ”“Ｐ”“Ｒ”“Ｄ”と書き込まれ、さらにアドレス００ｈのデータＤ１が“Ｔ”→“Ｇ”に上書きされた結果、００ｈ〜０３ｈのアドレスにはそれぞれ“Ｇ”“Ｐ”“Ｒ”“Ｄ”が格納される。
【００２６】
一方、事前書き込み用定型ビット列を９ビットアドレスメモリに入力すると、コマンド（１）の先頭から５ビット目（ここでは０に設定）が最上位アドレスとして解釈され、後続（２）の１バイトは下位８ビットのアドレスとして解釈されるので、８ビットアドレスの例と同様に図４（ｂ）に示すように、０００ｈ〜００３ｈのアドレスにそれぞれ“Ｇ”“Ｐ”“Ｒ”“Ｄ”が格納される。
【００２７】
さらに、事前書き込み用定型ビット列を１６ビットアドレスのメモリに入力した結果を図５（ａ）（ｂ）に図示する。この場合コマンド（１）に続く（２）（３）の２バイト分のデータ００ｈ“Ｔ”がアドレスとしてデコードされ、（４）〜（７）の４バイト分は書き込みデータとして処理される。ここで、“Ｔ”の１バイト文字コードは５４ｈであるため、１６ビットアドレスは００５４ｈとして認識される。その結果、メモリには００５４ｈ〜００５７ｈのアドレスにそれぞれ“Ｐ”“Ｒ”“Ｄ”“Ｇ”のデータが格納される。なお、メモリが１０〜１５ビットアドレスのものであっても、メモリは１バイト毎にアドレス情報を読み込み、必要なアドレスビット数のみデコードするようになっているため書き込み結果は全く同じものとなる。
【００２８】
また、事前書き込み用定型ビット列を２４ビットアドレスのメモリに入力した結果を図６（ａ）（ｂ）に示す。この例では書き込みコマンド（１）に続く（２）〜（３）の３バイト分００ｈ、“Ｔ”、“Ｐ”がアドレスとしてデコードされ、（５）〜（７）の３バイト分が書き込みデータとして処理される。ここで、“Ｔ”及び“Ｐ”の文字コードはそれぞれ５４ｈ、５０ｈであるので、アドレス００５４５０ｈ〜００５４５２ｈにはそれぞれ“Ｒ”、“Ｄ”、“Ｇ”が書き込まれる。なお、対象のメモリがアドレス１７〜２３ビットのものであっても、メモリは１バイト毎にアドレス情報を読み込み、必要なアドレスビット数のみデコードするようになっているため書き込み結果は全く同じものとなる。
【００２９】
以上、事前書き込み処理例について説明したが、８、９ビットアドレスメモリの事前書き込み処理例については、ページ単位が４バイトを超えてしまうとき先頭のアドレスに書き込まれたデータのみが異なる。この場合の結果を図７（ａ）〜（ｃ）に示す。
なお、以上説明した事前書き込みにおいて、書き込みアドレスは事前書き込み用
定型ビット列の先頭から２バイト目〜４バイト目の３バイト分００ｈ、“Ｔ”（＝５４ｈ）、“Ｐ”（＝５０ｈ）が決定している。このとき、後述する第１、第２読み出し処理を実行したとき、ページをまたがってデータを読み出さないように、極力ページの先頭から順次データを書き込むように、前記アドレスを決定する各１バイトを、それぞれ０または４の倍数になるように設定している。
以上、事前書き込み処理１について説明した。
【００３０】
次に、図１の第１読み出し処理について説明する。対象のシリアルメモリからデータを読み出す際、まずシリアルメモリのＤＩ（入力）ポートに読み出しコマンドを含む第１読み出し用定型ビット列を５バイト入力する。すると、対象のシリアルメモリのＤｏ（出力）ポートからデータが出力されるが、対象のシリアルメモリのタイプに応じて出力されるデータが異なる。以下、そのメカニズムを説明する。図８は対象のシリアルメモリが８、９ビットアドレスタイプと仮定したときの第１読み出し結果について図示したものである。なお、図８（ａ）は１ページが４バイトの例、図８（ｂ）は１ページが８バイト以上の例を示している。
【００３１】
図８（ａ）に示すように、ＤＩ（入力）から１バイトの読み出しコマンド（１）に続いて（２）〜（５）の４バイトのシリアルデータを入力する。ここで、前記第１読み出し用定型ビット列の（３）“Ｕ”（＝５５ｈ）については、前述した事前書き込み用定型ビット列の（３）“Ｔ”（＝５４ｈ）に対して、５４ｈに０１ｈを加算した値となるように設定する。
すると、対象のシリアルメモリが８ビットアドレスの場合、コマンド（１）につづく（２）の１バイトデータ００ｈをアドレスとして認識し（３）〜（５）の３バイト分をダミーデータとして認識する。或いは、対象のシリアルメモリが９ビットアドレスの場合、コマンド（１）の５ビット目（０に設定）と（２）の合計９ビット分をアドレス０００ｈとして認識し（３）〜（５）の３バイト分をダミーデータとして認識する。
【００３２】
ここで、前記ダミーデータはアドレス００ｈ（０００ｈ）につづいてデータを連続的に読み出すために付加する任意のデータであって、ここでは（３）〜（５）の３バイト分に対応して、図３、４で示したアドレス００ｈ〜０２ｈ（０００ｈ〜００２ｈ）のデータが連続的に読み出され、対象のシリアルメモリのＤｏポートから“Ｇ”“Ｐ”“Ｒ”が出力される。なお、必要ビット分のアドレスが入力されるまでは、Ｄｏポートの出力は不定でありデータが確定されない。
一方、図８（ｂ）に示すように、対象のシリアルメモリが８、９ビットアドレスタイプで１ページが８バイト以上の場合、図７（ｂ）（ｃ）に図示したアドレス００ｈ〜０２ｈ（０００ｈ〜００２ｈ）のデータが読み出され、対象のシリアルメモリのＤｏポートからは“Ｔ”“Ｐ”“Ｒ”が出力される。
【００３３】
また、対象とするメモリが１６ビットアドレスタイプの場合は、図９（ａ）に示すように、コマンド（１）につづく（２）（３）の２バイト分がアドレス００５５ｈとして認識され、（４）（５）がダミーデータとして認識される。従って対象のシリアルメモリのＤｏポートからは、図５に図示したアドレス００５５ｈ、００５６ｈのデータ“Ｒ”“Ｄ”が出力される。このとき、読み出しの先頭アドレスが事前書き込みの先頭アドレスに対して１つ繰り上がっていることに注意されたい。
【００３４】
また、対象とするメモリが２４ビットアドレスタイプの場合は図９（ｂ）に示すように、コマンド（１）につづく（２）（３）（４）の３バイト分がアドレス００５５００ｈとして認識され（５）がダミーデータとして認識される。
なお、アドレス００５５００ｈは事前書き込みにおいて指定したアドレス（図６参照）と異なるものを指定しているので、ここにはどのようなデータが記憶されているか分からない状態、いわゆるデータが“不定”な状態となっている。
ここで、コマンド（１）を与えてから３バイト目及び４バイト目に出力される（４）（５）に対応したデータの部分を第１判定データと呼び、次の第１判定処理用に用いる。以上、各メモリタイプに対する第１読み出し処理２について説明した。
【００３５】
次に、図１における第１判定処理３について説明する。
この処理ステップでは前述した第１読み出し処理２で読み出したデータに基づき、第１判定データを抽出する。なお、第１読み出し処理２の結果、対象とするシリアルメモリタイプは第１判定データの組順によって図１０に示す表のいずれかに分類される。
第１判定データが“Ｐ”“Ｒ”の組順である場合、対象のシリアルメモリは８、９ビットアドレスタイプと判定される。第１判定データが“Ｒ”“Ｄ”の組順である場合は、対象のシリアルメモリは１６ビットアドレスタイプ（１０〜１６ビットアドレス）と判定される。第１判定データが“不定”“不定”、すなわち上記組順以外のものであれば、対象のシリアルメモリは２４ビットアドレスタイプ（１７〜２４ビットアドレス）或いは故障品として判定される。なお、前記第１判定データとして２バイト分抽出したが、１バイト分を抽出して処理速度を向上させても良い。
以上第１判定処理３について説明した。
【００３６】
次に図１の第２読み出し処理４について説明する。
前述した第１判定処理３の結果、２４ビットアドレスタイプ（１７〜２４ビットアドレス）或いは故障品と判定された対象については、この処理ステップ以降で故障品であるか否かの判定を行うようになっている。
そこで、まず図１１に示すように対象のメモリのＤＩポートに対して読み出しコマンドを含む（１）〜（６）の６バイトの第２読み出し用定型ビット列を入力する。
ここで、（１）の１バイトは読み出しコマンドであり、これにつづく（２）００ｈ、（３）“Ｔ”、（４）“Ｑ”の３バイトをアドレス００５４５１ｈとして認識させ（５）（６）はダミーデータとして認識させる。
【００３７】
ただし、前記第２読み出し用定型ビット列の（２）（３）については前述した事前書き込み用定型ビット列の（２）（３）の００ｈ、“Ｔ”と同じものに設定してあり、さらに前記第２読み出し用定型ビット列の（４）については前述した事前書き込み用定型ビット列の（４）“Ｐ”（＝５０ｈ）に対応して、前記５０ｈに０１ｈを加算した値５１ｈとなるように設定してある。
すると、対象のメモリが２４ビットアドレスタイプであれば、Ｄｏポートからは（５）（６）のダミーデータに同期して“Ｄ”“Ｇ”　が出力される。（図６を参照）
もし対象とするメモリが故障品であれば、“Ｄ”“Ｇ”の組順以外の“不定”“不定”となる。
【００３８】
ここで、コマンド（１）を与えてから４バイト目及び５バイト目に出力される（５）（６）に対応したデータの部分を第２判定データと呼び、次の第２判定処理用に用いる。なお、対象のメモリが８、９ビットアドレスタイプ或いは１６ビットアドレスタイプ（１０〜１６ビットアドレス）のものであったとしても、Ｄｏポートから出力される最後の２バイト分は必ず“Ｒ”“Ｄ”となり（図１２参照）、２４ビットアドレスタイプを８、９ビットタイプと判定する可能性は全くないことに注意されたい。以上、第２読み出し処理結果について説明した。
【００３９】
次に、図１における第２判定処理について説明する。
この処理ステップでは前述した第２読み出し処理で読み出したデータに基づき、第２判定用データを抽出する。なお、第２読み出し処理の結果、対象とするシリアルメモリタイプは第２判定データの組によって図１３に示す表のいずれかに分類される。第２判定データが“Ｄ”“Ｇ”である場合、対象のシリアルメモリは２４ビットアドレスタイプ（１７〜２４ビットアドレス）に特定することができる。
第２判定データが“不定”“不定”、すなわち上記“Ｄ”“Ｇ”の対以外の場合は故障品として判定することができる。ここで、前記第２判定データを２バイトとしたが、これを１バイトとして処理速度を向上させてもよい。
【００４０】
なお、以上説明した実施例については、対象とするシリアルメモリが１バイト単位でアドレスを付与するタイプを想定しているが、アトメル社製のＡＴ２５Ｆ５１２のようなアドレスが１６ビットであるが、アドレスを３バイト分与えなければならないタイプもまれにではあるが存在する。このような場合は、２４ビットタイプとして判定される。このような例について以下説明を補足する。
【００４１】
例えばアドレスが１３ビットであるが、３バイト分のアドレスを付与しなければならないタイプを例として説明する。このようなタイプのメモリは、与えた３バイトアドレスの下位１３ビット分のアドレスしか認識（デコード）しない。
よって、事前書き込みにおいて、図６に示したデータを書き込んだとき、指定した先頭のアドレス００５４５０ｈの下位１３ビット分しかデコード（アドレス範囲でいうと００００００ｈ〜００１ＦＦＦｈ番地しか指定できない）しないため、これを００１４５０ｈと解釈し、アドレス００１４５０ｈ〜００１４５２ｈに“Ｒ”“Ｄ”“Ｇ”のデータを書き込んでしまう。
【００４２】
一方、第１読み出し処理２を行ったとき、００５５００ｈからデータを読み出そうとするが、前述した同じ理由でアドレスが００１５００ｈと解釈され、ここからデータが読み出される。したがって、このとき第１判定データは“不定”“不定”となり対象のメモリは２４ビットアドレスタイプ或いは故障品として判定される。
【００４３】
しかしながら、つづいて第２読み出し処理を行うと、アドレス００５４５１ｈ、００５４５２ｈからデータを読み出そうとするが、前記同じ理由によりアドレスが００１４５１ｈ、００１４５２ｈと解釈されここからデータが読み出される。
したがって、第２判定データは“Ｄ”“Ｇ”となり、図１３の判定表が示すように対象のメモリは２４ビットタイプと確定される。従って、実効のアドレス長が短いタイプであっても、アドレス付与が何バイトのタイプであるかという観点に着目すると、現状すべてのメモリは８、９ビットアドレスタイプか１６ビットアドレスタイプか２４ビットアドレスタイプかの何れかに分類することが可能である。
【００４４】
以上、図１における全ての処理ステップについて説明した。
なお、対象のシリアルメモリのＤＩポートに入力する事前書き込み用定型ビット列のコマンドを除く２バイト目以降のビット列は００ｈ、“Ｔ”、“Ｐ”、“Ｒ”、“Ｄ”、“Ｇ”に限定するものではなく、他の組み合わせであってもよい。例えば事前書き込み処理１で任意のページ内にデータを書き込んだ後、第１、第２読み出し処理を実行したとき同一ページ内のデータを読み出すように、ビット列の２バイト目〜４バイト目の各１バイトを、０または４の倍数となるように、＊０ｈ、＊４ｈ、＊８ｈ、＊Ｃｈのいずれかのタイプになるように設定しておけばよい。（ただし、＊は０、１、２、３、４、５、６、７、８、９、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆのいずれか）
【００４５】
このとき、第１読み出し用定型ビット列の３バイト目（図８（ａ）の（３）の１バイト）は、事前書き込み用定型ビット列の３バイト目（前記“Ｔ”＝５４ｈに相当）の文字コードに対して０１ｈ加算した値となるように設定し（本実施例では“Ｕ”＝５５ｈに相当）、また第２読み出し用定型ビット列の４バイト目（図１１の（４）の１バイト）は、事前書き込み用定型ビット列の４バイト目（前記“Ｐ”＝５０ｈに相当）の文字コードに対して０１ｈ加算するように設定（本実施例では“Ｑ”＝５１ｈに相当）しておけばどのような組み合せであってもよい。
すなわち、上述した＊０ｈ、＊４ｈ、＊８ｈ、＊Ｃｈの何れかに対して０１ｈを加算した＊１ｈ、＊５ｈ、＊９ｈ、＊Ｄｈの何れかのタイプになるように設定しておけば、対象のシリアルメモリが４の倍数のページ構成であれば、第１、第２読み出し処理においてページをまたいでデータが読み出されることはないので、前述した実施例と同様な判定ができる。
【００４６】
なお、抽出した第１判定データと第２判定データが互いに異なる文字コードとなるようにした方が判定の確実性が高いので、事前書き込み用定型ビット列の２バイト目以降は各１バイトが互いに異なるように設定した方がよい。
【００４７】
以上、図１に示した簡単な処理ステップに従えば、ＳＰＩ準拠のシリアルメモリであれば８、９ビットアドレスタイプ、１６ビットアドレスタイプ、２４ビットアドレスタイプの何れかに容易に分類することが可能である。しかも、対象とするメモリがＤｏポートのデータ出力に特定な応答ビットを含む必要がないため、Ｄｏポートに現れるポートの不定状態に影響されずにメモリタイプの判定が可能であり、Ｄｏポートのプルアップ抵抗を不要にすることができる。
【００４８】
【発明の効果】
本発明に係る請求項１〜４記載のシリアルメモリのメモリサイズ自動認識方法は、未知のシリアルメモリに対して事前書き込み用定型ビット列を与えて、事前書き込み処理を行い、前記事前書き込み処理を実行後、第１の読み出し処理と第２の読み出し処理を行い、前記第１、第２の読み出したデータから第１判定データ、及び第２判定データを抽出して、前記第１判定データと第２判定データの組順に基づき未知のメモリタイプを判定するようにしたので、また本発明に係る請求項５記載の発明は前記第１判定データ及び前記第２判定データをそれぞれ少なくとも１バイトとしたので、読み出しデータに応答ビットが付与されないメモリタイプであっても容易にメモリタイプを確実に判別可能な、処理速度が向上したシリアルメモリ自動認識方法を提供するのに著効を奏す。
【図面の簡単な説明】
【図１】本発明に係るメモリタイプ自動判別方法の処理フローチャート
【図２】８、９ビットアドレスタイプのデータ構造
【図３】８ビットアドレスタイプ（４バイト／ページ）の事前書き込み結果の例
【図４】９ビットアドレスタイプの事前書き込み結果の例
【図５】１６ビットアドレタイプの事前書き込み結果の例
【図６】２４ビットアドレスタイプの事前書き込み結果の例
【図７】８、９ビットタイプアドレスタイプ（８バイト／ページ）の事前書き込み結果
【図８】８、９ビットアドレスタイプの第１読み出し処理結果の例
【図９】１６ビットアドレスタイプ、または２４ビットアドレスタイプの第１読み出し処理結果の例
【図１０】第１判定データの組み合わせ例
【図１１】２４ビットアドレタイプの第２読み出し処理結果の例
【図１２】８、９ビットアドレスタイプ、または１６アドレスタイプの第２読み出し処理結果の例
【図１３】第１判定データ及び第２判定データの組み合わせ例
【図１４】シリアルメモリのブロック図、及びアクセスのタイミングチャート
【符号の説明】
１…事前書き込み処理
２…第１読み出し処理
３…第１判定処理
４…第２読み出し処理
５…第２判定処理
【図１】
2004046649.tif 000003
【図２】
2004046649.tif 000004
【図３】
2004046649.tif 000005
【図４】
2004046649.tif 000006
【図５】
2004046649.tif 000007
【図６】
2004046649.tif 000008
【図７】
2004046649.tif 000009
【図８】
2004046649.tif 000010
【図９】
2004046649.tif 000011
【図１０】
2004046649.tif 000012
【図１１】
2004046649.tif 000013
【図１２】
2004046649.tif 000014
【図１３】
2004046649.tif 000015
【図１４】
2004046649.tif 000016