(57)【特許請求の範囲】
【請求項１】
不揮発性記憶装置のデ−タ転送制御回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
外部からの１つのデータの転送毎に所定のデータ受付け禁止期間であるビジー信号を発生するメモリと，
前記メモリヘのデータ設定動作を制御するためのメモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のデータを設定し，前記メモリヘ与えるためのデータスキャンレジスタと，
前記メモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタヘの１つデータが設定されたことに起因する前記メモリのビジー期間に次のデータ転送が発生し，
当該データが前記データスキャンレジスタヘ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
前記データスキャンレジスタが転送先メモリのビジー信号をキャプチャ動作するときに，前記ビジー信号をキャプチャデータ中のフラグとしてＴＡＰ回路を経由して外部へ送出し，
次回のデータスキャンレジスタへの１つのプログラム送信時に前記ビジー信号の存在を検出したときに，前記メモリに対する転送データの入力を無効化することを特徴とするデータ転送制御回路。
【請求項２】
不揮発性記憶装置のデ−タ転送制御回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
外部からの１つのデータの転送毎に所定のデータ受付け禁止期間であるビジー信号を発生するメモリと，
前記メモリヘのデータ設定動作を制御するためのメモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のデータを設定し，前記メモリヘ与えるためのデータスキャンレジスタと，
前記メモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタヘの１つデータが設定されたことに起因する前記メモリのビジー期間に次のデータ転送が発生し，
当該データが前記データスキャンレジスタヘ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データの前記データスキャンレジスタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，ビジー状態の途上に次の転送データの送信に遭遇したとき，その転送データの受付を無効化する機能をもち，
１つの転送データの前記データスキャンレジスタへの送出完了の際に，得られる出力データのビジー状態の有無を示すビジーフラグの判定の結果ビジーで無い場合に，次の１つの転送データの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，送出したデータと同じデータを再度前記データスキャンレジスタヘ送信し，得られる出力データの判定を前回と同様に実施するループをもつことを特徴とするデータ転送制御回路。
【請求項３】
不揮発性記憶装置のデ−タ転送制御回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
外部からの１つのデータの転送毎に所定のデータ受付け禁止期間であるビジー信号を発生するメモリと，
前記メモリヘのデータ設定動作を制御するためのメモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のデータを設定し，前記メモリヘ与えるためのデータスキャンレジスタと，
前記メモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタヘの１つデータが設定されたことに起因する前記メモリのビジー期間に次のデータ転送が発生し，
当該データが前記データスキャンレジスタヘ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データのデータスキャンレジスタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，
ビジー状態の途上に次の転送データの送信に遭遇したとき，前記転送データの受付を無効化する機能をもち，
１つの転送データを前記データスキャンレジスタヘの送出完了の際に，得られる出力データ中のビジーフラグの判定の結果ビジーで無い場合に，あらかじめ設定されたウェイト数の遅延後，次の１つの転送データの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，送出したデータと同じデータを再度前記データスキャンレジスタへ送信し，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とするデータ転送制御回路。
【請求項４】
不揮発性記憶装置のデ−タ転送制御回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
外部からの１つのデータの転送毎に所定のデータ受付け禁止期間であるビジー信号を発生するメモリと，
前記メモリヘのデータ設定動作を制御するためのメモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のデータを設定し，前記メモリヘ与えるためのデータスキャンレジスタと，
前記メモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタヘの１つデータが設定されたことに起因する前記メモリのビジー期間に次のデータ転送が発生し，
当該データが前記データスキャンレジスタヘ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データのデータスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，
ビジー状態の途上に次の転送データの送信に遭遇したとき，前記転送データの受付を無効化する機能をもち，
あらかじめ初期化されたウェイト数パラメータをもち，
１つの転送データの前記データスキャンレジスタヘの送出完了の際に，得られる出力データを保持し，
前記保持されたキャプチャデータ中のビジーフラグの判定の結果ビジーで無い場合に，前記ウェイト数パラメータの指定する遅延動作後に，次の１つの転送データの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，ウェイト数パラメータの値を＋１増加させて保持し，前記保持されたウェイト数の遅延動作後に前回送出したデータと同じデータを再度前記データスキャンレジスタヘ送信し，
かつ，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とするデータ転送制御回路。
【請求項５】
前記ウェイト数設定の手段が，前記ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，前記状態におけるループによることを特徴とする請求項３または４に記載のデータ転送制御回路。
【請求項６】
前記ウェイト数設定の手段が，前記ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，前記状態におけるＴＣＫクロックの伸張によることを特徴とする請求項３または４に記載のデータ転送制御回路。
【請求項７】
不揮発性記憶装置の書き換え回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
１つのプログラムデータの書込み毎に所定のデータ受付け禁止期間であるビジー信号を発生して不揮発性記憶動作が実行され，かつ，１ブロック単位での消去が可能なブロック消去型のフラッシュメモリと，
前記フラッシュメモリのプログラム動作を制御するための，メモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のプログラムデータを設定し，フラッシュメモリヘ与えるためのデータスキャンレジスタと，
前記フラッシュメモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタへの１つのプログラムデータが設定されたことに起因するフラッシュメモリが前記ビジー信号を発生して不揮発性記憶動作状態である期間に次のプログラムデータがデータスキャンレジスタへ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのプログラムデータの前記データスキャンレジスタヘの設定に起因するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータの前記データスキャンレジスタヘの入力のキャプチャ状態で検知し，前記データスキャンレジスタヘの設定の完了時に，外部ヘスティタス情報として送出し，
次回のデータスキャンレジスタヘの１つのプログラムデータ送信時に前記ビジー信号の存在を検出したときに，前記メモリに対する転送データの入力を無効化することを特徴とする書き換え回路。
【請求項８】
不揮発性記憶装置の書き換え回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
１つのプログラムデータの書込み毎に所定のデータ受付け禁止期間であるビジー信号を発生して不揮発性記憶動作が実行され，かつ，１ブロック単位での消去が可能なブロック消去型のフラッシュメモリと，
前記フラッシュメモリのプログラム動作を制御するための，メモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のプログラムデータを設定し，フラッシュメモリヘ与えるためのデータスキャンレジスタと，
前記フラッシュメモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタへの１つのプログラムデータが設定されたことに起因するフラッシュメモリが前記ビジー信号を発生して不揮発性記憶動作状態である期間に次のプログラムデータがデータスキャンレジスタへ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのプログラムデータの前記データスキャンレジスタヘの設定に起因するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータの前記データスキャンレジスタヘの入力のキャプチャ状態で検知し，前記データスキャンレジスタヘの設定の完了時に，外部ヘスティタス情報として送出し，
１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータの前記データスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，前記不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，前記次のプログラムデータの送信を無効化する機能をもち，
１つのプログラムデータの前記データスキャンレジスタヘの送出完了の際に，得られる出力データの不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果ビジーで無い場合に，次の１つのプログラムデータの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，送出したデータと同じデータを再度前記データスキャンレジスタヘ送信し，得られる出力データの判定を前回と同様に実施するループをもつことを特徴とする書き換え回路。
【請求項９】
不揮発性記憶装置の書き換え回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
１つのプログラムデータの書込み毎に所定のデータ受付け禁止期間であるビジー信号を発生して不揮発性記憶動作が実行され，かつ，１ブロック単位での消去が可能なブロック消去型のフラッシュメモリと，
前記フラッシュメモリのプログラム動作を制御するための，メモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のプログラムデータを設定し，フラッシュメモリヘ与えるためのデータスキャンレジスタと，
前記フラッシュメモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタへの１つのプログラムデータが設定されたことに起因するフラッシュメモリが前記ビジー信号を発生して不揮発性記憶動作状態である期間に次のプログラムデータがデータスキャンレジスタへ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータのデータスキャンレジンタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，前記不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，前記次のプログラムデータの送信を無効化する機能をもち，
１つのプログラムデータのデータスキャンレジスタヘの送出完了の際に，得られる出力データの不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果ビジーで無い場合に，あらかじめ設定されたウェイト数の遅延後，次の１つのプログラムデータの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，送出したデータと同じデータを再度前記データスキャンレジスタヘ送信し，
得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする書き換え回路。
【請求項１０】
不揮発性記憶装置の書き換え回路であって，
データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，
１つのプログラムデータの書込み毎に所定のデータ受付け禁止期間であるビジー信号を発生して不揮発性記憶動作が実行され，かつ，１ブロック単位での消去が可能なブロック消去型のフラッシュメモリと，
前記フラッシュメモリのプログラム動作を制御するための，メモリアドレスを指定するアドレス設定スキャンレジスタと，
前記ＴＡＰ回路を介して１転送単位のプログラムデータを設定し，フラッシュメモリヘ与えるためのデータスキャンレジスタと，
前記フラッシュメモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備え，
前記データスキャンレジスタへの１つのプログラムデータが設定されたことに起因するフラッシュメモリが前記ビジー信号を発生して不揮発性記憶動作状態である期間に次のプログラムデータがデータスキャンレジスタへ設定されるときに，前記制御回路が生成するライトパルス生成を抑制するとともに，前記アドレス設定スキャンレジスタの自動更新を抑制し，
１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータの前記データスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，前記不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，前記次のプログラムデータの送信を無効化する機能をもち，
あらかじめ初期化されたウェイト数パラメータをもち，
１つのプログラムデータの前記データスキャンレジスタヘの送出完了の際に，得られる出力データを保持し，前記保持された不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果ビジーで無い場合に，前記ウェイト数パラメータの指定する遅延動作後に，次の１つのプログラムデータの送信を準備し，
前記ビジーフラグの判定の結果ビジーである場合に，前記ウェイト数パラメータの値を＋１増加させて保持し，前記保持されたウェイト数の遅延動作後に送出したデータと同じデータを再度前記データスキャンレジスタヘ送信し，かつ，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする書き換え回路。
【請求項１１】
前記ウェイト数設定の手段が，前記ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，前記状態におけるループによることを特徴とする請求項９または１０に記載の書き換え回路。
【請求項１２】
前記ウェイト数設定の手段が，前記ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，前記状態におけるＴＣＫクロックの伸張によることを特徴とする請求項９または１０に記載の書き換え回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，不揮発性記憶装置のデータ転送制御回路，不揮発性記憶装置のプログラム制御回路，及び，通信制御装置に関し，特に，フラッシュメモリのデータプログラム方式において，いわゆるＪＴＡＧインタフェースを用いたプログラムデータの転送を実現する方式に関する。
【０００２】
【従来の技術】
近年においては，マイクロコントローラを様々なペリフェラル機能とともに混載し，いわゆるシステムＬＳＩを構成することが当たり前になってきている。かかる状況において，ＥＥＰＲＯＭやＦｌａｓｈＲＯＭ等の電気的に記憶データの消去および書き換えが可能な不揮発性記憶装置（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）は，現在のシステムＬＳＩの基本的な技術要素となっている。以下，この種の不揮発性記憶装置の代表として，フラッシュメモリを例に挙げて説明する。
【０００３】
フラッシュメモリは，電源を切っても記憶データが消失せず，電源を再投入すれば以前の記憶データを保持しつつそのまま動作し，かつ電気的に記憶データを消去およびプログラミングすることができる記憶装置である。フラッシュメモリは一般に，マイクロコントローラのプログラムコードの記憶デバイス，または，マイクロコントローラが一時的に読み出しかつ書き込むパラメータの記憶デバイスとして，マイクロコントローラチップに混載される。
【０００４】
一般にシステムＬＳＩには，短い製品ＴＡＴ（Ｔｕｒｎ−Ａｒｏｕｎｄ−Ｔｉｍｅ）が要求される。また，通常，フラッシュメモリの記憶データ（プログラムコードおよびデータ。以下，「プログラムデータ」という。）は，大規模なものとなる。したがって，システムＬＳＩには，ソフトウェアの設計段階，または，製品が市場に出ている間に生じる設計仕様の変化等に対応するために，オンボード書き換え機能が必須となっている。ここで，オンボード書き換え機能とは，ユーザシステムのプリント基板上にシステムＬＳＩを搭載したままフラッシュメモリのプログラムデータの書き換えを実施することができる機能をいう。
【０００５】
従来は，使用端子の節約のために，プログラム書き換えに用いるシステムＬＳＩと外部とのインタフェースには，もっぱらシリアルデータ転送方式が用いられており，各ＬＳＩ製造メーカにより相互に異なる様々なインタフェース回路および転送プロトコルが用いられていた。
【０００６】
一方，プリント基板上に様々なＬＳＩを搭載した状態の製品，即ちオンボード状態での製品の基板検査試験には，従来よりいわゆるＪＴＡＧ技術が用いられている。これは，ユーザシステムを構成するＬＳＩに，ＬＳＩ内部の本来の機能とは別に，各端子信号毎の入出力信号の論理レベルを設定および検知できるものである。そして，”ＩＥＥＥ ｓｔｄ．１１４９．１”の「ＩＥＥＥ Ｓｔａｎｄａｒｄ Ｔｅｓｔ Ａｃｃｅｓｓ Ｐｏｒｔ ａｎｄ Ｂｏｕｎｄａｒｙ−Ｓｃａｎ Ａｒｃｈｉｔｅｃｔｕｒｅ」，及び，「Ｊｏｉｎｔ Ｔｅｓｔ Ａｃｔｉｏｎ Ｇｒｏｕｐ （ＪＴＡＧ） Ｖｅｒｓｉｏｎ ２．０」のプロトコルに記載されるところのバウンダリスキャン回路，及び，Ｔｅｓｔ Ａｃｃｅｓｓ Ｐｏｒｔ（以下，「ＴＡＰ」という。）をもっている。
【０００７】
このＪＴＡＧ技術を用いた基板検査試験では，プリント基板に搭載されたＬＳＩのそれぞれのバウンダリスキャン回路を連続して接続することにより，１本のバウンダリスキャンチェインが構成され，ＴＡＰを介して個々のＬＳＩの信号端子の相互接続テストが実行される。
【０００８】
最近のシステムＬＳＩには，バウンダリスキャンチェインとは別に，他のスキャンチェインとして，マイクロコントローラコア（以下，「ＭＣＵコア」という。）のプログラムデバッグ機能回路のスキャンチェインを備えたものがある。かかる構成のシステムＬＳＩでは，システムＬＳＩに搭載されるＭＣＵコアのプログラムデバッグ機能のためのインタフェース手段に対しても，ＪＴＡＧ技術が用いられている。
【０００９】
このように，システムＬＳＩに内蔵されるフラッシュメモリの書き換えのためのデータ転送手段においては，ＪＴＡＧ技術を用いることができ，かつ，１つのＴＡＰ回路でデバッグ機能とフラッシュメモリの書き換え機能とを制御することができる構成が要請される。このような構成が実現されれば，プログラムの開発時に，ＴＡＰにデバッグ装置及び端末装置を接続するだけで，特別な配線もしくは特別な装置を設けることなく，プログラムのデバッグ及びフラッシュメモリのデータ書き換えが同じ環境で実行可能となる。
【００１０】
さらに，このような構成が実現できれば，１つのＴＡＰ回路デバッグ機能とフラッシュメモリの書き換え機能とを制御することができるため，１つのインタフェースに専用のフラッシュメモリ書き換え装置を接続することにより，市場でのプログラムデータの書き換えが可能となる。さらにまた，このような構成が実現できれば，１つのＴＡＰ回路でシステムＬＳＩのバウンダリスキャン回路も操作できるため，ユーザシステムのプリント基板検査工程におけるフラッシュメモリのプログラムデータ書き換えが可能となり，ユーザシステムのコスト削減に寄与することができる。
【００１１】
フラッシュメモリを内蔵したシステムＬＳＩに対して，ユーザシステム基板にＬＳＩが実装されたまま，フラッシュライタを用いて初期プログラムを書き込む手段，プロトコル，及び，回路方法の従来技術として，本件と同一出願人の特開２００１−８４７８７号公報に記載のものがある。この公報記載の従来例では，フラッシュメモリ自体へのデータ書き込み方法，いわゆるプログラム方法として，フラッシュメモリに内蔵された「セクタバッファ」に，一時的に格納されたセクタ単位のデータをメモリアレイの選択されたセクタに一括して書き込む方法について述べている。これは一般に，セクタ書き込み方式，あるいはページ書込み方式などと呼称されるが，本明細書では，以下，「セクタバッファ方式」という。
【００１２】
フラッシュメモリのデバイス構造が微細化されてくると，消去のみを特定ブロック単位で実施し，データのプログラムをブロック内の指定されたアドレス単位で実施する方式が，消費電流やプログラムスピードの点からより効率的となっている。ここで「ブロック」とは，セクタより大きなサイズである。
【００１３】
前記公報記載の回路構成はセクタバッファ方式であるため，データスキャンレジスタ（以下，ＤＲレジスタという。）へ所定のバイト数のデータを転送することによりセクタバッファへ目的のセクタ分のデータを格納した後，ファンクションコマンドレジスタ（以下，ＦＣＲレジスタという）ヘコマンドを設定することをトリガとする。そして，そのセクタバッファの格納データが所定のメモリアレイの所定のセクタヘ一括してプログラムされるように機能する。
【００１４】
前記公報記載の従来の回路方式の全体構成を図８に，また，プログラムデータをＤＲレジスタへ転送する手段について，ＤＲレジスタへの転送に関わる部分のみの回路を抜粋して図９に示す。また，図７は，ＪＴＡＧのＴＡＰコントローラ回路の状態遷移を示す。
【００１５】
図８のＪＴＡＧのＴＡＰ回路８は，ＴＣＫに同期して，ＴＭＳの論理状態が図７に示すような１６個の状態を遷移する。ＪＴＡＧのＴＡＰ回路８は，ＴＡＰコントローラ回路７４と，インストラクションレジスタ（ＩＲ）６２と，１ビットのバイパスレジスタ６４などの基本構造に，任意のデータを設定可能なＳＣＮレジスタ６６とを追加したものである。
【００１６】
これらのスキャンレジスタ（以下，レジスタという）へのデータアクセスは，すべて図７に示すＴＡＰコントローラ回路７４の状態遷移により実行される。すなわち，各スキャンレジスタはCapture状態のとき，パラレルデータをとりこむCapture動作，ＴＤＩからの入力論理をＴＣＫの１クロック毎にシフトし，その都度ＴＤＯから出力するShift動作，ＴＤＩからの入力論理の複数のShift動作によるひとまとまりのスキャンデータをパラレルデータとして出力するUpdate動作を基本としている。さらに，ＩＲレジスタに対するスキャン動作を規定した状態遷移については，「−ＩＲ」を付し，インストラクション・スキャンと呼称する。一方，ＩＲレジスタ以外のスキャンレジスタのスキャン動作を規定した状態遷移については，同様に「−ＤＲ」を付し，データ・スキャンと呼称する。
【００１７】
図７で，ＴＡＰコントローラ回路７４のＣａｐｔｕｒｅ−ＩＲ以降，Ｕｐｄａｔｅ−ＩＲまでのインストラクション・スキャンの遷移により，インストラクションレジスタ（ＩＲ）６２ヘのインストラクションの設定が実施される。そして，インストラクションレジスタ（ＩＲ）６２で設定された所定のインストラクションが選択するレジスタに対して，ＴＡＰコントローラ回路７４のデータ・スキャンの遷移により，そのインストラクションが指定するレジスタヘのデータアクセスが実施される。図８の，バイパスレジスタ（ＢＰ）６４，ＳＣＮレジスタ６６へのアクセスも専用のインストラクションにより指定され，ＳＣＮレジスタ６６とともに，ＴＤＩとＴＤＯ間に接続された１つのスキャンレジスタとして機能する。
【００１８】
ＳＣＮレジスタ６６のある所定のコードは，デコーダ回路１０によりデコードされ，レジスタブロック６に対してのアクセスのイネーブル信号として機能し，レジスタブロック６内部の各種のスキャンレジスタを一括して選択可能にする
【００１９】
レジスタブロック６内部では，ＳＣＢＮレジスタ２６が専用のインストラクションにより指定されるが，ＳＣＢＮレジスタ２６以外のレジスタ，即ち，ＰＲＦレジスタ２８，ＳＥＣＡＤＲレジスタ３０，ＤＲレジスタ３２，及び，ＦＣＲレジスタ３４は，ＩＲレジスタに設定済みの共通のあるインストラクション（ここでは，「ＩＮＴＥＳＴ命令」という）によりアクセスされる。ただし，ＰＲＦレジスタ２８，ＳＥＣＡＤＲレジスタ３０，ＤＲレジスタ３２，ＦＣＲレジスタ３４のそれぞれは，ＳＣＢＮレジスタ２６に設定されたコードの内容によりそれぞれ割り付けられている。そして，ＳＣＢＮレジスタ２６の設定内容によりＰＲＦレジスタ２８，ＳＥＣＡＤＲレジスタ３０，ＤＲレジスタ３２，及び，ＦＣＲレジスタ３４のうちのいずれかが選択され，ＴＤＩとＴＤＯ間に接続された１つのスキャンレジスタ（レジスタ）としてＩＮＴＥＳＴ命令によりアクセスされる。
【００２０】
レジスタブロック６は，不揮発性記憶メモリ（以下，「フラッシュコア」という）４へのアクセスを行うための信号；Ｓ１，Ｓ２，Ｓ３，Ｓ４，及び，Ｓ５を生成し，検知するためのレジスタブロックである。レジスタブロック６は，バイトカウンタ（ＷＣＴＲ）３６，ＳＥＣＡＤＲレジスタ３０，ＤＲレジスタ３２などから構成されている。バイトカウンタ（ＷＣＴＲ）３６は，フラッシュコア４からのアドレス信号Ｓ１の中のバイトアドレスを設定する。ＳＥＣＡＤＲレジスタ３０は，Ｓ１の中の行アドレスを設定する。ＤＲレジスタ３２は，フラッシュコア４へのライトイネーブル，及び，リードイネーブル信号などの制御信号Ｓ４を生成するとともに，フラッシュコア４からの読み出しデータ信号Ｓ２を検知し，かつ，フラッシュコア４への書き込みデータ信号Ｓ３を設定する。フラッシュコア４の不揮発性記憶動作の実行を示すビジー信号（ＢＵＳＹ）は，Ｓ５としてＦＣＲレジスタ３４のＣａｐｔｕｒｅデータに反映されている。
【００２１】
ＰＲＦレジスタ２８には，フラッシュコア４及びレジスタブロック６の構成に関するパラメータがあらかじめＣａｐｔｕｒｅデータとして設定してある。ＰＲＦレジスタ２８は，書き換えあるいは読み出しを選択するｗｒｅｎフラグが設定可能である。
【００２２】
レジスタブロック６内部の各レジスタは，ＪＴＡＧのＴＡＰ回路８で制御できるスキャンレジスタであり，それぞれは，ＴＤＩとＴＤＯ間に，ＳＣＢＮ，ＳＣＮとともに並列に配置された構成になっている。
【００２３】
前記公開公報に記載されたように，これらのスキャンレジスタは，ＳＣＮの所定の設定値によりレジスタブロック６全体が選択される。そしてその後に，ＳＣＢＮレジスタ２６の所定の設定値により，レジスタブロック６内部の各レジスタが選択され，あたかもＴＤＩ，ＴＤＯ間に直接接続されているかのように機能する。
【００２４】
図９によって，フラッシュコア４の所定のセクタヘ１つのセクタ分のデータを不揮発性記憶させる（以下，「プログラム」という）操作について説明する。
【００２５】
まず，図８のＰＲＦレジスタ２８へのアクセスにより，ｗｒｅｎフラグを論理”１”に設定する。次に，ＳＥＣＡＤＲレジスタ３０を選択し，ＳＥＣＡＤＲレジスタ３０に目的のセクタアドレス値を設定する。このとき，ＳＥＣＡＤＲレジスタ３０の設定動作は，Ｕｐｄａｔｅ−ＤＲ状態に起因して生成される，Ｕｐｄａｔｅクロック（Ｕｐｄａｔｅ−ＳＥＣＡＤＲ＿ＣＫ）により，同時にバイトカウンタ（ＷＣＴＲ）３６の内容が初期化される。ＳＥＣＡＤＲレジスタ３０によりフラッシュコア４のセクタアドレスが指定され，メモリアレイ中の目的のセクタが選択される。また，バイトカウンタ（ＷＣＴＲ）３６により，セクタバッファ内部の最下位アドレスが指定される。
【００２６】
次に，ＤＲレジスタ３２を選択して，ＴＤＩを経由してＤＲレジスタ３２のスキャンデータ入力ＳＣＡＮＩＮへ１バイトのデータを転送すると，ＴＡＰ回路のＵｐｄａｔｅ−ＤＲ状態で，１バイトの転送データがＤＲレジスタ３２へＵｐｄａｔｅ（設定）される。これとともに，リード／ライト制御回路３８によりライトパルス制御信号を含むＳ４が発生し，Ｓ１のＡ［ｎ−１：０］で指定された，セクタバッファの現在のセクタ位置へ，ＤＲレジスタ３２の設定データがＳ４とともに書き込まれる。さらに，このＵｐｄａｔｅ−ＤＲ状態は，バイトカウンタ（ＷＣＴＲ）３６の内容を＋１インクリメントし，次の１バイトのデータ転送に対応するようにセクタバッファ内セクタ位置を更新する。
【００２７】
この１バイト単位のセクタバッファヘの書込み操作をセクタサイズのバイト数分繰り返した後，ＦＣＲレジスタ３４を選択し，プログラムコマンドのコードをＵｐｄａｔｅ動作により設定する。ＦＣＲレジスタ３４に設定されたプログラムコマンドのコードによりフラッシュコア４は，セクタバッファ内部のデータを，ＳＥＣＡＤＲレジスタ３０により指定された不揮発性記憶エリア（いわゆる「メモリアレイ」）の目的のセクタヘ，不揮発性記憶操作を実行する。この不揮発性記憶動作の期間フラッシュコア４は，ビジー信号（ＢＵＳＹ）Ｓ５を発生する。その論理値は，ＦＣＲレジスタ３４へＮＯＰコマンドを印加したときのＣａｐｔｕｒｅデータとしてＴＤＯ出力により観測可能である。
【００２８】
一方，フラッシュコア４の所定のセクタからのデータ読み出し手順は，ＰＲＦレジスタ２８のｗｒｅｎフラグを論理”０”に設定することにより，図９のｗｒｅｎ信号を論理”０”にすることから開始する。
【００２９】
次に，ＳＥＣＡＤＲレジスタ３０に読み出すべき目的のセクタアドレスを設定し，バイトカウンタ（ＷＣＴＲ）３６を初期化する。次に，ＳＣＡＮＩＮへ任意のデータを転送する。このとき，ｗｒｅｎが論理”０”であるため，リード／ライト制御回路３８はリード制御信号を出力し，論理回路２０３は，フラッシュコア４のデータ出力Ｓ２を選択する。そして，ＤＲレジスタ３２のＣａｐｔｕｒｅ−ＤＲ状態により，Ｓ２がＤＲレジスタ３２のＣａｐｔｕｒｅデータとして取り込まれ，Ｓｈｉｆｔ−ＤＲ状態の１バイト分の遷移とともに，ＴＤＯからＳ２と等価な内容のＣａｐｔｕｒｅデータが出力され，１バイトの読み出しが実施される。このとき，Ｕｐｄａｔｅ−ＤＲ状態で，バイトカウンタ（ＷＣＴＲ）３６は＋１のインクリメントが実行され，次の１バイトの読み出しの準備がなされる。
【００３０】
プログラム時において，ＤＲレジスタ３２へのデータ転送が，外部装置であるフラッシュライタからデータを送信する場合には，ＤＲレジスタ３２へＵｐｄａｔｅされたデータは，常にセクタバッファヘ順次ストアされる。そして，フラッシュコア４の不揮発性記憶動作を伴わず，フラッシュコア４からのウェイトにより保留されることが無いため，ＤＲレジスタ３２へのデータ転送の制約は発生しなかった。
【００３１】
【発明が解決しようとする課題】
しかしながら，上記図８に示す回路構成をブロック消去型のフラッシュコアに適用する場合，フラッシュコアへの１バイト毎の書き込みにより，不揮発性記憶アレイの所定のブロックの，同ブロック内のバイト位置へ不揮発性記憶動作が実行，即ち，プログラムされる。このため，その都度，フラッシュコア不揮発性記憶操作期間が発生し，その不揮発性記憶操作期間状態を明示する手段としてのＢＵＳＹ信号がフラッシュコアから出力される。即ち，ＢＵＳＹが論理”１”のとき，フラッシュコアは不揮発性記憶操作期間であり，フラッシュコアに対するプログラム操作及び読み出し操作を受け付けない状態となる。
【００３２】
また，ＢＵＳＹが論理”０”のとき，フラッシュコアは不揮発性記憶操作が発生していない通常動作であり，フラッシュコアはプログラム操作の受付可能な状態，もしくは，データ読み出し可能な状態である。
【００３３】
ここで，図１０に，ブロック消去型のフラッシュコアである，フラッシュコア４Ａの概略を示す。フラッシュコア４Ａは図１０に示すように，不揮発記憶メモリアレイ１２と，行アドレスデコーダ１４と，列アドレスデコーダ１６と，制御回路２０とから構成されている。不揮発記憶メモリアレイ１２は，電気的にプログラム及び消去が可能な不揮発性記憶素子で構成されている。行アドレスデコーダ１４は，不揮発記憶メモリアレイ１２のうち，部分消去の実行単位であるブロックを選択する。列アドレスデコーダ１６は，行アドレスデコーダ１４で選択されたブロック２４に対する列アドレスであり，ブロック２４のワードデータ格納位置を生成する。制御回路２０は，外部からプログラム，消去，読み出し等の制御信号Ｓ４を受け取り，不揮発記憶メモリアレイ１２への不揮発性記憶動作期間中に外部からのＳ４の操作を禁止することを意味するビジー信号Ｓ５を出力する。図１０では，行アドレスデコーダ１４，制御回路２０，列アドレスデコーダ１６，不揮発記憶メモリアレイｌ２，及び，センスアンプ２２以外の回路ブロックについては記載を省略している。
【００３４】
図１０のフラッシュコア４Ａへのプログラム動作を実行するために，ＤＲレジスタ３２に対して１バイトのデータ転送する場合，前回の書き込みデータに起因する不揮発性記憶動作信号ＢＵＳＹが論理”１”の間には，次のデータ転送はできない。このため，ＢＵＳＹが論理”０”になり，この不揮発性記憶動作状態が完了した後に，次のデータ転送を開始しなければならない。さもないと，転送データが無視され，かつ，バイトカウンタ（ＷＣＴＲ）３６が余分に＋１インクリメントされてしまう。結局，選択されたブロックには，誤ったデータをプログラムする恐れがあった。
【００３５】
上記の転送データの消失と，誤プログラムとを防止するため，このＢＵＳＹフラグの論理を考慮しながら，ＤＲレジスタ３２へのアクセスを制御する手段として，以下の方法Ａが考えられる。
【００３６】
従来技術では，ＢＵＳＹフラグがＦＣＲレジスタ３４のＣａｐｔｕｒｅデータにより観測可能である。そこで，方法Ａは，ＤＲレジスタ３２への１バイトのデータ転送後，ＦＣＲレジスタ３４を選択し，ＦＣＲレジスタ３４へのＮＯＰアクセスでＣａｐｔｕｒｅデータのＢＵＳＹフラグを検出する。この検出されたＢＵＳＹフラグが論理”０”であることが確認された後，再度ＤＲレジスタ３２を選択し，ＤＲレジスタ３２へ次の１バイトのデータ転送を開始するようにする。
【００３７】
方法Ａの場合，ＦＣＲレジスタ３４，ＤＲレジスタ３２の両レジスタの選択には，上記で説明したように，ＳＣＢＮレジスタ２６へそれぞれのレジスタに対する所定のコード値を設定する必要がある。図７によれば，Ｒｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態から始まり，ＦＣＲレジスタ３４のＣａｐｔｕｒｅデータを参照し，再度，ＤＲレジスタ３２をアクセス可能とするまでのフローは，以下のようになる。以下に，各手順内容と，それに要するＴＣＫクロック数を記載する。
【００３８】
▲１▼ＳＣＢＮレジスタ２６へ所定のコードを設定し，ＦＣＲレジスタ３４を選択する。：１９クロック
▲２▼ＦＣＲレジスタ３４を操作するために，ＩＮＴＥＳＴ命令をＩＲレジスタ６２に設定する。：１０クロック
▲３▼ＦＣＲレジスタ３４へＮＯＰデータを転送し，そのときのＣａｐｔｕｒｅデータを検出する。：９クロック
▲４▼ＳＣＢＮレジスタ２６へ所定のコードを設定し，ＤＲレジスタ３２を選択する。：１９クロック
▲５▼ＤＲレジスタ３２を操作するために，ＩＮＴＥＳＴ命令をＩＲレジスタ６２に設定する。：１０クロック
【００３９】
以上▲１▼〜▲５▼を合計すると，全体として６７クロックを必要とすることになる。つまり，１回のＢＵＳＹチェックのために，６７クロックが余分に必要となる。これを，フラッシュコアのブロックサイズが２ＫＢで，１バイト単位のプログラム時間が２０μｓのフラッシュコアを例に，１プロックのプログラムの場合を想定すると，以下の様になる
【００４０】
１クロックを１０μｓとすれば，ＢＵＳＹチェックに要する時間は６７×２０４８クロック×１０μｓ，即ち１．３７ｓｅｃである。また，フラッシュコアに対する不揮発性記憶時間は，２０μｓ×２０４８バイト，即ち，４１ｍｓとなる。
【００４１】
以上より，方法Ａのデータ転送に要するＢＵＳＹチェックの新たな追加時間は，本来のプログラム時間（２０μｓ×２０４８，即ち，４１ｍｓ）に比べて無視できなくなり，実際のプログラム時間効率が非常に悪くなるという欠点があった。
【００４２】
オンボードフラッシュライタでフラッシュメモリの書き換えを実行する場合，ＴＣＫのクロック周波数は，ＬＳＩの周囲の電気的ノイズ等の外乱によるデータ転送の誤りを防止するため，あまり高くすることができないという事情がある。実際のＴＣＫのクロックは，上記１０μｓよりかなり遅くならざるを得ず，上記問題は，ますます深刻になるという問題があった。
【００４３】
フラッシュコア４のＢＵＳＹによるプログラム失敗を避けるためのもう一つの手段として，以下の方法Ｂが考えられる。
【００４４】
方法Ｂは，現実のフラッシュコアのＢＵＳＹ期間＋余裕分のウェイトを考慮して，フラッシュライタがアクセスするようにする方法である。
【００４５】
方法Ｂの場合，ＢＵＳＹ期間は，フラッシュコアを構成するデバイスのプロセスに依存する。このため，近年のように，デバイスプロセスの進化が進む中では，１つのプロセス毎に，フラッシュライタのプロトコルにおいてそのウェイト時間を変えるようになる。しかしながら，同一プロセスのデバイスであっても，不揮発性記憶動作の深さは，デバイスの印加電圧，温度，プロセスの工程により異なる。このため，ＢＵＳＹの時間幅は，これらのバラツキを考慮して十分な余裕をもったウェイトを挿入しなければならず，しかもデータ転送の効率を損なわないようにするのは困難であった。
【００４６】
また，システムＬＳＩ等の量産工程でのユーザシステムの検査工程において，プログラムコードを内蔵されたフラッシュへ同時にプログラムするような場合，フラッシュのプログラム時間の長短は，ユーザシステムの製造コストに大きな影響を与えるという問題があった。
【００４７】
さらに，従来例のプログラム方式，ブロック消去タイプフラッシュコアヘのプログラム方法など，異なるプログラム方式に対して，別々にフラッシュライタを揃えることは，取り扱いの煩雑さ，使い勝手の面から，不自由さがあり，両者の方式を共通に扱える仕組みが望まれていた。
【００４８】
そこで本発明は，ブロック消去タイプのフラッシュメモリを対象として，フラッシュライタでフラッシュメモリの書き換えを実行する場合に，ＢＵＳＹチェックに要する時間を増やすことなく，データ転送における余分なアクセス，及び，余分なクロック数を排除できて高速なプログラム動作が可能になる不揮発性記憶装置のデ−タ転送制御回路，及び，不揮発性記憶装置の書き換え回路を提供することを目的とする。
【００４９】
また，本発明は，フラッシュコアの目的のブロックに対する１ブロック分のプログラム操作が，比較的簡単なフローで実行でき，安定的かつ効率的にプログラム操作が実行できる不揮発性記憶装置のデ−タ転送制御回路，及び，不揮発性記憶装置の書き換え回路を提供することを目的とする。
【００５０】
さらに本発明は，異なるプログラム方式に対して別々にフラッシュライタを揃えることなく，ＬＳＩに内蔵されているフラッシュコアのプログラム方式があらかじめ判明していなくても，また，フラッシュライタにそのフラッシュコアのプログラム方式の種別が設定されていなくても，フラッシュライタ自体がそのＬＳＩへアクセスする過程で自動的にフラッシュコアの種別を判断することが可能である不揮発性記憶装置のデ−タ転送制御回路，不揮発性記憶装置の書き換え回路，及び，通信制御装置を提供することを目的とする。
【００５１】
【課題を解決するための手段】
上記目的を達成するための本発明の不揮発性記憶装置のデ−タ転送制御回路は，データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，外部からの１つのデータの転送毎に所定のデータ受付け禁止期間であるビジー信号を発生するメモリと，メモリヘのデータ設定動作を制御するためのメモリアドレスを指定するアドレス設定スキャンレジスタと，ＴＡＰ回路を介して１転送単位のデータを設定し，メモリヘ与えるためのデータスキャンレジスタと，メモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備える。
【００５２】
そして，データスキャンレジスタヘの１つデータが設定されたことに起因するメモリのビジー期間に次のデータ転送が発生し，当該データがデータスキャンレジスタヘ設定されるときに，制御回路が生成するライトパルス生成を抑制し，結果としてビジー信号が発生せず，アドレス設定スキャンレジスタの自動更新を抑制することを特徴とする。
【００５３】
このような構成により，フラッシュライタでフラッシュメモリの書き換えを実行する場合に，ＢＵＳＹチェックに要する時間を増やすことなく，データ転送における余分なアクセス，及び，余分なクロック数を排除できて高速なプログラム動作が可能になる。
【００５４】
また，上記目的を達成するための本発明の他の不揮発性記憶装置のデ−タ転送制御回路は，上記構成でさらに，データスキャンレジスタが転送先メモリのビジー信号をキャプチャ動作するときに，ビジー信号をキャプチャデータ中のフラグとしてＴＡＰ回路を経由して外部へ送出し，次回のデータスキャンレジスタへの１つのプログラム送信時にビジー信号の存在を検出したときに，メモリに対する転送データの入力が無効化することを特徴とする。
【００５５】
また，上記目的を達成するための本発明の他の不揮発性記憶装置のデ−タ転送制御回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データのデータスキャンレジスタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，ビジー状態の途上に次の転送データの送信に遭遇したとき，その転送データの受付を無効化する機能をもつ。
【００５６】
そして，１つの転送データのデータスキャンレジスタへの送出完了の際に，得られる出力データのビジー状態の有無を示すビジーフラグの判定の結果，ビジーで無い場合に，次の１つの転送データの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，送出したデータと同じデータを再度データスキャンレジスタヘ送信し，得られる出力データの判定を前回と同様に実施するループをもつことを特徴とする。
【００５７】
このような構成により，フラッシュコアの目的のブロックに対する１ブロック分のプログラム操作が，比較的簡単なフローで実行でき，安定的かつ効率的にプログラム操作が実行できる。
【００５８】
また，上記目的を達成するための本発明の他の不揮発性記憶装置のデ−タ転送制御回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データのデータスキャンレジスタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，ビジー状態の途上に次の転送データの送信に遭遇したとき，転送データの受付を無効化する機能をもつ。
【００５９】
そして，１つの転送データをデータスキャンレジスタヘの送出完了の際に，得られる出力データ中のビジーフラグの判定の結果，ビジーで無い場合に，あらかじめ設定されたウェイト数の遅延後，次の１つの転送データの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，送出したデータと同じデータを再度データスキャンレジスタへ送信し，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする。
【００６０】
また，上記目的を達成するための本発明の他の不揮発性記憶装置のデ−タ転送制御回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つの転送データとともに発生するビジー状態を，次の転送データのデータスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，ビジー状態の途上に次の転送データの送信に遭遇したとき，転送データの受付を無効化する機能をもつ。そして，あらかじめ初期化されたウェイト数パラメータをもち，１つの転送データのデータスキャンレジスタヘの送出完了の際に，得られる出力データを保持する。
【００６１】
そして，保持されたキャプチャデータ中のビジーフラグの判定の結果，ビジーで無い場合に，ウェイト数パラメータの指定する遅延動作後に，次の１つの転送データの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，ウェイト数パラメータの値を＋１増加させて保持し，保持されたウェイト数の遅延動作後に前回送出したデータと同じデータを再度データスキャンレジスタヘ送信し，かつ，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする。
【００６２】
ウェイト数設定の手段は，ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，この状態におけるループによってもよく，また，Ｒｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態におけるＴＣＫクロックの伸張によってもよい。
【００６３】
また，上記目的を達成するための本発明の不揮発性記憶装置の書き換え回路は，データ入力信号ＴＤＩ，データ出力信号ＴＤＯ，モード選択信号ＴＭＳ，及び，クロック信号ＴＣＫを外部信号として構成されるＪＴＡＧに規定されたＴＡＰ回路と，１つのプログラムデータの書込み毎に不揮発性記憶動作が実行され，かつ，１ブロック単位での消去が可能なブロック消去型のフラッシュメモリと，フラッシュメモリのプログラム動作を制御するための，メモリアドレスを指定するアドレス設定スキャンレジスタと，ＴＡＰ回路を介して１転送単位のプログラムデータを設定し，フラッシュメモリヘ与えるためのデータスキャンレジスタと，フラッシュメモリヘプログラム動作実行の指示を与えるライトパルス生成のための制御回路とを備える。
【００６４】
そして，データスキャンレジスタへの１つのプログラムデータが設定されたことに起因するフラッシュメモリが不揮発性記憶動作状態である期間に次のプログラムデータがデータスキャンレジスタへ設定されるときに，制御回路が生成するライトパルス生成を抑制し，結果としてアドレス設定スキャンレジスタの自動更新を抑制することを特徴とする。
【００６５】
また，上記目的を達成するための本発明の他の不揮発性記憶装置の書き換え回路は，上記構成でさらに，１つのプログラムデータのデータスキャンレジスタヘの設定に起因するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータのデータレジスタヘの入力のキャプチャ状態で検知し，データレジスタヘの設定の完了時に，外部ヘスティタス情報として送出する。
【００６６】
そして，次回のデータスキャンレジスタヘの１つのプログラムデータ送信時にビジー信号の存在を検出したときに，メモリに対する転送データの入力が無効化することを特徴とする。
【００６７】
また，上記目的を達成するための本発明の他の不揮発性記憶装置の書き換え回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータのデータスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，次のプログラムデータの送信を無効化する機能をもつ。
【００６８】
そして，１つのプログラムデータのデータスキャンレジスタヘの送出完了の際に，得られる出力データの不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果，ビジーで無い場合に，次の１つのプログラムデータの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，送出したデータと同じデータを再度データスキャンレジスタヘ送信し，得られる出力データの判定を前回と同様に実施するルーブをもつことを特徴とする。
【００６９】
また，上記目的を達成するための本発明の他の不揮発性記憶装置の書き換え回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータのデータスキャンレジンタヘの転送入力の始めの状態で検知し，転送終了後に出力するとともに，不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，次のプログラムデータの送信を無効化する機能をもつ。
【００７０】
そして，１つのプログラムデータのデータスキャンレジスタヘの送出完了の際に，得られる出力データの不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果，ビジーで無い場合に，あらかじめ設定されたウェイト数の遅延後，次の１つのプログラムデータの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，送出したデータと同じデータを再度データレジスタヘ送信し，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする。
【００７１】
また，上記目的を達成するための本発明の他の不揮発性記憶装置の書き換え回路は，上記いずれかの構成でさらに，１つのデータスキャンレジスタに対する１つのプログラムデータ送信とともに発生するフラッシュメモリの不揮発性記憶動作状態の有無を，次のプログラムデータのデータスキャンレジスタへの転送入力の始めの状態で検知し，転送終了後に出力するとともに，不揮発性記憶動作状態の途上に次のプログラムデータの送信に遭遇したとき，次のプログラムデータの送信を無効化する機能をもつ。
【００７２】
そして，あらかじめ初期化されたウェイト数パラメータをもち，１つのプログラムデータのデータスキャンレジスタヘの送出完了の際に，得られる出力データを保持する。保持された不揮発性記憶動作状態の有無を示すビジーフラグの判定の結果，ビジーで無い場合に，ウェイト数パラメータの指定する遅延動作後に，次の１つのプログラムデータの送信を準備する。ビジーフラグの判定の結果，ビジーである場合に，ウェイト数パラメータの値を＋１増加させて保持し，保持されたウェイト数の遅延動作後に送出したデータと同じデータを再度データレジスタヘ送信し，かつ，得られる出力データの判定を前回と同様に実施するフローをもつことを特徴とする。
【００７３】
ウェイト数設定の手段は，ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，状態におけるループによってもよく，また，ＴＡＰコントローラの状態遷移におけるＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の保持，及び，状態におけるＴＣＫクロックの伸張によってもよい。
【００７７】
【発明の実施の形態】
以下に，本発明のいくつかの実施の形態を，図面を用いて説明する。なお，本明細書及び図面において，実質的に同一の機能構成を有する構成要素については，同一の符号を付することにより重複説明を省略する。
【００７８】
（第１の実施形態）
図１は，この発明の第１の実施形態を示す回路図であり，ブロック消去タイプのフラッシュコア４Ａに対するプログラム転送動作を説明する回路図である。なお，図１では，従来例を示す図９に対応する部分についてのみ記載した。全体回路図については，図８のフラッシュコア４を４Ａと読み替えて説明する。
【００７９】
ＤＲレジスタ３２のＣａｐｔｕｒｅデータは，ｗｒｅｎが”０”のとき，フラッシュコア４Ａのデータ出力Ｓ２が選択される。一方，ｗｒｅｎが”１”のとき，フラッシュコア４Ａの不揮発性記憶によりアクティブとなるＢＵＳＹ信号が選択される。このように機能するマルチプレクサ回路（ＭＵＸ）２０３Ａが，従来の構成に追加されており，マルチプレクサ回路２０３Ａの出力は，ＤＲレジスタ３２のＣａｐｔｕｒｅ側に接続されている。
【００８０】
また，従来技術と異なり，リード／ライト制御回路３８Ａが設けられている。リード／ライト制御回路３８Ａにより，フラッシュコア４Ａのリード／ライトの制御信号ｎＲＥ，及び，ｎＷＥが制御される。ＤＲレジスタ３２のＵｐｄａｔｅ−ＤＲ状態によるフラッシュコア４Ａの不揮発性記憶サイクル時であることを示すＢＵＳＹのアクティブ期間と，ＤＲレジスタ３２のＣａｐｔｕｒｅ状態とが遭遇した場合に，フラッシュコア４ＡはｎＷＥを受け付けないので不揮発性記憶動作が起動せず，結果として，その転送に関わるバイトカウンタ（ＷＣＴＲ）３６のカウントパルス２２０が抑制される。
【００８１】
図１０に示すように，不揮発性メモリアレイ１２の部分消去の単位であるブロックのうち，フラッシュコア４Ａのデータ書き換えに必要な信号は，Ｓ１，Ｓ２，Ｓ３，Ｓ４，及び，Ｓ５からなる。Ｓ１は，指定ブロック，及び，選択されたブロック２４のデータ単位を指定するバイトアドレスからなるアドレス信号である。Ｓ２は，選択されたブロック２４のうち列アドレスデコーダ１６で指定される特定のバイトからの読み出しデータ信号である。Ｓ３は，不揮発性メモリアレイ１２のブロック２４へのプログラムデータ信号である。Ｓ４は，フラッシュコア４Ａに対する読み出し，プログラム操作，及び全体消去などの各操作を指示するための制御信号である。そしてＳ５は，フラッシュコア４Ａへの個々の操作の状況を示すスティタス信号である。そして，Ｓ１，Ｓ２，Ｓ３，Ｓ４，及び，Ｓ５は，それぞれ図８のものと同様のレジスタブロック６へ接続されている。
【００８２】
レジスタブロック６は，フラッシュコア４Ａへのアクセスを行うための信号，Ｓ１，Ｓ２，Ｓ３，Ｓ４，及び，Ｓ５を生成，及び，検知するためのレジスタブロックである。そして，フラッシュコア４Ａのアドレス信号Ｓ１の中のバイトアドレスを設定するバイトカウンタ（ＷＣＴＲ）３６と，Ｓ１の中のブロックアドレスを設定するＳＥＣＡＤＲレジスタ３０と，制御信号Ｓ４を生成するとともに，フラッシュコア４Ａの読み出しデータ信号Ｓ２を検知し，かつ，フラッシュコア４Ａへの書き込みデータ信号Ｓ３を設定するＤＲレジスタ３２等から構成されている。
【００８３】
第１の実施形態の動作を，図２，図３を用いて説明する。図２，図３は，第１の実施形態の動作を示すタイミングチャートであり，図２はＢＵＳＹ信号の非検出，図３はＢＵＳＹ信号の検出を表す。
【００８４】
フラッシュライタからのフラッシュコア４Ａの所定のブロックヘ１ブロック分のプログラム操作を実行する場合，あらかじめ目的のブロックを指定するためＳＥＣＡＤＲレジスタ３０へ所定の行アドレスを，ＪＴＡＧ端子を介して設定する。
【００８５】
このとき，ＳＥＣＡＤＲレジスタ３０のアクセスは，Ｕｐｄａｔｅ−ＤＲ状態においてＵｐｄａｔｅ＿ＳＥＣＡＤＲ＿ＣＫ２１８が入力される。この信号２１８は，ＳＥＣＡＤＲレジスタ３０のＵｐｄａｔｅ動作を実行するとともに，カウンタ（ＷＣＴＲ）３６を同時にクリアする。そして，Ｓ１，即ちフラッシュコア４ＡのアドレスＡ［ｍ−１：０］は，所定のブロックの先頭アドしスを示すことになる。
【００８６】
次に，選択されたブロックへ，１バイト単位でデータのプログラム操作の目的で，当該ブロックサイズ分のデータを１バイト単位でＤＲレジスタ３２へ転送する操作を実施する。
【００８７】
図２に示すタイミング動作のように，最初の１バイト目の転送では，フラッシュコアは何らの不揮発性記憶操作を実行していない。このため，ＤＲレジスタ３２へ１バイトのデータをスキャンし，Ｕｐｄａｔｅ−ＤＲ時点１バイト目のデータをＵｐｄａｔｅ＿ＤＲ＿ＣＫ２１０によりＵｐｄａｔｅして設定すると，信号２１０により，リード／ライト制御回路３８Ａは，フラッシュコア４ＡヘのライトパルスｎＷＥを生成する。このときフラッシュコア４Ａは，バイトカウンタ（ＷＣＴＲ）３６が初期状態である。このため，このライトパルスにより，フラッシュコア４ＡはＳＥＣＡＤＲレジスタ３０により選択されたブロックの最初の列アドレスへ，１バイトの不揮発性記憶操作を開始する。そして，その不揮発性記憶実行中であることを示すＢＵＳＹ信号に論理”１”を出力する。このＢＵＳＹ信号は，フラッシュコア４Ａ内の不揮発記憶動作が完了するまで論理”１”を保持する。この時間は，フラッシュコア４Ａ内部の回路及びプロセスに依存し，製造プロセス中のウェハ・プロセスのバラツキにより，個々のチップにより異なる。また，同一チップであっても電源電圧により変動する。
【００８８】
次に，２番目のプログラムデータがＤＲレジスタ３２へ転送される操作が開始される。そして，このＢＵＳＹが論理”１”の期間の終了後に，２番目のＤＲレジスタアクセスにおけるＣａｐｔｕｒｅ−ＤＲが生成される。すると，２番目のＤＲレジスタ３２へのＵｐｄａｔｅが正常に実行され，同様にｎＷＥが生成され，フラッシュコア４Ａの１バイトの不揮発性記憶が開始する。
【００８９】
このとき，１番目の不揮発性記憶の終了を意味するＢＵＳＹの立下がりで，バイトカウンタ（ＷＣＴＲ）３６は＋１インクリメントされる。そして，Ｓ１の示すアドレスは，バイトカウンタ（ＷＣＴＲ）３６の更新値により同じブロックの２番目のバイト位置を示すアドレスに更新される。
【００９０】
しかしながら，１番目のＢＵＳＹ期間中に２番目の３２のアクセスによるＣａｐｔｕｒｅ−ＤＲ状態が重なった場合は事情は異なる。
【００９１】
図３のタイミング動作に示されるように，１番目のｎＷＥの発生から一定期間ＢＵＳＹが発生する。２番目の３２のアクセスによるＵｐｄａｔｅ−ＤＲ状態では，そのＢＵＳＹが論理”０”である保証は無いため，ＤＲレジスタ３２のアクセスによるＣａｐｔｕｒｅ−ＤＲが１番目のＢＵＳＹに遭遇すると，リード／ライト制御回路３８Ａ内部のＩＮＨフラグは論理”１”になる。このフラグにより，ＢＵＳＹの立ち下がりによるＷＣＴＲインクリメントパルスが発生しないので，ＷＣＴＲは＋１が更新されず，以前のカウント状態を保持する。従って，ｎＷＥのパルス生成が禁止される。つまり，このとき，２番目のＤＲアクセスによるＵｐｄａｔｅ−ＤＲは無視される。また，フラッシュコア４Ａは，ｎＷＥが入力されないので不揮発性記憶動作が起動されず，しかも，不揮発性記憶動作状態を示すＢＵＳＹ信号も発生しない。
【００９２】
リード／ライト制御回路３８Ａの内部フラグＩＮＨは，２番目のＵｐｄａｔｅ−ＤＲ状態を過ぎるとクリアされ，３番目のＤＲアクセスを受付け可能にする。
【００９３】
以下，３番目以降のデータ転送に関しても同様の機能を実行する。即ち，フラッシュの不揮発性記憶が発生するのは，以前の不揮発性記憶によるＢＵＳＹフラグと，次のデータ転送によるＣａｐｔｕｒｅ−ＤＲ状態の重なりの有無に依存する。フラッシュコアのプロセスバラツキや，電源電圧等の変動要因には依存しない。
【００９４】
ＤＲレジスタ３２へのデータ転送は，ＤＲレジスタ３２のＣａｐｔｕｒｅデータのＳＣＡＮＯＵＴ信号，即ち，最終的にはＪＴＡＧのＴＤＯ端子を介してフラッシュライタへ返送されることを意味する。このときのＤＲレジスタ３２のＣａｐｔｕｒｅデータは，フラッシュコア４ＡのＢＵＳＹ信号の論理レベルを含んでいる。このため，フラッシュライタは，フラッシュコア４ＡのＢＵＳＹ信号をフラッシュコア４Ａのスティタス情報として観測できることになる。
【００９５】
以上のように，第１の実施形態によれば，ＤＲレジスタ３２へのデータ転送時において，ＤＲレジスタ３２のＣａｐｔｕｒｅ値に，フラッシュコアの不揮発性記憶動作状態を示すＢＵＳＹ信号の論理レベルをＣａｐｔｕｒｅ値のフラグとして入力させるようにした。このため，ＤＲレジスタ３２ヘのデータ転送によるフラッシュコアのスティタス情報であるＢＵＳＹ信号を，次のデータ転送によるＣａｐｔｕｒｅ出力により観測できることになる。
【００９６】
つまりこれは，シリアル通信のプロトコルにおいて，１つのデータ転送というイベントに起因するスティタス情報が，その次のイベントの開始時に観測され，イベントの終了時にホストであるフラッシュライタへ通知されることを意味する。
【００９７】
このことは，ＳＣＢＮレジスタを操作し，ＦＣＲレジスタなどの別のレジスタを選択する必要がなく，また，ＩＲレジスタを操作することなく，ＤＲレジスタによりフラッシュコアのステイタス情報を得ることになる。このため，データ転送における余分なアクセス，及び，余分なクロック数が排除できるという効果がある。
【００９８】
また，前回のフラッシュコアヘの１バイト書込みに対するＢＵＳＹ期間中に，次のＤＲレジスタヘのデータ転送の際，Ｃａｐｔｕｒｅ−ＤＲがＢＵＳＹ信号と遭遇した場合，このＤＲレジスタへのアクセスにより，ｎＷＥが生成されていないので，このＤＲアクセスは自動的に無効として処理されることになる。また，ＷＣＴＲの内容は不変となる。このことより，この転送のデータ内容と同じものを再度，転送することを可能にする効果がある。
【００９９】
なお，第１の実施形態において，ＤＲレジスタ３２ヘのデータ転送の単位をバイト単位として説明したが，ＤＲレジスタ３２のビット長を１６ビット，あるいは３２ビットなどとして，データ転送の単位を変更することも可能である。ただし，このときのバイトカウンタ（ＷＣＴＲ）３６の示すアドレスも，これに対応して１６ビット単位のアドレス，あるいは，３２ビット単位のアドレスなどとしなければならない。
【０１００】
また，第１の実施形態では，プログラム動作においてＤＲレジスタへのプログラムデータ転送について説明したが，フラッシュコアよりのデータ読み出しの場合には，ｗｒｅｎを”０”とし，リード／ライト制御回路３８のフラッシュコアヘの制御信号がリードモードになるので，従来例と同様の動作をするのは言うまでない。
【０１０１】
また，第１の実施形態で，レジスタブロック６の制御対象を不揮発性記憶デバイス，即ち，フラッシュコアとしたが，制御信号であるｎＷＥ信号の入力後，ある一定のＢＵＳＹ期間があり，そのＢＵＳＹ信号を発生する回路モジュールであれば，特にフラッシュコアに限定されるものではない。
【０１０２】
（第２の実施形態）
図４は，第２の実施形態の回路構成における，フラッシュライタよりＤＲレジスタ３２ヘプログラムデータを転送する手順のフローを示す。
【０１０３】
ＬＳＩの内部ハードウェアは，第１の実施形態において説明したものと同様である。第２の実施形態では，フラッシュコアヘ所定のプログラムデータを転送する。即ち，プログラムする機能のうち，フラッシュコアの目的のブロックヘの１ブロック分のプログラム操作手順を，フラッシュライタ側のフローとして実現している。
【０１０４】
第２の実施形態の動作を，図４を用いて説明する。なお，ＪＴＡＧのＴＡＰコントローラの詳細な説明，フラッシュブロックの初期化等の設定，また，メモリアレイの目的のブロックの選択操作についての記載は省略し，選択されたブロックに対する１バイト単位のプログラム動作の手順についてのみ記述する。
【０１０５】
まず，手順５００で，ＤＲレジスタヘ転送すべきデータの送信カウンタのカウント値を，０クリアして初期化する（５００）。次に，手順５０１へ進む。
【０１０６】
手順５０１で，フラッシュライタがもっている，転送すべきプログラムデータの送信カウンタをポインタとして，１バイトをＤＲレジスタヘ転送する（５０１）。次に，手順５０２へ進む。
【０１０７】
手順５０２で，同時にＣａｐｔｕｒｅデータを観測する（５０２）。次に，手順５０３へ進む。
【０１０８】
手順５０３で，Ｃａｐｔｕｒｅ値のＢＵＳＹフラグの論理レベルが”１”であるか否かを判断する（５０３）。ＢＵＳＹフラグが”０”であれば，手順５０４へ進む。また，ＢＵＳＹフラグが”１”であれば，手順５０６へ進む。
【０１０９】
ＢＵＳＹフラグが”０”であれば，手順５０４で，送信カウンタを＋１カウントアップして更新する（５０４）。次に手順５０５へ進む。
【０１１０】
手順５０３でＢＵＳＹフラグが”１”であれば，手順５０６で，今回送信したデータと同じデータを再度，ＤＲレジスタヘ送信する（５０６）。次に，手順５０２へ進む。
【０１１１】
手順５０５で，送信カウンタの最終値と１ブロックのバイト長とを比較し，送信データがすべて完了したかどうかを判断する（５０５）。送信データ完了に達していなければ，手順５０１に進む。送信データがすべて完了していれば，フローを終了する。
【０１１２】
以上のように，第２の実施形態によれば，フラッシュコアの目的のブロックに対する１ブロック分のプログラム操作が，図４のような比較的簡単なフローで実行できる。
【０１１３】
ここで，フラッシュブロック６におけるレジスタ操作は，常にＤＲレジスタ３２に対してのみであり，他のレジスタヘのアクセスは何ら実行していない。フラッシュコアの不揮発性記憶中のＤＲレジスタ３２へのアクセスによる送信データの喪失の防止は，ハードウェアによるライトパルスの抑制，及び，バイトカウンタ（ＷＣＴＲ）３６のカウント値の保持により実施する。そして，フローとしては，ＣａｐｔｕｒｅデータのＢＵＳＹフラグの判定結果が「Ｙｅｓ」であった場合に，同一データの再送という手順５０６のみで対処していることになる。
【０１１４】
したがって，ＤＲレジスタ３２への１バイトのアクセス後に，次の１バイトの転送の失敗にＴＣＫ単位で１３クロック，即ち，ＴＣＫの周期を前述と同様１０μｓとすれば，１３０μｓを要する。フラッシュコアのＢＵＳＹ生成期間を前述の例のように２０μｓ程度とすると，手順５０３で分岐が「Ｙｅｓ」となる確率は低い。仮に，手順５０３による分岐が「Ｙｅｓ」となっても，ＢＵＳＹフラグのＣａｐｔｕｒｅ値は１０クロック以前のものであるため，手順５０３の時点で，フラッシュコアのＢＵＳＹ信号が論理”１”を保持している可能性は極めて低い。
【０１１５】
したがって，手順５０６において，前回と同一データを再送すれば，フラッシュコア自体はプログラムデータの受付可能状態になっているので，再送データによるプログラムは十分に成功する。再送データにより１３クロックを消費するが，この時間はＦＣＲレジスタのＢＵＳＹチェックによる方法の，６７クロックに比べると少ない。ＴＣＫの１クロックが１０μｓ，１ブロックが２０４８バイトとすると，１ブロックの毎回にわたって再送が行われるとしても，２６６ｍｓとなり，前述のＦＣＲレジスタによるＢＵＳＹチェックによる方法と比べると十分に速い。
【０１１６】
１ブロックのブロックサイズは上記の例では２ＫＢと比較的大きなサイズであるが，現実の送信クロックＴＣＫの周波数は，フラッシュライタの処理スピードに依存し，上記の例の１０μｓよりは低くなる。したがって，図４のフローで手順５０６の分岐が発生する確率は低く，再送による転送時間の増分１３クロックの実時間が増加したとしてもその発生回数は少ない。したがって，１ブロック全体としては，比較的高速なプログラム動作が可能になる。
【０１１７】
なお，第２の実施形態において，実際には各手順においてソフトウェア上何らかのウェイト動作は自然に発生するので，１つのデータ転送後に，次のデータ転送の直前に何らかの固定されたウェイト動作を置けば，手順５０６の分岐の発生確率を抑えられる。
【０１１８】
また，得られるＢＵＳＹチェックにより，同一データの再送の追加を判断する過程で，その再送の直前において何らかの固定されたウェイト動作を置いても良い。
【０１１９】
（第３の実施形態）
図５は，第３の実施形態の回路構成における，フラッシュライタよりＤＲレジスタ３２ヘプログラムデータを転送する手順のフローを示す。図４の第２の実施形態のフローは，フラッシュライタの処理スピードがフラッシュコアのＢＵＳＹ期間に比べて比較的遅いことを前提としていたが，図５の第３の実施形態のフローは，これを前提としていない。
【０１２０】
第３の実施形態において，ＬＳＩの内部ハードウェアは，第１の実施形態において説明したものと同様である。第３の実施形態では，フラッシュコアヘ所定のプログラムデータを転送，即ち，プログラムする機能のうち，フラッシュコアの目的のブロックヘの１ブロック分のプログラム操作手順を，フラッシュライタ側のフローとして実現している。
【０１２１】
第３の実施形態の動作を，図５を用いて説明する。なお，ＪＴＡＧのＴＡＰコントローラの詳細な説明，フラッシュブロックの初期化等の設定，また，メモリアレイの目的のブロックの選択操作についての記載は省略し，選択されたブロックに対する１バイト単位のプログラム動作の手順についてのみ記述する。
【０１２２】
まず，手順６００で，ＤＲレジスタ３２ヘ転送すべきデータの送信カウンタのカウント値を０クリアして初期化する。また，ＴＡＰコントローラのＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態の１つのループを１つのウェイト動作とし，そのウェイトする回数を設定するテンポラリデータであるウェイト数を，０に初期化する（６００）。次に，手順６０１へ進む。
【０１２３】
手順６０１で，フラッシュライタがもっている，転送すべきプログラムデータのカウンタをポインタとして示す１バイトを，ＤＲレジスタ３２へ転送する（６０１）。ここで，ウェイト数で現在指定されている回数分，ＲＵＮ−Ｔｅｓｔ／Ｉｄｌｅの状態を繰り返す。ただし，ウェイト数の初期値は０である。次に，手順６０２ヘ進む。
【０１２４】
手順６０２で，同時にＣａｐｔｕｒｅデータを観測する（６０２）。次に，手順６０３へ進む，
【０１２５】
手順６０３で，Ｃａｐｔｕｒｅ値のＢＵＳＹフラグの論理レベルが”１”であるか否かを判断する（６０３）。ＢＵＳＹフラグが”０”であれば，手順６０４へ進む。また，ＢＵＳＹフラグが”１”であれば，手順６０６へ進む。
【０１２６】
手順６０３でＢＵＳＹフラグが０であれば，手順６０４で，送信カウンタを＋１カウントアップして更新する（６０４）。次に，手順６０５へ進む。
【０１２７】
手順６０３で，ＢＵＳＹフラグが”１”であれば，手順６０６で，ウェイト数を＋１インクリメントし，ＴＡＰコントローラのＲＵＮ−ＴＥＳＴ／Ｉｄｌｅ状態を更新されたウェイト数分繰り返す（６０６）。次に，手順６０７へ進む。
【０１２８】
手順６０７で，今回送信したデータと同じデータを再度，ＤＲレジスタ３２へ送信する。次に，手順６０２へ進む。
【０１２９】
手順６０５で，送信カウンタの最終値と１ブロックのバイト長とを比較し，送信データがすべて完了したかどうかを判断する（６０５）。送信データが完了に達していないければ，手順６０８に進む。また，送信データがすべて完了したならば，フローを終了する。
【０１３０】
手順６０８で，ＴＡＰコントローラのＲＵＮ−Ｔｅｓｔ／Ｉｄｌｅ状態をウェイト数分操り返す（６０８）。次に，手順６０１へ進む。
【０１３１】
以上示したように，第３の実施形態によれば，フラッシュコアの目的のブロックに対する１ブロック分のプログラム操作が，図５のような比較的簡単なフローで実行できる。
【０１３２】
ここで，フラッシュブロックにおけるレジスタ操作は，第２の実施形態と同様に，常にＤＲレジスタに対してのみであり，他のレジスタへのアクセスは何ら実行していない。フラッシュコアの不揮発性記憶動作中のデータレジスタへのアクセスによる送信データの喪失の防止は，ハードウェアによるライトパルスの抑制，及び，ＷＣＴＲカウンタのカウント値の保持により実施する。フローとしては，次の送信データを実施する前に，手順６０８においてウェイト数分の遅延を設けていることと，ＣａｐｔｕｒｅデータにおけるＢＵＳＹフラグ判定である手順６０３の「Ｙｅｓ」分岐の後，ウェイトサイクルの挿入である手順６０６，さらに同一データの再送という手順６０７，とで対処していることになる。
【０１３３】
ＤＲレジスタヘの１バイトのアクセス後に，次の１バイトの転送に移る際，あらかじめ指定されたウェイト数というパラメータに依存する遅延，即ち，手順６０８が挿入されるので，次の１バイト転送後，手順６０３でＢＵＳＹフラグ判定が「Ｙｅｓ」となる確率は低い。
【０１３４】
また，ＤＲレジスタヘの１バイトのアクセス後，次の１バイトの転送の失敗には１３クロック，即ち１３０μｓを要する。フラッシュコアのＢＵＳＹ生成期間を前述の例のように２０μｓ程度とすると，手順６０３で分岐が「Ｙｅｓ」となる確率はかなり低い。仮に，手順６０３による分岐が「Ｙｅｓ」となっても，ＢＵＳＹフラグのＣａｐｔｕｒｅ値はＲｕｎ−Ｔｅｓｔ／Ｉｄｌｅ状態より１０クロック以前のものである。このため，手順６０３の時点で，フラッシュコアのＢＵＳＹ信号が論理”１”を保持している可能性は，極めて低い。
【０１３５】
したがって，手順６０７において，前回と同一データを再送すれば，フラッシュコア自体は手順６０６の遅延によりプログラムデータを受付可能な状態になっているので，再送データによるプログラムは十分に成功する。この再送データにより１３クロックを消費するが，この時間は前述のＦＣＲレジスタのＢＵＳＹチェックによる方法Ａの６７クロックに比べると少ない。
【０１３６】
次に，プログラム転送時間を短くするために，フラッシュライタの処理性能を上げ，ＴＣＫの周期を短くした場合，最初の転送データではＢＵＳＹフラグの判定手順６０３で「Ｙｅｓ」となる可能性が高く，フラッシュコア自体が依然としてＢＵＳＹの論理”１”を保持している可能性がある。しかし，手順６０６で＋１カウントアップされたウェイト状態を挿入し，次の手順６０７で同一データの再送を実行する。したがって，このときのＣａｐｔｕｒｅ値のＢＵＳＹフラグ検出自体は，手順６０３の分岐後，ウェイト数が＋１インクリメントされ，設定されたウェイト数分の遅延後実施される。このため，再送データによるＢＵＳＹフラグの判定の手順６０２，及び，判断手順６０３で，ＢＵＳＹフラグの論理”１”が発生する可能性はさらに低くなる。
【０１３７】
仮に最初の分岐手順６０３で「Ｙｅｓ」が発生しても，手順６０６での遅延は，当初のウェイト数に＋１インクリメントされた遅延量なので，当所に比べればこの時点でウェイト量が＋１だけ増加することになる。
【０１３８】
したがって，図５に示す第３の実施形態のフローでは，通常のループに手順６０８の遅延を追加していることと，ＢＵＳＹフラグ判断手順６０３での論理”１”の判定後，同一データの再送という，いわばデータ転送の失敗及びそのやり直しが発生するたびに追加されるウェイトサイクルが＋１インクリメントされ，データ転送の失敗を発生しにくくする。このため，最初の数バイトの転送後は，手順６０３の「Ｙｅｓ」分岐は発生せず，１ブロック分のデータ転送という場合においては，最小限のウェイト数でデータ転送が実行され，かつ，安定的にプログラム動作が実行される。したがって，効率的なプログラム操作が実行できるという効果がある。
【０１３９】
また，ウェイト数のインクリ操作により，異なったプロセスのフラッシュコアに対しても図５のフローは適用可能である。実際のウェイト数は，個々のデバイス，あるいは個々のチップによりそれぞれに自動的に対応することになる。このことは，フラッシュコアのデバイスプロセスに依存せず，より効果的なプログラム操作が実行できるという効果があることになる，
【０１４０】
第２，第３の実施形態は，ブロック消去タイプのフラッシュコアヘの１ブロック単位のプログラム操作において，１バイト当たりの不揮発性記憶操作の実行期間であるＢＵＳＹのチェックを実施し，しかも，ブロック当たりのデータ転送に関わる余分な時間をできるだけ排除する回路方式，及び，手順をも提供している。
【０１４１】
なお，第１〜第３の実施形態では，データ通信のプロトコルをＩＥＥＥ  ｓｔｄ.１１４９．１に記載のプロトコルを用いた場合を述べたが，レジスタブロック６の各スキャンレジスタのＣａｐｔｕｒｅ動作，Ｓｈｉｆｔ動作，Ｕｐｄａｔｅ動作を実現すれば，ＴＡＰコントローラ回路７４の状態遷移，あるいはＪＴＡＧのＴＡＰ回路８の構成を，別のシリアルインタフェースプロトコルとすることも可能である。
【０１４２】
（第４の実施形態）
図６は，第４の実施形態の回路構成において，フラッシュライタよりアクセスできるＰＲＦレジスタ２８の定義を示している。
【０１４３】
図６の上段は，ＰＲＦレジスタ２８のＵｐｄａｔｅ値の詳細を示している。図６中のＬＳＢ（Least Significant Bit）であるｗｒｅｎは，第１の実施形態で説明したｗｒｅｎと同様の設定情報である。一方，図６の下段は，ＰＲＦレジスタ２８のＣａｐｔｕｒｅ値の詳細を示している。図６中のｍｏｄｅフラグは，論理”０”のとき，レジスタブロック６の制御対象フラッシュコアが従来例のセクタバッファ方式のフラッシュコアであり，論理”１”のとき，前述したブロック消去型のフラッシュコアであることを示す。
【０１４４】
このｍｏｄｅフラグは，ＬＳＩの製造段階で制御対象であるフラッシュコアの方式とともにあらかじめ設定される，そのＬＳＩに固有のバラメータである。外部装置であるフラッシュライタからＴＡＰ回路を介してＰＲＦレジスタ２８のＣａｐｔｕｒｅ値を参照することにより，このｍｏｄｅフラグの内容を解読することが可能になる。
【０１４５】
図８，図６を用いて，第４の実施形態の動作を説明する。なお，ＪＴＡＧのＴＡＰコントローラの詳細な説明，フラッシュブロックの初期化等の設定の記載は省略し，また，メモリアレイの目的のブロックの選択操作についての記載も省略する。
【０１４６】
プログラム対象のＬＳＩに内蔵されたフラッシュコアが，従来例のセクタバッファ方式であるか，ブロック消去方式であるかは，通常，汎用品のフラッシュメモリ製品をのぞけばＬＳＩの外見からは判断できない。対象となるＬＳＩの型名があらかじめ判明し，フラッシュコアの上記方式がいずれかであるかが判明していることが必要である。
【０１４７】
第４の実施形態は，ＬＳＩ外部の装置であるフラッシュライタの電源投入後に，フラッシュライタに接続された制御対象となるＬＳＩの図８に示すレジスタブロックへ，従来例の説明で述べたようにＴＡＰ回路８を経由してアクセスし，レジスタブロック６内部の１つのスキャンレジスタであるＰＲＦレジスタ２８のＣａｐｔｕｒｅ値を参照する。
【０１４８】
次に，このＣａｐｔｕｒｅ値の中の，図６に示すｍｏｄｅフラグの論理値を判別する。そのｍｏｄｅフラグの論理値の判別結果が，論理”０”である場合は，レジスタブロック６の制御対象のフラッシュコア４が，セクタバッファ方式のフラッシュコアであることを認識する。そこで，レジスタブロック６の内部の各種レジスタへ従来例と同様のアクセスを実施し，フラッシュコア４へフラッシュライタよりプログラムすべき一連のデータをレジスタブロック６内部のＤＲレジスタへ転送し，セクタバッファへ蓄えておき，その後，ＦＣＲレジスタに対するコマンド操作によりプログラムすることができる。
【０１４９】
また，そのｍｏｄｅフラグの論理値の判別結果が，論理”１”であった場合，レジスタブロック６の制御対象のフラッシュコア４Ａが，ブロック消去方式のフラッシュコアであることを認識する。そこで同様に，レジスタブロック６内部の各種レジスタへ，第１の実施形態，第２の実施形態，または，第３の実施形態で示した手順で，フラッシュライタより，プログラムすべき一連のデータを，レジスタブロック６内部のＤＲレジスタへ転送し，かつ，プログラムすることができる。
【０１５０】
以上のように，第４の実施形態によれば，ＬＳＩの外部に接続されたフラッシュライタにより，ＬＳＩに内蔵されているフラッシュコアのプログラム方式があらかじめ判明していなくても，また，フラッシュライタにそのフラッシュコアのプログラム方式の種別が設定されていなくても，フラッシュライタ自体がそのＬＳＩへアクセスする過程で，ＬＳＩ内部のフラッシュコアを制御するレジスタブロックの１つのレジスタにあらかじめ設定したフラグの論理値により，自動的に判別し，フラッシュコアの種別を判断することが可能となる。
【０１５１】
このことは，そのまま，ＬＳＩ内部のフラッシュコアの種類に対応したプログラム手順を確立できることになる。つまり，あらかじめプログラム対象のフラッシュコアの種別が判明していなくても，フラッシュライタ自身がＬＳＩ内部に内蔵されたフラッシュコアの種別を自動的に認識し，その種別に適合したプログラム手順で，プログラム操作を実行できるという効果がある。
【０１５２】
以上，添付図面を参照しながら本発明の不揮発性記憶装置のデ−タ転送制御回路，不揮発性記憶装置の書き換え回路，及び，通信制御装置の好適な実施形態について説明したが，本発明はこれらの例に限定されない。いわゆる当業者であれば，特許請求の範囲に記載された技術的思想の範疇内において各種の変更例または修正例に想到し得ることは明らかであり，それらについても当然に本発明の技術的範囲に属するものと了解される。
【０１５３】
【発明の効果】
本発明により，フラッシュライタでフラッシュメモリの書き換えを実行する場合に，ＢＵＳＹチェックに要する時間を増やすことなく，データ転送における余分なアクセス，及び，余分なクロック数を排除できて高速なプログラム動作が可能になる不揮発性記憶装置のデ−タ転送制御回路，及び，不揮発性記憶装置の書き換え回路が提供できた。
【０１５４】
また，本発明により，フラッシュコアの目的のブロックに対する１ブロック分のプログラム操作が，比較的簡単なフローで実行でき，安定的かつ効率的にプログラム操作が実行できる不揮発性記憶装置のデ−タ転送制御回路，及び，不揮発性記憶装置の書き換え回路が提供できた。
【０１５５】
さらに本発明により，異なるプログラム方式に対して別々にフラッシュライタを揃えることなく，ＬＳＩに内蔵されているフラッシュコアのプログラム方式があらかじめ判明していなくても，また，フラッシュライタにそのフラッシュコアのプログラム方式の種別が設定されていなくても，フラッシュライタ自体がそのＬＳＩへアクセスする過程で自動的にフラッシュコアの種別を判断することが可能である不揮発性記憶装置のデ−タ転送制御回路，不揮発性記憶装置の書き換え回路，及び，通信制御装置が提供できた。
【図面の簡単な説明】
【図１】図１は，第１の実施形態を示す回路図である。
【図２】図２は，第１の実施形態の動作（ＢＵＳＹ信号の非検出）を示すタイミングチャートである。
【図３】図３は，第１の実施形態の動作（ＢＵＳＹ信号の検出）を示すタイミングチャートである。
【図４】図４は，第２の実施形態の回路構成における，フラッシュライタよりＤＲレジスタヘプログラムデータを転送する手順のフロー図である。
【図５】図５は，第３の実施形態の回路構成における，フラッシュライタよりＤＲレジスタヘブログラムデータを転送する手順のフロー図である。
【図６】図６は，第４の実施形態の回路構成において，フラッシュライタよりアクセスできるＰＲＦレジスタの定義を示している。
【図７】図７は，ＪＴＡＧのＴＡＰコントローラ回路の状態遷移を示す図である。
【図８】図８は，従来の回路方式の全体構成を示す回路ブロック図である。
【図９】図９は，プログラムデータをＤＲレジスタへ転送する手段について，図８のＤＲレジスタへの転送に関わる部分のみを抜粋した回路ブロック図である。
【図１０】図１０は，フラッシュコア４Ａの構成を示す概略図である。
【符号の説明】
４      不揮発性記憶メモリ（フラッシュコア）
４Ａ    フラッシュコア
６      レジスタブロック
８      ＪＴＡＧのＴＡＰ回路
１０    デコーダ回路
１２    不揮発記憶メモリアレイ
１４    行アドレスデコーダ
１６    列アドレスデコーダ
２０    制御回路
２２    センスアンプ
２４    選択されたブロック
２５    セレクタ
２６    ＳＣＢＮレジスタ
２８    ＰＲＦレジスタ
３０    ＳＥＣＡＤＲレジスタ
３２    ＤＲレジスタ，あるいはデータスキャンレジスタ
３４    ＦＣＲレジスタ
３６    バイトカウンタ（ＷＣＴＲ）
３８    リード／ライト制御回路
６２    インストラクションレジスタ（ＩＲ）
６４    バイパスレジスタ
６６    ＳＣＮレジスタ
７４    ＴＡＰコントローラ回路
２０３Ａ  マルチプレクサ回路（ＭＵＸ）
２２０  カウントパルス
【図１】
0004122824.tif 000002
【図２】
0004122824.tif 000003
【図３】
0004122824.tif 000004
【図４】
0004122824.tif 000005
【図５】
0004122824.tif 000006
【図６】
0004122824.tif 000007
【図７】
0004122824.tif 000008
【図８】
0004122824.tif 000009
【図９】
0004122824.tif 000010
【図１０】
0004122824.tif 000011