(57)【特許請求の範囲】
【請求項１】
プログラムが記憶されたプログラム領域を有するマスクＲＯＭと、
前記プログラムの動作に用いるデータを記憶したデータ領域を有する書き換え可能なメモリと、
中央演算処理手段とを備えた制御手段と、
前記メモリ内の第１のアドレスを指定するソースアドレスと、前記第１のアドレスに書き込まれた第１のデータの所定のビットの値を読み出すための第１のマスクデータと、前記第１のマスクデータと前記第１のデータとで演算処理した演算の結果データと比較するための比較データと、前記メモリ内の第２のアドレスを指定するターゲットアドレスと、前記第２のアドレスに書き込まれた第２のデータと演算するための第２のマスクデータとを記憶する記憶手段と
を備えたことを特徴とする半導体装置。
【請求項２】
制御手段は、メモリ内のソースアドレスによって選択された任意の第１のアドレスに書き込まれた第１のデータと前記記憶手段からの第１のマスクデータとで演算処理する第１の演算手段と、
前記第１の演算手段の演算結果と前記記憶手段からの比較データとの比較を行う比較手段と、
前記比較手段の比較結果によりＯＮ／ＯＦＦを切り換えられる切換手段と、
前記メモリ内の第２のアドレスに書き込まれた第２のデータと前記記憶手段からの第２のマスクデータとで演算処理する第２の演算手段と
を備えたことを特徴とする請求項１記載の半導体装置。
【請求項３】
数値「０」が書き込まれた前記記憶手段に任意の前記第１及び第２のマスクデータと前記比較データと前記ソースアドレスと前記ターゲットアドレスとを書き込むことで、前記制御手段は、前記ソースアドレスに基づき前記第１のデータを抽出し、前記第１のデータと前記第１のマスクデータとで第１の演算を行い、前記第１の演算結果と前記比較データとを比較し、前記ターゲットアドレスに基づき前記第２のデータを抽出し、前記第２のデータと前記第２のマスクデータとで第２の演算を行い、前記比較の結果によって前記第２の演算結果を前記第２のデータに書き込むか否かを切り換えることを特徴とする請求項１乃至２記載の半導体装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マスクＲＯＭを搭載したマイクロコンピュータのソフトウエアのバグに対する不具合を解決する半導体装置に関するものである。
【０００２】
【従来の技術】
近年、マスクＲＯＭを搭載したマイクロコンピュータのソフトウエアのバグ対策に関しては、マスクＲＯＭの変更等によるプログラム領域の変更による解決が一般的になされている。
【０００３】
以下に従来のマスクＲＯＭを搭載したマイクロコンピュータのソフトウエアのバグに対する不具合対策方法について説明する。
【０００４】
従来、マスクＲＯＭを搭載したマイクロコンピュータのソフトウエアのバグに対する不具合対策は、マスクＲＯＭを再度作成し直すか、マスクＲＯＭ内のプログラム領域の一部をマイクロコンピュータ外部の不揮発性メモリに書き換えておいて、その不揮発性メモリの内容を書き換えることによって解決する方法がとられている。マイクロコンピュータの構成を図５に示す。図５において、５１はプログラム領域の読み出し専用メモリでマスクＲＯＭ、５２はデータ領域の揮発性のメモリでＲＡＭ、５３は中央演算処理器でＣＰＵ、５０は上記構成を内蔵したマイクロコンピュータである。
【０００５】
以上のように構成された従来マイクロコンピュータのマスクＲＯＭのソフトウエアの不具合の対策について、以下その動作について説明する。
【０００６】
まず、マスクＲＯＭ５１を搭載したマイクロコンピュータ５０のソフトウエア部にバグが存在していた場合、その不具合解決方法は、マスクＲＯＭ５１の再変更を行うか、マスクＲＯＭ５１内のプログラム領域の一部を、マイクロコンピュータ外部に配された不揮発性メモリに書き換えることによって実現していた。
【０００７】
【発明が解決しようとする課題】
しかしながら上記の従来の構成では、マスクＲＯＭ５１を搭載したマイクロコンピュータ５０にソフトウエアのバグが存在する場合、マイクロコンピュータ自体をウエハーの状態から再度拡散工程を経て作成し直さなければならなく、これには、時間と費用が多く必要とされるという問題点を有していた。また、プログラム領域の一部を、マイクロコンピュータ５０外部に配された不揮発性メモリに書き換える場合も、多量の不揮発性メモリを必要とし、多くの費用が必要とされる問題を有していた。
【０００８】
本発明は上記従来の問題点を解決するもので、マスクＲＯＭを変更せず、かつプログラム領域の一部を、マイクロコンピュータ外部に配された不揮発性メモリに書き換えることなく、ソフトウエアのバグによる不具合を解決することができる半導体装置を提供することを目的とする。
【０００９】
【課題を解決するための手段】
この目的を達成するために本発明の半導体装置は、プログラムが記憶されたプログラム領域を有するマスクＲＯＭと、前記プログラムの動作に用いるデータを記憶したデータ領域を有する書き換え可能なメモリと、中央演算処理手段とを備えた制御手段と、前記メモリ内の第１のアドレスを指定するソースアドレスと、前記第１のアドレスに書き込まれた第１のデータの所定のビットの値を読み出すための第１のマスクデータと、前記第１のマスクデータと前記第１のデータとで演算処理した演算の結果データと比較するための比較データと、前記メモリ内の第２のアドレスを指定するターゲットアドレスと、前記第２のアドレスに書き込まれた第２のデータと演算するための第２のマスクデータとを記憶する記憶手段とを備えたものである。
【００１０】
この構成によって、マスクＲＯＭを変更せずに、ソフトウエアのバグによる不具合を解決することができる。
【００１１】
【発明の実施の形態】
本発明の請求項１〜６に記載の発明は、プログラムが記憶されたプログラム領域を有するマスクＲＯＭと前記プログラムの動作に用いるデータを記憶したデータ領域を有する書き換え可能なメモリと中央演算処理手段とを備えた制御手段と、前記メモリにおける任意のデータ領域を書き換え可能な任意のデータを記憶する記憶手段とを備えたものであり、マスクＲＯＭを変更せずに、ソフトウエアのバグによる不具合を解決することができるという作用を有する。
【００１２】
以下、本発明の実施の形態について、図面を用いて説明する。
【００１３】
（実施の形態１）
マイクロコンピュータを備えた電子機器が誤動作した際や、マイクロコンピュータによって動作する機能を一部変更したい場合、マイクロコンピュータ内のソフトウェアを修正する必要がある。従来ではマスクＲＯＭを作成し直すなどの大コストがかかる処理を行っていたが、本実施の形態では、このようなソフトウェアの修正に対して、マイクロコンピュータ内のＲＡＭ（データ領域）における、例えばバグの原因となっている誤ったデータを、マイクロコンピュータに外部接続した不揮発性メモリーによって、ＲＡＭ内のデータを低コストで正しいデータに書き換えるというものである。このような不揮発性メモリは予め電子機器内に搭載され、マイクロコンピュータと接続されている。そして、電子機器が誤動作した時に、不揮発性メモリーに、任意の、ＲＡＭにおけるデータ修正を行うアドレスを特定するソースアドレスデータやターゲットアドレスデータ、実際にデータ修正を行う際に用いるマスクデータや比較データなどを、使用者やマイクロコンピュータ開発者によって書き込まれる。これらのデータが書き込まれた後、電子機器本体の電源を投入することで、ＲＡＭのデータの書き換えが行われる。なお、以下の説明では使用者やマイクロコンピュータ開発者を簡略化して、マイクロコンピュータ開発者として明記する。
【００１４】
なお、不揮発性メモリをマイクロコンピュータに接続し、前述の各データを書き込んでいない状態の時、つまりＲＡＭのデータを書き換え可能なデータを記憶する前は、不揮発性メモリの各アドレスには数値「０」が書き込まれている。
【００１５】
図１は本発明の実施の形態１における半導体装置の構成を示すブロック図、図２は同実施の形態の具体構成を模式的に示したブロック図である。
【００１６】
図において、１０は各種電子機器に搭載され機器の動作制御などを行う制御手段であるマイクロコンピュータ、８はマイクロコンピュータ１０の外部に設けられマイクロコンピュータ１０と接続されている記憶手段である不揮発性メモリである。不揮発性メモリ８の内部には、後述するＲＡＭ２における任意のアドレスである第１のアドレス２１を指定するソースアドレス８１、ＲＡＭ２の第１のアドレス２１内の第１のデータ２１ａにおける所定のビットを抽出するために演算処理を行う第１のマスクデータ８２、前述の演算結果と比較する比較データ８３、前述の比較結果によりＲＡＭ２における第２のアドレス２２内の第２のデータ２２ａにおける所定のビットを他の値に書き換えるための第２のマスクデータ８４、後述する第２のアドレス２２を特定するターゲットアドレス８５とが配され、それぞれマイクロコンピュータ開発者や使用者によってデータを変更することができるものである。なお、これらのデータがマイクロコンピュータ開発者によって書き込まれるのは、本機器において誤動作が発生しマイクロコンピュータ１０のバグが発覚した時で、データが書き込まれる前はそれぞれのデータとして「０」が書き込まれている。
【００１７】
３はマイクロコンピュータ１０内に設けられ各種演算処理動作を行う中央演算処理装置（以下、ＣＰＵと記す）、２はマイクロコンピュータ１０内に設けられマスクＲＯＭ１に記録されたプログラムとともにマスクＲＯＭ１を介してＣＰＵ３を制御するデータを記録した書き換え可能なメモリであるＲＡＭ（Random Access Memory）で、２１及び２２はＲＡＭ２内のデータ領域である第１及び第２のアドレスであり、第１のアドレス２１に書き込まれた第１のデータ２１ａが特定のデータの時、第２のアドレス２２に書き込まれた第２のデータ２２ａが所定の結果を出力するようになっている。２１ａ及び２２ａは第１及び第２のアドレス２１及び２２にそれぞれ書き込まれている第１及び第２のデータである。
【００１８】
４は不揮発性メモリ８からの第１のマスクデータ８２と第１のデータ２１ａとを論理演算し第１のデータ２１ａにおける所定のビットを抽出する第１の演算手段である第１の演算器で、本実施の形態では乗算動作を行うものとしたが、これに限定されるものではない。５は第１の演算器４の演算結果と不揮発性メモリ８からの比較データ８３とを比較する比較手段である比較器、７は比較器５の比較結果により開放（ＯＦＦ）／接続（ＯＮ）切換を行う切換手段である切換器で、後述する第２の演算器６の演算結果を第２のデータ２２ａと書き換えるか否かを切り替えるものである。本実施の形態の切換器７は、比較器５の比較結果が真（第１の演算器４の演算結果と比較データ８３とが一致している場合）はＯＮとなり、第２の演算器６の演算結果に基づき第２のデータ２２ａの所定ビットが正しい値に書き換えられるが、比較器５の比較結果が偽（第１の演算器４の演算結果と比較データ８３とが不一致の場合）は切換器７はＯＦＦとなり、第２のデータ２２ａは書き換えられない。
【００１９】
６は第２のデータ２２ａと第２のマスクデータ８４とで論理演算する第２の演算手段である第２の演算器で、本実施の形態では論理加算の処理を行うものとしたが、これに限定されるものではない。１はマイクロコンピュータ１０の内部に設けられたマスクＲＯＭ（ＲＯＭ＝Read Only Memory）で、ＣＰＵ３をコントロールするソフトウエアが書き込まれている。第２の演算器６は、第２のデータ２２ａにおける所定ビットの値が正しくない値である場合に、所定ビットが正しい値に設定された第２のマスクデータ８４と論理演算を行い、第２のデータ２２ａの所定ビットを正しい値に修正するものである。
【００２０】
上記マスクＲＯＭ１、ＲＡＭ２、ＣＰＵ３、第１の演算器４、比較器５、第２の演算器６、切換器７はマイクロコンピュータ１０内に設けられている。
【００２１】
マイクロコンピュータ開発者は、マイクロコンピュータ１０のバグの原因となっているＲＡＭ２におけるアドレスやビット、バグがあるアドレスやビットを抽出するためのソースアドレス８１や第１のマスクデータ８２、バグの有無を確認するための比較データ８３、ＲＡＭ内のデータを書き換えるための第２のマスクデータ８４、ターゲットアドレス８５は、予め解っているものとし、不揮発性メモリ８に必要なデータを予め書き込んでおく。
【００２２】
以上のように構成された本実施の形態の半導体装置について、図１及び図２を用いてその動作を説明する。
【００２３】
まず、マイクロコンピュータ１０には、予め不揮発性メモリ８が接続された状態で機器内に組み込まれている。不揮発性メモリ８内の全てのアドレスには、組み込み当初は「０」が書き込まれていて、ＲＡＭ２内のデータを不用意に書き換えないようにしている。
【００２４】
次に、マイクロコンピュータ１０が誤動作したり、マイクロコンピュータ１０の機能の一部を変更したい時、マイクロコンピュータ１０内のソフトウェアの一部を変更する必要がある。本実施の形態では、マイクロコンピュータ１０内のデータ領域をＲＡＭ２で構成しているため、任意に書き換えることが可能である。書き換えるためには、書き換えるためのデータや、書き換えるアドレスを特定するためのデータを、マイクロコンピュータ開発者が不揮発性メモリ８に書き込むことで、ＲＡＭ２内のデータを書き換えることが可能になる。
【００２５】
不揮発性メモリ８に各データを書き込むと、不揮発性メモリ８内のソースアドレス８１によって、ＲＡＭ２内の任意のアドレスである第１のアドレス２１を選び、その第１のアドレス２１に書き込まれた第１のデータ２１ａと、不揮発性メモリ８内の第１のマスクデータ８２とを、第１の演算器４で論理演算し、第１のデータ２１ａにおける所定のビットを読み出す。その演算結果と比較データ８３とを比較器５で比較する。その比較結果に応じて、切換器７を切り換えるよう制御している。比較データ８３は、その所定ビットの値が、第１の演算器４の演算結果の所定ビットの値と一致するようなデータを書き込んでおき、この比較データ８３と第１の演算器４の演算結果とが一致した時は、第２のアドレス２２の第２のデータ２２ａの所定ビットの値を修正できるよう、切換器７をＯＮにするよう制御する。
【００２６】
比較器５における比較の結果、第１の演算器４のデータと比較データ８３とが一致した場合は、切換器７をＯＮにして第２のデータ２２ａを書き換える。また、比較器５における比較の結果、第１の演算器４のデータと比較データ８３とが不一致である場合は、切換器７をＯＦＦにして第２のデータ２２ａを書き換えない。
【００２７】
一方で、不揮発性メモリ８内のターゲットアドレス８５によってＲＡＭ２内の第２のアドレス２２を指定し、第２のアドレス２２内の第２のデータ２２ａの所定のビットを第２の演算器６に読み出す。第２の演算器６では、不揮発性メモリ８内の第２のマスクデータ８４と論理演算を行い、切換器７に出力している。ここで、切換器７がＯＮの場合は第２の演算器６の演算結果を第２のデータ２２ａに書き込む（所定ビットを書き換える）が、切換器７がＯＦＦの場合は第２の演算器６の演算結果は第２のデータ２２ａに書き込まれず、第２のデータ２２ａは何等変更されない。
【００２８】
ここで、第１のデータ２１ａと第２のデータ２２ａとはそれぞれ対になって動作するものであり、第１のデータ２１ａの条件に基づいて、前記条件に応じた結果を第２のデータ２２ａとして出力するものである。
【００２９】
以上の動作について、以下図２を用いて詳述する。
【００３０】
まず、不揮発性メモリ８に書き込まれている各データについて説明する。
【００３１】
図２において、ＲＡＭ２内の各データや不揮発性メモリ８内の各データはそれぞれ８ビットのデータで実現している。マイクロコンピュータ開発者はマイクロコンピュータ１０を搭載した機器の誤動作から、マイクロコンピュータ１０内にバグがあることを認識し、その誤動作の状態に基づき例えばＲＡＭ２に書き込まれた内容を書き記したＲＡＭマップを用いて、ＲＡＭ２内におけるバグがあると思われる第２のアドレス２２の第２のデータ２２ａを特定する。次に、マイクロコンピュータ開発者は、第２のデータ２２ａと、第２のデータ２２ａと対になって動作する第１のデータ２１ａとを不揮発性メモリ８によって特定するために、第１のアドレス２１に対応するアドレスを不揮発性メモリ８内のソースアドレス８１に書き込み、第２のアドレス２２に対応するアドレスを不揮発性メモリ８内のターゲットアドレス８５に書き込む。
【００３２】
また、第１のアドレス２１には第１のデータ２１ａとして「０１０００１０１」が書き込まれていることはマイクロコンピュータ開発者は既に解っており、バグがある第２のデータ２２ａの所定ビットに対応した、第１のデータ２１ａにおける所定ビットの値を第１の演算器４で抽出するための第１のマスクデータ８２として「０００００１００」を不揮発性メモリ８に書き込む。
【００３３】
さらに、第１のマスクデータ８２によって抽出したビットの値と比較するための比較データ８３「０００００１００」を、不揮発性メモリ８に書き込む。この比較データ８３は、バグがあると思われる第２のデータ２２ａにおけるビットに対応した、第１のデータ２１ａにおける所定ビットの値と一致するデータとなっている。つまり、第１のマスクデータ８２を用いて第１のデータ２１ａから所定ビットの値を抽出し、そのビットの値が所望の値であるかどうかを確認するものである。
【００３４】
また、マイクロコンピュータ開発者は、第１のデータ２１ａの条件に基づいてその結果が第２のデータ２２ａとして出力されることは既に解っており、その第２のデータ２２ａ「００００００１０」が書き込まれている第２のアドレス２２を、例えばＲＡＭマップを用いて特定する。そして、バグ修正時に第２のアドレス２２を不揮発性メモリ８によって指定するために、第２のアドレス２２に対応するアドレスを、不揮発性メモリ８内のターゲットアドレス８５に書き込む。
【００３５】
さらに、ターゲットアドレス８５によって特定した第２のアドレス２２の第２のデータ２２ａにおける、バグがあると思われる所定のビットを、他の値に書き換えるための第２のマスクデータ８４「００１０００００」を、不揮発性メモリ８に書き込む。
【００３６】
以下、図２を用いて動作を説明する。
【００３７】
まず、本機器が誤動作し、マイクロコンピュータにバグがあると判断された時は、マイクロコンピュータ開発者や使用者によって不揮発性メモリ８に、ソースアドレス８１と第１のマスクデータ８２と比較データ８３と第２のマスクデータ８４とターゲットアドレス８５を書き込む。そして、ソースアドレス８１によって選ばれた第１のデータ２１ａ「０１０００１０１」と第１のマスクデータ８２「０００００１００」とを、第１の演算器４で論理乗算を行う。ここで、第１のマスクデータ８２は、第１のデータ２１ａと論理乗算することで第１のデータ２１ａにおける所定のビット（本例では最下位から数えて３ビット目）の値を抽出するようなデータとなっている。よって論理乗算の結果は「０００００１００」となる。その演算結果「０００００１００」と比較データ８３「０００００１００」とを比較器５で比較する。ここで、比較器５で比較データ８３と第１の演算器４の演算結果とを比較するのは、第１の演算器４において抽出した所定ビットの値が、所望の値であるか否かを確認するためである。
【００３８】
一方、ターゲットアドレス８５によって、ＲＡＭ２内の第２のアドレス２２を選び、その第２のアドレス２２に書き込まれた第２のデータ２２ａと第２のマスクデータ８４とを、第２の演算器６で論理演算する。例えば、ターゲットアドレス８５で選ばれた第２のアドレス２２の第２のデータ２２ａとして「００００００１０」、第２のマスクデータ８４として「００１０００００」が入っている状態で、それぞれのデータを第２の演算器６で論理加算を行う。その論理加算の結果は「００１０００１０」となる。
【００３９】
そして、前述の比較器５における比較の結果、第１の演算器４の演算結果と比較データ８３とが一致した場合は、切換器７をＯＮにし、第１の演算器４の演算結果と比較データ８３とが不一致の場合は、切換器７をＯＦＦにする。切換器７がＯＦＦの場合、つまり第２のデータ２２ａを修正する必要がない場合は、第２の演算器６の演算結果は第２のデータ２２ａに反映されずデータは何等変更されないが、切換器７がＯＮの場合は、前述の第２の演算器６の演算結果に基づき、第２のデータ２２ａ内の所定のビットを、正しい値に書き換える。本実施の形態では、第２のデータ２２ａに演算前に書き込まれていたデータ「００００００１０」を、第２の演算器６の演算結果である「００１０００１０」に書き換える。つまり、第２のデータ２２ａの左から３ビット目の値が本来「１」でないといけないものが、「０」となっていたため、第２の演算器６の演算結果により「１」に書き換える。
【００４０】
以上のように本実施の形態によれば、第２のデータ２２ａの所定のビットの値にバグがあった場合、予めマイクロコンピュータ１０に接続された不揮発性メモリ８に、データを書き換えるための任意のアドレスやデータを書き込むことで、第２のデータ２２ａの所定ビットの値を書き換えるようにしたことにより、マイクロコンピュータ１０のソフトウェアバグを修正することができるので、マイクロコンピュータにおけるバグ修正を、小容量の不揮発性メモリによる、低コストでの実現が可能であるという優れた効果が得られる。
【００４１】
（実施の形態２）
次に、本発明の半導体装置を用いた一例を実施の形態２として説明する。本実施の形態で示す用例は、ビデオテープレコーダーに一般的に用いられている誤消去防止爪検出による動作制御を行うマイクロコンピュータのバグ修正である。
【００４２】
マイクロコンピュータを備えたビデオテープレコーダーが誤動作した際や、マイクロコンピュータによって動作する機能を一部変更したい場合、マイクロコンピュータ内のソフトウェアを修正する必要がある。従来ではマスクＲＯＭを作成し直すなどの大コストがかかる処理を行っていたが、本実施の形態では、このようなソフトウェアの修正に対して、マイクロコンピュータ内のＲＡＭ（データ領域）における、例えばバグの原因となっている誤ったデータを、マイクロコンピュータに外部接続した不揮発性メモリーによって、ＲＡＭ内のデータを低コストで正しいデータに書き換えるというものである。このような不揮発性メモリは予めビデオテープレコーダー内に搭載され、マイクロコンピュータと接続されている。そして、ビデオテープレコーダーが誤動作した時に、不揮発性メモリーに、任意の、ＲＡＭにおけるデータ修正を行うアドレスを特定するソースアドレスデータやターゲットアドレスデータ、実際にデータ修正を行う際に用いるマスクデータや比較データなどを、使用者やマイクロコンピュータ開発者によって書き込まれる。これらのデータが書き込まれた後、ビデオテープレコーダーの電源を投入することで、ＲＡＭのデータの書き換えが行われる。
【００４３】
なお、不揮発性メモリをマイクロコンピュータに接続し、前述の各データを書き込んでいない状態の時、つまりＲＡＭのデータを書き換え可能なデータを記憶する前は、不揮発性メモリの各アドレスには数値「０」が書き込まれている。
【００４４】
図３はビデオテープレコーダーに用いるテープカセットの外観を示す斜視図で、同図（ａ）は誤消去防止爪が有る（記録可能状態）テープカセット、同図（ｂ）は誤消去防止爪が無い（記録不可能状態）テープカセットを示している。３１はテープカセット、３２は爪の有無や開閉式の扉などで構成される誤消去防止検出部である。
【００４５】
図４は本実施の形態の構成を示すブロック図であり、説明の便宜上、実施の形態１で用いたマスクＲＯＭとＣＰＵの描画を省いた。図４において、２０は電子機器の動作を制御する制御手段であるマイクロコンピュータ、８はマイクロコンピュータ２０に接続しマイクロコンピュータ２０内のバグを修正するデータを記憶した記憶手段である不揮発性メモリである。不揮発性メモリ８の内部には、ＲＡＭ２における第１のデータ４１が記録された任意のアドレスを特定するソースアドレス８１、第１のデータ４１と論理演算を行う第１のマスクデータ８２、第１の演算器４の演算結果と比較する比較データ８３、第２のデータ４２と論理演算を行う第２のマスクデータ８４、第２のデータ４２のアドレスを特定するターゲットアドレス８５とが配されており、各データはマイクロコンピュータ開発者によって任意のデータに変更することができるものである。なお、不揮発性メモリ８は、予めマイクロコンピュータ２０に接続した状態にしておき、本機器が誤動作してマイクロコンピュータ２０にバグがあると判明した時に、マイクロコンピュータ開発者が上記各データを不揮発性メモリ８に書き込むものである。
【００４６】
２はデータ領域を有する書き換え可能なメモリであるＲＡＭ（Random Access Memory）で、４１及び４２はＲＡＭ２内のデータ領域（アドレス）に書き込まれた第１及び第２のデータである。
【００４７】
４は不揮発性メモリー８からの第１のマスクデータ８２と第１のデータ４１とを論理演算する第１の演算手段である第１の演算器で、本実施の形態では乗算器としたが、後述する第１の選択データ８６によって例えば加算器にも設定可能であり、その他の論理演算器にも対応できるものであり、これらに限定されるものではない。
【００４８】
５は第１の演算器４の演算結果と比較データ８３とを比較し後述する切換器７のＯＮ／ＯＦＦ切換制御を行う比較手段である比較器で、本実施の形態では第１の演算器４の演算結果と比較データ８３とが一致した場合に切換器７をＯＮ状態にするよう動作している。つまり、第１の演算器４によって抽出された第１のデータ４１の所定ビットの値が、所望データである比較データ８３との一致性を確認している。
【００４９】
７は比較器５の比較結果により開放（ＯＦＦ）／接続（ＯＮ）切換を行う切換手段である切換器で、後述する第２の演算器６の演算結果を第２のデータ４２に書き込むか否かを切り替えるものである。
【００５０】
６は第２のデータ４２と第２のマスクデータ８４とで論理演算する第２の演算手段である第２の演算器で、本実施の形態では乗算器としたが、後述する第２の選択データ８７によって例えば加算器にも設定可能であり、その他の論理演算器にも対応できるものであり、これらに限定されるものではない。８６は第１の演算器４を乗算器か加算器のいずれかを選択可能な第１の選択データ、８７は第２の演算器６を乗算器か加算器のいずれかを選択可能な第２の選択データであり、第１及び第２の選択データ８６及び８７において、「０１ｈ」に設定された時は乗算器を指定し、「０２ｈ」に設定された時は加算器を指定する。
【００５１】
マイクロコンピュータ２０内には、ＲＡＭ２、第１の演算器４、比較器５、第２の演算器６、切換器７がそれぞれ設けられている。
【００５２】
以上のように構成された本実施の形態の半導体装置について、以下その動作について説明する。
【００５３】
図３に示すように、ビデオテープレコーダーに用いられるテープカセット３１には、誤消去防止検出部３２（本実施の形態では爪）がカセット側面に付いており、その爪が付いていると記録可能であり（図３（ａ））、その爪がなければ（図３（ｂ））記録をしてはいけないという規則性がある。このようなテープカセットを用いるビデオテープレコーダのコントロールには、マスクＲＯＭを搭載したマイクロコンピュータを使用している。
【００５４】
上記構成において例えば、ビデオテープレコーダのソフトウエアに、誤消去防止用の爪が付いていない（折れている）にもかかわらず、記録動作を行ってしまうという誤動作が発覚したとする。このような誤動作の原因としては検出メカニズムの故障なども考えられるが、本実施の形態での説明はマイクロコンピュータ内のソフトウェアのバグによる誤動作を前提としている。上記のように、ソフトウェアバグの原因による誤動作は、ソフトウェアにおいて誤消去防止爪が付いていない（折れている）時にフラグが「１」になる「誤消去防止フラグ」と、誤消去防止フラグが「１」になっている時に記録動作を行わないよう制御する「記録開始フラグ」との関係に誤りがある場合に生じる。なお、「記録開始フラグ」が「１」の時は記録動作を開始し、「０」の時は記録動作を開始しない。
【００５５】
本来、誤消去防止フラグが「１」になっている（誤消去防止爪が折れている）時は、記録開始フラグは「０」（記録動作を開始しない）であることが正常であるにも関わらず、記録開始フラグが「１」になっている（記録動作を開始する）という状態になっていると、ビデオテープレコーダは前述のような誤動作を引き起こしてしまう。この時、本装置を働かせて、誤消去防止フラグが「１」になっていたら、記録開始フラグを「０」にする（記録動作を行わない）という動作をさせるように、ＲＡＭのデータ領域における記録開始フラグの部分を書き換えるよう動作させる。その結果、ソフトウエアのバグが解消され、再度、マスクＲＯＭを作成しなおす必要がなくなるというものである。
【００５６】
以下に具体動作について図４を用いて詳述する。
【００５７】
図４において、まず、不揮発性メモリ８はマイクロコンピュータ２０に接続された状態でビデオテープレコーダ内に配される。この時の不揮発性メモリ８の全てのアドレスには、「０」の値が既に書き込まれているため、ＲＡＭ２内のデータを不用意に書き換える動作は行われない。このようなビデオテープレコーダにおいて、誤消去防止検出部３２の爪が無いにも関わらず、記録動作を開始してしまう誤動作が発生し、マイクロコンピュータ２０のバグが原因であることが発覚すると、マイクロコンピュータ開発者は、以下の手順に従って、不揮発性メモリ８に各データを予め書き込む。
【００５８】
マイクロコンピュータ開発者は、前提としてＲＡＭ２内における、誤消去防止フラグが書き込まれているアドレスやビット、記録開始フラグが書き込まれているアドレスやビットは、予め解っているものとする。そして、これら既知の情報に基づき、誤消去防止フラグがＲＡＭ２におけるアドレス「１６Ｃ５ｈ」番地の左から２ビット目に第１のデータ４１として書き込み、記録開始フラグがアドレス「３Ａ６７ｈ」番地の左から６ビット目に第２のデータ４２として書き込むとすると、マイクロコンピュータ開発者は不揮発性メモリ８に、任意のアドレスとしてソースアドレス８１「１６Ｃ５ｈ」、第１のマスクデータ８２として第１のデータ４１における左から２ビット目を読み出すためのデータ「０１００００００」、比較データ８３として第１の演算器４の演算結果と比較するためのデータ「０１００００００」、第２のマスクデータ８４として第２のデータ４２の左から６ビット目を書き換えるためのデータ「１１１１１０１１」、ターゲットアドレス８５として第２のデータ４２のアドレスを特定するための「３Ａ６７ｈ」をそれぞれ書き込んでおく。
【００５９】
ここで、比較データ８３には、第１の演算器４の演算結果と比較して、誤消去防止フラグが「１」の時の第１のデータ４１と第１のマスクデータ８２との演算結果と一致するデータを書き込む。つまり、誤消去防止フラグが「１」の時における、第２のデータ４２を修正するためである。誤消去防止フラグが「０」の時（つまり誤消去防止爪が有る場合）については、第２のデータ４２を修正する必要がないので、第１の演算器４の演算結果と比較データ８３とが不一致の場合は、第２のデータ４２は変更されない。なお、不揮発性メモリ８へのデータの書き込みは、専用の書き込み装置を用いて書き込むなど方法がある。
【００６０】
そして、第１の選択データ８６には、第１の演算器４が乗算器として動作するように「０１ｈ」、第２の選択データ８７には第２の演算器６が乗算器として動作するように「０１ｈ」をそれぞれ書き込んでおく。また、第２のマスクデータ８４には、第２の演算器６において乗算処理された時に、第２のデータ４２の左から６ビット目を「１」から「０」に書き換えるようなデータ「１１１１１０１１」を書き込んでおく。
【００６１】
そして、不揮発性メモリ８のソースアドレス８１によりＲＡＭ２の任意のアドレス「１６Ｃ５ｈ」が指定され、そのアドレスに書き込まれている第１のデータ４１「０１００００００」を読み出す。読み出した第１のデータ４１は第１の演算器４に入力され、第１の演算器４において、第１のデータ４１「０１００００００」と、不揮発性メモリ８における第１のマスクデータ８２「０１００００００」とを乗算処理する。つまり、第１のデータ４１における誤消去防止フラグが書き込まれているビットの値を抽出する。その演算結果は「０１００００００」となり、その演算結果は比較器５に入力される。比較器５は、第１の演算器４の演算結果「０１００００００」と、不揮発性メモリ８における比較データ８３「０１００００００」とを比較し、各々のデータが一致（つまり、誤消去防止フラグ（左から２ビット目）が１になっている時）しているため、切換器７をＯＮになるよう制御する。
【００６２】
一方で、ターゲットアドレス８５「３Ａ６７ｈ」によって、ＲＡＭ２における第２のデータ４２のアドレスを特定し、第２のデータ４２「０００００１００」を第２の演算器６に読み出す。第２の演算器６で、第２のデータ４２「０００００１００」とマスクデータ８４「１１１１１０１１」とを乗算処理する。その乗算結果は「００００００００」となる。つまり、修正したいビット（左から６ビット目）の値を「１」から「０」にするものであり、修正したいビット以外のビットについては、第２の演算器６における演算によって値が変更されないように全て「１」となっている。
【００６３】
そして、切換器７がＯＮである時は、第２の演算器６の演算結果「００００００００」が第２のデータ４２に書き込まれる。この時、第２の演算器６で演算される前の第２のデータ４２は、記録開始フラグ（左から６ビット目）が「１」になっていたが、第２の演算器６の演算結果に書き換えられることにより、第２のデータ４２の記録開始フラグが「０」になる。その結果、第１のデータ４１における誤消去防止フラグ（左から２ビット目）が「１」になっていたら、第２のデータ４２における記録開始フラグ（左から６ビット目）が「０」になるという動作になるので、誤消去防止用の爪が付いていないのに記録してしまうというバグが解消されたことになる。
【００６４】
このようにしてバグを修正したマイクロコンピュータ２０をビデオテープレコーダーで動作させると、誤消去防止検出部３２が有るテープカセット３１（図３（ａ）参照）では、操作者の録画指令により記録動作を行い、誤消去防止検出部３２が無いテープカセット３１（図３（ｂ）参照）では、操作者の誤った録画指令を行っても記録動作が行われない正常動作となる。
【００６５】
以上のように本実施の形態によれば、不揮発性メモリ８に、第１及び第２のマスクデータ８２及び８４とソースアドレス８１と比較データ８３とターゲットアドレス８５の任意のデータを書き込み、ソースアドレス８１によってＲＡＭ２内の第１のデータ４１を抽出し、誤消去防止フラグが書き込まれている第１のデータ４１の中から第１のマスクデータ８２によって誤消去防止フラグを読み出し、比較データ８３と比較し、比較データ８３と一致した時は、記録開始フラグが書き込まれている第２のデータ４２と第２のマスクデータ８４とを第２の演算器６で演算した結果を、第２のデータ４２に書き込むことにより、誤消去防止フラグが「１」になっている時は記録開始フラグを「０」にするように第２のデータ４２を修正することができるものであり、マイクロコンピュータにおけるバグ修正を、小容量の不揮発性メモリによる、低コストでの実現が可能であるという優れた効果が得られる。
【００６６】
また、不揮発性メモリ８には、マイクロコンピュータ開発者によってバグに応じたソースアドレス、ターゲットアドレスの指定や、各データ設定を行うことができるので、様々なバグに対して、マスクＲＯＭを変更せずにバグの修正を行うことができるものである。
【００６７】
なお、本実施の形態において、第１及び第２の演算器４及び６を乗算器として説明したが、不揮発性メモリ８内の第１及び第２の選択データ８６及び８７を変更することで、第１及び第２の演算器のいずれか一方または両方を加算器などに設定することが可能である。また、本実施の形態においては乗算器と加算器のみに切り換え可能な構成としたが、除算器などの他の論理演算器に設定することも可能である。
【００６８】
【発明の効果】
以上のように本発明は、マスクＲＯＭを変更せず、かつプログラム領域の一部を、マイクロコンピュータ外部に配された不揮発性メモリに書き換えることなく、ソフトウエアのバグ修正を、小容量の不揮発性メモリによる低コストでの実現が可能であるという優れた効果が得られるものである。
【００６９】
また、マイクロコンピュータのバグを修正する際、マイクロコンピュータ自体をウエハーの状態から再度拡散工程を経て作成し直すような作業が不要となり、コストを大幅に低減させることができるという優れた効果が得られるものである。
【図面の簡単な説明】
【図１】本発明の実施の形態１における半導体装置の構成を示すブロック図
【図２】同実施の形態１における半導体装置の動作説明のため模式的に示したブロック図
【図３】本発明の実施の形態２における半導体装置を説明するためのテープカセットの外観構成を示す斜視図
【図４】同実施の形態の半導体装置の構成を示すブロック図
【図５】従来の半導体装置の構成を示すブロック図
【符号の説明】
１  マスクＲＯＭ
２  ＲＡＭ
３  ＣＰＵ
４  第１の演算器
５  比較器
６  第２の演算器
７  切換器
８  不揮発性メモリ
１０、２０  マイクロコンピュータ
２１  第１のアドレス
２１ａ  第１のデータ
２２  第２のアドレス
２２ａ  第２のデータ
８１  ソースアドレス
８２  第１のマスクデータ
８３  比較データ
８４  第２のマスクデータ
８５  ターゲットアドレス
【図１】
0003750494.tif 000002
【図２】
0003750494.tif 000003
【図３】
0003750494.tif 000004
【図４】
0003750494.tif 000005
【図５】
0003750494.tif 000006