(57)【要約】【課題】  ＡＴＡインターフェースばかりでなくＪＴＡＧインターフェースからもフラッシュメモリにアクセスが可能なフラッシュメモリシステムを実現する。【解決手段】  ＪＴＡＧインターフェースの端子を介してフラッシュメモリにユーザデータを書き込む場合、ＡＴＡレジスタ２７への書き込みを指示するコマンドを端子ＴＤＩからシフトレジスタ２６ｆに入力し、そのコマンドに従い、端子ＴＤＩから続いて入力されるアドレスとユーザデータとを、アドレスレジスタ２６ｄとデータレジスタ２６ｃとにシフト入力する。アドレスは、ＡＴＡレジスタ２７にパラレルに入力され、ユーザデータは、バッファ２５にパラレルに入力される。このアドレスに対応したフラッシュメモリの領域にユーザデータが書き込まれる。【選択図】  図３
2006209489.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュメモリアクセスに関する指示情報を保持する指示情報保持手段と、
前記フラッシュメモリに書込む書込みデータ又はフラッシュメモリから読出した読出しデータを保持する第１のデータ保持手段と、
ホストシステム側からＪＴＡＧインターフェースを介してシフト入力されるデータを保持する第２のデータ保持手段と、
前記第２のデータ保持手段に保持されているデータが前記指示情報に対応するときに、該指示情報を前記指示情報保持手段に転送し、前記第２のデータ保持手段に保持されているデータが前記書込みデータに対応するときに、該書込みデータを前記第１のデータ保持手段に転送する第１の転送手段と、
前記指示情報保持手段に保持されている前記指示情報に基づいて、前記第１のデータ保持手段に保持されている前記書込みデータをフラッシュメモリに書込む書込み手段と、
を備えることを特徴とするメモリコントローラ。
【請求項２】
前記フラッシュメモリからデータを読出して前記第１の保持手段に与える読出し手段と、
前記ホストシステム側に前記ＪＴＡＧインターフェースを介してシフト出力するデータを保持する第３のデータ保持手段と、
前記第１のデータ保持手段に保持されている読出しデータを、前記第３のデータ保持手段に転送する第２の転送手段と、
を備えることを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記第２のデータ保持手段に保持されているデータの転送先を、前記ＪＴＡＧインターフェースを介してシフト入力されるコマンドに基づいて決定することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
前記指示情報保持手段が、ＡＴＡインターフェースを介して前記ホストシステム側から与えられる指示情報を保持するレジスタであることを特徴とする請求項１乃至３のいずれか１項に記載のメモリコントローラ。
【請求項５】
前記第１のデータ保持手段が、ＡＴＡインターフェースを介して前記ホストシステム側とデータを授受するバッファであることを特徴とする請求項１乃至４のいずれか１項に記載のメモリコントローラ。
【請求項６】
前記第２のデータ保持手段と前記第３のデータ保持手段が同一のシフトレジスタで構成されていることを特徴とする請求項１乃至５のいずれか１項に記載のメモリコントローラ。
【請求項７】
請求項１乃至６のいずれか１項に記載のメモリコントローラとフラッシュメモリを備えることを特徴とするフラッシュメモリシステム。
【請求項８】
ホストシステム側からＪＴＡＧインターフェースを介してシフト入力されるデータを第２のデータ保持手段に取り込む第１の処理と、
前記第２のデータ保持手段に取り込んだデータが、フラッシュメモリへのアクセスに関する指示情報に対応するときに、該指示情報を、フラッシュメモリアクセスに関する指示情報を保持するための指示情報保持手段に転送する第２の処理と、
前記第２のデータ保持手段に取り込んだデータが、前記フラッシュメモリに書込む書込みデータに対応するときに、該書込みデータを、フラッシュメモリに書込む書込みデータを保持するための第１のデータ保持手段に転送する第３の処理と、
前記指示情報保持手段に保持されている指示情報に基づいて、前記第１のデータ保持手段に保持されている書込みデータを、フラッシュメモリに書込む第４の処理と、
を含むことを特徴とするフラッシュメモリの制御方法。
【請求項９】
フラッシュメモリに記憶されているデータを前記第１のデータ保持手段に読出す第５の処理と、
前記第５の処理により読出されて前記第１のデータ保持手段に保持されているデータを、ホストシステム側にＪＴＡＧインターフェースを介してシフト出力するデータを保持する第３のデータ保持手段に転送する第６の処理と、
前記第３のデータ保持手段に保持されているデータを、ＪＴＡＧインターフェースを介してホストシステム側にシフト出力する第７の処理と、
を含むことを特徴とする請求項８に記載のフラッシュメモリの制御方法。
【請求項１０】
ＡＴＡインターフェースを介して前記ホストシステム側から与えられる指示情報を前記指示情報保持手段に入力する第８の処理と、
前記ＡＴＡインターフェースを介して前記ホストシステム側から与えられる書込みデータを前記第１のデータ保持手段に入力する第９の処理と、
を含むことを特徴とする請求項８又は９に記載のフラッシュメモリの制御方法。
【請求項１１】
前記第５の処理により読出されて前記第１のデータ保持手段に保持されているデータを、ＡＴＡインターフェースを介してホストシステム側に出力する第１０の処理、
を含むことを特徴とする請求項９又は１０に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
近年、メモリーカードやシリコンディスクといったメモリシステムにて使用される半導体メモリに、フラッシュメモリが広く採用されている。フラッシュメモリは、不揮発性メモリの一種である。フラッシュメモリに格納されたデータは、電力が供給されていないときでも保持されていることが要求される。
【０００３】
ＮＡＮＤ型フラッシュメモリは、上記のメモリシステムで特に多く用いられるフラッシュメモリの一種である。ＮＡＮＤ型フラッシュメモリに含まれている複数のメモリセルのそれぞれは、他のメモリセルとは独立して、論理値“１”を示すデータが格納されている消去状態から、論理値“０”を示すデータが格納されている書込状態へと変化することができる。これとは対照的に、書込状態から消去状態へと変化するときには、各メモリセルは他のメモリセルと独立して変化することができない。このときには、ブロックと称される予め定められた数のメモリセルが、全て同時に消去状態になる。この一括消去動作は、一般的に、“ブロック消去”と称されている。
ＮＡＮＤ型フラッシュメモリに対する書込処理若しくは読出処理は、ページと称される予め定められた数のメモリセル単位で処理が行なわれる。消去処理の単位であるブロックは複数のページで構成されている。
【０００４】
ＮＡＮＤ型フラッシュメモリを用いたメモリシステムは、通常、ＡＴＡ（AT Attachment）インターフェースを介してホストシステムに接続される。ホストシステムからＡＴＡインターフェースを介して与えられたデータがＮＡＮＤ型フラッシュメモリに書込まれ、ＮＡＮＤ型フラッシュメモリから読出したデータはＡＴＡインターフェースを介してホストシステムに与えられる。
【０００５】
一方、ＮＯＲ型フラッシュメモリは、ランダムアクセスが可能なので、ホストシステムが起動するときに実行されるプログラム等を書込むデバイスとして使用することがでる。このような用途では、通常、ＮＯＲ型フラッシュメモリは、ホストシステム内のシステムバスに接続して使用される。
【０００６】
ホストシステムが起動するときに実行されるプログラムは、頻繁に書き替えるものではないが、更新が必要になることがある。特許文献１では、ＮＯＲ型フラッシュメモリに書込まれているプログラムを更新するときに、ホストシステム内のシステムバスに接続されているＲＡＭ（Random Access Memory）に、更新するプログラムを書込み、ＲＡＭに書込んだプログラムをＮＯＲ型フラッシュメモリに複写している。ＲＡＭには、ＲＡＭからＮＯＲ型フラッシュメモリへの複写処理を制御するプログラムも書込まれる。これらのプログラムは、ＪＴＡＧ（Joint Test Action Group（IEEE1149.1））インターフェースを介してＲＡＭに書込まれる。
【特許文献１】特開２００２−２７８７８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のようにＮＡＮＤ型フラッシュメモリは、通常、ＡＴＡインターフェースを介して書込みや読出しが行われるが、ＡＴＡインターフェースを介して書込みや読出しを行うことができない場合や、ＡＴＡインターフェースを介さずに書込みや読出しを行いたい場合がある。このような場合に、特許文献１に示されているようなＪＴＡＧインターフェースを設けることが考えられるが、ＮＡＮＤ型フラッシュメモリに特許文献１に示されているような構成を適用することは困難である。
【０００８】
そこで、本発明は、ＮＡＮＤ型フラッシュメモリにＪＴＡＧインターフェースを介して書込みや読出しを行うことができるメモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、及びフラッシュメモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の第１の観点に係るメモリコントローラは、
フラッシュメモリアクセスに関する指示情報を保持する指示情報保持手段と、
前記フラッシュメモリに書込む書込みデータ又はフラッシュメモリから読出したデータを保持する第１のデータ保持手段と、
ホストシステム側からＪＴＡＧインターフェースを介してシフト入力されるデータを保持する第２のデータ保持手段と、
前記第２のデータ保持手段に保持されているデータが前記指示情報に対応するときに、該指示情報を前記指示情報保持手段に転送し、前記第２のデータ保持手段に保持されているデータが前記書込みデータに対応するときに、該書込みデータを前記第１のデータ保持手段に転送する第１の転送手段と、
前記指示情報保持手段に保持されている前記指示情報に基づいて、前記第１のデータ保持手段に保持されている前記書込みデータをフラッシュメモリに書込む書込み手段と、
を備えることを特徴とする。
【００１０】
このような構成を採用したことにより、フラッシュメモリにＪＴＡＧインターフェースを介してアクセスできるようになる。
【００１１】
尚、前記フラッシュメモリからデータを読出して前記第１の保持手段に与える読出し手段と、
前記ホストシステム側に前記ＪＴＡＧインターフェースを介してシフト出力するデータを保持する第３のデータ保持手段と、
前記第１のデータ保持手段に保持されている読出しデータを、前記第３のデータ保持手段に転送する第２の転送手段と、
を備えてもよい。
【００１２】
また、前記第２のデータ保持手段に保持されているデータの転送先を、前記ＪＴＡＧインターフェースを介してシフト入力されるコマンドに基づいて決定してもよい。
【００１３】
また、前記指示情報保持手段が、ＡＴＡインターフェースを介して前記ホストシステム側から与えられる指示情報を保持するレジスタであってもよい。
【００１４】
また、前記第１のデータ保持手段が、ＡＴＡインターフェースを介して前記ホストシステム側とデータを授受するバッファであってもよい。
【００１５】
また、前記第２のデータ保持手段と前記第３のデータ保持手段が同一のシフトレジスタで構成されていてもよい。
【００１６】
上記目的を達成するために、本発明の第２の観点に係るフラッシュメモリシステムは、本発明の第１の観点に係るメモリコントローラとフラッシュメモリを備えることを特徴とする。
【００１７】
上記目的を達成するために、本発明の第３の観点に係るフラッシュメモリの制御方法は、
ホストシステム側からＪＴＡＧインターフェースを介してシフト入力されるデータを第２のデータ保持手段に取り込む第１の処理と、
前記第２のデータ保持手段に取り込んだデータが、フラッシュメモリへのアクセスに関する指示情報に対応するときに、該指示情報を、フラッシュメモリアクセスに関する指示情報を保持するための指示情報保持手段に転送する第２の処理と、
前記第２のデータ保持手段に取り込んだデータが、前記フラッシュメモリに書込む書込みデータに対応するときに、該書込みデータを、フラッシュメモリに書込む書込みデータを保持するための第１のデータ保持手段に転送する第３の処理と、
前記指示情報保持手段に保持されている指示情報に基づいて、前記第１のデータ保持手段に保持されている書込みデータを、フラッシュメモリに書込む第４の処理と、
を含むことを特徴とする。
【００１８】
尚、フラッシュメモリに記憶されているデータを前記第１のデータ保持手段に読出す第５の処理と、
前記第５の処理により読出されて前記第１のデータ保持手段に保持されているデータを、ホストシステム側にＪＴＡＧインターフェースを介してシフト出力するデータを保持する第３のデータ保持手段に転送する第６の処理と、
前記第３のデータ保持手段に保持されているデータを、ＪＴＡＧインターフェースを介してホストシステム側にシフト出力する第７の処理と、
を含んでもよい。
【００１９】
また、ＡＴＡインターフェースを介して前記ホストシステム側から与えられる指示情報を前記指示情報保持手段に入力する第８の処理と、
前記ＡＴＡインターフェースを介して前記ホストシステム側から与えられる書込みデータを前記第１のデータ保持手段に入力する第９の処理と、
を含んでもよい。
【００２０】
また、前記第５の処理により読出されて前記第１のデータ保持手段に保持されているデータを、ＡＴＡインターフェースを介してホストシステム側に出力する第１０の処理と、
を含んでもよい。
【発明の効果】
【００２１】
本発明によれば、ＡＴＡインターフェースとＪＴＡＧインターフェースを備えたフラッシュメモリシステムを容易に構成することができる。
【発明を実施するための最良の形態】
【００２２】
以下、図面に基づき、本発明の実施の形態について詳細に説明する。
図１は、本発明の実施形態に係るフラッシュメモリシステム１０を、概略的に示すブロック図である。
【００２３】
このフラッシュメモリシステム１０は、フラッシュメモリ１１と、それを制御するメモリコントローラ２０とで構成されている。フラッシュメモリシステム１０は、通常、ホストシステム３０に着脱可能に装着され、ホストシステム３０に対して、一種の外部記憶装置として用いられる。
【００２４】
ホストシステム３０としては、文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置が挙げられる。
以下、フラッシュメモリ１１及びメモリコントローラ２０の詳細を説明する。
【００２５】
[フラッシュメモリ１１の説明]
フラッシュメモリシステム１０において、データを記憶するフラッシュメモリ１１は、ＮＡＮＤ型フラッシュメモリで構成されている。ＮＡＮＤ型フラッシュメモリは、ストレージデバイスへの用途として(ハードディスクの代わりになるものとして)開発された不揮発性メモリである。このＮＡＮＤ型フラッシュメモリは、ランダムアクセスを行なうことができず、書込みと読出しはページ単位で、消去はブロック単位で行なわれる。又、データの上書きができないので、データを書込むときは、消去されている領域にデータの書込みが行なわれる。
【００２６】
ＮＡＮＤ型フラッシュメモリは、このような特徴を有するため、通常、データの書替を行なう場合には、ブロック消去されている消去済ブロックに新たなデータ（書替後のデータ）を書込み、古いデータ（書替前のデータ）が書込まれていたブロックを消去するという処理を行なっている。
【００２７】
このようなデータの書替を行なった場合、書替後のデータは、書替前と異なるブロックに書込まれるため、ホストシステム３０側から与えられる論理アドレスと、フラッシュメモリ１１内での物理アドレスとの対応関係は、データを書替える毎に動的に変化する。従って、フラッシュメモリ１１にアクセスするときには、通常、論理アドレスと物理アドレスとの対応関係を示したアドレス変換テーブルが作成され、このアドレス変換テーブルを用いて、フラッシュメモリ１１に対するアクセスが行なわれる。
【００２８】
図２は、ブロックとページの関係を示す説明図である。
上記ブロックとページの構成は、フラッシュメモリ１１の仕様によって異なるが、一般的なフラッシュメモリでは、図２（ａ）に示したように、１ブロックが３２ページ（Ｐ０〜Ｐ３１）で構成され、各ページが５１２バイトのユーザー領域と１６バイトの冗長領域で構成されている。又、記憶容量の増加に伴い、図２（ｂ）に示したように、１ブロックが６４ページ（Ｐ０〜Ｐ６３）で構成され、各ページが２０４８バイトのユーザー領域と６４バイトの冗長領域で構成されているものも提供されている。本実施形態では、１ブロックが３２ページで構成され、各ページが５１２バイトのユーザー領域と１６バイトの冗長領域で構成されているものとして説明する。
【００２９】
ここで、ユーザー領域は、主に、ホストシステム３０から供給されるデ―タが記憶される領域であり、冗長領域は、誤り訂正符号、対応論理ブロックアドレス情報及びブロックステータス等の付加データが記憶される領域である。誤り訂正符号は、ユーザー領域に記憶されているデータに含まれる誤りを検出、訂正するための付加データであり、後述するＥＣＣブロックによって生成される。
【００３０】
対応論理ブロックアドレス情報は、物理ブロックにデータが記憶されている場合に書込まれ、その物理ブロックに記憶されているデータの論理ブロックアドレスに関する情報を示している。尚、物理ブロックにデータが記憶されていない場合は、対応論理ブロックアドレス情報が書込まれないので、対応論理ブロックアドレス情報が書込まれているか否かで、そのブロックが消去済ブロックであるか否かを判断することができる。つまり、対応論理ブロックアドレスが書込まれていない場合は、消去済ブロックであると判断される。
【００３１】
ブロックステータスは、その物理ブロックが不良ブロック（正常にデータの書込み等を行なうことができない物理ブロック）であるか否かを示すフラグであり、その物理ブロックが不良ブロックであると判断された場合には、不良ブロックであることを示すフラグが設定される。
【００３２】
ここで、フラッシュメモリ１１の回路構成について説明する。
一般的なＮＡＮＤ型フラッシュメモリは、書込みデータ若しくは読出しデータを保持するためのレジスタと、データを記憶するメモリセルアレイによって構成されている。メモリセルアレイは、複数のメモリセルが直列に接続されたメモリセル群を複数備えており、ワード線によって、メモリセル群の特定のメモリセルが選択される。このワード線によって選択されたメモリセルとレジスタの間で、データの複写（レジスタからメモリセルへの複写、若しくはメモリセルからレジスタへの複写）が行なわれる。
【００３３】
メモリセルアレイを構成するメモリセルは、２つのゲートを備えたＭＯＳトランジスタで構成されている。ここで、上側のゲートはコントロールゲートと、下側のゲートはフローティングゲートと呼ばれており、フローティングゲートに電荷（電子）を注入したり、フローティングゲートから電荷（電子）を排出したりすることによって、データの書込みや消去を行っている。
【００３４】
フローティングゲートは、周囲を絶縁体で囲まれているので、注入された電子は長期間にわたって保持される。フローティングゲートに電子を注入するときは、コントロールゲートが高電位側となる高電圧を印加して電子を注入し、フローティングゲートから電子を排出するときは、コントロールゲートが低電位側となる高電圧を印加して電子を排出する。フローティングゲートに電子が注入されている状態（書込状態）が、論理値“０”のデータに対応し、フローティングゲートから電子が排出されている状態（消去状態）が、論理値“１”のデータに対応する。
【００３５】
［メモリコントローラ２０の説明］
メモリコントローラ２０は、ＡＴＡインターフェースブロック２１と、マイクロプロセッサ２２と、フラッシュメモリインターフェースブロック２３と、ＥＣＣ（エラー・コレクション・コード）ブロック２４と、バッファ２５と、ＪＴＡＧインターフェースブロック２６と、ＡＴＡレジスタ２７で構成されている。
これら機能ブロックによって構成されるメモリコントローラ２０は、一つの半導体チップ上に集積されている。
【００３６】
以下に、各機能ブロックの機能を説明する。
ＡＴＡインターフェースブロック２１は、フラッシュメモリシステム１０を、ＡＴＡインターフェース３１に接続するためのブロックである。
【００３７】
マイクロプロセッサ２２は、メモリコントローラ２０を構成する各機能ブロック全体の動作を制御する機能ブロックである。又、論理アドレス（フラッシュメモリシステム１０に対して与えられるアドレス）と物理アドレス（フラッシュメモリ１１内のアドレス）の対応関係を示す変換テーブルは、マイクロプロセッサ２２の制御の下、ＳＲＡＭ（Static Random Access Memory）で構成された作業領域（図示せず）に作成される。
【００３８】
ＪＴＡＧインターフェースブロック２６は、フラッシュメモリシステム１０を、ＪＴＡＧインターフェース３２に接続するためのブロックである。
図３は、ＪＴＡＧインターフェースブロック２６及びＪＴＡＧインターフェース３２の概要を示す模式図である。
【００３９】
ＪＴＡＧインターフェース３２は、テストクロック端子ＴＣＫと、テストモードセレクト端子ＴＭＳと、テストデータインプット端子ＴＤＩと、テストデータアウトプット端子ＴＤＯと、テストリセット端子（図示せず）とを備えている。
テストクロック端子ＴＣＫは、クロック信号を入力する端子である。テストモードセレクト端子ＴＭＳは、ＪＴＡＧインターフェースブロック２６の動作を制御するための信号を入力する端子である。テストデータインプット端子ＴＤＩは、コマンドやデータの信号を入力する端子である。テストデータアウトプット端子ＴＤＯは、ＪＴＡＧインターフェースブロック２６から信号を出力する端子である。テストリセット端子は、初期化する信号を入力する端子でる。
【００４０】
ＪＴＡＧインターフェースブロック２６には、ＴＡＰ（テストアクセスポート）コントローラ２６ａ、ＪＴＡＧ制御ブロック２６ｂ、複数のシフトレジスタ（２６ｃ，２６ｄ，２６ｅ，２６ｆ）、マルチプレクサ２６ｇ，２６ｈ、及び入力カウンタｉが設けられている。
【００４１】
シフトレジスタには、データレジスタ２６ｃ、アドレスレジスタ２６ｄ及びバイパスレジスタ２６ｅで構成されるデータレジスタ群と、インストラクションレジスタ２６ｆとがある。
【００４２】
マルチプレクサ２６ｇ及びマルチプレクサ２６ｈは、複数の入力端子から入力される信号を、出力端子から選択的に出力するものである。
テストデータインプット端子ＴＤＩとデータレジスタ２６ｃの出力端子とが、マルチプレクサ２６ｇの入力端子に接続され、マルチプレクサ２６ｇの出力端子がアドレスレジスタ２６ｄの入力側に接続されている。
【００４３】
データレジスタ２６ｃの出力端子とバイパスレジスタ２６ｅの出力端子とがマルチプレクサ２６ｈの入力端子に接続され、マルチプレクサ２６ｈの出力端子がデータアウトプット端子ＴＤＯに接続されている。
【００４４】
即ち、マルチプレクサ２６ｇにより、テストデータインプット端子ＴＤＩから入力されるＴＤＩ信号の入力経路が制御され、マルチプレクサ２６ｈにより、テストデータアウトプット端子ＴＤＯから出力されるＴＤＯ信号の出力経路が制御されるようになっている。
【００４５】
データレジスタ２６ｃ、バイパスレジスタ２６ｅ及びインストラクションレジスタ２６ｆの入力端子は、テストデータインプット端子ＴＤＩに接続されている。
【００４６】
入力カウンタ２６ｉは、バッファ２５にアドレスを供給するものであり、バッファ２５への書込み処理を開始するときに先頭アドレスにリセットされ、その後、バッファ２５にデータが書込まれる毎にアドレスがカウントアップされるように設定されている。
【００４７】
ＡＴＡレジスタ２７は、情報保持手段であり、ホストシステム３０側から供給される論理アドレス、セクタ数及び外部コマンド（ホストシステム３０からフラッシュメモリシステム１０に与えられるコマンド）等を保持するレジスタや、エラーが発生した場合にセットされるエラーレジスタで構成されている。
【００４８】
バッファ２５は、第１の保持手段であり、フラッシュメモリ１１に書込むデータ又はフラッシュメモリ１１から読出したデータを一時的に保持するブロックであり、ＦＩＦＯ（first in first out）のバッファで構成されている。フラッシュメモリ１１に書込むデータは、ＡＴＡインターフェースブロック２１又はＪＴＡＧインターフェースブロック２６を介してバッファ２５に供給され、フラッシュメモリ１１から読出したデータは、ＡＴＡインターフェースブロック２１又はＪＴＡＧインターフェースブロック２６を介してホストシステム３０側に出力される。
【００４９】
フラッシュメモリインターフェースブロック２３は、バッファ２５からフラッシュメモリ１１への書込み処理やフラッシュメモリ１１からバッファ２５への読出し処理を制御するブロックである。バッファ２５とフラッシュメモリ１１との間のデータの授受は、ページ単位で行なわれる。
【００５０】
フラッシュメモリ１１に与えられるページアドレス及びブロックアドレスや内部コマンド（メモリコントローラ２０からフラッシュメモリ１１に与えられるコマンド）等は、フラッシュメモリインターフェースブロック２３内のレジスタに設定され、この設定情報に基づいて、書込み処理や読出し処理が実行される。フラッシュメモリインターフェースブロック２３内のレジスタには、ＡＴＡレジスタ２７に書込まれている論理アドレス、セクタ数及び外部コマンド等の情報に基づいて、ページアドレスや内部コマンドが設定される。
【００５１】
ＥＣＣブロック２４は、フラッシュメモリ１１に書込むデータに付加されるエラーコレクションコードを生成するブロックである。このエラーコレクションコードは、通常、フラッシュメモリ１１の冗長領域に書込まれる。フラッシュメモリ１１からデータを読出すときは、データと共に読出されるエラーコレクションコードに基づいて、読出したデータに含まれる誤りの検出と訂正が、ＥＣＣブロック２４によって行われる。
【００５２】
［フラッシュメモリシステム１０の動作説明］
フラッシュメモリシステム１０にＡＴＡインターフェース３１を介してアクセスする場合、ＡＴＡインターフェースブロック２１の制御のもと、ＡＴＡインターフェース３１から与えられる外部コマンド、論理アドレス情報（例えば、ＬＢＡ（Logical Block Address）方式のアドレス情報）及びセクタ数等の情報がＡＴＡレジスタ２７に書込まれ、ＡＴＡインターフェース３１から与えられるデータは、バッファ２５に保持される。また、フラッシュメモリ１１から読出したデータは、バッファ２５に保持され、ＡＴＡインターフェースブロック２１の制御のもと、ホストシステム３０側に出力される。
【００５３】
ＡＴＡレジスタ２７に、外部コマンド、論理アドレス情報及びセクタ数等の情報が書込まれると、マイクロプロセッサ２２の制御のもと、フラッシュメモリインターフェースブロック２３内のレジスタに、外部コマンドに対応する内部コマンドのコードや、フラッシュメモリ１１内のページを指定する物理アドレス等が設定される。フラッシュメモリインターフェースブロック２３内のレジスタに内部コマンド、物理アドレス等が設定されると、これらの設定に基づいて、書込み処理や読出し処理が実行される。
【００５４】
書込み処理では、フラッシュメモリインターフェースブロック２３内のレジスタに設定された物理アドレスで指示されるフラッシュメモリ１１のページに、バッファ２５に保持されているデータが書込まれる。読出し処理では、フラッシュメモリインターフェースブロック２３内のレジスタに設定された物理アドレスで指示されるフラッシュメモリ１１のページに記憶されているデータが、バッファ２５に読出される。フラッシュメモリ１１に書込むページ数やフラッシュメモリ１１から読出すページ数は、ＡＴＡレジスタ２７に設定されたセクタ数に基づいて管理される。
【００５５】
ここで、フラッシュメモリインターフェースブロック２３内のレジスタに設定される物理アドレス（ＡＴＡレジスタ２７に書込まれた論理アドレスに対応する物理アドレス）は、変換テーブルを参照することによって求められる。変換テーブルは、論理アドレスと物理アドレスの対応関係を示したテーブルである。
【００５６】
論理アドレスと物理アドレスの対応関係をブロック単位で管理した場合、フラッシュメモリ１１の１個の物理ブロックと同じ記憶容量分のセクタが、各論理ブロックに割当てられる。３２セクタ分の記憶容量が、フラッシュメモリ１１の物理ブロックの記憶容量と等しい場合には、論理アドレスの連続する３２セクタを１個の論理ブロックとし、各論理ブロックに対してフラッシュメモリ１１内の１個の物理ブロックが割当てられる。
【００５７】
この対応関係を管理するため、データが書込まれた物理ブロックの冗長領域には、書込まれたデータに対応する論理ブロックを示す論理アドレス情報が書込まれる。変換テーブルは、この論理アドレス情報に基づいて作成される。
尚、各物理ブロックの冗長領域に書込まれるブロックステータス、論理アドレス情報等は、冗長領域に書込むデータを設定するレジスタに書込まれ、ユーザ領域に書込まれるユーザデータと共に書込まれる。
【００５８】
次に、ＪＴＡＧインターフェース３２を介してフラッシュメモリシステム１０にアクセスする場合について説明する。
ＪＴＡＧインターフェース３２を介してフラッシュメモリシステム１０にアクセスする場合、外部コマンド、論理アドレス情報及びセクタ数等の情報は、ＪＴＡＧインターフェースブロック２６を介してＡＴＡレジスタ２７に書込まれる。
【００５９】
また、フラッシュメモリ１１に書込まれるデータは、ＪＴＡＧインターフェースブロック２６を介してバッファ２５に供給され、フラッシュメモリ１１から読出されるデータは、バッファ２５からＪＴＡＧインターフェースブロック２６を介してホストシステム３０側に供給される。
【００６０】
尚、バッファ２５とフラッシュメモリ１１との間のデータ授受は、ＡＴＡインターフェース３１を介してフラッシュメモリシステム１０にアクセスする場合と同様に行われる。
【００６１】
次に、ＪＴＡＧインターフェースブロック２６の動作を説明する。
ここでの動作説明では、テストクロック端子ＴＣＫから入力する信号をＴＣＫ信号といい、テストモードセレクト端子ＴＭＳから入力する信号をＴＭＳ信号という。また、テストデータインプット端子ＴＤＩから入力する信号をＴＤＩ信号といい、テストデータアウトプット端子ＴＤＯから出力する信号をＴＤＯ信号という。
【００６２】
ＴＣＫ信号とＴＭＳ信号は、ＴＡＰ（テストアクセスポート）コントローラ２６ａに入力される。ＴＭＳ信号は、ＴＣＫ信号の立ち上がりエッジでサンプリングされる。サンプリングされたＴＭＳ信号のレベル（ハイレベル又はローレベル）によって、ＪＴＡＧインターフェースブロック２６の動作を決定するステートが切り替る。
【００６３】
尚、１６あるステートの遷移については、IEEE1149.1に記述されており、主なステートとしては、キャプチャー（獲得）ステート、シフトステート及びアップデート（更新）ステートがある。
【００６４】
キャプチャーステートでは、バッファ２５又はＡＴＡレジスタ２７からＪＴＡＧインターフェースブロック２６内のシフトレジスタにデータを獲得する動作が行われる。シフトステートでは、ＪＴＡＧインターフェースブロック２６内のシフトレジスタにＴＤＩ信号がシリアルのシフト入力されると共に、該シフトレジスタの内容がＴＤＯ信号としてシリアルにシフト出力される。アップデートステートでは、ＪＴＡＧインターフェースブロック２６内のシフトレジスタにラッチされた内容が出力される。
【００６５】
これらのキャプチャーステート、シフトステート及びアップデートステートは、データレジスタ２６ｃ、アドレスレジスタ２６ｄ及びバイパスレジスタ２６ｅで構成されるデータレジスタ群と、インストラクションレジスタ２６ｆとに対して個別に設定される。つまり、データレジスタ群（２６ｃ、２６ｄ、２６ｅ）に対するキャプチャーステート、シフトステート及びアップデートステートと、インストラクションレジスタ２６ｆに対するキャプチャーステート、シフトステート及びアップデートステートとがある。
【００６６】
アップデートステートの対象がインストラクションレジスタ２６ｆの場合には、インストラクションレジスタ２６ｆのラッチ内容が出力され、出力されたデータはＪＴＡＧインターフェースブロック２６に対する制御コマンドとしてデコードされる。
【００６７】
以下に、ＪＴＡＧインターフェース３２からバッファ２５及びＡＴＡレジスタ２７を用いて、フラッシュメモリ１１にユーザデータ（ホストシステム３０から与えられるデータ）を書込む処理について説明する。
【００６８】
図４は、ＪＴＡＧインターフェースブロック２６を介した書込み処理を示すフローチャートである。
図５は、テストデータインプット端子ＴＤＩから入力されるデータとテストデータアウトプット端子ＴＤＯから出力されるデータを示す説明図である。
【００６９】
フラッシュメモリ１１にユーザデータを書込む場合、図４のステップＷ１〜ステップＷ５が行われる。
最初のステップＷ１では、ＡＴＡレジスタ２７への書込み処理を実行し、これにより、ＡＴＡレジスタ２７には、外部コマンド、論理アドレス情報（例えば、ＬＢＡ（Logical Block Address）方式のアドレス情報）及びセクタ数等の情報が書込まれる。ここで、ＡＴＡレジスタ２７に書込まれる外部コマンドは、フラッシュメモリ１１への書込み処理を指示するものである。
【００７０】
ＡＴＡレジスタ２７への書込み処理では、４ビットの制御コマンドＩＲ−１と、４ビットのレジスタ指示情報ＡＲ−１と、外部コマンド、論理アドレス情報又はセクタ数等に対応する８ビットのデータＤＴ−１とが、この順番でテストデータインプット端子ＴＤＩから入力される（図５（ａ））。
制御コマンドＩＲ−１は、ＡＴＡレジスタ２７への書込み処理を指示するコマンドである。レジスタ指示情報ＡＲ−１は、ＡＴＡレジスタ２７内のレジスタを選択するための情報である。
【００７１】
制御コマンドＩＲ−１を入力するときは、ＴＣＫ信号に同期してサンプリングされたＴＭＳ信号に基づいてインストラクションレジスタ２６ｆのステートをシフトステートに設定した後、テストデータインプット端子ＴＤＩから制御コマンドＩＲ−１に対応するＴＤＩ信号を入力する。制御コマンドＩＲ−１に対応するＴＤＩ信号は、ＴＣＫ信号をシフトクロックとして、インストラクションレジスタ２６ｆ内のセル（ＩＲ０、ＩＲ１、ＩＲ２、ＩＲ３）に順にシフト入力される。
【００７２】
４回のシフトで、４ビットの制御コマンドＩＲ−１がセルＩＲ０、ＩＲ１、ＩＲ２及びＩＲ３にラッチされる。その後、ＴＣＫ信号とＴＭＳ信号に基づき、インストラクションレジスタ２６ｆのステートをアップデートステートに設定することにより、インストラクションレジスタ２６ｆのセルＩＲ０〜ＩＲ３にラッチされた制御コマンドＩＲ−１が、ＪＴＡＧ制御ブロック２６ｂに入力されてデコードされる。ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆにラッチされた制御コマンドＩＲ−１が、ＡＴＡレジスタ２７への書込み処理を指示するコマンドであることを知得し、この処理に応じた制御を行う。
【００７３】
レジスタ指示情報ＡＲ−１及びデータＤＴ−１を入力するときは、ＴＣＫ信号とＴＭＳ信号に基づき、データレジスタ群、つまりデータレジスタ２６ｃとアドレスレジスタ２６ｄのステートをシフトステートに設定した後、テストデータインプット端子ＴＤＩからレジスタ指示情報ＡＲ−１及びデータＤＴ−１に対応するＴＤＩ信号を入力する。この際、ＪＴＡＧ制御ブロック２６ｂには、データレジスタ２６ｃからのシフト出力がアドレスレジスタ２６ｄに入力されるようにマルチプレクサ２６ｇを設定する。
【００７４】
レジスタ指示情報ＡＲ−１及びデータＤＴ−１に対応するＴＤＩ信号はデータレジスタ２６ｃから入力され、ＴＣＫ信号をシフトクロックとして、データレジスタ２６ｃ内のセルＤＲ０，ＤＲ１，ＤＲ２，ＤＲ３，ＤＲ４，ＤＲ５，ＤＲ６，ＤＲ７とアドレスレジスタ２６ｄ内のセルＡＲ０，ＡＲ１，ＡＲ２，ＡＲ３にシフト入力される。１２回のシフトで、４ビットのレジスタ指示情報ＡＲ−１がアドレスレジスタ２６ｄのセルＡＲ０〜ＡＲ３にシフト入力されてラッチされ、８ビットのデータＤＴ−１がデータレジスタ２６ｃのセルＤＲ０〜ＤＲ７にシフト入力されてラッチされる。
【００７５】
この後、ＪＴＡＧ制御ブロック２６ｂは、ＴＣＫ信号とＴＭＳ信号に基づき、データレジスタ群のステートをアップデートステートに設定する。アップデートステートに設定されると、アドレスレジスタ２６ｄ内のセルＡＲ０〜ＡＲ３からレジスタ指示情報ＡＲ−１が並列に出力され、レジスタ指示情報ＡＲ−１によりＡＴＡレジスタ２７内のレジスタが選択される。
【００７６】
これと同時に、データレジスタ２６ｃ内のセルＤＲ０〜ＤＲ７からデータＤＴ−１が並列に出力される。データＤＴ−１が、ＪＴＡＧ制御ブロック２６ｂの制御のもと、レジスタ指示情報ＡＲ−１で指示されたＡＴＡレジスタ２７内のレジスタに書込まれる。
【００７７】
例えば、レジスタ指示情報ＡＲ−１で外部コマンドを設定するレジスタを選択した場合は、データＤＴ−１が外部コマンドを設定するレジスタに書込まれる。レジスタ指示情報ＡＲ−１で論理アドレス情報を設定するレジスタを選択した場合は、データＤＴ−１が論理アドレス情報を設定するレジスタに書込まれる。レジスタ指示情報ＡＲ−１でセクタ数を設定するレジスタを選択した場合は、データＤＴ−１がセクタ数を設定するレジスタに書込まれる。
【００７８】
以上のように、ＡＴＡレジスタ２７への書込み処理では、レジスタ指示情報ＡＲ−１によりＡＴＡレジスタ２７内のレジスタを適宜選択して、所望の情報を設定する。
【００７９】
尚、ＡＴＡレジスタ２７内の各レジスタに設定されている情報を読出す場合には、ＡＴＡレジスタ２７からの読出しを指示する制御コマンドＩＲ−４と、ＡＴＡレジスタ２７内のレジスタを選択するレジスタ指示情報ＡＲ−４を、テストデータインプット端子ＴＤＩから入力する（図５（ｅ））。
【００８０】
制御コマンドＩＲ−４は、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆにシフト入力され、ＪＴＡＧ制御ブロック２６ｂにデコードされる。この後、ＪＴＡＧ制御ブロック２６ｂにより、テストデータインプット端子ＴＤＩから入力されるＴＤＩ信号が、アドレスレジスタ２６ｄに直接入力されるようにマルチプレクサ２６ｇが設定され、レジスタ指示情報ＡＲ−４がアドレスレジスタ２６ｄにシフト入力されてラッチされる。ラッチされたレジスタ指示情報ＡＲ−４は、アドレスレジスタ２６ｄからＡＴＡレジスタ２７に並列に出力され、レジスタ指示情報ＡＲ−４で選択されたＡＴＡレジスタ２７内のレジスタに設定されている情報が、ＪＴＡＧ制御ブロック２６ｂの制御のもとにデータレジスタ２６ｃに並列に入力されてラッチされる。
【００８１】
ＪＴＡＧ制御ブロック２６ｂは、データレジスタ２６ｃのシフト出力が、テストデータアウトプット端子ＴＤＯから直接出力されるようにマルチプレクサ２６ｈを設定する。アップデートステートでアドレスレジスタ２６ｄからレジスタ指示情報ＡＲ−１を出力した後、データレジスタ群のステートをシフトステートに設定し、シフトクロックとなるＴＣＫ信号に同期して、データレジスタ２６ｃにラッチされた情報をシフト出力させる。これにより、テストデータアウトプット端子ＴＤＯから、ＡＴＡレジスタ２７内のレジスタに設定されていた情報が出力される。
【００８２】
ステップＷ２において、バッファ２５が空になったことを知得するため、割込みの要求の設定が行われる。
この設定では、ホストシステム３０が、割込みを要求する制御コマンドＩＲ−２をテストデータインプット端子ＴＤＩから入力する（図５（ｂ））。制御コマンドＩＲ−２は、インストラクションレジスタ２６ｆ内のセルＩＲ０〜ＩＲ３にシフト入力されてラッチされ、ＪＴＡＧ制御ブロック２６ｂによってデコードされる。即ち、制御コマンドＩＲ−２のシフト入力とデコードは、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆのステートをシフトステートに設定した後にアップデートステートに設定することにより実行される。
【００８３】
ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆに入力された制御コマンドＩＲ−２が、割込みを要求するコマンドであることを知得し、且つ、バッファ２５が空になったことを検知すると、割込み情報（ＩＮＴ）をデータレジスタ２６ｃに並列に入力する。更に、ＪＴＡＧ制御ブロック２６ｂは、データレジスタ２６ｃのシフト出力が、テストデータアウトプット端子ＴＤＯから直接出力されるようにマルチプレクサ２６ｈを設定する。尚、ＪＴＡＧ制御ブロック２６ｂが、割込み情報（ＩＮＴ）をデータレジスタ２６ｃに並列に入力するときには、ＪＴＡＧ制御ブロック２６ｂがデータレジスタ２６ｃのステートを一時的にキャプチャーステートに設定する。
【００８４】
ステップＷ３において、バッファ２５が空になったことを知らせる割込みを待つ間は（ステップＷ３：ＮＯ）、データレジスタ群のステートをシフトステートに設定して、ＴＣＫ信号を入力し続ける。
【００８５】
バッファ２５が空になり、それを知らせる割込み情報（ＩＮＴ）がデータレジスタ２６ｃに並列に入力されると（ステップＷ３：ＹＥＳ）、ＴＣＫ信号がシフトクロックとなって、テストデータアウトプット端子ＴＤＯから割込み情報（ＩＮＴ）がシフト出力される（図５（ｃ））。この割込み情報（ＩＮＴ）により、ホストシステム３０はバッファ２５が空になったことを知得する。
【００８６】
ステップＷ４において、ユーザデータをバッファ２５に書込む処理を実行する。
このバッファ２５への書込み処理では、バッファ２５への書込み処理を指示する制御コマンドＩＲ−３と、ユーザデータに対応するデータＤＴ−３とが、テストデータインプット端子ＴＤＩから入力される（図５（ｄ））。制御コマンドＩＲ−３は、インストラクションレジスタ２６ｆ内のセルＩＲ０〜ＩＲ３にシフト入力され、ＪＴＡＧ制御ブロック２６ｂにより、デコードされる。
【００８７】
この制御コマンドＩＲ−３のシフト入力とデコードは、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆのステートをシフトステートに設定した後にアップデートステートに切り替えることにより実行される。
ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆに入力されてラッチされた制御コマンドＩＲ−３が、バッファ２５への書込み処理を指示するコマンドであることを知得し、この処理に応じた制御を行う。
【００８８】
この後、ユーザデータに対応する５１２バイトのデータＤＴ−３が、連続して入力される。ユーザデータに対応するデータＤＴ−３を入力するときは、データレジスタ群のステートをシフトステートに設定し、テストデータインプット端子ＴＤＩからデータＤＴ−３に対応するＴＤＩ信号を入力する。データＤＴ−３に対応するＴＤＩ信号はデータレジスタ２６ｃにシフト入力され、８回のシフトで、１バイト分のデータＤＴ−３がデータレジスタ２６ｃのセルＤＲ０〜ＤＲ７にシフト入力されてラッチされる。セルＤＲ０〜ＤＲ７にラッチされた１バイト分のデータＤＴ−３は並列に出力され、並列に出力されたデータＤＴ−３が、ＪＴＡＧ制御ブロック２６ｂの制御のもとに、バッファ２５に書込まれる。
【００８９】
この際、バッファ２５内の書込み先は、入力カウンタ２６ｉによって指示される。入力カウンタ２６ｉは、バッファ２５への書込み処理を開始するときにリセットされ、１バイト分のデータＤＴ−３が書込まれる毎にカウントアップされていく。従って、データレジスタ２６ｃにシフト入力される５１２バイトのデータＤＴ−３は、バッファ２５の先頭アドレスから順番に書込まれていく。
【００９０】
尚、各セルＤＲ０〜ＤＲ７に入力された１バイト分のデータＤＴ−３を並列出力させるときは、ＴＣＫ信号とＴＭＳ信号によりデータレジスタ２６ｃのステートをアップデートステートに設定してもよいが、１バイト分のデータＤＴ−３がシフト入力される毎に、シフトステートとアップデートステートを切り替えなければならないため、処理時間が長くなる。
【００９１】
従って、シフトステートのまま５１２バイト分のデータ（ＤＴ）を連続的にシフト入力し、１バイト分のデータＤＴ−３が各セルＤＲ０〜ＤＲ７にシフト入力される毎に、ＪＴＡＧ制御ブロック２６ｂの制御のもとに、１バイト分のデータＤＴ−３が並列出力されるようにすることが好ましい。
【００９２】
ＪＴＡＧ制御ブロック２６ｂは、バッファ２５への書込み処理又はバッファ２５からの読出し処理を行うときのセクタ数を管理するためのセクタカウンタを備えている。このセクタカウンタは、ＡＴＡレジスタ２７に書込まれるセクタ数に基づいて設定される。セクタカウンタに設定された値は、１ページ（セクタ）分のデータがバッファ２５に書込まれる毎に、又は１ページ（セクタ）分のデータがバッファ２５から読出される毎に、１ずつ減算される。
【００９３】
例えば、ＡＴＡレジスタ２７に書込まれたセクタ数が“１０”の場合、セクタカウンタにも“１０”が設定され、１ページ（セクタ）分のデータがバッファ２５に書込まれる毎に、又は１ページ（セクタ）分のデータがバッファ２５から読出される毎に、１ずつ減算されていく。従って、１０ページ（セクタ）分のデータがバッファ２５に書込まれたとき、又は１０ページ（セクタ）分のデータがバッファ２５から読出されたときに、セクタカウンタの値が“０”になる。
【００９４】
この書込み処理では、ステップＷ１でＡＴＡレジスタ２７にセクタ数が書込まれたときに、そのセクタ数がセクタカウンタに設定される。セクタカウンタに設定された値は、ステップＷ４で１ページ（セクタ）分のデータがバッファ２５に書込まれる毎に１ずつ減算される。従って、ステップＷ１でＡＴＡレジスタ２７に書込まれたセクタ数分の書込み処理が実行されるまで（ステップＷ５：ＮＯ）、つまり、セクタカウンタの値が“０”になるまで、ステップＷ２からステップＷ４までの処理が繰り返される。
【００９５】
次に、図６及び図７を参照して、ＪＴＡＧインターフェース３２からバッファ２５及びＡＴＡレジスタ２７を用いて、フラッシュメモリ１１に記憶されているデータを読出す処理について説明する。
【００９６】
図６は、ＪＴＡＧインターフェースブロック２６を介した読出し処理を示すフローチャートである。
図７は、テストデータインプット端子ＴＤＩから入力されるデータとテストデータアウトプット端子ＴＤＯから出力されるデータを示している。
【００９７】
ＪＴＡＧインターフェースブロック２６は、図６のステップＲ１〜Ｒ５を実施してフラッシュメモリ１１からデータを読出してホストシステム３０に転送する。
最初のステップＲ１において、ＡＴＡレジスタ２７への書込み処理を実行する。
ＡＴＡレジスタ２７には、外部コマンド、論理アドレス情報（例えば、ＬＢＡ方式のアドレス情報）及びセクタ数等の情報が書込まれる。ここで、ＡＴＡレジスタ２７に書込まれる外部コマンドは、フラッシュメモリ１１からの読出し処理を指示するものである。
【００９８】
ＡＴＡレジスタ２７への書込み処理では、４ビットの制御コマンドＩＲ−５と、４ビットのレジスタ指示情報ＡＲ−５、外部コマンド、論理アドレス情報又はセクタ数等に対応する８ビットのデータＤＴ−５が、この順番でテストデータインプット端子ＴＤＩから入力される（図７（ａ））。制御コマンドＩＲ−５は、ＡＴＡレジスタ２７への書込み処理を指示するコマンドである。レジスタ指示情報ＡＲ−５は、ＡＴＡレジスタ２７内のレジスタを選択するための情報である。
【００９９】
制御コマンドＩＲ−５は、インストラクションレジスタ２６ｆ内のセルＩＲ０〜ＩＲ３にシフト入力され、ＪＴＡＧ制御ブロック２６ｂにデコードされる。つまり、制御コマンドＩＲ−５のシフト入力とデコードは、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆのステートをシフトステートに設定し、その後、アップデートステートに設定することにより実行される。
【０１００】
ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆに入力された制御コマンドＩＲ−５が、ＡＴＡレジスタ２７への書込み処理を指示するコマンドであることを知得し、この処理に応じた制御を行う。
【０１０１】
制御コマンドＩＲ−５に続いて、レジスタ指示情報ＡＲ−５とデータＤＴ−５に対応するＴＤＩ信号が、テストデータインプット端子ＴＤＩから入力される。この際、ＪＴＡＧ制御ブロック２６ｂにより、データレジスタ２６ｃからのシフト出力がアドレスレジスタ２６ｄに入力されるようにマルチプレクサ２６ｇが設定される。
【０１０２】
レジスタ指示情報ＡＲ−５とデータＤＴ−５に対応するＴＤＩ信号は、データレジスタ２６ｃ内のセルＤＲ０〜ＤＲ７とアドレスレジスタ２６ｄ内のセルＡＲ０〜ＡＲ３にシフト入力される。レジスタ指示情報ＡＲ−５とデータＤＴ−５に対応するＴＤＩ信号のシフト入力は、データレジスタ群のステートをシフトステートに設定することにより実行される。
【０１０３】
アドレスレジスタ２６ｄにシフト入力されたレジスタ指示情報ＡＲ−５は、セルＡＲ０〜ＡＲ３から並列に出力され、このレジスタ指示情報ＡＲ−５によりＡＴＡレジスタ２７内のレジスタが選択される。
【０１０４】
データレジスタ２６ｃにシフト入力されたデータＤＴ−５は、セルＤＲ０〜ＤＲ７から並列に出力され、ＪＴＡＧ制御ブロック２６ｂの制御のもと、レジスタ指示情報ＡＲ−５で指示されたＡＴＡレジスタ２７内のレジスタに書込まれる。
【０１０５】
ステップＲ１で、ＡＴＡレジスタ２７に、フラッシュメモリ１１からの読出し処理を指示する外部コマンド、論理アドレス情報（例えば、ＬＢＡ方式のアドレス情報）及びセクタ数等の情報が設定されると、これらの情報に基づいてフラッシュメモリ１１に記憶されているデータがバッファ２５に読出される。このバッファ２５への読出し処理で、１ページ（セクタ）分のデータがバッファ２５に読出されたことを知得するため、ステップＲ２で割込み要求を設定する。この設定では、ホストシステム３０が、割込みを要求する制御コマンドＩＲ−６をテストデータインプット端子ＴＤＩから入力する（図７（ｂ））。
【０１０６】
制御コマンドＩＲ−６は、インストラクションレジスタ２６ｆ内のセルＩＲ０〜ＩＲ３にシフト入力され、ＪＴＡＧ制御ブロック２６ｂにデコードされる。制御コマンドＩＲ−６のシフト入力とデコードは、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆのステートをシフトステートに設定し、その後にアップデートステートに設定することにより実行される。
【０１０７】
ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆに入力された制御コマンドＩＲ−６が、割込みを要求するコマンドであることを知得し、バッファ２５に１ページ（セクタ）分のデータが読出されたことを検知すると、割込み情報（ＩＮＴ）をデータレジスタ２６ｃに並列に入力する。更に、ＪＴＡＧ制御ブロック２６ｂは、データレジスタ２６ｃのシフト出力が、テストデータアウトプット端子ＴＤＯから直接出力されるようにマルチプレクサ２６ｈを設定する。
【０１０８】
尚、ＪＴＡＧ制御ブロック２６ｂが、割込み情報（ＩＮＴ）をデータレジスタ２６ｃに並列入力するときには、ＪＴＡＧ制御ブロック２６ｂがデータレジスタ２６ｃのステートを一時的にキャプチャーステートにする。
【０１０９】
バッファ２５に１ページ（セクタ）分のデータが読出されたことを知らせる割込みを待つ間は、データレジスタ群のステートをシフトステートに設定し、ＴＣＫ信号を入力し続ける。
【０１１０】
バッファ２５に１ページ（セクタ）分のデータが読出され、それを知らせる割込み情報（ＩＮＴ）がデータレジスタ２６ｃ内のセルＤＲ０〜ＤＲ７に並列に入力されると（ステップＲ３：ＹＥＳ）、ＴＣＫ信号がシフトクロックとなって、テストデータアウトプット端子ＴＤＯから割込み情報（ＩＮＴ）がシフト出力される（図７（ｃ））。この割込み情報（ＩＮＴ）により、ホストシステム３０はバッファ２５に１ページ（セクタ）分のデータが読出されたことを知得する（ステップＲ３：ＹＥＳ）。
【０１１１】
バッファ２５に１ページ（セクタ）分のデータが読出されたことを知得したホストシステム３０は、バッファ２５からの読出し処理を指示する制御コマンドＩＲ−７を発生する。ＪＴＡＧインターフェースブロック２６では、制御コマンドＩＲ−７に基づき、ステップＲ４にて、バッファ２５に保持されているデータ（フラッシュメモリ１１からバッファ２５に読出されたデータ）を読出す処理を実行する。
【０１１２】
このバッファ２５からの読出し処理では、バッファ２５からの読出し処理を指示する制御コマンドＩＲ−７を、テストデータインプット端子ＴＤＩから入力する（図７（ｄ））。制御コマンドＩＲ−７は、インストラクションレジスタ２６ｆ内のセルＩＲ０〜ＩＲ３にシフト入力され、ＪＴＡＧ制御ブロック２６ｂによってデコードされる。この制御コマンドＩＲ−７のシフト入力とデコードは、上述の制御コマンドＩＲ−１の場合と同様に、インストラクションレジスタ２６ｆに対してシフトステートを設定した後に、アップデートステートを設定することにより実行される。
【０１１３】
ＪＴＡＧ制御ブロック２６ｂは、インストラクションレジスタ２６ｆに入力された制御コマンドＩＲ−７が、バッファ２５からの読出し処理を指示するコマンドであることを知得し、この処理に応じた制御を行う。
【０１１４】
即ち、バッファ２５に保持されているデータを全て読出すまで、データレジスタ群のステートをシフトステートに設定し、ＴＣＫ信号を入力し続ける。ＪＴＡＧ制御ブロック２６ｂは、バッファ２５に保持されているデータを、８ビット（１バイト）単位でデータレジスタ２６ｃ内のセルＤＲ０〜ＤＲ７に並列に入力する。各セルＤＲ０〜ＤＲ７に並列に入力されたデータは、ＴＣＫ信号をシフトクロックとしてテストデータアウトプット端子ＴＤＯからシフト出力される。
【０１１５】
８回のシフトでセルＤＲ０〜ＤＲ７に並列に入力されたデータに対応する８ビットのデータ（ＤＴ）が出力される毎に、バッファ２５に保持されているデータを、データレジスタ２６ｃ内のセルＤＲ０〜ＤＲ７に並列に入力する。この処理は、バッファ２５に保持されている５１２バイトのデータが全てテストデータアウトプット端子ＴＤＯからシフト出力されるまで続けられる。テストデータアウトプット端子ＴＤＯからは、セルＤＲ０〜ＤＲ７に並列に入力されたデータに対応する８ビットのデータＤＴ−８が、５１２バイト分連続して出力される（図７（ｅ））。
【０１１６】
尚、バッファ２５に保持されているデータを、セルＤＲ０〜ＤＲ７に並列に入力するときには、ＪＴＡＧ制御ブロック２６ｂがデータレジスタ２６ｃを一時的にキャプチャーステートにする。
【０１１７】
読出し処理でフラッシュメモリ１１から読出されるデータのページ数（セクタ数）は、ＪＴＡＧ制御ブロック２６ｂが備えるセクタカウンタによって管理される。この読出し処理では、ステップＲ１でＡＴＡレジスタ２７にセクタ数が書込まれたときに、そのセクタ数がセクタカウンタに設定される。セクタカウンタに設定された値は、ステップＲ４で１ページ（セクタ）分のデータがテストデータアウトプット端子ＴＤＯからシフト出力される毎に１ずつ減算される。従って、ステップＲ１でＡＴＡレジスタ２７に書込まれたセクタ数分の読出し処理が実行されるまで（ステップＲ５：ＮＯ）、つまり、セクタカウンタの値が"０"になるまで、ステップＲ２からステップＲ４までの処理が繰り返される。
【図面の簡単な説明】
【０１１８】
【図１】本発明の実施形態に係るフラッシュメモリシステムのブロック図である。
【図２】フラッシュメモリのブロックとページの構成を示す図である。
【図３】ＪＴＡＧインターフェースブロック及びＪＴＡＧインターフェースの概要を示す模式図である。
【図４】ＪＴＡＧインターフェースブロックを介した書込み処理を示すフローチャートである。
【図５】テストデータインプット端子から入力されるデータとテストデータアウトプット端子から出力されるデータを示す説明図である。
【図６】ＪＴＡＧインターフェースブロックを介した読出し処理を示すフローチャートである。
【図７】テストデータインプット端子から入力されるデータとテストデータアウトプット端子から出力されるデータを示す説明図である。
【符号の説明】
【０１１９】
１０        フラッシュメモリシステム
１１        フラッシュメモリ
２０        メモリコントローラ
２１        ＡＴＡインターフェースブロック
２２        マイクロプロセッサ
２３        フラッシュメモリインターフェースブロック
２４        ＥＣＣブロック
２５        バッファ
２６        ＪＴＡＧインターフェースブロック
２６ａ      ＴＡＰコントローラ
２６ｂ      ＪＴＡＧ制御ブロック
２６ｃ      データレジスタ
２６ｄ      アドレスレジスタ
２６ｅ      バイパスレジスタ
２６ｆ      インストラクションレジスタ
２６ｇ      マルチプレクサ
２６ｈ      マルチプレクサ
２６ｉ      入力カウンタ
ＴＤＩ      テストデータインプット端子
ＴＤＯ      テストデータアウトプット端子
ＴＣＫ      テストクロック端子
ＴＭＳ      テストモードセレクト端子
２７        ＡＴＡレジスタ
３０        ホストシステム
３１        ＡＴＡインターフェース
３２        ＪＴＡＧインターフェース
【図１】
2006209489.tif 000003
【図２】
2006209489.tif 000004
【図３】
2006209489.tif 000005
【図４】
2006209489.tif 000006
【図５】
2006209489.tif 000007
【図６】
2006209489.tif 000008
【図７】
2006209489.tif 000009