(57)【要約】      （修正有）【課題】ワンチップマイクロコントローラ（ＭＣＵ）におけるメモリチェックを効率よく行えるようにする。【解決手段】チェックアドレスに記憶されているデータをそのメモリ中の所定の待避用アドレスに待避させた後、そのチェックアドレスにチェックデータを書込むとともに、そのチェックデータの書込まれたチェックアドレスに記憶されているデータを読取ってメモリの診断を行うＭＣＵにおいて、チェックアドレスの上位２ビットを抽出する抽出手段と、抽出された上位２ビットのそれぞれを論理反転する論理反転手段と、抽出された上位２ビット及び論理反転して生成された上位２ビットと一致しない上位２ビットを選択する選択手段と、選択された上位２ビットを有するアドレスを待避用アドレスに設定する設定手段とを有する。【選択図】      図１
2004258715.tif 000002
【特許請求の範囲】
【請求項１】
アドレス毎にデータを記憶するメモリと、そのメモリにアクセスして所定の演算処理を行うプロセッサとを同一半導体内に備え、そのメモリ中のチェックを行うための所定のチェックアドレスに記憶されているデータをそのメモリ中の所定の待避用アドレスに待避させた後、その所定のチェックアドレスに所定のチェックデータを書込むとともに、そのチェックデータの書込まれた所定のチェックアドレスに記憶されているデータを読取り、その読取られたデータとその書込んだチェックデータとを照合してそのメモリの診断を行うワンチップマイクロコントローラにおいて、
前記所定のチェックアドレスの上位２ビットを抽出する抽出手段と、
抽出された上位２ビットのそれぞれを論理反転する論理反転手段と、
抽出された上位２ビット及び論理反転して生成された上位２ビットと一致しない上位２ビットを選択する選択手段と、
選択された上位２ビットを有するアドレスを前記待避用アドレスに設定する設定手段と、
を有することを特徴とするワンチップマイクロコントローラ。
【請求項２】
請求項１に記載のワンチップマイクロコントローラにおいて、メモリのアドレス空間は、２ｎ  （ただし、ｎは５以上の自然数）有していることを特徴とするワンチップマイクロコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、同一半導体内に演算処理を行うプロセッサとデータを記憶するメモリとを備えたワンチップマイクロコントローラに関し、特に、メモリの診断を効率よく行えるようにしたものに関する。
【０００２】
【従来の技術】
従来、鉄道交通等の高い安全性が要求される制御装置、例えば踏切制御装置は、信頼性を高めるためにバス同期２重系装置が採用されている。このバス同期２重系装置は、外部メモリ等がバス接続された互いに同期して動作する２つの中央処理部（ＣＰＵ）と、これらＣＰＵと外部メモリとを繋ぐバスに接続される１つのフェールセーフな照合回路とを備えて構成されている。
【０００３】
上記構成のバス同期２重系装置における外部メモリの故障診断は、ＣＰＵによりメモリチェック用データを外部メモリに対して書込むとともに、その書込まれたメモリチェック用データを読出すことによって行われる。すなわち、ＣＰＵが外部メモリに対してメモリチェック用データの読み書きを行うときにフェールセーフな照合回路が各系のバスに流れるメモリチェック用データを取込み、取り込んだ各系のデータが一致していればその外部メモリは正常と判定され、不一致ならばその外部メモリは異常であると判定される。
【０００４】
ところで、近年、ＬＳＩ技術の発展により、ＣＰＵ、メモリ及び各種周辺機能を１チップ内に集積化したワンチップマイクロコントローラ（以下、「ＭＣＵ」という。）が実現されている。しかし、このＭＣＵでは、ＣＰＵとメモリとが同一チップ内に形成されるため、バスに流れるデータを直接取出すことができず、上述のようなバス同期２重系装置で適用される方法でのメモリの故障診断を行うことができなかった。
【０００５】
そこで、本出願人は、上述の欠点を除去するために、メモリの正常、異常を正確に診断できるＭＣＵを提案している（特許文献１参照）。この提案にかかるＭＣＵは、アドレス毎にデータを記憶するメモリと、そのメモリにアクセスして動作するプロセッサとを同一半導体チップ内に備えたＭＣＵであって、上記プロセッサは、前記メモリの診断（チェック）を行うアドレスに第１チェックデータを書込んだ後、その診断を行うアドレスと異なる少なくとも１つのアドレスにその第１チェックデータとを異なる第２チェックデータを書込むチェックデータ書込み手段と、前記診断を行うアドレスに書込まれているチェックデータを読出すチェックデータ読出手段と、そのチェックデータ読出手段で読出したチェックデータが前記診断を行うアドレスに書込んだ第１チェックデータと一致するか否かを判定し、一致のときに正常と判定し、不一致のときに異常であると判定する判定手段とを備えて構成されている。
【０００６】
図２及び図３を用いて上記提案に係るＭＣＵをさらに説明すると、図２は、ＭＣＵ１の概略構成を示すブロック図である。このＭＣＵ１は、論理部２を備えたプロセッサ３と、データをアドレス毎に記憶するメモリとしてのＲＡＭ４と、外部装置５と、データの授受を行うためのＩ／Ｏポート６とを同一半導体チップ内に備えて構成されている。また、論理部２、ＲＡＭ４及びＩ／Ｏポート６は、内部バス７によって電気的に接続されており、上記外部装置５は、Ｉ／Ｏポート６と電気的に接続されている。そして、この論理部２は、ＲＡＭ４にアクセスしてそのＲＡＭ４に記憶されているデータを用いてＭＣＵの動作を制御するとともに、図３に示される方法でＲＡＭ４の診断（チェック）を行うように構成されている。
【０００７】
図３（ａ）は、診断される前のＲＡＭ４の概念図であり、同図（ｂ）は診断中のＲＡＭ４の概念図である。ここに示されるＲＡＭ４は、所定数のビット（図示の例では、２３  の８ビット）のデータが書込めるアドレス００００ｂ〜１１１１ｂを有し、これらアドレスの内、アドレス０１１０ｂ（以下、このように診断（チェック）の対象となるアドレスを「チェックアドレス」として説明する。）を診断する場合の論理部２の動作は、上記特許文献１に詳述されているが、概略、以下の手順にしたがって行われる。なお、「５５ｈ」はチェック用に用いられるデータ（チェックデータ）を示し、「ＡＡｈ」はそのチェックデータを論理反転したデータを示している。
【０００８】
メモリチェックの手順
（１）アドレス０１１０ｂのデータ（チェックアドレスに記憶されているデータ）を別の待避用のアドレス（以下、「待避用アドレス」として説明する。図示の例では１００１ｂ）に矢印▲１▼で示されるように待避させる。
（２）待避の完了したアドレス０１１０ｂ（チェックアドレス）にチェックデータ５５ｈを書込む。
（３）アドレス０１１０ｂ（チェックアドレス）の第０ビット（最下位ビット）を論理反転する（０⇔１）。
（４）アドレス０１１１ｂ（論理反転されたアドレス）のデータを別の待避用アドレス（図示の例では１０１０ｂ）に矢印▲２▼で示されるように待避させる。
（５）アドレス０１１１ｂ（論理反転されたアドレス）にチェックデータ５５ｈを論理反転したチェックデータＡＡｈを書込む。
（６）メモリに該当するアドレスラインについて、第ｎビット目を反転させながら上記（４），（５）の処理を繰返す（矢印▲３▼，▲４▼，▲５▼で示されるように、アドレス０１００ｂ、００１０ｂ及び１１１０ｂのデータをそれぞれ待避させてチェックデータＡＡｈをそれぞれ書込む。
（７）アドレス０１１０ｂ（チェックアドレス）からデータを読取り、その読取ったデータと書込んだチェックデータ５５ｈとの照合を行う。
この照合において、読取られたデータと書込まれたデータ（チェックデータ５５ｈとが一致すれば、そのメモリは正常と判定され、不一致であればアドレスラインにショート等の故障が発生していると判定され、ＭＣＵ１を安全側に動作させた後、全ての動作が停止される。したがって、このＭＣＵ１が踏切制御装置に用いられているときは、踏切遮断機の遮断かんが降下するとともに警報器が鳴動となり、係員に故障発生が報知されることとなる。
読取られたデータと書込まれたチェックデータ５５Ｈとが一致し、ＲＡＭ４（メモリ）が正常と判定されれば、以下の処理が行われる。
（８）第ｎビットを反転したときに待避したデータを順次元のアドレスに復旧する（矢印▲２▼，▲３▼，▲４▼，▲５▼と逆向き）。
（９）待避先のアドレス１００１ｂからアドレス０１１０ｂにデータを復旧させる（矢印▲１▼と逆向き）。
以後、論理部２では、正常と判定されたＲＡＭ４のデータを用いて所定の演算処理が開始される。
【０００９】
【特許文献１】
特開２００２−２８８０４８号公報
【００１０】
【発明が解決しようとする課題】
上記提案に係るＭＣＵは、ＣＰＵとメモリとが同一チップ内に形成されていてもメモリのチェックができる特徴を有しているが、チェック時のデータの待避先を十分に確保しないと、待避したデータを破壊するおそれがあった。
【００１１】
上記図３（ａ）を用いてさらに説明すると、例えば、アドレス１０００ｂをチェックする場合、そのアドレス１０００ｂの待避先としてアドレス１００１ｂを設定することができない。なぜならば、アドレス１０００ｂの第０ビット目を論理反転すると１００１ｂとなり、待避先のアドレス１００１ｂと同一となり、待避したデータを破壊することになるからである。このため、ある一つのアドレスが他のあるアドレスの待避先のアドレスとなっているかをチェックし、そのチェックにおいて待避先アドレスとなっている場合は、データをさらに別のアドレスに待避し直す必要がある。さらに、例えば、アドレス１００１ｂをチェックするときに、待避先としてアドレス１００１ｂは設定できないので、待避先アドレスを多数持つ必要があった。
【００１２】
そこで、本発明は、上記欠点を解決するためになされたものであって、その目的は、待避先のアドレスを容易に割り出して設定することのできるＭＣＵを提供することにある。
【００１３】
【課題を解決するための手段】
本発明に係るＭＣＵは、上記目的を達成するために、請求項１に記載の発明は、アドレス毎にデータを記憶するメモリと、そのメモリにアクセスして所定の演算処理を行うプロセッサとを同一半導体内に備え、そのメモリ中のチェックを行うための所定のチェックアドレスに記憶されているデータをそのメモリ中の所定の待避用アドレスに待避させた後、その所定のチェックアドレスに所定のチェックデータを書込むとともに、そのチェックデータの書込まれた所定のチェックアドレスに記憶されているデータを読取り、その読取られたデータとその書込んだチェックデータとを照合してそのメモリの診断を行うワンチップマイクロコントローラにおいて、前記所定のチェックアドレスの上位２ビットを抽出する抽出手段と、抽出された上位２ビットのそれぞれを論理反転する論理反転手段と、抽出された上位２ビット及び論理反転して生成された上位２ビットと一致しない上位２ビットを選択する選択手段と、選択された上位２ビットを有するアドレスを前記待避用アドレスに設定する設定手段と、を有することを特徴としている。
また、本発明の請求項２に記載のＭＣＵは、メモリのアドレス空間は、２ｎ  （ただし、ｎは５以上の自然数）有していることを特徴としている。
【００１４】
【発明の実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。本発明に係るＭＣＵのハード構成は、上記図２と同一であるので、この図２を用いて説明する。なお、ＭＣＵ１の各部（２〜７）については既に説明してあるので、それらについての説明は省略する。
【００１５】
図１は、本発明のメモリチェック時の制御動作を示すフローチャートであり、このフローチャートのステップ（以下、ステップを「Ｓ」とする。）１０４〜Ｓ１２４までは、上記「従来の技術」の説明の中のメモリチェックの手順の説明と重複するのでその説明は省略する。また、Ｓ１２６〜Ｓ１４０は、待避先から復元したデータを上述したチェックデータを読出してチェックするときと同様の手法でチェックすることを示している。
【００１６】
Ｓ１００及びＳ１０２は、チェックアドレスのデータを待避するための待避用アドレスを決定（設定）する手順を示している。すなわち、この待避用アドレスの決定は、チェックアドレスの上位２ビットに基づいて行われる。具体的には、チェックアドレスとそのチェックアドレスの上位２ビットのそれぞれを論理反転した上位２ビットと一致しない上位２ビットを有するアドレスを選択して決定される。
【００１７】
上述の待避用アドレスの決定の原理を表１を用いて説明する。この表１に示される決定例は、上記図３（ａ）に示されるＭＣＵ１のＲＡＭ４（メモリ）を用いて行われている。このＲＡＭ４の領域が２４  となっていて、比較的小さいアドレス空間であり、説明が簡単なので採用されている。なお、本発明は、アドレス空間が２５  以上のような、例えば、最下位ビット（ＬＳＢ））がＯｈで最上位ビット（ＭＳＢ）がＦｈのメモリ（例えば、メモリ領域アドレス空間が６４Ｋ（＝２１６）を有するＭＣＵに効果的に適用することができる。
【表１】
2004258715.tif 000003
【００１８】
表１において、チェックアドレスが００ＺＺｂ（ただしＺは０又は１）の場合、そのチェックアドレスの上位２ビットは「００」である。そして、この１桁のビット及び２桁のビット（表１では第ｎビットとしている。）を論理反転したアドレスの上位２ビットは、「０１」，「１０」となる。ここで、チェックアドレスの上位２ビットの「００」と、これを論理反転した上位２ビット「０１」，「１０」とを対比すると、「１１」が存在しないことが分る。したがって、チェックアドレス００ＺＺｂの待避用アドレスとして、１１ＺＺｂを決定すれば既に待避しているデータを破壊することなくチェックアドレスのデータを待避できることが分る。
【００１９】
すなわち、チェックアドレスが００ＺＺｂの場合の待避用アドレスとして「１１００ｂ」，「１１０１ｂ」，「１１１０ｂ］及び「１１１１ｂ」の４個のアドレスのいずれかを設定できることが分る。なお、「００１１」も待避用アドレスとして採用することができるが、ここでは無視されている。この「００１１」を設定するようにすると、手順（プログラム）が複雑になるからである。また、表１において、０１ＺＺｂのチェックアドレスは１０ＺＺｂを、１０ＺＺｂのチェックアドレスは０１ＺＺｂを、そして、１１ＺＺｂのチェックアドレスは００ＺＺｂを決定することができる。この決定されるアドレスは、待避用専用とされ、メモリチェック用のデータを格納できないように用いられる。
【００２０】
表２及び表３は、上記表１で示された待避用アドレスの決定の原理を普遍化したもので、表２は、メモリ領域が２４ｎ＋１（ただし、ｎ＝自然数）のＭＣＵの場合であり、この表２中のイ，ロ，ハ，ニが各チェックアドレスに対する待避アドレスとして決定できる範囲であることを示している。
【表２】
2004258715.tif 000004
（例１）チェックアドレスが００ｈの場合（ｎ＝１，アドレス空間：００ｈ〜１Ｆｈ）、待避用アドレスは、１８ｈ〜１Ｆｈのいずれかに設定する（領域イ）。
（例２）チェックアドレスが１０ＸＸｈ（Ｘは任意の１６進数。以下、同じ。）の場合は（ｎ＝３，アドレス空間：００００ｈ〜１ＦＦＦｈ）、待避用アドレスは、０８００ｈ〜０ＦＦＦｈのいずれかに設定する（領域ハ）。
【００２１】
表３は、メモリ領域が２４ｎ＋２，２４ｎ＋３，２４ｎ＋４（ただし、ｎは自然数）のＭＣＵの待避用アドレスを示していて、メモリ領域２４ｎ＋２の場合は、表３中のホ，ヘ，ト，チが参照され、メモリ領域２４ｎ＋３の場合は、表３中のリ，ヌ，ル，ヲが参照され、また、メモリ領域が２４ｎ＋４の場合は、表３中のワ，カ，ヨ，タが参照される。
【表３】
2004258715.tif 000005
※１  メモリ領域がアドレス空間２４ｎ＋２の場合：領域ホ，ヘ，ト，チを参照
（例１）チェックアドレスが０Ｘｈ（Ｘは任意の１６進数）の場合（ｎ＝１，アドレス空間：００ｈ〜３Ｆｈ）、待避用アドレスは、３０ｈ〜３Ｆｈのいずれかに設定する（領域ホ）。
（例２）チェックアドレスが３ＸＸｈの場合（ｎ＝２，アドレス空間：０００ｈ〜３ＦＦｈ）、待避用アドレスは、０００ｈ〜０ＦＦｈのいずれかに設定する（領域チ）。
※２  メモリ領域がアドレス空間２４ｎ＋３の場合：領域リ，ヌ，ル，ヲを参照
（例１）チェックアドレスが０Ｘｈ（ｎ＝１，アドレス空間：００ｈ〜７Ｆｈ）、待避用アドレスは、６０ｈ〜７Ｆｈのいずれかに設定する（領域リ）。
（例２）チェックアドレスが５ＸＸｈの場合（ｎ＝２，アドレス空間：０００ｈ〜３ＦＦｈ）、待避用アドレスは、２ＸＸｈ〜３ＸＸｈのいずれかに設定する（領域ル）。
※３  メモリ領域２４ｎ＋４の場合：領域ワ，カ，ヨ，タを参照
（例１）チェックアドレスが０ＸＸｈの場合（ｎ＝１，アドレス空間：０００ｈ〜ＦＦＦｈ）、待避用アドレスは、ＣＸＸｈ〜ＦＦＦｈに設定する（領域ワ）。
【００２２】
上述の表２及び表３から明らかなように、待避用アドレスとしてチェックアドレス毎に４ブロック用意すればよいことが分り、それぞれのブロックのアドレス空間は、以下のような関係となる。
待避用アドレスのブロックのアドレス空間＝チェックアドレス待避用＋論理反転アドレス待避用＝１＋ｌｏｇ２（メモリ領域のアドレス空間）となる。
例えば、アドレス空間６４Ｋ（２１６）のＭＣＵでは、ブロック当り１７のアドレス空間、４ブロック全体でアドレス空間６８の待避用アドレスブロックを用意すればよいことが分る。
【００２３】
【発明の効果】
本発明の請求項１に記載のＭＣＵは、所定のチェックアドレスの上位２ビットを抽出する抽出手段と、抽出された上位２ビットのそれぞれを論理反転する論理反転手段と、抽出された上位２ビット及び論理反転して生成された上位２ビットと一致しない上位２ビットを選択する選択手段と、選択された上位２ビットを有するアドレスを前記待避用アドレスに設定する設定手段とからなるので、待避用アドレスの設定が容易となり、この決定用プログラムを大幅に削減することができるとともに、その決定時間を短縮することができる。また、待避用アドレスを容易に設定できるのでプログラム設計が容易となる。さらに、データの破壊を確実に防止できるとともに、データ待避のためのメモリ領域を削減することができる。
本発明の請求項２に記載のＭＣＵは、メモリのアドレス空間が２ｎ  （ただし、ｎは５以上の自然数）有していても効果的に適用することができる。
【図面の簡単な説明】
【図１】制御動作を示すフローチャートである。
【図２】ＭＣＵのブロック図である。
【図３】ＲＡＭの概念図である。
【符号の説明】
１      ワンチップマイクロコントローラ（ＭＣＵ）
２      論理部
３      プロセッサ
４      ＲＡＭ（メモリ）
５      外部装置
６      Ｉ／Ｏポート
【図１】
2004258715.tif 000006
【図２】
2004258715.tif 000007
【図３】
2004258715.tif 000008