(57)【特許請求の範囲】
【請求項１】
ホストより発行されたコマンドに応じた動作を行うマイクロプロセッサ及び制御装置を備えるコントローラと、前記コントローラに接続された第１の半導体メモリとを有する半導体メモリファイルシステムにおいて、
前記第１の半導体メモリに加えて、複数の半導体メモリをさらに備え、
前記第１の半導体メモリは、コマンドおよびデータのうち少なくとも一方のためのバッファを内蔵し、
前記コントローラは、前記第１の半導体メモリへのコマンドおよびデータのうち少なくとも一方を出力するデータ信号線および該データ信号線の同期に使用するクロック出力を、前記バッファを内蔵した第１の半導体メモリに接続し、
前記第１の半導体メモリは、前記内蔵バッファでバッファした前記コマンドおよびデータのうち少なくとも一方と、前記同期用クロックとを、前記複数の半導体メモリのうちの１番目の半導体メモリへのデータ信号線およびクロック出力として出力し、
前記１番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、同期用クロックとを、前記複数の半導体メモリのうちの２番目の半導体メモリへのデータ信号線およびクロック出力として出力し、該２番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、同期用クロックとを、３番目の半導体メモリへのデータ信号線およびクロック出力として出力し、以下同じく、ｍ−１番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、ｍ番目の半導体メモリへのデータ信号線およびクロック出力として出力することで、前記第１の半導体メモリと前記複数の半導体メモリとを縦列に接続し、
前記縦列接続の最後に接続された前記m番目の半導体メモリからのデータ信号
線及び同期用クロックを、前記コントローラのデータ入力及びクロック入力へ接続され、
また、前記半導体メモリが縦列に接続されてなるｎ個の一連の半導体メモリグループ（以下１列の半導体メモリグループと呼ぶ）が、複数並列に配置されており、
前記コントローラから出力される前記データ信号線およびクロック出力は、前記各列の半導体メモリグループの１番目の半導体メモリにそれぞれ接続され、
前記各列の半導体メモリグループの最後の半導体メモリのデータ信号線およびクロック出力は、各々対応する信号がwired接続され、前記コントローラのデータ入力とクロック入力へ接続され、
前記複数配置された各列の半導体メモリグループに含まれている半導体メモリの各々は、メモリ選択信号入力をさらに備え、
前記半導体メモリのデータおよび制御信号入力に対応するバッファ出力は、前記メモリ選択信号入力がネゲート状態にあるときは各出力が"Hi-z"状態となり、前記メモリ選択信号入力がアサート状態のときは有効な値を出力し、
前記各列の半導体メモリの前記メモリ選択信号入力は、前記コントローラから出力される前記各列にそれぞれ対応した、共通のメモリ選択信号出力に接続されること
を特徴とする半導体メモリファイルシステム。
【請求項２】
請求項１に記載の半導体メモリファイルシステムにおいて、
前記コントローラから出力されるデータは、前記各半導体メモリを特定するメモリアドレスと、該当半導体メモリに対して動作を指示するコマンドと、該当半導体メモリ内のデータのアドレスを特定するアドレスおよびデータのうち少なくとも一方とから構成される命令形式を使用し、
前記各半導体メモリは、データを記憶保持するメモリ部と、前記コマンドを取り込むコマンドレジスタと、該コマンドレジスタの内容に応じた動作を制御するコマンド制御部と、前記メモリアドレスを取りこむメモリアドレスレジスタと、前記半導体メモリの固有のアドレスを記憶するメモリアドレス設定レジスタと、前記メモリアドレスレジスタと前記メモリアドレス設定レジスタとの値を比較する比較器とを備え、
前記コマンド制御部は、前記比較器の比較結果が一致していたときのみコマンドに応じた動作を行うこと
を特徴とする半導体メモリファイルシステム。
【請求項３】
請求項２に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリは、予め定めた特定のコマンドが前記コントローラから発行されたときは、前記メモリアドレスの比較結果の一致に関わらず動作すること
を特徴とする半導体メモリファイルシステム。
【請求項４】
請求項２または３に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリの前記メモリアドレス設定レジスタの値は、電源投入時の初期化によって全bitが"1"に初期化され、前記コントローラから発行される予め定めた特定のコマンド（以降メモリアドレス再設定コマンドと呼ぶ）によって前記メモリアドレス設定レジスタの値を再設定できるものであって、
前記メモリアドレス設定レジスタの再設定が行われる半導体メモリは、前記メモリアドレス再設定コマンドに含まれる前記メモリアドレス設定レジスタに再設定すべき値に相当するデータを、前記メモリアドレス設定レジスタが再設定される前の値に変更して後段の半導体メモリへ出力すること
を特徴とする半導体メモリファイルシステム。
【請求項５】
請求項１に記載の半導体メモリファイルシステムにおいて、
前記同一列の半導体メモリグループの各半導体メモリのメモリアドレス設定レジスタは、そのbitのうち複数のbitの値が共通となり、該共通のbitの値が各列
毎に異なるように設定するものであり、
前記各列の半導体メモリへ出力するメモリ選択信号が同時にアサートされた場合でも、前記コントローラから発行されるコマンドのメモリアドレスが各列の共通bitと一致しない限り、各列の最後の半導体メモリはコントローラへ出力する
データ信号およびクロックを有効な出力をせず"Hi-z"のままとし、前記コマンドのメモリアドレスが各列の共通bitと一致したときのみ、各列の最後の半導体メ
モリは前記コントローラへ出力するデータ信号およびクロックを有効にし、
前記各列の最後の半導体メモリが、当該列の最後の半導体メモリであることを区別するための入力を備えたこと
を特徴とする半導体メモリファイルシステム。
【請求項６】
請求項１乃至５のいずれかに記載の半導体メモリファイルシステムにおいて、  前記半導体メモリの前記メモリアドレス設定レジスタのアドレスを設定するメモリアドレス設定信号入力をさらに設け、
前記メモリアドレス設定入力がアサートされたときに、前記アドレス設定レジスタの値が前記半導体メモリのデータ出力から次段の半導体メモリへ順送りに出力され、前記半導体メモリのメモリアドレス設定レジスタが全体として１つのシフトレジスタとして機能し、前記コントローラからのメモリアドレスの設定値をクロックに同期してシフトしつつ設定すること
を特徴とする半導体メモリファイルシステム。
【請求項７】
ホストより発行されたコマンドに応じた動作を行うマイクロプロセッサ及び制御装置を備えるコントローラと、前記コントローラに接続された第１の半導体メモリとを有する半導体メモリファイルシステムにおいて、
前記第１の半導体メモリに加えて、複数の半導体メモリをさらに備え、
前記半導体メモリは、データバスを分配するバスバッファと、当該半導体メモリに入力される制御信号に影響されない独立バッファとをさらに備え、
前記コントローラから接続される前記データバスに複数の第１の半導体メモリを接続し、
前記複数の第１の半導体メモリそれぞれが前記データバスを分配し、分配した各々の該データバスに該データバスの分配を行わない半導体メモリを複数個接続して、該分配を行った半導体メモリを含めて半導体メモリグループを構成し、
前記制御信号は、前記半導体メモリグループの半導体メモリが有する独立バッファにより信号をバッファし分配すること
を特徴とする半導体メモリファイルシステム。
【請求項８】
請求項７に記載の半導体メモリファイルシステムにおいて、
前記コントローラから出力されるデータは、前記各半導体メモリを特定するメモリアドレスと、該半導体メモリに対して動作を指示するコマンドと、該半導体メモリ内のデータのアドレスを特定するアドレスおよびデータのうち少なくとも一方から構成される命令形式を使用し、
前記半導体メモリは、データを記憶保持するメモリ部と、前記コマンドを取り込むコマンドレジスタと、該コマンドレジスタの内容に応じた動作を制御するコマンド制御部と、前記メモリアドレスを取りこむメモリアドレスレジスタと、当該半導体メモリの固有のアドレスを記憶するメモリアドレス設定レジスタと、該メモリアドレスレジスタと該メモリアドレス設定レジスタとの値を比較する比較器とを備え、
前記コマンド制御部は、前記比較器の比較結果が一致していたときのみコマンドに応じた動作を行うこと
を特徴とする半導体メモリファイルシステム。
【請求項９】
請求項８に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリは、予め定めた特定のコマンドが前記コントローラから発行されたとき、前記メモリアドレスの比較結果の一致に関わらず動作することを特徴とする半導体メモリファイルシステム。
【請求項１０】
請求項８または９に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリの前記メモリアドレス設定レジスタの値を設定するためのメモリアドレス設定信号入力と、シリアルデータ入力と、シリアルデータ出力とを設け、
前記メモリアドレス設定入力がアサートされたときに、前記コントローラから出力されるシリアルデータが、前記半導体メモリのシリアル入力を経由して当該半導体メモリの前記アドレス設定レジスタのシリアル入力に接続され、前記アドレス設定レジスタのシリアル出力が、当該半導体メモリのシリアルデータ出力から次段の半導体メモリのシリアル入力へ出力し、
以下同じく前記一連の半導体メモリが縦列に接続され、
前記縦列の最後の半導体メモリのシリアル出力は、前記コントローラのシリアル入力に接続され、
クロックに同期して前記各半導体メモリの前記メモリアドレス設定レジスタが全体として１つのシフトレジスタとして機能するように、前記コントローラからのメモリアドレスの設定値をシフトして設定し、
前記縦列に接続された一連の半導体メモリの数を前記コントローラが計数可能にしたこと
を特徴とする半導体メモリファイルシステム。
【請求項１１】
請求項８または９に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリは、当該半導体メモリの前記メモリアドレス設定レジスタの値を設定するメモリアドレス設定信号入力と、前記メモリアドレス設定レジスタの値が設定されたことを示すメモリアドレス設定完了信号出力とを備え、
前記コントローラよりメモリアドレス設定信号を１番目の半導体メモリのメモリアドレス設定信号入力へ接続し、該１番目の半導体メモリのメモリアドレス設定完了信号出力を２番目の半導体メモリのメモリアドレス設定信号入力へ接続し、２番目の半導体メモリのメモリアドレス設定完了信号出力を３番目の半導体メモリのメモリアドレス設定信号入力へ接続し、以降同じく信号を接続し、１連の半導体メモリグループの最後の半導体メモリのメモリアドレス設定完了信号出力を前記コントローラのメモリアドレス設定完了入力へ接続し、
前記半導体メモリは、当該半導体メモリ内のレジスタの初期化後は前記メモリアドレス設定完了信号出力をネゲートし、
前記半導体メモリは、前記メモリアドレス設定信号入力がアサートされかつ前記メモリアドレス設定完了信号出力がネゲートされかつ前記メモリ選択信号入力がアサートされたときのみ、前記コントローラより出力される前記クロックに同期して前記コントローラからデータバスへ出力されるメモリアドレス設定レジスタ用データを前記メモリアドレス設定レジスタに取り込んだ後、メモリアドレス設定完了信号出力をアサートもしくはメモリアドレス設定信号入力のレベルを出力することにより、前記１連の半導体メモリグループのメモリアドレス設定レジスタにメモリアドレスを設定すること
を特徴とする半導体メモリファイルシステム。
【請求項１２】
請求項１１に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリの初期化後の前記メモリアドレス設定レジスタの値を、前記コントローラより発行されるメモリアドレス再設定コマンドを使用して設定し、  前記半導体メモリのメモリアドレス設定レジスタに設定できるのは、前記メモリアドレス設定信号入力がアサートされかつ前記メモリアドレス再設定コマンドが指定するメモリアドレスの半導体メモリであって、
前記半導体メモリのメモリアドレス設定レジスタの設定後に当該半導体メモリの前記メモリアドレス設定レジスタの値を設定するメモリアドレス設定信号入力と、前記メモリアドレス設定レジスタの値が設定されたことを示すメモリアドレス設定完了信号出力とを備え、
前記コントローラよりメモリアドレス設定信号を１番目の半導体メモリのメモリアドレス設定信号入力へ接続し、該１番目の半導体メモリのメモリアドレス設定完了信号出力を２番目の半導体メモリのメモリアドレス設定信号入力へ接続し、該２番目の半導体メモリのメモリアドレス設定完了信号出力を３番目の半導体メモリのメモリアドレス設定信号入力へ接続し、以降同じく信号を接続して、１連の半導体メモリグループの最後の半導体メモリのメモリアドレス設定完了信号出力を前記コントローラのメモリアドレス設定完了入力へ接続し、
前記半導体メモリは、当該半導体メモリ内のレジスタの初期化後はメモリアドレス設定完了信号出力をネゲートし、
前記半導体メモリは、当該半導体メモリについて前記メモリアドレス設定信号入力がアサートされかつ前記メモリアドレス設定完了信号出力がネゲートされかつ前記メモリ選択信号入力がアサートされたときのみ、前記コントローラより出力されるクロックに同期して前記コントローラからデータバスへ出力されるメモリアドレス設定レジスタ用データを前記メモリアドレス設定レジスタに取り込み、その後、前記メモリアドレス設定完了信号出力をアサートもしくは前記メモリアドレス設定信号入力のレベルを出力することにより、前記１連の半導体メモリグループのメモリアドレス設定レジスタにメモリアドレスを設定すること
を特徴とする半導体メモリファイルシステム。
【請求項１３】
請求項１に記載の半導体メモリファイルシステムにおいて、
前記コントローラから縦列に接続された前記半導体メモリの各々にデータ出力制御入力及びデータ出力制御出力を設け、
前記縦列に接続された半導体メモリの最後の半導体メモリの前記データ出力制御端子入力は、他の半導体メモリのデータ出力制御出力から出力されるデータ出力制御信号を受け取り、
前記データ出力制御信号がアサートされたときに、前記縦列に接続された半導体メモリの最後の半導体メモリに入力されたデータ及びクロック入力を前記コントローラへ出力する機能を有し、
前記縦列に接続された半導体メモリのうちの前記他の半導体メモリの前記データ出力制御出力は、前記コントローラが当該半導体メモリからデータまたは当該半導体メモリの状態をデータとして読み取る場合に前記コントローラから発行されたRead系コマンドに対応して指定された半導体メモリが発行されたコマンドに対応したデータを出力するとき前記データ出力制御出力から前記データ出力制御信号をアサートする機能を有すること
を特徴とする半導体メモリファイルシステム。
【請求項１４】
請求項７乃至１２のいずれかに記載の半導体メモリファイルシステムにおいて、
前記半導体メモリにデータ出力制御入力及びデータ出力制御出力を設け、
前記１連の半導体メモリグループ中の前記コントローラに接続されたデータバスを前記半導体メモリグループ中の他の半導体メモリへ分配する半導体メモリは、当該半導体メモリの前記データ出力制御入力により該他の半導体メモリからのデータ出力制御信号を受け取り、該データ出力制御信号がアサートされたとき、該データ出力制御信号をアサートした半導体メモリからのデータを前記コントローラへ出力する機能を有し、
前記他の半導体メモリの前記データ出力制御出力は、前記コントローラが当該半導体メモリからデータまたは当該半導体メモリの状態をデータとして読み取る場合に前記コントローラから発行されたRead系コマンドに対応して指定された半導体メモリが発行されたコマンドに対応したデータを出力するとき前記データ出力制御出力から前記データ出力制御信号をアサートする機能を有すること
を特徴とする半導体メモリファイルシステム。
【請求項１５】
ホストより発行されたコマンドに応じた動作を行うマイクロプロセッサ及び制御装置を備えるコントローラと、前記コントローラに接続された第１の半導体メモリとを有する半導体メモリファイルシステムにおいて、
前記第１の半導体メモリに加えて複数の半導体メモリをさらに備え、
前記第１の半導体メモリは、コマンドおよびデータのうち少なくとも一方のためのバッファを内蔵し、
前記コントローラは、前記第１の半導体メモリへのコマンドおよびデータのうち少なくとも一方を出力するデータ信号線および該データ信号線の同期に使用するクロック出力を、前記バッファを内蔵した第１の半導体メモリに接続し、
前記第１の半導体メモリは、前記内蔵バッファでバッファした前記コマンドおよびデータのうち少なくとも一方と、前記同期用クロックとを、前記複数の半導体メモリのうちの１番目の半導体メモリへのデータ信号線およびクロック出力として出力し、
前記１番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、同期用クロックとを、前記複数の半導体メモリのうちの２番目の半導体メモリへのデータ信号線およびクロック出力として出力し、該２番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、同期用クロックとを、３番目の半導体メモリへのデータ信号線およびクロック出力として出力し、以下同じく、ｍ−１番目の半導体メモリに入力されたコマンドおよびデータのうち少なくとも一方と、ｍ番目の半導体メモリへのデータ信号線およびクロック出力として出力することで、前記第１の半導体メモリと前記複数の半導体メモリとを縦列に接続し、
前記縦列接続の最後に接続された前記m番目の半導体メモリからのデータ信号
線及び同期用クロックを、前記コントローラのデータ入力及びクロック入力へ接続され、
前記コントローラから出力されるデータは、前記第１の半導体及び前記複数の半導体からなる半導体グループのうちの半導体メモリを特定するメモリアドレスと、該半導体メモリに対して動作を指示するコマンドと、該半導体メモリ内のデータのアドレスを特定するアドレスおよびデータのうち少なくとも一方から構成される命令形式を使用し、
前記半導体グループ内の各半導体メモリは、データを記憶保持するメモリ部と、前記コマンドを取り込むコマンドレジスタと、該コマンドレジスタの内容に応じた動作を制御するコマンド制御部と、前記メモリアドレスを取りこむメモリアドレスレジスタと、当該半導体メモリの固有のアドレスを記憶するメモリアドレス設定レジスタと、該メモリアドレスレジスタと該メモリアドレス設定レジスタとの値を比較する比較器とを備え、
前記コマンド制御部は、前記比較器の比較結果が一致していたときのみコマンドに応じた動作を行い、
また、前記半導体メモリが縦列に接続されてなるｎ個の一連の半導体メモリグループ（以下１列の半導体メモリグループと呼ぶ）が、複数並列に配置されており、
前記コントローラから出力される前記データ信号線およびクロック出力は、前記各列の半導体メモリグループの１番目の半導体メモリにそれぞれ接続され、
前記各列の半導体メモリグループの最後の半導体メモリのデータ信号線およびクロック出力は、各々対応する信号がwired接続され、前記コントローラのデータ入力とクロック入力へ接続され、
前記複数配置された各列の半導体メモリグループに含まれている半導体メモリの各々は、メモリ選択信号入力をさらに備え、
前記半導体メモリのデータおよび制御信号入力に対応するバッファ出力は、前記メモリ選択信号入力がネゲート状態にあるときは各出力が"Hi-z"状態となり、前記メモリ選択信号入力がアサート状態のときは有効な値を出力し、
前記各列の半導体メモリの前記メモリ選択信号入力は、前記コントローラから出力される前記各列にそれぞれ対応した、共通のメモリ選択信号出力に接続されること
を特徴とする半導体メモリファイルシステム。
【請求項１６】
請求項１５に記載の半導体メモリファイルシステムにおいて、
前記半導体グループのうちの各半導体メモリは、予め定めた特定のコマンドが前記コントローラから発行されたとき、前記メモリアドレスの比較結果の一致に関わらず動作すること
を特徴とする半導体メモリファイルシステム。
【請求項１７】
請求項１５または１６に記載の半導体メモリファイルシステムにおいて、
前記半導体メモリの前記メモリアドレス設定レジスタの値を設定するためのメモリアドレス設定信号入力と、シリアルデータ入力と、シリアルデータ出力とを設け、
前記メモリアドレス設定入力がアサートされたときに、前記コントローラから出力されるシリアルデータが、前記半導体メモリのシリアル入力を経由して当該半導体メモリの前記アドレス設定レジスタのシリアル入力に接続され、前記アドレス設定レジスタのシリアル出力が、当該半導体メモリのシリアルデータ出力から次段の半導体メモリのシリアル入力へ出力し、
以下同じく前記一連の半導体メモリが縦列に接続され、
前記縦列の最後の半導体メモリのシリアル出力は、前記コントローラのシリアル入力に接続され、
クロックに同期して前記各半導体メモリの前記メモリアドレス設定レジスタが全体として１つのシフトレジスタとして機能するように、前記コントローラからのメモリアドレスの設定値をシフトして設定し、
前記縦列に接続された前記半導体メモリの数を前記コントローラが計数可能にしたこと
を特徴とする半導体メモリファイルシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、回転機構を有しない半導体を用いたファイルシステムに係わり、特に大容量化を行うのに適した半導体ファイルシステムに関する。
【０００２】
【従来の技術】
半導体記憶を用いたファイルシステムは電気的消去可能な不揮発性メモリを用いて構成することで、低消費電力、省スペースを可能とする。また半導体プロセスの微細化により半導体メモリの容量は増加しつつはあるがハードディスクのような大容量にするには数多くの半導体メモリを接続する必要があり、各半導体メモリに対して半導体メモリの数だけＩＣセレクト信号を用意したり、メモリＩＣにＩＣアドレス設定端子を用意してＩＣセレクト信号を削減している。このような従来技術は、例えばUS Patent 540859 Jul.4、1995に開示されている。
【０００３】
【発明が解決しようとする課題】
半導体メモリを用いて省スペース大容量のファイルシステムを構成する場合、半導体メモリの持つデータ容量はハードディスクシステムに対して１桁以上小さなものとなっているため、多数の半導体メモリを使用する必要がある。
【０００４】
多数の半導体メモリを接続するために半導体メモリと、コントローラや、半導体メモリ同士を共通の信号線で接続する場合、通常コントローラや、半導体メモリの出力バッファの駆動能力は、10個ぐらいで多くても16個、20個程度が限度と考えられ、これ以上に多くの半導体メモリを使用するには、バッファＩＣなどを用いて複数に分けて接続する必要がある。
【０００５】
しかしながら、バッファＩＣを使用することによって、ＰＣカードなどの小型の実装エリアの限られた機器ではバッファＩＣによって実装できる半導体メモリの数が制限されてしまう。
【０００６】
また、半導体メモリを制御するコントローラＩＣで複数に分ける場合では、前記コントローラＩＣの端子数を増やすことになり、前記コントローラＩＣのパッケージサイズが大きくなり、結果として半導体メモリの数が制限されてしまう。
【０００７】
本発明は上述した問題点を考慮してなされたもので、その目的は大容量化に有利な構成を有する半導体メモリファイルシステムを提供することにある。
【０００８】
また、本発明の他の目的は、半導体メモリにデータや制御信号に対するバッファを内蔵させた半導体メモリファイルシステムを提供することにある。
【０００９】
【課題を解決するための手段】
上記目的を達成するために本発明は、ホストより発行されたコマンドに応じた動作を行うマイクロプロセッサ及び制御装置を備えるコントローラと、前記コントローラに接続された第１の半導体メモリとを有する半導体メモリファイルシステムにおいて、前記第１の半導体メモリに加えて複数の半導体メモリをさらに備え、前記第１の半導体メモリはデータ及び制御信号のうち少なくとも一方のためのバッファを内蔵し、前記複数の半導体メモリは前記第１の半導体メモリより分配した信号により前記コントローラと接続されることを特徴とする。
【００１０】
【発明の実施の形態】
本発明の一実施形態を図２を用いて説明する。
【００１１】
本実施形態における半導体メモリファイルシステムは、例えば図２に示すように、ＨＯＳＴ１よりデータ信号制御信号が接続され、マイクロプロセッサ３、制御部４より成るコントローラ２と、メモリ10とより構成される。
【００１２】
ＨＯＳＴ１より種々のコマンドが発行され、ＨＯＳＴ１とコントローラ２との間で、ＨＯＳＴ１より発行されたコマンドに対応したデータのやり取りを行う。マイクロプロセッサ３はＨＯＳＴ１より発行されたコマンドを解釈し、発行されたコマンドに対応した動作をコントローラ２へ指示する。
【００１３】
例として、ＨＯＳＴ１より発行されたコマンドがReadコマンドの場合、マイクロプロセッサ３はメモリ10から、ＨＯＳＴ１が発行したReadコマンドのアドレスに対応したメモリ10にあるデータを、コントローラ２を介して読み出し、該読み出したデータをＨＯＳＴ１のRead動作に合わせて順次出力する。また、ＨＯＳＴ１が発行したコマンドがWriteコマンドの場合、ＨＯＳＴ１によってコントローラ２に書き込まれたデータを、ＨＯＳＴ１が指定したアドレスに対応したメモリ10のアドレスに書き込む。
【００１４】
本発明で使用する個別のメモリ100aの内部ブロック構成の一例を図１に示す。メモリ100aは、上記図２のメモリ10を構成するもので、メモリ部11、コマンド制御部12、コマンドレジスタ13、チップアドレスレジスタ14、比較器15、チップアドレス設定レジスタ16、及びＳＥＬ17を備えている。メモリ100aはコマンド発行式メモリで、主な入力端子としてＤＩ200、ＣＫＩ300及びＣＭＤＩ400が有り、出力端子としてＤＯ201、ＣＫＯ301及びＣＭＤＯ401がある。また、この他に不揮発性メモリ100aの電源投入時等に初期化を行うリセット端子等がある。
【００１５】
ＤＩ200はＣＫＩ300に同期して送られる。ＣＭＤ400はＤＩ200から送られてくるデータの区切りを示す信号で、図４に示すように、ＤＩ200はマイクロプロセッサ３の指示でコントローラ２から出力され、チップアドレス2000、コマンド2100、データアドレス2300、データ2200の順で送られる。データアドレス2300、データ2200は発行されるコマンドが必要としない場合は省略される。
【００１６】
図４に示す例では、まずコントローラ２から出力されるＣＭＤ400が"L"レベルから"H"レベルにアサートしたことを、図１のコマンド制御部12が検出し、チップアドレスレジスタ14へＤＩ200の入力制御信号24をアサートし、チップアドレスレジスタ14へチップアドレス2000を取り込み、入力制御信号24はＤＩ200からチップアドレス2000の取込の終了でネゲートされる。
【００１７】
比較器15はチップアドレスレジスタ14とチップアドレス設定レジスタ16の値を比較し、コマンド制御部12へ比較結果25を出力する。
【００１８】
さらに、コマンド制御部12は、チップアドレス2000の取込の終了時点のチップアドレスレジスタ14とチップアドレス設定レジスタ16の比較結果25の値を取り込んで、コマンド制御部12の内部ステータスとして保持し、ＤＩ200からコマンド2100をコマンドレジスタ制御信号23をアサートし、コマンドレジスタ13に取り込む。
【００１９】
通常、チップアドレスレジスタ14とチップアドレス設定レジスタ16の値が一致していればコマンド制御部12では取り込んだコマンドに応じた動作を行うが、チップアドレスレジスタ14とチップアドレス設定レジスタ16の値比較する必要のないコマンドの場合は、比較結果を無視して取り込んだコマンドに応じた動作を行う。
【００２０】
ＣＥ700はメモリのチップイネーブル入力でＣＥ700がアサートされているのをうけてコマンド制御部12は、ＤＯ201、ＣＫＯ301、ＣＭＤＯ401から値を出力するように制御し、またＣＥ700のネゲートをうけて前記ＤＯ201、ＣＫＯ301、ＣＭＤＯ401の出力を"Hi-z"状態となるように制御する。
【００２１】
図６は、図１におけるＤＩ200とＤＯ201をシリアルから複数のbit幅にした時のメモリ100bの内部ブロック構成例を示す。
【００２２】
本例のメモリ100bは基本的には図１に示す構成のメモリ100aと同じような回路構成となっている。異なるのはＤＩ200、ＤＯ201のデータ幅が1bitから多数bitになっている。
【００２３】
このため、本例のメモリ100bでは、コマンドレジスタ13、チップアドレスレジスタ14、チップアドレス設定レジスタ16が図１ではシフトレジスタ構成だったのがデータをパラレルにロードする形式のレジスタになっている。ただし、コマンドレジスタ13、チップアドレスレジスタ14、チップアドレス設定レジスタ16のbit数がＤＩ200、ＤＯ201の bit数より多い場合は、複数回に分けてデータをロードする。
【００２４】
図３は、図１または図６に示された構成のメモリ100〜159を有するメモリ10と、コントローラ２との接続例を示す。
【００２５】
図３においてコントローラ２からＣＫＯ300、ＣＭＤＯ400及びＤＯ200がメモリ100、110、120、・・・、159の対応するＤＩ、ＣＫＩ、ＣＭＤＩ入力へ接続され、コントローラ２からＣＥ０がメモリ100、101、102、・・・、109のＣＥ入力へ、またコントローラ２からＣＥ１がメモリ110、111、112、・・・、119のＣＥ入力へ、コントローラ２からＣＥ2がメモリ120、121、122、・・・、129のＣＥ入力へ接続されている。
【００２６】
図３に示すように本例では、メモリ100、101、102、・・・、109は縦列に接続され、同様にメモリ110、111、112、・・・、119及び、メモリ120、121、122、・・・、129、メモリ150、151、152 、・・・、159もそれぞれ縦列に接続され、メモリ109、119、129、・・・、159のＤＯ出力はWired接続されコントローラ２のＤＩ入力へ出力され、同様に、メモリ109、119、129、・・・、159のＣＫＯ出力もWired接続されコントローラ２のＣＫＩ入力へ出力される。
【００２７】
このときのメモリ109、119、129、・・・、159のＤＯ309及びＣＫＯ209は、図４に示すようにデータ2201だけをメモリ109がコントローラ２へ出力し、他のメモリ119、129、 ・・・、159の出力は"Hi-z"になる
このようにメモリを縦列に接続することによって縦列に接続されたメモリとメモリとの信号線の接続が１対１になる。このため、メモリの信号端子の配置を最適化し、基板に実装する時の信号の配線長を短くすることが可能となり、等長配線も簡単にできる。
【００２８】
図３において、メモリを縦列に接続する時には、コントローラ２や各メモリのＤＩに入力されるデータやコマンドやアドレスデータとＣＫＩ入力に入力されるクロック信号との間に発生するスキューがメモリを通過するたびに増えてゆくため、クロックの周波数とメモリを縦列に接続する個数を考慮する必要がある。
【００２９】
メモリ100へ発行する基本的なコマンドは"Read"、"Write"、"Erase"、"Status Read"等があるが、本発明では上記以外に図１のチップアドレスレジスタ16にチップアドレスを再設定できるコマンドを有する。
【００３０】
本発明の特徴となる上記"チップアドレス再設定"コマンドについて、図２及び図５を用いて説明する。なお、本明細書のタイミングチャートの説明において断りがない限り、タイミングチャートの波形の"Hi"レベルをアサート状態もしくはアサーション、"Lo"レベルをネゲート状態もしくはネゲーションと表記する。
【００３１】
図５において、ＣＫＩ300に同期して入力されるＤＩ200は、チップアドレス2000、コマンド2100として"チップアドレス再設定"コマンド、データ2200として新アドレスが順次入力される。ここで、チップアドレス2000、チップアドレスレジスタ14への取り込みとチップアドレスの比較、および、コマンド2100のコマンドレジスタ13への取り込みは前述と同様に行われる。
【００３２】
コマンド2100がチップアドレス再設定コマンドと検出したコマンド制御部12は、コマンド2100の後に続くデータである新チップアドレス2200をチップアドレス設定レジスタ16に取り込むために制御信号26をアサートし、チップアドレス設定レジスタ16に新チップアドレスを取り込むと同時に、ＤＯ201からは新チップアドレス2200を取り込む前の旧チップアドレス2201を出力する。
【００３３】
また、図１、図６において電源投入時等に行うメモリのリセットによって、メモリ100のチップアドレス設定レジスタ16の値は、全てのbitが"1"に初期化される。ここで図１もしくは図６におけるチップアドレスレジスタ14、及びチップアドレス設定レジスタ16のbit数を8bitとして、図３におけるメモリのチップアドレスの設定処理について説明する。
【００３４】
メモリのリセット信号は簡略のため図３においては表記していないが、メモリのリセットによって図３の全てのメモリ100、101、102、・・・、159のチップアドレス設定レジスタ16の値は16進数で"FF"になる。以後、16進数で"1B"を"0x1B"というように表現する。
【００３５】
まず、図３のメモリ100、101、102、・・・、109のチップアドレスの設定について、図５を参照して説明する。
【００３６】
メモリのリセット後、各メモリ100、101、102、・・・、109のチップアドレス設定レジスタ16の値は"0xFF"となっている。ここでまず、図１のマイクロプロセッサ３はコントローラ２に対してＣＥ０〜ＣＥｎのうちＣＥ０のみをアサートすることを指示する。これによってメモり100〜109までが動作可能状態となり、メモリ110〜159までは各出力端子は"Hi-z"となる。
【００３７】
次に、マイクロプロセッサ３はコントローラ２に、メモリに対して"チップアドレス再設定"コマンドの発行を指示する。このときのチップアドレス2000は"0xFF"を、また新チップアドレス2200には"0xFF"以外の固有の値を、例えば"0x00"を与える。前記動作でメモリ100のチップアドレス設定レジスタ16の値は"0xFF"から"0x00"になり、メモリ100のＤＯ201からは旧チップアドレス2201として"0xFF"が出力される。したがって、メモリ101以降には新チップアドレスが"0xFF"が入力されるのでメモリ101以降のチップアドレス設定レジスタ16の値は"0xFF"のままとなる。
【００３８】
同様にもう一度、"チップアドレス再設定"コマンドの発行を新チップアドレス2200の値を"0xFF"以外の新たな値で行うことで、メモリ101のチップアドレス設定レジスタ16が再設定される。このときメモリ100は、すでに新しいチップアドレスに再設定されているので今回のコマンドには反応せず、メモリ100のチップアドレス設定レジスタ16の値は変らない。
【００３９】
以降同様に、"チップアドレス再設定"コマンドを新チップアドレス2200の値を順次新たな値で発行することで、メモリ109までのチップアドレスの設定ができる。
【００４０】
ここで、メモリ100からメモリ109までのメモリに対して"チップアドレス再設定"コマンドの発行を行っている間は、コントローラ２のＤＩ入力には新アドレス2200は"0xFF"が返ってくる。これに対してメモリ100からメモリ109までのメモリの個数以上に"チップアドレス再設定"コマンドの発行を行った場合、"チップアドレス再設定"コマンドの発行した回数がメモリの個数を越えた時点でコントローラ２のＤＩ入力に返ってくる値が"0xFF"でなく再設定しようとした値が返って来る。これを利用して発行した回数を数えることで、メモリ100からメモリ109までの、メモリ100およびメモリ109を含めたメモリの数を知ることができる。
【００４１】
以降、同様にしてメモリ110からメモリ119、メモリ120からメモリ129、・・・、メモリ150からメモリ159を設定する。
【００４２】
このようにメモリにバッファを内蔵し縦列に接続することによりコントローラ２のメモリに接続する端子の増加を最少に押さえることができる。以下に、16×16＝256個のメモリを接続する場合について、本実施形態による効果を説明する。
【００４３】
通常、１系統のデータバスに接続できるメモリは16個程度が限度と考えられており、よって、256個のメモリを接続するには、データバスが16系統必要となる。このような場合、従来のメモリコントローラの信号線の数は、16系統×8bit＝128個の端子が必要となる。これは、本来なら256個分のメモリのCEが必要になることとなる。
【００４４】
しかし、本実施形態の図３に示した接続方法によれば、メモリコントローラはＤＯ出力にメモリ16個、ＤＩ入力にメモリ16個を接続することができる。ここで、図３に示すメモリは行列の状態となるように配置されている。したがって、データバスに8＋8＝16個の端子とＣＥ用に16個の端子とで、本実施形態によれば(8＋8)＋16＝32の端子だけが必要となる。
【００４５】
したがって、本実施形態の図３に示した接続方法によれば、ＣＥ用の端子を含めてもメモリコントローラに必要となる端子数は、従来技術の場合よりも非常に少ない数に押さえることができるという、大きな効果を奏する。
【００４６】
また、ＣＥ700と併用することで、ＣＥ700がネゲート状態にある間メモリが出力する信号を"Hi-z"にし、出力の消費する電流を抑え、メモリ全体の消費電力を抑えることができる。
【００４７】
前述の説明でメモリのチップアドレスの設定について説明したが、次に他の方法によるチップアドレスの設定について説明する。
【００４８】
図１や、図３、図６では省略しているが電源投入後にメモリの初期化を行う時、メモリへ出力するリセット信号をアサートするが、このリセット信号とコントローラ２から出力するＣＭＤＯのレベルの組み合わせで、チップアドレスの設定を行う。
【００４９】
すなわち、リセット信号がアサートされ、ＣＭＤＯ信号がネゲートされている時はメモリの初期化を行い、リセット信号がアサートされ、ＣＭＤＯ信号がアサートされればメモリのチップアドレスの設定モードになるようにする。以下、図７を用いて説明する。図７においてリセットは図３のコントローラ２もしくは図２のマイクロプロセッサ３から図３のメモリ100、101、・・・、159へ出力される。但し、メモリの数が多くなるので図３のコントローラ２から出力されるＣＭＤＯと同様の配線方法を取る。
【００５０】
図７においてまず、リセット信号がアサートされることで各メモリの初期化を行い、全てのメモリのチップアドレス設定レジスタ16の値を"0xFF"にする。
【００５１】
次にリセット信号がアサート、ＣＭＤＯをアサートしチップアドレス設定モードにし、メモリ100、101、・・・、109のチップアドレスを設定するためにＣＥ０をアサートする。これによりメモリ100、101、・・・、109のＤＯ201はチップアドレス設定レジスタ16の値を選択し出力する。この状態でコントローラ２のＤＯ出力から各メモリ100、101、・・・、109へ設定するアドレスをコントローラ２から出力するＣＫＯに同期して出力してゆく。
【００５２】
コントローラ２のＤＯ出力からメモリへ出力するデータは、まず最初にリセットでアドレス設定レジスタに初期化された"0xFF"以外の値を(ここでは"0x00")を出力し、以降順次図７のように"0xFF"から値を１づつ減じた値を出力してゆく。
【００５３】
メモリ100は、前記コントローラ２からのＤＯ出力をＣＫＯの立上がりでチップアドレス設定レジスタ16に取り込み、取り込んだデータはＣＫＯの立ち下がりでＳＥＬ17を経由しメモリ100のＤＯ201へ出力する。以下同様にしてメモリ101、102、・・・、109とデータがシフトし、メモリ109のＤＯ出力先のコントローラ２のＤＩ入力に入力されるデータが"0xFF"から"0x00"になるまでコントローラ２のＤＯ出力から１づつ減じたデータ及びＣＫＯ出力からクロックを順次出力する。
【００５４】
これによりメモリ100〜109までのチップアドレス設定レジスタ16の値はメモリ109が"0xFF"となり、メモリ109からメモリ100へ順次１づつ減じた値が設定され、メモリ100〜109までの間にメモリ100とメモリ109とを含めて物理的に256個のメモリを接続でき、256個接続されていれば図７のメモリ100、101、102のチップアドレス設定レジスタ16の値は"0x00"、"0x01"、"0x02"が設定される。
【００５５】
その後ＣＥ０をネゲートしてメモリ100〜109のチップアドレス設定レジスタ16の設定を終了する。以下同様に、メモリ110〜119、メモリ120〜129、・・・、メモリ150〜159についてチップアドレス設定レジスタ16の設定を行う。その後、前記のチップアドレス設定コマンドを使用して各メモリのチップアドレスを所望の値に再設定する。
【００５６】
次に、図６のメモリにおいて双方向データバスを扱うことを可能にしたメモリ100cについて、図８、図９を参照して説明する。なお、図９に示されている全てのメモリは、図８に示す構成を備えているものとする。
【００５７】
図８に示す本例のメモリ100cは、図６に対してＯＥ入力800、ＷＥ入力900、ＳＩ入力600、ＳＯ出力601、ＩＮ入力500、ＯＵＴ出力501、及びＳＥＬ19が追加され、ＤＩ200及びＤＯ201は双方向データバスが扱えるようになっている。
【００５８】
ＯＥ入力800、ＷＥ入力900はＤＩ200とＤＯ201の入出力制御に利用し、図９のようにコントローラ２のＤに接続されたデータバスはメモリ100、110、120、、、150のＤＩに接続され、各メモリ100、110、120、、、150のＤＯから分配される。
【００５９】
すなわちメモリ100、110、120、、、150はメモリとしての機能の他にバスバッファの機能を併せて持つことになり、メモリ100のＤＯより分配されるデータバスにはメモリ101、102、103、・・・、109のＤＩに接続され、メモリ110のＤＯより分配されるデータバスにはメモリ111、112、113、・・・、119のＤＩに、メモリ150のＤＯより分配されるデータバスにはメモリ151、152、153、・・・、159のＤＩに接続される。
【００６０】
コントローラ２から出力される制御信号ＣＥ、ＯＥ、ＷＥ、ＣＫＯ、ＣＭＤＯは図９に示すように各メモリのＩＮ、ＯＵＴを使用して分配する。
【００６１】
図８におけるＳＩ500とＳＯ501は図９のように双方向データバスを使用する場合、入力のデータバスと出力のデータバスが分離されていないため、電源投入直後の初期化後の前記"チップアドレス再設定"コマンドが使用できない。このため、本例では、図９のようにコントローラ２のＳＯ出力からメモリ100のＳＩ入力に接続され、順次メモリ100のＳＯ出力よりメモリ101のＳＩ入力、、、、メモリ159のＳＯ出力からコントローラ２のＳＩ入力に接続し、メモリ100からメモリ159までのチップアドレス設定レジスタ16を１個のシフトレジスタとして構成するモードを持つことで、電源投入時等のメモリの初期化後のチップアドレス設定レジスタの設定に使用する。
【００６２】
このような構成によれば、すべてのメモリのチップアドレス設定レジスタを併せた全体で、実質的に1個のシフトレジスタとして機能させることができる。
【００６３】
以上のようにメモリ内に、図１、図３、図８に示すようなデータバスを分配するバスバッファや制御信号を分配するために使用する独立したバッファ等のバッファを内蔵することにより、データや制御信号のためのバッファ用のＩＣが不要となり、コントローラ２に接続する信号線数の増加を最少にできる。したがって、コントローラ２もしくは制御部４をＩＣ化する場合において、メモリに接続する端子の数を少なくできるのでＩＣのパッケージを小さくできるため高密度実装に有利となる。
【００６４】
図10に、図１および図６、図８におけるメモリ100における比較器15の詳細構成の一例を示す。
【００６５】
比較器15は、図10に示すように、チップアドレスレジスタ14とチップアドレス設定レジスタ16の対応するbitどうしの値の一致をＥＮＯＲ31で比較し、全てのbitが一致したとき、すなわちＥＮＯＲ31の出力が全て"Hi"レベルになったことをＡＮＤ32でANDをとることで検出し、チップアドレスの一致出力25をアサートしコマンド制御部12に伝える。
【００６６】
またアドレスグループ設定レジスタ18およびＯＲ−ＡＮＤ33は、図３におけるメモリ109、119、129、、、、159および図９におけるメモリ100、110、120 、、、150で有効に働く機能で、例えば図３においてコントローラ２から出力されるＣＥ０およびＣＥ１、ＣＥ２、、、、ＣＥｎ等が同時にアサートされた状態にあるときでも、コントローラ2が発行するコマンドがメモり101に対するコマンドの場合に、メモリ109はメモリ100からメモリ109に対して発行されたコマンドであることを認識するのに使用し、メモリ109から出力するＤＯ出力を有効にする。
【００６７】
一例として図３においてメモリ100からメモリ159のチップアドレス設定レジスタ16に設定した値について、メモリ100が"0x00"で、メモリ101が"0x01"、メモリ102が"0x02"、、、メモリ109が"0x07"、メモリ110が"0x08"、メモリ111が"0x09"、メモリ112が"0x0A"、、、メモリ119が"0x0F"、と図３における各メモリのチップアドレス設定レジスタ16の値は、他のメモリと異なる値でかつ縦列に接続されたメモリのチップアドレス設定レジスタ16の値の各bitの値が共通の値となるように設定する。上記の場合、例えばメモリ100からメモリ109についてはbit0からbit2の3bitが異なる値となり、bit3からbit7の5bitが共通の値となるように設定する。
【００６８】
ここで上記のようにメモリ100からメモリ119に設定され、ＣＥ０とＣＥ１が同時にアサートされる場合を想定する。このような場合、図10のアドレスグループ設定レジスタ18の値は、図３のメモリ100〜119については"0x07"をコントローラ２から設定するコマンドを発行することで、メモリ100〜119のアドレスグループ設定レジスタ18を"0x07"に設定する。
【００６９】
この状態でコントローラ２からメモリ102に対してメモリの内容を読み出す"Read"コマンドを発行した場合、発行する"Read"コマンドのチップアドレス2000は"0x02"となり、各メモリのチップアドレスレジスタ14に取り込まれる。図10において、比較器15の出力25が"Hi"レベルとなりアサートされるのはメモリ102だけで、また比較器15の出力34が"Hi"レベルとなるのは図３におけるメモリ100からメモリ109となる。
【００７０】
またメモリ109のコマンド制御部12は、ＤＯ201、ＣＫＯ301、ＣＭＤＯ501の各出力に対して信号の出力の許可を与えるように制御する。またメモリ119は、メモリ119の比較器15の出力34がアサートされないため、メモリ119のコマンド制御部12はＤＯ201、ＣＫＯ301、ＣＭＤＯ501に対して出力を"Hi-z"になるように制御することにより、メモリ109の出力とのあいだで同時出力を避けることができる。
【００７１】
上記例ではメモリ100から順に"0x00"、"0x01"、"0x02"、、、と昇順にチップアドレス設定レジスタ16の値を設定したが、降順に設定してもよい。
【００７２】
また以下のようにメモリ100に"0x00"、メモリ101に"0x10"、メモリ102に"0x20"、、、メモリ109に"0x70"、メモリ110に"0x80"、メモリ111に"0x90"、メモリ112に"0xA0"、、、メモリ119に"0xF0"、メモリ120に"0x01"、、、と設定することも可能で、この場合各メモリのアドレスグループ設定レジスタ18の値を"0x70"と設定することで上述と同様のことができる。
【００７３】
図９においても、アドレスグループ設定レジスタ18は、コントローラ２に接続されるメモリのデータバスへの出力制御に用いる。
【００７４】
図９において各メモリ100からメモリ159に対してメモリ100が"0x00"で、メモリ101が"0x01"、メモリ102が"0x02"、、、メモリ109が"0x07"、メモリ110が"0x08"、メモリ111が"0x09"、メモリ112が"0x0A"、、、メモリ119が"0x0F"、、、、メモリ150が"0xF8"、メモリ151が"0xF9"、メモリ152が"0xFA"、、、メモリ159が"0xFF"、と各メモリのチップアドレス設定レジスタ16にメモリのチップアドレスを設定し、各メモリのアドレスグループ設定レジスタ18に"0x07"を設定する。
【００７５】
例として、コントローラ２からメモリ102へデータをWriteする場合を図11を用いて説明する。図11は、図９のように接続されている場合のコントローラ２から発行されるコマンドに対する各メモリにおける入出力のタイミングの１例である。図11に示す例においては、メモリのＤＩ200にコントローラ2から発行されるチップアドレス2000、コマンド2100、データアドレス2300、がＷＥ900と共に入力される。チップアドレス2000はメモリのチップアドレスレジスタ14に、コマンド2100はコマンドレジスタ16に格納され、メモリ102はデータ2200のWrite転送を行いメモリ102のメモリ部11に格納する。
【００７６】
また、コントローラ２がメモリ102のデータをReadする場合は、メモリ102からのデータを読み出すために図11に示すように、データ2200をReadする所ではＷＥ900はアサートせずにＯＥ800をアサートすることでメモリ102はデータ2200を出力する。さらに、メモリ100は図10のグループアドレス設定レジスタ18によって比較器１５からの出力34がアサートされ、メモリ100は当該メモリ100のＤＯ201に接続されているメモリの１つであるメモリ102からのデータ2201をコントローラ２へ出力する。
【００７７】
ここでメモリ100以外のデータを分配するメモリ110、、、メモリ150は、各メモリの内蔵する比較器１５の出力３４がアサートされないため、コントローラ2に対するデータは"Hi-z"状態となる。
【００７８】
このようにグループアドレス設定レジスタ18によって、コントローラ２への各メモリのデータの出力同士がぶつかることなくデータのRead処理が実行できる。
【００７９】
また、図９においても、図３のようにＣＥをそれぞれのバスグループ別に分けることで複数のメモリを接続したときのアクティブな状態にあるメモリを少なくすることができ、またＳＩ600及びＳＯ601を図３のＤＩ、ＤＯのように結線すれば各バスグループに接続されているメモリ数を個別に計数可能になる。
【００８０】
図３においてメモリ109、119、129、159とこれら以外のメモリの区別や、図９におけるメモリ100、110、150とこれら以外のメモリの区別には、図１、図６、図８のメモリに動作機能を区別するための入力を１個ないし複数設け、入力レベルの組合わせにより区別することで、１個のメモリで複数の機能あるいは動作モードを持たせることができる。
【００８１】
以下では、図８でチップアドレス設定レジスタ16の初期化後のチップアドレスアドレス設定法として行っていたシフトレジスタ構造とは別の方法による設定を可能にした実現例を、図12を参照して説明する。
【００８２】
図８の例では、メモリ100cの初期化後にチップアドレス設定レジスタ16の値を直接設定するために使用していたＳＩ600とＳＯ601は、チップアドレス設定レジスタ16には接続されずに、コマンド制御部12に接続されそれぞれＳＩ600はチップアドレス設定レジスタ16に対する設定許可信号として、またＳＯ601はメモリ100の初期化後のチップアドレス設定レジスタ16がコントローラ２によって設定されたことを示す出力として使用する。
【００８３】
これに対して、図12のメモリの接続は図８のメモリで説明した図９のように構成でき、図９においてコントローラ２のＳＯからは電源投入時等のメモリの初期化後のチップアドレス設定レジスタ16のチップアドレス設定信号を出力し、コントローラ２のＳＩ入力には図９のメモリ全てのチップアドレスの設定が完了したことを知らせる信号が入力される。
【００８４】
図９及び図12における各メモリのチップアドレス設定レジスタ16の設定例を図13を参照して説明する。なお、本例では、メモリのリセットによる初期化後のチップアドレス設定レジスタ16の設定モードを、クロックとクロックに同期したデータとを使用して設定する。
【００８５】
図13において、リセットのアサートにより全メモリのコントロール部の初期化を行い、その後コントローラ２よりＣＭＤＯをアサートして、チップアドレス設定レジスタ16の設定モードにする。コントローラ２はＣＥＯとＳＯをアサートした後、ＣＫＯに同期してチップアドレス設定レジスタ16に設定する値をＤＯから出力する。
【００８６】
図12において、チップアドレス設定レジスタ16の設定モードでは、メモリ100は当該メモリ100のＣＥ800、ＳＩ600入力がアサートかつメモリ100のＳＯ出力がネゲートされているとき、メモリ100は当該メモリ100のＣＫＩ入力の立ち下がりエッジで、当該メモリ100のＤＩに入力された値をチップアドレス設定レジスタ16に取り込む。
【００８７】
図９において、リセット後チップアドレス設定レジスタ16の設定モードになった後、コントローラ２の最初のＣＫＯの立ち下がりでは、メモリ100のＣＥ800、ＳＩ600入力がアサートされ、メモリ100のＳＯ出力がネゲートされているので、コントローラ２のＤＯのデータ"0x00"をメモリ100のチップアドレス設定レジスタ16に取り込む。
【００８８】
取り込んだ後メモリ100は、ＳＯ出力をアサートもしくはメモリ100のＳＩ入力の値を出力する。コントローラ２の最初のＣＫＯの立ち下がりにおいて、メモリ101以降は、当該メモリ101以降のＳＩ入力がネゲートされているので、メモリ101以降のチップアドレス設定レジスタ16に取り込まれることはない。
【００８９】
次に、コントローラ２の２番目のＣＫＯの立ち下がりでは、メモリ100はＳＯ出力がアサート状態のためチップアドレス設定レジスタ16に取り込まれず、メモリ101のＳＩ600がアサートされＳＯ出力はネゲートのため、メモリ101がコントローラ２のＤＯからのデータ"0x01"をチップアドレス設定レジスタ16に取り込む。
【００９０】
以降、同様にメモリ103から順次各メモリのチップアドレス設定レジスタ16にコントローラ２のＤＯからのデータが取り込まれ、図９の最後のメモリ159に取り込まれた後、メモリ159はＳＯ601出力をアサートもしくはメモリ159のＳＩ入力の値を出力し、コントローラ２へ図９の全メモリのチップアドレス設定レジスタ16の設定が終了したことをしらせる。
【００９１】
コントローラ２は、当該コントローラ２のＳＩ入力がアサートされるまでに出力した各メモリへのチップアドレス設定レジスタ16の設定データの数を計数することで、図９のメモリの数を知ることができる。
【００９２】
図14に、図12のメモリと図９の接続構成におけるメモリのチップアドレス設定レジスタ16の設定例の動作例を示したタイミングチャートを示す。
【００９３】
本例では、電源投入後のメモリのリセットや、チップアドレス設定レジスタ16の初期化コマンドにより、図９の各メモリのチップアドレス設定レジスタ16は"0xFF"に初期化され、各メモリのＳＯ601出力をネゲートする。ここで図９の各メモリは各メモリのＳＩ600入力及びＣＥ700入力がアサートされないと、コントローラ2からのコマンドはチップアドレスが一致していても受け付けないものとする。
【００９４】
コントローラ２は、当該コントローラ２のＳＯ出力をアサートした後、コントローラ２のＤＯよりチップアドレス2000"0xFF"及びチップアドレス再設定コマンド2100及び新チップアドレス2200(ここでは"0x00")を出力して最初のチップアドレス再設定コマンドをチップアドレス"0xFF"のメモリに対して発行する。
【００９５】
ここで、図９において各メモリのチップアドレス設定レジスタ16は"0xFF"に初期化され、ＳＯ出力は初期化によってネゲートされているため、コントローラ２が初期化後最初に発行するチップアドレス再設定コマンドの発行を受け付けるメモリはメモリ100だけとなる。
【００９６】
メモリ100のチップアドレス設定レジスタ16の値は"0x00"に設定され、メモリ100のＳＯ601出力をアサートもしくはメモリ100のＳＩ600に入力された値を出力する。ここでは例としてメモリ100に設定する値は"0x00"としているが、実際にはリセットによって初期化された値以外の値をチップアドレス設定レジスタ16に設定するようにする。
【００９７】
次に、２番目のチップアドレス再設定コマンドとしてチップアドレス2001及びチップアドレス再設定コマンド2101及び新チップアドレス2201をコントローラ２のＤＯ出力より出力する。ところで、このときメモリ100のチップアドレス設定レジスタ16の値はすでに"0xFF"以外の値が設定されている。このためメモリ100はコマンドを受け付けず、メモリ101が２番目のチップアドレス再設定コマンドを受け付け、チップアドレス設定レジスタ16に新チップアドレスを設定し、新チップアドレスの設定後にメモリ101のＳＯ601 出力をアサートもしくはＳＩ600 に入力された値を出力する。
【００９８】
以後同様に、順次各メモリのチップアドレス設定レジスタ16を設定してゆき、最後のメモリ159のチップアドレス設定レジスタ16を設定後、メモリ159はＳＯ601をアサートもしくはＳＩ600に入力された値を出力し、コントローラ２にチップアドレスが終了したことを知らせる。
【００９９】
ここではチップアドレス設定レジスタ16のビット数を8bitとしているので、メモリ159が256番目のメモリであるとすれば、チップアドレス設定レジスタ16に設定する値は"0xFF"となる。
【０１００】
本処理例によれば、図13の場合と同様に、コントローラ２はコマンドの発行回数を計数する等の方法でメモリの数を知ることができる。
【０１０１】
図９において、例えばメモリ100とメモリ101の機能を同一のメモリで実現する場合、動作機能設定用の端子を設けると前述したが、ここで各メモリに対して動作機能設定用端子のレベルを読み取るコマンドを持つことで、コントローラ２は各メモリの機能を把握でき、またコントローラ２のＳＯ信号がどのメモリを経由してコントローラ２のＳＩに戻ってくるかが一定のルールで決められていれば、メモリを搭載する数が半導体メモリシステムごとに異なっていても各メモリがどのバスグループに属するかを推定することができる。
【０１０２】
したがって、各バスグループに接続されているメモリの数が把握でき、各メモリのチップアドレス設定レジスタ16及びアドレスグループ設定レジスタ18の値を、最適な値に設定することができる。
【０１０３】
図３でのメモリの接続において、各メモリにデータ出力制御端子としてＯＣ端子を追加した構成例を、図15を参照して説明する。
【０１０４】
本例において縦列に接続された各メモリの各ＯＣ端子は、図15に示すように接続される。メモリ109、119のＯＣ端子は入力として、またメモリ109、119以外のＯＣ端子は出力端子として機能する。この機能の切換えは前述したメモリの機能を区別するための入力を使用する。
【０１０５】
図15において、出力として機能するメモリ109、119以外のメモリＯＣ端子は、それぞれバスグループごとにwired接続されて、それぞれデータ出力制御信号1001、1101として、メモリ109とメモリ119のＯＣ端子に入力される。ここで出力として機能するＯＣ端子はwired接続するためにオープンドレインもしくは３ステート出力で信号を出力し、またデータ出力制御信号1001、1101にはプルアップ抵抗1002、1102が接続されている。
【０１０６】
コントローラ２がメモリ101からデータをReadする場合、コントローラ2より発行されたReadコマンドに対してメモリ101は、発行されたReadコマンドに応じたデータをＤＯより出力すると共に、ＯＣ端子よりデータ出力制御信号をアサートする。このときメモリ101以外のメモリのＯＣ出力は"Hi-Z"となっている。
【０１０７】
メモリ109はＯＣ端子に入力されるデータ出力制御信号のアサートを受けて、メモリ109のＤＩに入力されるデータをＤＯへ出力する。
【０１０８】
図15は、上記と同様に、図９でのメモリの接続において各メモリにデータ出力制御端子としてＯＣ端子を追加した他の構成例を示す。
【０１０９】
本構成例において縦列に接続された各メモリの各ＯＣ端子は、図16に示すように接続され、メモリ100のＯＣ端子は入力として、メモリ101からメモリ109のＯＣ端子は出力として機能する。前述同様にＯＣ端子の機能の切り換えは前述したメモリの機能を区別するための入力を使用する。
【０１１０】
本構成例における動作は、図15での説明と同様の動作であり、図15のメモリ109、119が図16ではメモリ100に相当する。
【０１１１】
以上のようにデータ出力制御端子を設けることで、メモリには図10のアドレスグループ設定レジスタ18が必要なくなる。このため、比較器15の回路規模は小さくなり、各メモリのチップアドレス設定レジスタ14に設定する値を自由に設定できる。
【０１１２】
【発明の効果】
以上のように本発明によれば、メモリ内にデータや制御信号のバッファを内蔵することで、データや制御信号用のバッファＩＣを追加する必要がなくなるので、バッファＩＣの占有する面積の分だけメモリを増やすことができ、メモリファイルシステムの大容量化に有利となる。
【図面の簡単な説明】
【図１】本発明の一実施形態におけるメモリの内部構成を示したブロック図。
【図２】本発明の対象となるシステムのブロック構成を示すブロック図。
【図３】メモリとコントローラとの接続方法の一例を示すブロック図。
【図４】コントローラが発行するコマンドのタイミングチャート。
【図５】コントローラが発行するコマンドのタイミングチャート。
【図６】本発明の他の実施形態におけるメモリの内部構成を示したブロック図。
【図７】メモリのチップアドレス設定時のタイミングチャート。
【図８】本発明の他の実施形態におけるメモリの内部構成を示したブロック図。
【図９】メモリとコントローラとの接続方法の他の例を示すブロック図。
【図１０】比較器の内部構成を示すブロック図。
【図１１】データのRead/Write時のタイミングチャート。
【図１２】本発明の他の実施形態におけるメモリの内部構成を示したブロック図。
【図１３】メモリのチップアドレス設定時のタイミングチャート。
【図１４】メモリのチップアドレス設定時のタイミングチャート。
【図１５】メモリの接続方法の一例を示すブロック図。
【図１６】メモリの接続方法の他の例を示すブロック図。
【符号の説明】
２…コントローラ、３…マイクロプロセッサ、４…制御部、10…メモリ、１１…メモリ部、１２…コマンド制御部、１３…コマンドレジスタ、１４…チップアドレスレジスタ、１５…比較器、１６…チップアドレス設定レジスタ、１７…セレクタ。
【図１】
0003853537.tif 000002
【図２】
0003853537.tif 000003
【図３】
0003853537.tif 000004
【図４】
0003853537.tif 000005
【図５】
0003853537.tif 000006
【図６】
0003853537.tif 000007
【図７】
0003853537.tif 000008
【図８】
0003853537.tif 000009
【図９】
0003853537.tif 000010
【図１０】
0003853537.tif 000011
【図１１】
0003853537.tif 000012
【図１２】
0003853537.tif 000013
【図１３】
0003853537.tif 000014
【図１４】
0003853537.tif 000015
【図１５】
0003853537.tif 000016
【図１６】
0003853537.tif 000017