(57)【特許請求の範囲】
【請求項１】
ユーザデータと該ユーザデータに対応するＥＣＣデータとを書き込み記憶するＥＥＰＲＯＭと、中央演算処理装置（以下ＣＰＵという）と、該ＣＰＵが前記ユーザデータから前記ＥＣＣデータを生成するためのプログラムを格納する記憶手段と、前記ユーザデータと前記ＥＣＣデータを前記ＥＥＰＲＯＭに書き込む制御を行う制御手段とを備え、
外部から前記ＣＰＵ内にある内部レジスタに、前記ユーザデータを格納する第１のステップと、前記ユーザデータを前記ＣＰＵ内にある内部レジスタから読み出して前記制御手段内にあるユーザデータスタックレジスタに格納する第２のステップを実行し、
前記ＣＰＵは前記記憶手段からＥＣＣデータを生成するためのプログラムを順次読み出して、前記内部レジスタに格納したユーザデータに基づきＥＣＣデータを生成する第３のステップを実行し、
次に、前記制御手段内にあるＥＣＣデータスタックレジスタに、前記第３のステップで生成したＥＣＣデータを格納する第４のステップを実行し、
前記制御手段内のユーザデータスタックレジスタとＥＣＣデータスタックレジスタからそれぞれユーザデータとＥＣＣデータを読み出して、前記ＥＥＰＲＯＭ内にあるユーザデータレジスタとＥＣＣデータレジスタに転送する第５のステップを実行し、
前記制御手段から出力する書き込みアドレスと書き込み制御信号に従って、前記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む第６のステップを実行し、
さらに前記第１のステップから第６のステップを繰り返し実行して、前記ＥＥＰＲＯＭの全ユーザデータ領域とＥＣＣデータ領域に書き込みを行う、書き込み処理を実行し、
読み出し処理においては、前記制御手段から前記ＥＥＰＲＯＭへ出力するアドレスに従って、前記ＥＥＰＲＯＭから同じアドレスのユーザデータとＥＣＣデータを読み出して、誤り訂正手段に転送し、誤り訂正を行って読み出すように構成していることを特徴とする１チップマイクロコンピュータ。
【請求項２】
ユーザデータと該ユーザデータに対応するＥＣＣデータとを書き込み記憶するＥＥＰＲＯＭと、ＣＰＵと、該ＣＰＵが前記ユーザデータから前記ＥＣＣデータを生成するためのプログラムを格納する第１の記憶手段と、前記ユーザデータ及び前記ＥＣＣデータを前記ＥＥＰＲＯＭに書き込む制御を行う制御手段と、前記ＥＣＣデータを作成するための前記ユーザデータを格納する第２の記憶手段とを備え、
外部から前記制御手段内にあるユーザデータスタックレジスタに、前記ユーザデータを格納する第１のステップと、
前記ユーザデータを前記ＣＰＵ内にある内部レジスタに格納する第２のステップと、
前記制御手段内のユーザデータスタックレジスタからユーザデータを前記ＥＥＰＲＯＭ内にあるユーザデータレジスタに転送する第３のステップと、
前記ＥＥＰＲＯＭ内のユーザデータレジスタとＥＣＣデータレジスタから前記ユーザデータとＥＣＣデータを前記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む第４のステップと、
前記第４のステップと並行して、前記第２の記憶手段に前記ユーザデータを書き込み記憶し、前記第２の記憶手段から前記ユーザデータを前記ＣＰＵに転送し、前記ＣＰＵが前記第１の記憶手段からＥＣＣデータを生成するためのプログラムを順次読み出して、前記ユーザデータに基づきＥＣＣデータを生成し、前記制御手段内のＥＣＣデータスタックレジスタに前記ＣＰＵで作成したＥＣＣデータを転送し、前記制御手段内のＥＣＣデータスタックレジスタから前記ＥＥＰＲＯＭ内のＥＣＣデータレジスタに前記ＥＣＣデータを転送する第５のステップを実行し、
読み出し処理においては、前記ＥＥＰＲＯＭからユーザデータとＥＣＣデータを読み出して、誤り訂正手段に転送し、誤り訂正を行って読み出すように構成していることを特徴とする１チップマイクロコンピュータ。
【請求項３】
前記ＥＥＰＲＯＭ内のユーザデータレジスタとＥＣＣデータレジスタから前記ユーザデータとＥＣＣデータを前記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む際に、前記ＣＰＵが作成するＥＣＣデータが生成されていない場合には、予め決められた固定値をＥＣＣデータとして供給する手段を備えることを特徴とする請求項２記載の１チップマイクロコンピュータ。
【請求項４】
前記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に全ユーザデータと全ＥＣＣデータの書き込み終了は、それぞれの最終アドレスを検知することによって判定する手段を備えることを特徴とする請求項２又は３記載の１チップマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ＥＣＣ（Error Correction Code ）データを内部的に生成、付加することが可能な１チップマイクロコンピュータに関する。
【０００２】
【従来の技術】
ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory ）はデータの消去，書き換えが可能なメモリ（電気的に一括して消去可能なフラッシュＥＥＰＲＯＭを含む）であって、１チップマイクロコンピュータ等において、プログラムの格納用等として多く用いられている。ＥＥＰＲＯＭにおける保持データの信頼性を向上するためには、ユーザデータにＥＣＣデータを付加して記録し、読み出されたユーザデータについてＥＣＣデータを用いて誤り訂正を行うことが有効である。従来、このようなＥＣＣデータの付加は、ユーザデータから専用のソフトウエアを使用してＥＣＣデータを生成して、ユーザデータとともにＥＥＰＲＯＭに格納することによって行われていた。
例えば、自動車のエンジン制御などに使用される１チップマイクロコンピュータは、制御プログラムによってエンジンの回転数や燃料噴射などの重要な制御を行っている。この制御プログラムを記憶しているＲＯＭ（Read Only Memory）の内容がなんらかの理由によって変化した場合、１チップマイクロコンピュータは異常な処理を行うことになるので、危険な状態を招きかねない。そのため、ユーザがＲＯＭにユーザデータ（プログラムなど）を記憶させるとき、ＥＣＣデータを付加して記憶させておいて、１チップマイクロコンピュータがユーザデータを読み出したとき１ビットの誤りであれば訂正して処理し、２ビット以上の誤りであれば異常表示を行うなどの処理を行うようにしている。
【０００３】
さらに、ＲＯＭに記憶させたユーザデータ（プログラム）にバグが発見されたとき、自動車メーカは、販売済みの自動車を回収して１チップマイクロコンピュータを交換する作業が必要になる。この場合、ＲＯＭをマスクＲＯＭなどのような書き換え不可能なＲＯＭで構成していると、自動車メーカは１チップマイクロコンピュータを含むエンジン制御ユニットごと交換しなければならないが、そうすると、ユニット代だけでなく、取り替えコストもかかるので、莫大な損失を受けることになる。そこで、１チップマイクロコンピュータのＲＯＭをＥＥＰＲＯＭで構成しておけば、自動車メーカはエンジン制御ユニットのコネクタを介してプログラムを書き換えるだけで済むので、バグ対応費用を大幅に低減できる。
【０００４】
図２０は、ＥＥＰＲＯＭにおける従来のＥＣＣデータの生成・付加方法の説明図である。以下、図２０を参照して、従来技術を説明する。
まず、ユーザはＥＣＣデータ作成のために、所定のプログラムを作成する（同図（ａ）１０１）。いま、ユーザデータ１０２として、０００００Ｈ〜０ＦＦＦＦＨまでのデータを入力したものとする。ユーザは、作成されたプログラムによって、ユーザデータ１０２に基づいて専用のソフトウエアを用いてＥＣＣデータを生成する（同図（ａ）１０３）。これによって、ＥＣＣデータ１０４として、１００００Ｈ〜１４ＦＦＦＨまでのデータが生成される。次に、ユーザデータ１０２にＥＣＣデータ１０４を付加して、書き込みデータ１０５として０００００Ｈ〜１４ＦＦＦＨまでのデータを生成し、図示されないマイクロコンピュータに内蔵するＥＥＰＲＯＭに対する書き込み（同図（ａ）１０６）を行う。この際におけるデータの書き込みは、専用のライタまたはオンボード書き込みによって実行される。
同図２０（ｂ）は、ＥＥＰＲＯＭ上のアドレスマップを示したものであって、ユーザデータとして、０００００Ｈ〜０ＦＦＦＦＨが割り当てられ、ＥＣＣデータとして、１００００Ｈ〜１４ＦＦＦＨが割り当てられている。ＥＣＣデータのボリュームは、１６ビットデータの場合５ビット必要であり、このため、同図（ｂ）に示すようなデータ領域が必要になる。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記従来のＥＣＣデータの生成・付加方法にあっては、ユーザデータの処理とは別にＥＣＣデータを生成するようにしていたため、ユーザデータを基にＥＣＣデータを生成する専用ソフトウエアが必要である、という問題があった。
また、ＥＣＣデータは、ユーザデータの後のアドレスにマッピングされるため、０００００Ｈ〜０ＦＦＦＦＨのユーザデータに加えて、ＥＣＣデータとして１００００Ｈ〜１４ＦＦＦＨのデータを書き込むので、このため、書き込み時間が約３０パーセント増加するという問題があった。
さらに、ＥＣＣデータによって書き込みデータが全体として約３０パーセント増加するため、システム全体の外部メモリ容量を約３０パーセント増加しなければならないという問題があった。
【０００６】
また、論理回路で構成したＥＣＣデータの生成回路を、１チップマイクロコンピュータに内蔵した構成も既に知られている。近年において、１チップマイクロコンピュータのデータバスの幅は増加する傾向にあり、従来、８ビット幅であったものが、３２ビット幅や６４ビット幅に変わりつつある。そこでＥＣＣデータの生成回路を論理回路で構成すると、データバス幅が増加するのに伴って、回路規模は指数関数的に増加し、半導体チップに占める面積が増加する。
ＥＥＰＲＯＭを１チップマイクロコンピュータのプログラム格納用に用いる場合、ＥＣＣデータの生成回路は、プログラムを格納する際にのみ使用するものであって、プログラム実行時には使用されない回路である。それにもかかわらず、回路規模の大きいＥＣＣデータの生成回路を内蔵することは、１チップマイクロコンピュータのコストパフォーマンスを悪化させる原因になる。
【０００７】
この発明は、上述の事情に鑑みてなされたものであって、ＥＣＣデータ作成時におけるユーザの作業負担を軽減することができるとともに、ＥＣＣデータに基づくＥＥＰＲＯＭ書き込み時間の増加がなく、かつ、メモリ容量を削減できる１チップマイクロコンピュータを提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記課題を解決するために、請求項１記載の発明は１チップマイクロコンピュータに係り、ユーザデータと該ユーザデータに対応するＥＣＣデータとを書き込み記憶するＥＥＰＲＯＭと、中央演算処理装置（以下ＣＰＵという）と、該ＣＰＵが上記ユーザデータから上記ＥＣＣデータを生成するためのプログラムを格納する記憶手段と、上記ユーザデータと上記ＥＣＣデータを上記ＥＥＰＲＯＭに書き込む制御を行う制御手段とを備え、外部から上記ＣＰＵ内にある内部レジスタに、上記ユーザデータを格納する第１のステップと、上記ユーザデータを上記ＣＰＵ内にある内部レジスタから読み出して上記制御手段内にあるユーザデータスタックレジスタに格納する第２のステップを実行し、上記ＣＰＵは上記記憶手段からＥＣＣデータを生成するためのプログラムを順次読み出して、上記内部レジスタに格納したユーザデータに基づきＥＣＣデータを生成する第３のステップを実行し、次に、上記制御手段内にあるＥＣＣデータスタックレジスタに、上記第３のステップで生成したＥＣＣデータを格納する第４のステップを実行し、上記制御手段内のユーザデータスタックレジスタとＥＣＣデータスタックレジスタからそれぞれユーザデータとＥＣＣデータを読み出して、上記ＥＥＰＲＯＭ内にあるユーザデータレジスタとＥＣＣデータレジスタに転送する第５のステップを実行し、上記制御手段から出力する書き込みアドレスと書き込み制御信号に従って、上記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む第６のステップを実行し、さらに上記第１のステップから第６のステップを繰り返し実行して、上記ＥＥＰＲＯＭの全ユーザデータ領域とＥＣＣデータ領域に書き込みを行う、書き込み処理を実行し、読み出し処理においては、上記制御手段から上記ＥＥＰＲＯＭへ出力するアドレスに従って、上記ＥＥＰＲＯＭから同じアドレスのユーザデータとＥＣＣデータを読み出して、誤り訂正手段に転送し、誤り訂正を行って読み出すように構成していることを特徴としている。
【０００９】
また、請求項２記載の発明は１チップマイクロコンピュータに係り、ユーザデータと該ユーザデータに対応するＥＣＣデータとを書き込み記憶するＥＥＰＲＯＭと、ＣＰＵと、該ＣＰＵが上記ユーザデータから上記ＥＣＣデータを生成するためのプログラムを格納する第１の記憶手段と、上記ユーザデータ及び上記ＥＣＣデータを上記ＥＥＰＲＯＭに書き込む制御を行う制御手段と、上記ＥＣＣデータを作成するための上記ユーザデータを格納する第２の記憶手段とを備え、外部から上記制御手段内にあるユーザデータスタックレジスタに、上記ユーザデータを格納する第１のステップと、上記ユーザデータを上記ＣＰＵ内にある内部レジスタに格納する第２のステップと、上記制御手段内のユーザデータスタックレジスタからユーザデータを上記ＥＥＰＲＯＭ内にあるユーザデータレジスタに転送する第３のステップと、上記ＥＥＰＲＯＭ内のユーザデータレジスタとＥＣＣデータレジスタから上記ユーザデータとＥＣＣデータを上記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む第４のステップと、上記第４のステップと並行して、上記第２の記憶手段に上記ユーザデータを書き込み記憶し、上記第２の記憶手段から上記ユーザデータを上記ＣＰＵに転送し、上記ＣＰＵが上記第１の記憶手段からＥＣＣデータを生成するためのプログラムを順次読み出して、上記ユーザデータに基づきＥＣＣデータを生成し、上記制御手段内のＥＣＣデータスタックレジスタに上記ＣＰＵで作成したＥＣＣデータを転送し、上記制御手段内のＥＣＣデータスタックレジスタから上記ＥＥＰＲＯＭ内のＥＣＣデータレジスタに上記ＥＣＣデータを転送する第５のステップを実行し、読み出し処理においては、上記ＥＥＰＲＯＭからユーザデータとＥＣＣデータを読み出して、誤り訂正手段に転送し、誤り訂正を行って読み出すように構成していることを特徴としている。
また、請求項３記載の発明は、請求項２記載の１チップマイクロコンピュータに係り、上記ＥＥＰＲＯＭ内のユーザデータレジスタとＥＣＣデータレジスタから上記ユーザデータとＥＣＣデータを上記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に書き込む際に、上記ＣＰＵが作成するＥＣＣデータが生成されていない場合には、予め決められた固定値をＥＣＣデータとして供給する手段を備えることを特徴としている。
また、請求項４記載の発明は、請求項２又は３記載の１チップマイクロコンピュータに係り、上記ＥＥＰＲＯＭ内のユーザデータ領域とＥＣＣデータ領域に全ユーザデータと全ＥＣＣデータの書き込み終了は、それぞれの最終アドレスを検知することによって判定する手段を備えることを特徴としている。
【００１０】
【発明の実施の形態】
以下、図面を参照して、この発明の実施の形態について説明する。説明は、実施例を用いて具体的に行なう。
図１は、この発明の一実施例である１チップマイクロコンピュータの電気的構成を示す図、図２は、ＥＥＰＲＯＭ制御回路の構成例を示す図、図３は、データラッチ選択制御回路の構成例を示す図、図４は、書き込み信号生成回路の構成例を示す図、図５は、書き込み信号生成回路の動作タイミングを示す図、図６，図７は、この例の第１の動作例を示すフローチャート、図８は、第１の動作例における書き込み時のタイミングチャート、図９，図１０は、この例の第２の動作例を示すフローチャート、図１１は、書き込み時ＥＣＣアドレスをシフトする場合のタイミングチャート、図１２は、書き込み時ＥＣＣアドレスをシフトする場合のＥＥＰＲＯＭアドレス生成回路の構成例を示す図、図１３，図１４は、この例の第３の動作例を示すフローチャート、図１５は、読み出し時ＥＣＣアドレスをシフトする場合のタイミングチャート、図１６は、読み出し時ＥＣＣアドレスをシフトする場合のＥＥＰＲＯＭアドレス生成回路の構成例を示す図、図１７，図１８は、この例の第４の動作例を示すフローチャート、図１９は、第４の動作例における書き込み時のタイミングチャートである。
【００１１】
この例の１チップマイクロコンピュータは、図１に示すように、入出力ポート１と、ＣＰＵ（Central Processing Unit ）２と、アドレスバス３と、データバス４と、ファームＲＯＭ５と、ＲＡＭ（Random Access Memory）６と、ＥＥＰＲＯＭ制御回路７と、ＥＥＰＲＯＭ８と、誤り訂正回路９と、データ選択回路１０とから概略構成されている。
【００１２】
入出力ポート１は、外部との間でデータの入出力を行う複数の端末ポートからなっている。ＣＰＵ２は、プログラムによって与えられる命令の解釈と実行を制御することによって、この例の１チップマイクロコンピュータの全体の動作を制御する。アドレスバス３は、この例の１チップマイクロコンピュータの各部の間で、アドレス信号を転送する。データバス４は１６ビット幅からなり、この例の１チップマイクロコンピュータの各部の間で、データ信号を転送する。ファームＲＯＭ５は、１チップマイクロコンピュータの動作に必要なファームウエア（マイクロプログラム）を格納するものであって、この例の場合は特にＥＣＣデータ生成用プログラムを収容している。ＲＡＭ６は、主としてＣＰＵ２の作業領域として用いられる随時読み出し書き込みメモリである。
【００１３】
ＥＥＰＲＯＭ制御回路７は、ＥＥＰＲＯＭ８の書き込み，読み出しを制御するものであって、後述する内容を有するとともに、データスタックのために、ユーザデータスタックレジスタ７１とＥＣＣデータスタックレジスタ７２とを有している。ＥＥＰＲＯＭ８は、電気的手段によって情報の書き込み，消去が可能な固定記憶素子であって、データ書き込みのために、ユーザデータレジスタ８１とＥＣＣデータレジスタ８２とを有するとともに、データ格納のために、ユーザデータ領域８３とＥＣＣデータ領域８４とを有している。なお、ＥＥＰＲＯＭ８は、通常のＥＥＰＲＯＭとフラッシュＥＥＰＲＯＭのいずれでもよい。
誤り訂正回路９は、データに付加されているＥＣＣデータによって、データの誤りを検出して訂正する。データ選択回路１０は、３２ビットからなる誤り訂正回路９の出力を上位１６ビットと下位１６ビットとに分割して、交互にデータバス４に転送する。
【００１４】
また、上記ＥＥＰＲＯＭ制御回路７は、図２に示すように、アドレスバス１１と、データバス１２と、データラッチ選択制御回路１３と、アドレスｎのデータラッチ１４と、アドレスｎ＋２のデータラッチ１５と、ＥＣＣのデータラッチ１６と、書き込み信号生成回路１７と、ＥＥＰＲＯＭアドレス生成回路１８とを含んで構成されている。ここでは、外部からのユーザデータのアドレスｎを基準に説明する。アドレスバス１１は、アドレスバス３の一部であって、アドレス信号を転送する。データバス１２は、データバス４の一部であって、データ信号を転送する。データラッチ選択制御回路１３は、データバス１２上のデータを、アドレスｎのデータラッチ１４，アドレスｎ＋２のデータラッチ１５，ＥＣＣのデータラッチ１６において選択的にラッチするための制御信号ＤＬ１，ＤＬ２，ＤＬ３を、アドレスバス１１の情報に従って発生するものであって、その構成は後述する。アドレスｎのデータラッチ１４は、制御信号ＤＬ１がアクティブのとき、データバス１２上のアドレスｎとｎ＋１の２バイト（１６ビット）のデータをラッチするものであって、アドレスのビット１が“０”のとき、データをラッチしてＥＥＰＲＯＭ８のメモリセルへ出力する。
【００１５】
アドレスｎ＋２のデータラッチ１５は、制御信号ＤＬ２がアクティブのとき、データバス１２上のアドレスｎ＋２とｎ＋３の２バイト（１６ビット）のデータをラッチするものであって、アドレスのビット１が“１”のとき、データをラッチしてＥＥＰＲＯＭ８のメモリセルへ出力する。ＥＣＣのデータラッチ１６は、制御信号ＤＬ３がアクティブのとき、データバス１２上の下位６ビットのデータをラッチするものであって、ＥＣＣアドレスが出力されたとき、データをラッチしてＥＥＰＲＯＭ８のメモリセルへ出力する。
【００１６】
書き込み信号生成回路１７は、アドレスバス１１の情報とデータバス１２の情報とから、ＥＥＰＲＯＭ８に対する書き込み開始を制御するための書き込みセット信号と、書き込み終了を制御するための書き込みリセット信号とを発生するものであって、その構成は後述する。ＥＥＰＲＯＭアドレス生成回路１８は、アドレスバス１１の情報からＥＥＰＲＯＭ８に対するアドレスを生成するものであって、アドレスバス１１のビット２〜１５を、ＥＥＰＲＯＭ８のデータ領域（ユーザメモリ）用のアドレスデコーダ（不図示）を介して、ＥＥＰＲＯＭ８のデータ領域のアドレス０〜１３として与え、アドレスバス１１のビット２〜１５をディクリメント回路（不図示）とＥＥＰＲＯＭ８のＥＣＣデータ領域のアドレスデコーダ（不図示）を介して、ＥＥＰＲＯＭ８のＥＣＣデータ領域のアドレス０〜１３として与える。なお、このようなアドレスの変換を行うのは、アドレス信号がバイト単位（８ビット）であるのに対して、ＥＥＰＲＯＭ８の３２ビットの入出力データに対応するアドレスとしては、最下位の２ビットが不要なためである。なお、アドレスｎのデータラッチ１４とアドレスｎ＋２のデータラッチ１５は、データが１６ビット幅なので、外部のアドレスｎに対しては、それぞれｎ，ｎ＋１と、ｎ＋２，ｎ＋３のアドレスのデータをラッチする。
【００１７】
データラッチ選択制御回路１３は、図３に示すように、アドレスバス１３１と、ノア回路１３２と、インバータ１３３と、ノア回路１３４とを含んで構成されている。
アドレスバス１３１は、アドレスバス１１の一部であって、アドレス信号を転送する。ノア回路１３２は、ＥＥＰＲＯＭ８のデータ領域を表すアドレスバスのビット１と、ＥＣＣデータ領域を示すアドレスバス１３１のビット１６とがインアクティブのとき、アドレスｎのデータラッチ１４に対する制御信号ＤＬ１を出力する。インバータ１３３とノア回路１３４は、ＥＥＰＲＯＭ８のデータ領域を表すアドレスバスのビット１がアクティブで、ＥＣＣデータ領域を示すアドレスバス１３１のビット１６とがインアクティブのとき、アドレスｎ＋２のデータラッチ１５に対する制御信号ＤＬ２を出力する。一方、アドレスバス１３１のビット１６がアクティブのときは、ＥＣＣのデータラッチ１６に対する制御信号ＤＬ３を出力する。
【００１８】
書き込み信号生成回路１７は、図４に示すように、アドレスバス１７１と、データバス１７２と、アドレスデコーダ１７３と、ＦＦ（Flip Flop ）１７４と、ＦＦ１７５と、インバータ１７６と、アンド回路１７７とを含んで構成されている。
書き込み信号生成回路１７の動作は、図５のタイミングチャートによって示される。アドレスバス１７１は、アドレスバス１１の一部であって、アドレス信号を転送する。データバス１７２はデータバス１２の一部であって、データ信号を転送する。アドレスデコーダ１７３は、ＣＰＵ２の出力したアドレスバス１７１上のアドレスが、ＥＥＰＲＯＭ８に対する書き込み信号の生成を指示する、予め設定されている特定のアドレスと一致したことを検出したとき、アドレス一致信号を出力する。ＦＦ１７４とＦＦ１７５は、アドレス一致信号が出力されたとき、それぞれデータバス１７２のデータビット０とデータビット１をラッチする。これによって、データビット１に応じて書き込みリセット信号が出力され、データビット０が出力されたとき、書き込みリセット信号が出力されていないことを条件として、アンド回路１７７から書き込みセット信号が出力される。ＥＥＰＲＯＭ８では、書き込みセット信号によって書き込みパルスを立ち上げ、書き込みリセット信号によって書き込みパルスを立ち下げることによって、書き込みパルスがアクティブの期間にユーザデータとＥＣＣデータの書き込みを行う。
【００１９】
次に、図６，図７，図８を参照して、この例の第１の動作例を説明する。この第１の動作例は、ＥＥＰＲＯＭ８の書き込みが遅いため、書き込みパルス幅内でＥＣＣデータを生成できる場合の処理方法を示している。
ユーザデータを収容した外部のファイル（不図示）における、ユーザデータの最初のアドレスと最後のアドレスとが予め指定されているものとする。最初のアドレスから入出力ポート１へユーザデータを入力し（ステップＳ１）、データバス４を介してＣＰＵ２の内部レジスタ群２１へユーザデータを格納する（ステップＳ２）処理を繰り返すことによって、４バイトデータを格納した（ステップＳ３）後、内部レジスタ群２１からデータバス４を介してＥＥＰＲＯＭ制御回路７内のユーザデータスタックレジスタ７１へユーザデータを転送し（ステップＳ４）、さらにＥＥＰＲＯＭ８内のユーザデータレジスタ８１にユーザデータを転送する（ステップＳ５）。
【００２０】
一方、ＣＰＵ２はファームＲＯＭ５に格納したＥＣＣ生成プログラムを読み出して実行することによって、格納した４バイトデータによってＥＣＣデータを生成し（ステップＳ６）、データバス４を介してＥＥＰＲＯＭ制御回路７内のＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＳ７）、さらにＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２へＥＣＣデータを転送する（ステップＳ８）。
そして、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８へ書き込みセット信号を与える（ステップＳ９）ことによって、ユーザデータレジスタ８１のユーザデータとＥＣＣデータレジスタ８２のＥＣＣデータとを、それぞれＥＥＰＲＯＭ８のユーザデータ領域８３とＥＣＣデータ領域８４に書き込む処理を、４バイトデータのすべてのデータ書き込みが終了するまで繰り返して行い（ステップＳ１０）、書き込み終了時、ＥＥＰＲＯＭ８へ書き込みリセット信号を与える（ステップＳ１１）。
４バイトデータの処理を終了したとき、ユーザデータのアドレスを＋４して（ステップＳ１３）、再びステップＳ５，Ｓ８から処理を繰り返し、最後のアドレスになった（ステップＳ１２）とき処理を終了する。
【００２１】
この場合の各データの書き込みタイミングは、図８に例示されるようになる。すなわち、最初、ポート１から４バイトのユーザデータを書き込みデータ（データ０〜データ３）として入力することによって、このデータがデータバス４に連続して出力されている。これを所定のタイミングでＥＥＰＲＯＭ８内のユーザデータレジスタ８１に転送し、さらにＣＰＵ２においてデータ０〜データ３からのＥＣＣデータの生成が終了して、ＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２に転送されたとき、書き込みパルスを発生して、ＥＥＰＲＯＭ８に書き込む。
ＥＥＰＲＯＭ８のデータを読み出すときは、同一アドレスからユーザデータとＥＣＣデータとを読み出すことによって、対応するユーザデータ部分とＥＣＣデータ部分とを読み出すことができるので、誤り訂正回路９ではこれによって誤り訂正の処理を行うことができる。
【００２２】
次に、図９，図１０，図１１及び図１２を参照して、この例の第２の動作例について説明する。この第２の動作例は、ＥＥＰＲＯＭ８の書き込みが速いため、書き込みパルス幅内でＥＣＣデータを生成できない場合であって、書き込み時ＥＣＣアドレスをシフトする場合の処理方法を示している。
ユーザデータを収容した外部のファイル（不図示）における、ユーザデータの最初のアドレスと最後のアドレスとが予め指定されている。最初のアドレスから入出力ポート１へユーザデータを入力し（ステップＰ１）、データバス４を介してＥＥＰＲＯＭ制御回路７内のユーザデータスタックレジスタ７１へユーザデータを転送し（ステップＰ２）、さらに入力されたデータをデータバス４を介してＣＰＵ２の内部レジスタ群２１へ格納する（ステップＰ３）処理を繰り返すことによって、４バイトデータを格納した（ステップＰ４）後、この４バイトデータが最初のアドレスに対応するものであった（ステップＰ５）ときは、ユーザデータスタックレジスタ７１からＥＥＰＲＯＭ８内のユーザデータレジスタ８１へユーザデータを転送し（ステップＰ６）、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８へ書き込みセット信号を出力して（ステップＰ７）、ＥＥＰＲＯＭ８に対する書き込みを行って、書き込みが終了した（ステップＰ８）とき、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８へ書き込みリセット信号を出力し（ステップＰ９）、次にアドレスを＋４して（ステップＰ１０）、再びステップＰ１に戻って、外部からの４バイトデータの入力から繰り返して実行する。
【００２３】
４バイトデータの格納終了時、アドレスが最初のアドレスに対応するものでなく（ステップＰ５）、最終のアドレスに対応するものでない（ステップＰ１１）ときは、ＣＰＵ２が前回の処理サイクルで格納されている４バイトデータからＥＣＣデータを生成して（ステップＰ１２）、データバス４を介してＥＥＰＲＯＭ制御回路７内のＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＰ１３）、ＥＥＰＲＯＭ８内のユーザデータレジスタ８１へユーザデータスタックレジスタ７１からユーザデータを転送し、ＥＣＣデータレジスタ８２へＥＣＣデータスタックレジスタ７２からＥＣＣデータを転送し（ステップＰ１４）、ＥＥＰＲＯＭ８のＥＣＣデータ領域のアドレスを−１シフトし（ステップＰ１５）、ＥＥＰＲＯＭ８への書き込みセット信号を出力して（ステップＰ１６）、ＥＥＰＲＯＭ８のユーザデータ領域８３にユーザデータレジスタ８１からユーザデータを書き込み、ＥＣＣデータ領域８４にＥＣＣデータレジスタ８２からＥＣＣデータの書き込みを行う。そして書き込みが終了した（ステップＰ１７）とき、ＥＥＰＲＯＭ８への書き込みリセット信号を出力し（Ｐ１８）、ステップＰ１０に戻って、アドレスを＋４シフトして（ステップＰ１０）、再びステップＰ１に戻って、外部からの４バイトデータの入力から繰り返して実行する。
ステップＰ１１において、最後のアドレスになったときは、ＣＰＵ２が格納した４バイトデータからＥＣＣデータを生成し（ステップＰ１９）、データバス４を介してＥＥＰＲＯＭ制御回路７内のＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＰ２０）、ＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２へＥＣＣデータを転送し（ステップＰ２１）、ＥＥＰＲＯＭ８のＥＣＣデータ領域８４のアドレスを−１シフトし（ステップＰ２２）、ＥＥＰＲＯＭ８への書き込みセット信号を出力して（ステップＰ２３）ＥＣＣデータの書き込みを行う。そして書き込みが終了した（ステップＰ２４）とき、処理を終了する。
【００２４】
書き込み時ＥＣＣアドレスをシフトする場合の各データの書き込みタイミングは、図１１に例示されるようになる。すなわち、ポート１から４バイトからなるページ単位に、ユーザデータを、ページアドレス０，１，２，…，ｎ，…，最終アドレスの順にＥＥＰＲＯＭ８内のユーザデータレジスタ８１に転送するとともに、これに基づいて１サイクル遅れて生成された対応するＥＣＣデータを、順次１アドレスずつシフトしてＥＥＰＲＯＭ８のＥＣＣデータレジスタ８２に転送し、書き込みパルスに応じて、それぞれＥＥＰＲＯＭ８のユーザデータ領域８３とＥＣＣデータ領域８４に書き込む。
誤り訂正処理のためにＥＥＰＲＯＭ８のデータを読み出すときは、ＥＥＰＲＯＭ８の同一アドレスから、ユーザデータと、ＥＣＣデータとを読み出すことによって、対応するユーザデータ部分とＥＣＣデータ部分とを同時に読み出すことができる。
【００２５】
書き込み時ＥＣＣアドレスをシフトする場合の、ＥＥＰＲＯＭ制御回路７における、ＥＥＰＲＯＭアドレス生成回路１８は、図１２に示すように、アドレスバス１８１と、ディクリメント回路１８２とを含んで構成されている。
アドレスバス１８１は、アドレスバス１１の一部であって、アドレス信号を転送する。ディクリメント回路１８２は、アドレスバス１８１のアドレスから１減算して出力する。
ＥＥＰＲＯＭ８へは、３２ビットのユーザデータと、６ビットのＥＣＣデータとを同時に書き込むので、アドレスバス１８１のビット２〜１５を、ＥＥＰＲＯＭ８のユーザデータ領域８３の書き込みアドレスとして、ＥＥＰＲＯＭ８のアドレス０〜１３に与え、アドレスバス１８１のビット２〜１５を、ディクリメント回路１８２を介して１を減算して、ＥＥＰＲＯＭ８のＥＣＣデータ領域８４の書き込み用として、ＥＥＰＲＯＭ８のアドレス０〜１３に与える。このような変換を行うのは、アドレス信号がバイト単位（８ビット）であるのに対して、ＥＥＰＲＯＭ８の３２ビットの入出力データに対応するアドレスとしては、最下位の２ビットが不要なためである。
【００２６】
次に、図１３，図１４，図１５及び図１６を参照して、この例の第３の動作例について説明する。この第３の動作例は、ＥＥＰＲＯＭ８の書き込みが速いため、書き込みパルス幅内でＥＣＣデータを生成できない場合であって、読み出し時ＥＣＣアドレスをシフトする場合の処理方法を示している。
ユーザデータを収容した外部のファイル（不図示）における、ユーザデータの最初のアドレスと最後のアドレスとが予め指定されている。最初のアドレスから入出力ポート１へユーザデータを入力し（ステップＲ１）、データバス４を介してＥＥＰＲＯＭ制御回路７内のユーザデータスタックレジスタ７１へユーザデータを転送し（ステップＲ２）、さらに入力されたデータをデータバス４を介してＣＰＵ２の内部レジスタ群２１へ格納する（ステップＲ３）処理を繰り返すことによって、４バイトデータを格納した（ステップＲ４）後、この４バイトデータが最初のアドレスに対応するものであった（ステップＲ５）ときは、ユーザデータスタックレジスタ７１からＥＥＰＲＯＭ８内のユーザデータレジスタ８１へユーザデータを転送し（ステップＲ６）、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８へ書き込みセット信号を出力して（ステップＲ７）、ＥＥＰＲＯＭ８に対する書き込みを行って、書き込みが終了した（ステップＲ８）とき、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８へ書き込みリセット信号を出力し（ステップＲ９）、次にアドレスを＋４して（ステップＲ１０）、再びステップＲ１に戻って、外部からの４バイトデータの入力から繰り返して実行する。
【００２７】
４バイトデータの格納終了時、アドレスが最初のアドレスに対応するものでなく（ステップＲ５）、最終のアドレスに対応するものでない（ステップＲ１１）ときは、ＣＰＵ２が格納した４バイトデータからＥＣＣデータを生成して（ステップＲ１２）、データバス４を介してＥＥＰＲＯＭ制御回路７内のＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＲ１３）、ＥＥＰＲＯＭ８内のユーザデータレジスタ８１へユーザデータスタックレジスタ７１からユーザデータを転送し、ＥＣＣデータレジスタ８２へＥＣＣデータスタックレジスタ７２からＥＣＣデータを転送し（ステップＲ１４）、ＥＥＰＲＯＭ８への書き込みセット信号を出力して（ステップＲ１５）、ＥＥＰＲＯＭ８のユーザデータ領域８３にユーザデータレジスタ８１からユーザデータを書き込み、ＥＣＣデータ領域８４にＥＣＣデータ領域８２からＥＣＣデータの書き込みを行う。そして書き込みが終了した（ステップＲ１６）とき、ＥＥＰＲＯＭ８への書き込みリセット信号を出力し（Ｒ１７）、ステップＲ１０に戻って、アドレスを＋４シフトして（ステップＲ１０）、再びステップＲ１に戻って、外部からの４バイトデータの入力から繰り返して実行する。
ステップＲ１１において、最後のアドレスになったときは、ＣＰＵ２が格納した４バイトデータからＥＣＣデータを生成し（ステップＲ１８）、データバス４を介してＥＥＰＲＯＭ制御回路７内のＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＰ１９）、ＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２へＥＣＣデータを転送し（ステップＲ２０）、ＥＥＰＲＯＭ８への書き込みセット信号を出力して（ステップＲ２１）ＥＣＣデータの書き込みを行う。そして書き込みが終了した（ステップＲ２２）とき、処理を終了する。
【００２８】
読み出し時ＥＣＣアドレスをシフトする場合の各データの書き込みタイミングは、図１５に例示されるようになる。すなわち、ポート１から４バイトからなるページ単位に、ユーザデータを、ページアドレス０，１，２，…，ｎ，…，最終アドレスの順にＥＥＰＲＯＭ８内のユーザデータレジスタ８１に転送するとともに、これに基づいて１サイクル遅れて生成された対応するＥＣＣデータを、順次ＥＥＰＲＯＭ８のユーザデータレジスタ８１に転送し、書き込みパルスに応じて、それぞれＥＥＰＲＯＭ８の同一アドレスのユーザデータ領域８３とＥＣＣデータ領域８４に書き込む。したがって、この場合は、ページアドレスｎのユーザデータに対応するＥＣＣデータは、ＥＣＣデータ領域８４のアドレスｎ＋１に書き込まれる。
誤り訂正処理のためにＥＥＰＲＯＭ８のデータを読み出すときは、ＥＥＰＲＯＭ８のユーザデータ領域８３のアドレスｎと、ＥＣＣデータ領域８４のアドレスｎ＋１とを読み出すことによって、対応するユーザデータ部分とＥＣＣデータ部分とを同時に読み出すことができる。
【００２９】
読み出し時ＥＣＣアドレスをシフトする場合の、ＥＥＰＲＯＭ制御回路７における、ＥＥＰＲＯＭアドレス生成回路１８Ａは、図１６のディクリメント回路１８４をインクリメント回路に置き換えたものであって、アドレスバス１８３と、ディクリメント回路とを含んで構成されている。アドレスバス１８３は、アドレスバス１１の一部であって、アドレス信号を転送する。インクリメント回路は、アドレスバス１８３のアドレスから１加算して出力する。ＥＥＰＲＯＭ８からは、３２ビットのユーザデータと、６ビットのＥＣＣデータとを同時に読み出す必要があるので、アドレスバス１８３のビット２〜１５を、ＥＥＰＲＯＭ８のユーザデータ領域８３の読み出しアドレスとして、ＥＥＰＲＯＭ８のアドレス０〜１３に与え、アドレスバス１８３のビット２〜１５を、インクリメント回路を介して１を加算して、ＥＥＰＲＯＭ８のＥＣＣデータ領域８４の読み出し用として、ＥＥＰＲＯＭ８のアドレス０〜１３に与える。このような変換を行うのは、アドレス信号がバイト単位（８ビット）であるのに対して、ＥＥＰＲＯＭ８の３２ビットの入出力データに対応するアドレスとしては、最下位の２ビットが不要なためである。
【００３０】
次に、図１７，図１８及び図１９を参照して、この例の第４の動作例について説明する。この第４の動作例は、ＥＥＰＲＯＭ８の書き込みが速いため、書き込みパルス幅内でＥＣＣデータを生成できない場合に、ＥＥＰＲＯＭ８のＥＣＣデータ領域側に、ファームＲＯＭ５のプログラムに基づくＣＰＵ２の処理によって、書き込みアドレスをインクリメントする、書き込みアドレスインクリメンタの機能を設ける際の処理方法を示している。
ユーザデータを収容した外部のファイル（不図示）における、ユーザデータの最初のアドレスと最後のアドレスとが予め指定されている。最初のアドレスから入出力ポート１へユーザデータを入力して（ステップＱ１）、データバス４を介してＥＥＰＲＯＭ制御回路７内のユーザデータスタックレジスタ７１へユーザデータを転送するとともに（ステップＱ２）、入出力ポート１からのユーザデータをデータバス４を介してＣＰＵ２の内部レジスタ群２１へ格納する（ステップＱ３）処理を繰り返すことによって、４バイトデータを格納した（ステップＱ４）後、ユーザデータスタックレジスタ７１から４バイトデータをＥＥＰＲＯＭ８内のユーザデータレジスタ８１へ転送する（ステップＱ５）。
【００３１】
一方、ステップＱ５で最初の４バイトデータをＥＥＰＲＯＭ８内のユーザデータレジスタ８１へ転送した時、内部レジスタ群２１からデータバス４を介してユーザデータスタックレジスタ７１に対応するアドレスのＲＡＭ６の領域へ４バイトのデータを格納する（ステップＱ１７）。そして、データバス４を介してユーザデータスタックアドレスが示すＲＡＭ６の領域から４バイトデータを読み出してＣＰＵ２へ転送する（ステップＱ１８）。これによってＣＰＵ２は、４バイトデータからＥＣＣデータを生成して（ステップＱ１９）、データバス４を介してＥＥＰＲＯＭ制御回路７内の対応するアドレスのＥＣＣデータスタックレジスタ７２へＥＣＣデータを転送し（ステップＱ２０）、さらにＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２へＥＣＣデータを転送して（ステップＱ２１）、スタックアドレスをディクリメントする（ステップＱ２２）処理を繰り返し実行する。またステップＱ１７の処理と同時に、ＥＥＰＲＯＭ制御回路７からＥＥＰＲＯＭ８のユーザデータ領域８３とＥＣＣデータ領域８４のアドレスを出力し（ステップＱ６）、ＥＥＰＲＯＭ８への書き込みセット信号を出力して（ステップＱ７）書き込みを行い、書き込み完了（ステップＱ８）時、書き込みリセット信号を出力して（ステップＱ９）書き込みを行う。
ユーザデータが最終アドレスか判定して（ステップＱ１０）、最終アドレスでなければ、アドレスを４インクリメントしてステップＱ１の処理へ分岐する。ユーザデータが最終アドレスになったときは、ＥＣＣデータスタックレジスタ７２からＥＥＰＲＯＭ８内のＥＣＣデータレジスタ８２へＥＣＣデータを転送して、転送が終了した（ステップＱ１２）とき、書き込みセット信号を出力して（ステップＱ１３）ＥＥＰＲＯＭ８内のＥＣＣデータ領域８４に対する書き込みを行って、書き込みが完了した（ステップＱ１４）とき、書き込みリセット信号を出力する（ステップＱ１５）処理を、ＥＣＣデータ領域８４の最終アドレスになる（ステップＱ１６）まで行って、処理を終了する。
【００３２】
第４の動作例の場合の各データの書き込みタイミングは、図１９に例示されるようになる。すなわち、ポート１からユーザデータを、４バイトからなるページ単位に、ページアドレス０，１，２，…，ｎ，…，最終アドレスの順にＥＥＰＲＯＭ８内のユーザデータレジスタ８１に転送するとともに、これに基づいて生成されたＥＣＣデータを、生成された時点で順次ＥＥＰＲＯＭ８のＥＣＣデータレジスタ８２に転送する。ユーザデータは書き込みパルスに応じてそのままＥＥＰＲＯＭ８のユーザデータ領域８３に書き込まれるが、ＥＣＣデータに対しては、最初に生成されたＥＣＣアドレス０への書き込み（１），（２）は、ＥＣＣデータ生成の遅れに基づくディフォルト値なので書き込みは行われず、次のＥＣＣアドレス０への書き込み以降のデータが、書き込みパルスに応じて、ＥＥＰＲＯＭ８の所定のアドレスのＥＣＣデータ領域８４に書き込まれる。
【００３３】
この動作例の場合は、ＣＰＵ２によるＥＣＣデータの生成が、次のＥＣＣデータの書き込みのためのアドレスのインクリメントまでに間に合わなかったときは、ＣＰＵ２はディフォルト値を出力し、ＥＥＰＲＯＭ制御回路７は、この場合は、ＥＥＰＲＯＭ８のＥＣＣ領域８４への書き込みを行わないようにする。ディフォルト値としては、例えば最初のＥＣＣデータが生成されるまではオール１を用い、以後は、前回のＥＣＣデータをそのままディフォルト値として出力する。
誤り訂正処理のためにＥＥＰＲＯＭ８のデータを読み出すときは、同一アドレスから、ユーザデータと、ＥＣＣデータとを読み出すことによって、対応するユーザデータ部分とＥＣＣデータ部分とを読み出すことができる。
【００３４】
このようにこの例によれば、ＥＣＣデータを作成する際に、外部のソフトウエアによる処理を行うのでなく、１チップマイクロコンピュータの内部のソフトウエアによって処理を行うので、外部からＥＣＣデータを書き込む必要がなく、外部からの書き込みデータ量が少なくなり、したがって、書き込みデータを転送する際のエラーが減少し、データの信頼性を向上することができる。
さらにこの場合、ＥＥＰＲＯＭに対して外部から書き込むデータ量が減少することによって、データの書き込み時間が減少し、生産性が向上する。
ＥＥＰＲＯＭにデータ書き込む外部装置の実装メモリは、ＥＣＣデータの分を必要とせず、書き込もうとするユーザデータの分だけあればよいので、この外部装置のコストの負担が少ない。
【００３５】
以上、この発明の実施例を図面により詳述してきたが、具体的な構成はこの実施例に限られたものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれる。例えば、この発明の適用は、１チップマイクロコンピュータに限られるものでなく、ＥＥＰＲＯＭを内蔵してプログラムを外部的に格納するコンピュータに対して、一般的に応用可能なのもである。
【００３６】
【発明の効果】
以上説明したように、この発明の構成によれば、ＥＥＰＲＯＭにＥＣＣデータを付加したデータからなるプログラムを格納して、プログラム読み出し時誤り訂正を行う１チップマイクロコンピュータ等において、１チップマイクロコンピュータ等の内部でＥＣＣデータを生成するようにしたので、外部的にＥＣＣデータを生成して付加する場合と比べて、ユーザの負担が大幅に減少する。
また、ＥＣＣデータ作成のために、作成したＥＣＣデータを一旦格納する外部メモリを必要としないので、システム的に装置のコストを低減できる。
さらに、ＥＥＰＲＯＭに対して、ユーザデータとＥＣＣデータとを同時に書き込むので、ＥＣＣデータを外部メモリから書き込む場合と比べて、ＥＥＰＲＯＭに対するデータ書き込み時間を低減することができる。
【００３７】
また、従来のようにＥＣＣデータの生成を論理回路で構成したＥＣＣデータ生成回路で行う場合と異なり、ＥＣＣデータの生成用のファームＲＯＭを追加するだけでよいので、回路規模が大幅に増加することがなく、１チップマイクロコンピュータのチップサイズを増大させることもない。また、ＥＣＣデータの生成処理は、プログラム格納時にのみ動作し、通常のプログラム実行時には、ＥＣＣデータの生成処理のファームＲＯＭは動作しない。また、プログラム実行時には、論理回路で構成した誤り訂正回路を用いて誤りの検出と訂正の処理を行うので、通常のプログラム処理速度を低下させることはない。
【００３８】
また、通常、ＥＥＰＲＯＭにデータを書き込む場合、ＲＡＭに比べて数１００倍〜数１０００倍の書き込み時間を必要とする。この発明では、外部から受け取るユーザデータを複数バイトまとめてＥＥＰＲＯＭに書き込んだり、複数バイトのユーザデータとＥＣＣデータとをまとめてＥＥＰＲＯＭに書き込むようにしたので、ユーザデータを高速に受信でき、また書き込み時間を利用してＥＣＣデータを計算することが同時並行的に処理可能になる。
【図面の簡単な説明】
【図１】この発明の一実施例である１チップマイクロコンピュータの電気的構成を示す図である。
【図２】ＥＥＰＲＯＭ制御回路の構成例を示す図である。
【図３】データラッチ選択制御回路の構成例を示す図である。
【図４】書き込み信号生成回路の構成例を示す図である。
【図５】書き込み信号生成回路の動作タイミングを示す図である。
【図６】この例の第１の動作処理手順を示すフローチャートである。
【図７】この例の第１の動作処理手順を示すフローチャートである。
【図８】第１の動作例における書き込み時のタイミングチャートを示す図である。
【図９】この例の第２の動作処理手順を示すフローチャートである。
【図１０】この例の第２の動作処理手順を示すフローチャートである。
【図１１】書き込み時ＥＣＣアドレスをシフトする場合のタイミングチャートを示す図である。
【図１２】書き込み時ＥＣＣアドレスをシフトする場合のＥＥＰＲＯＭアドレス生成回路の構成例を示す図である。
【図１３】この例の第３の動作処理手順を示すフローチャートである。
【図１４】この例の第３の動作処理手順を示すフローチャートである。
【図１５】読み出し時ＥＣＣアドレスをシフトする場合のタイミングチャートを示す図である。
【図１６】読み出し時ＥＣＣアドレスをシフトする場合のＥＥＰＲＯＭアドレス生成回路の構成例を示す図である。
【図１７】この例の第４の動作処理手順を示すフローチャートである。
【図１８】この例の第４の動作処理手順を示すフローチャートである。
【図１９】第４の動作例における書き込み時のタイミングチャートを示す図である。
【図２０】ＥＥＰＲＯＭにおける従来のＥＣＣデータの生成・付加方法を説明するための説明図である。
【符号の説明】
１      入出力ポート
２      ＣＰＵ
２１      内部レジスタ群
３      アドレスバス
４      データバス
５      ファームＲＯＭ（記憶手段）
６      ＲＡＭ
７      ＥＥＰＲＯＭ制御回路（制御手段）
７１      ユーザデータスタックレジスタ
７２      ＥＣＣデータスタックレジスタ
８      ＥＥＰＲＯＭ
８１      ユーザデータレジスタ
８２      ＥＣＣデータレジスタ
８３      ユーザデータ領域
８４      ＥＣデータ領域
９      誤り訂正回路
１０      データ選択回路
【図１】
0003544951.tif 000002
【図２】
0003544951.tif 000003
【図３】
0003544951.tif 000004
【図４】
0003544951.tif 000005
【図５】
0003544951.tif 000006
【図６】
0003544951.tif 000007
【図７】
0003544951.tif 000008
【図８】
0003544951.tif 000009
【図９】
0003544951.tif 000010
【図１０】
0003544951.tif 000011
【図１１】
0003544951.tif 000012
【図１２】
0003544951.tif 000013
【図１３】
0003544951.tif 000014
【図１４】
0003544951.tif 000015
【図１５】
0003544951.tif 000016
【図１６】
0003544951.tif 000017
【図１７】
0003544951.tif 000018
【図１８】
0003544951.tif 000019
【図１９】
0003544951.tif 000020
【図２０】
0003544951.tif 000021