JP2003015958A - ライトプロテクト方法 - Google Patents

ライトプロテクト方法

Info

Publication number
JP2003015958A
JP2003015958A JP2001199080A JP2001199080A JP2003015958A JP 2003015958 A JP2003015958 A JP 2003015958A JP 2001199080 A JP2001199080 A JP 2001199080A JP 2001199080 A JP2001199080 A JP 2001199080A JP 2003015958 A JP2003015958 A JP 2003015958A
Authority
JP
Japan
Prior art keywords
write
register
data
value
signal
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2001199080A
Other languages
English (en)
Inventor
Tomoo Ueno
智生 上野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Micro Systems Co Ltd
Original Assignee
Renesas Micro Systems Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Renesas Micro Systems Co Ltd filed Critical Renesas Micro Systems Co Ltd
Priority to JP2001199080A priority Critical patent/JP2003015958A/ja
Priority to EP02013943A priority patent/EP1271326A3/en
Priority to US10/180,876 priority patent/US20030005241A1/en
Publication of JP2003015958A publication Critical patent/JP2003015958A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block

Abstract

(57)【要約】 【課題】 所定のレジスタへの誤書き込みを防止する。 【解決手段】 CPU6は、レジスタ1に対応するアド
レスをアドレスデコーダ9に送出し、所定のシーケンス
に従ってデータをデータバス8に送出し、ライト信号
(wr)のパルスを出力することにより、書き込み命令
を実行する。アドレスデコーダ9からのセレクト信号
(sel_reg1)は1となり、レジスタ1に書き込
むべき所定のデータ(db[15:0])はライトプロ
テクト回路10を介してレジスタ1へ供給され、書き込
み命令が所定のシーケンスに従って実行されたとき、ラ
イトプロテクト回路10はレジスタ1にライト信号のパ
ルス(wr_preg)を供給し、データ(db[1
5:0])のレジスタ1への書き込みを有効とする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、ライトプロテクト
方法に関し、特に、マイクロコンピュータの制御レジス
タ等への誤書き込みを防止するライトプロテクト方法に
関する。
【0002】
【従来の技術】近年、マイクロコンピュータがあらゆる
分野の、あらゆるアプリケーションで採用され始めてか
ら、システムの動作に重要な影響を及ぼす制御レジスタ
に対して、誤書き込みを防止するための対策を施すこと
が要請されている。例えば、フラッシュメモリのセルフ
書き換えに関する制御レジスタなどに誤書き込みが発生
すると、フラッシュメモリ上のプログラムが不正に書き
換えられ、システムリセットを行ってもシステムが立ち
上がらないといった重大な事態が発生し得るため、制御
レジスタをプロテクトの対象とすることが要請されてい
る。
【0003】この要請に応えるために、例えば、特願平
07−040220においては、図28に示すように、
プロテクト対象レジスタ1に対して、データの書き込み
を許可するか、又は禁止するかを判定するための情報を
保持するプロテクト制御レジスタをライトプロテクト回
路13に設けるようにし、書き込み動作が発生したとき
に、書き込みの対象となっている制御レジスタを特定
し、上記プロテクト制御レジスタの情報に応じて、書き
込み信号を制御することにより、プロテクト対象レジス
タ1へのデータの書き込みを制限することが提案されて
いる。
【0004】
【発明が解決しようとする課題】しかしながら、書き込
みデータが正常であるかどうかを確認するという機能を
有していない。このため、データバス上で不慮のデータ
化けが発生した場合の書き込みを無効化できず、誤書き
込みが行われてしまうという欠点がある。
【0005】本発明はこのような状況に鑑みてなされた
ものであり、所定のレジスタへの不正な書き込みを無効
化することができるようにするものである。
【0006】
【課題を解決するための手段】請求項1に記載のライト
プロテクト方法は、マイクロコンピュータを構成する所
定のレジスタへの誤書き込みを防止するライトプロテク
ト方法であって、所定のレジスタへ所定のデータを書き
込むためのライト動作が、所定のシーケンスで行われた
か否かを判定する判定ステップと、判定ステップにおい
て、レジスタへデータを書き込むためのライト動作が、
シーケンスで行われたと判定された場合にのみ、レジス
タへのデータの書き込みが行われるように制御する制御
ステップとを備えることを特徴とする。請求項2に記載
のライトプロテクト装置は、マイクロコンピュータを構
成する所定のレジスタへの誤書き込みを防止するライト
プロテクト装置であって、所定のレジスタへ所定のデー
タを書き込むためのライト動作が、所定のシーケンスで
行われたか否かを判定する判定手段と、判定手段によっ
て、レジスタへデータを書き込むためのライト動作が、
シーケンスで行われたと判定された場合にのみ、レジス
タへのデータの書き込みが行われるように制御する制御
手段とを備えることを特徴とする。また、判定手段は、
レジスタに対してデータを書き込むための命令を含む複
数の命令が、シーケンスに従って実行されたか否かを判
定するようにすることができる。また、判定手段は、デ
ータの書き込みの対象となるレジスタに対してデータを
書き込むための命令と、レジスタに対してデータとは異
なる他の所定の値を書き込むための命令と、レジスタに
対してデータを書き込むための命令とがこの順番で実行
されたか否かを判定するようにすることができる。ま
た、判定手段は、データの書き込みの対象となるレジス
タとは別の他の所定のコマンドレジスタに対して所定の
値を書き込むための命令と、データの書き込みの対象と
なるレジスタに対してデータを書き込むための命令と、
レジスタに対してデータとは異なる他の所定の値を書き
込むための命令と、レジスタに対してデータを書き込む
ための命令とがこの順番で実行されたか否かを判定する
ようにすることができる。また、判定手段は、各命令が
実行される毎に、各命令がシーケンスに従って実行され
たか否かを判定し、各命令の実行がシーケンスに従って
行われなかったことが判明した時点で、シーケンスの最
初から各命令がシーケンスに従って実行されたか否かの
判定を行うようにすることができる。また、他の所定の
値は、データの反転値とすることができる。請求項8に
記載のライトプロテクトプログラムは、マイクロコンピ
ュータを構成する所定のレジスタへの誤書き込みを防止
するライトプロテクト装置を制御するライトプロテクト
プログラムであって、所定のレジスタへ所定のデータを
書き込むためのライト動作が、所定のシーケンスで行わ
れたか否かを判定する判定ステップと、判定ステップに
おいて、レジスタへデータを書き込むためのライト動作
が、シーケンスで行われたと判定された場合にのみ、レ
ジスタへのデータの書き込みが行われるように制御する
制御ステップとをライトプロテクト装置に実行させるこ
とを特徴とする。本発明に係るライトプロテクト方法に
おいては、所定のレジスタへ所定のデータを書き込むた
めのライト動作が、所定のシーケンスで行われたか否か
を判定し、上記レジスタへデータを書き込むためのライ
ト動作が、上記シーケンスで行われたと判定された場合
にのみ、上記レジスタへのデータの書き込みが行われる
ように制御する。
【0007】
【発明の実施の形態】本発明は、システムに重大な影響
を与える制御レジスタに対して、誤書き込みの防止を施
すものであり、特定のシーケンスによるライト動作が行
われた場合にのみ、書き込みを許可し、それ以外のライ
ト動作が行われた場合には、書き込みを無効化するライ
トプロテクト回路を設けて、書き込みデータ値が正しい
かどうかの確認、及びライト信号の制御を行い、制御レ
ジスタへの書き込みを実施するものである。
【0008】以下、本発明の概要について説明する。図
1は、本発明を応用したライトプロテクト回路の一実施
の形態の構成例を示すブロック図である。本実施の形態
では、レジスタ1をシステムに重大な影響を与える制御
レジスタと仮定しており、レジスタ1に対して特定のシ
ーケンスによるライト動作が行われた場合にのみ、書き
込みを許可するライトプロテクト回路10を設けてい
る。
【0009】図6は、特定のシーケンスによるライト動
作の手順を示すフローチャートである。ステップ1(9
01)乃至ステップ3(903)に示される3つのステ
ップを踏むライト動作が行われた場合にのみ、書き込み
が実施される。この3つのステップを踏まず、ステップ
1(901)とステップ2(902)の間、又はステッ
プ2(902)とステップ3(903)の間に他のライ
ト動作が行われた場合には、書き込みが無効となる。
【0010】従って、CPU6の暴走や、データバス8
上のデータ化けなどのシステム異常により、レジスタ1
への書き込み動作が発生しても、特定のシーケンスに当
てはまらない限り、書き込みは無効化される。これによ
り、誤書き込みを防止することができる。
【0011】次に、図面を参照して、本発明を応用した
ライトプロテクトシステムの一実施の形態の構成及び動
作について詳細に説明する。図1は、本発明を応用した
ライトプロテクトシステムの一実施の形態の構成例を示
すブロック図である。本実施の形態は、レジスタ1乃至
レジスタnと、各部を制御するCPU(central
processing unit)6と、プログラム
が格納されるプログラム格納メモリ7と、データバス8
と、アドレスデコーダ9と、ライトプロテクト回路10
から構成されている。
【0012】CPU6は、プログラム格納メモリ7に格
納された所定の制御プログラムをデータバス8を介して
読み込んで実行するようになっている。また、レジスタ
1乃至n(nはレジスタの総数に対応する自然数)にデ
ータを書き込むためのライト信号をライトプロテクト回
路10、及びレジスタ2乃至nに供給し、レジスタ1乃
至nにデータを読み込むためのリード信号を供給し、デ
ータをライト又はリードするレジスタを指定するための
アドレス信号をアドレスデコーダ9に供給するようにな
っている。また、各種データをデータバス8に供給する
ようになっている。プログラム格納メモリ7は、CPU
6を制御する所定の制御プログラムを格納し、各種デー
タをデータバス8に供給するようになっている。アドレ
スデコーダ9は、CPU6よりアドレス信号を入力し、
CPU6より供給されたアドレス信号に対応する信号s
el_reg1乃至nのいずれかの値を1にするように
なっている。信号sel_reg1はレジスタ1に供給
され、sel_regnは、レジスタnに供給されるよ
うになっている。ライトプロテクト回路10には、信号
sel_reg1が入力され、レジスタ1に対してライ
ト信号wr_pregとデータdb[15:0]を供給
するようになっている。レジスタ2乃至nには、データ
バス8からデータが供給されるようになっている。ま
た、各レジスタ1乃至nのデータは、データバス8を介
して読み出されるようになっている。
【0013】本発明は、バスのサイズや構成によらず適
用可能であるが、本実施の形態では、説明しやすいよう
に、16ビット幅のデータバス8とし、アドレスバスは
データバス8とは共用せずにセパレートバス構成として
いる。また、レジスタ1をプロテクトの制御対象として
扱っている。
【0014】図1に示すように、本実施の形態では、ラ
イトプロテクトの対象外のレジスタ2乃至nには、書き
込み用データdata[15:0]がデータバス8から
入力され、ライト信号wrがCPU6から入力される
が、ライトプロテクトの対象となっているレジスタ1に
は、書き込み用データdb[15:0]及びライト信号
wr_pregが、ライトプロテクト回路10から入力
される。
【0015】レジスタ1乃至nのいずれかへの書き込み
命令が実行されると、CPU6からのアドレス信号(a
ddress)がアドレスデコーダ9に入力され、アド
レス信号の値(アドレス値)に該当するレジスタのセレ
クト信号が選択状態(=1)になる。例えば、レジスタ
1にデータを書き込む場合、セレクト信号sel_re
g1の値が1となる。そして、CPU6からの書き込み
データがデータバス8に出力され、ライト信号wrのパ
ルスが出力されることにより、1回のライト動作が完了
する。
【0016】以上のようにして、ライトプロテクト対象
でないレジスタ2乃至nには、所定の値が書き込まれる
が、ライトプロテクト対象であるレジスタ1には、ライ
トプロテクト回路10において制御されたライト信号w
r_pregが出力され、レジスタ1に供給されない限
り、レジスタ1には値が書き込まれない。
【0017】このライトプロテクト回路10は、図6に
示す特定のシーケンスでのみ書き込みを許可する制御を
行う。図6は、特定シーケンスを示すフローチャートで
ある。つまり、ステップ1(901):対象レジスタへ
設定したいデータを書き込むライト命令を実行、ステッ
プ2(902):対象レジスタへ設定したいデータの反
転値を書き込むライト命令を実行、ステップ3(90
3):対象レジスタへ設定したいデータを書き込むライ
ト命令を実行、という3つのステップを踏んだ場合にの
み、書き込みが有効となり、対象レジスタへ設定したい
データが書き込まれる。
【0018】ここで、ステップ1(901)及びステッ
プ2(902)における書き込み動作は、特定シーケン
スを構成するステップに過ぎず、これらのステップ1
(901)、ステップ2(902)の時点では、書き込
みは無効で、ライト信号wr_pregのパルスが出力
されない。ステップ1(901)乃至ステップ3(90
3)までの書き込みをこの順序で実施した場合にのみ、
ステップ3(903)時点の書き込みが有効となり、ラ
イト信号wr_pregのパルスが出力される。
【0019】なお、これらのステップ1(901)乃至
3(903)を踏まず、ステップ1(901)とステッ
プ2(902)の間、又は、ステップ2(902)とス
テップ3(903)の間に、他の書き込み動作が行われ
た場合には、特定シーケンスでの書き込みは無効とな
り、シーケンスエラーが検出される。再度書き込みを試
みる場合は、再び最初のステップ1(901)から順に
書き込み動作を実施しなければならない。
【0020】図2は、図1のライトプロテクト回路10
の構成例を示すブロック図である。同図に示すように、
ライトプロテクト回路10は、ライトデータ設定バッフ
ァ20と、比較回路30と、ステップカウンタ50と、
シーケンスエラー検出60と、プロテクトライト信号生
成70と、AND素子80から構成されている。
【0021】ライトデータ設定バッファ20は、プロテ
クト対象レジスタ1に設定するデータ値を一時的に保持
する16ビットのバッファであり、ステップ1(90
1)時点での書き込みデータ値を取り込んで保持する。
【0022】比較回路30は、データ比較を行い、一致
信号を生成するブロックであり、比較器302及び比較
器303を有している。比較器302は、ライトデータ
設定バッファ20に取り込まれたデータ値と、データバ
ス8からのデータ値を比較して、一致信号db_eqを
出力するようになっている。比較器303は、ライトデ
ータ設定バッファ20に取り込まれたデータ値の反転値
と、データバス8からのデータ値を比較して、一致信号
dbz_eqを出力するようになっている。
【0023】ステップカウンタ50は、現在、特定シー
ケンスのどのステップまで進んでいるかを示すブロック
であり、2ビットのカウント信号stpcnt[1:
0]でどのステップまで進んでいるかが示される。この
カウント信号の値の意味合いについてであるが、stp
cnt[1:0]=00b(00bのbは、00が2進
数で表された値であることを示している)の場合は、特
定シーケンスが現在行われていないことを示し、stp
cnt[1:0]=01bの場合は、ステップ1(90
1)まで終了したことを示し、stpcnt[1:0]
=10bの場合は、ステップ2(902)まで終了した
ことを示す。このカウント信号の状態遷移を図3に示
す。
【0024】図3は、カウント信号stpcnt[1:
0]の値に対応する3つの状態を示している。各状態
は、CPU6が書き込み命令を実行したタイミング、具
体的には、CPU6から出力されたライト信号wrパル
スの立ち下がりエッジのタイミングで遷移するものとし
ており、カウント信号が00bの値の状態(801)
で、ステップ1(901)の書き込みを行えば、カウン
ト信号の値は01b(802)に遷移し、ステップ2
(902)の書き込みを行えば、カウント信号の値は1
0b(803)に遷移する。それ以外の書き込みが発生
すると、カウント信号の値は00b(801)に戻る。
カウント信号の値が10b(803)の状態で、任意の
書き込みが発生すると、カウント信号の値は00b(8
01)に戻る。
【0025】図4は、図3に示した状態遷移図に従って
動作し、カウント信号stpcnt[1:0]を出力す
る回路の例を示している。AND素子501には、信号
sel_reg1の値、カウント信号の1ビット目の値
(stpcnt[0])の反転値、カウント信号の2ビ
ット目の値(stpcnt[1])の反転値がそれぞれ
入力され、各値の論理積を演算し、演算結果を出力する
ようになっている。AND素子502には、信号sel
_reg1の値、信号dbz_eqの値、カウント信号
の1ビット目の値(stpcnt[0])、カウント信
号の2ビット目の値(stpcnt[1])の反転値が
それぞれ入力され、各値の論理積を演算し、演算結果を
出力するようになっている。
【0026】Dフリップフロップ回路503には、AN
D素子501からの出力値と、ライト信号wrの反転値
が入力され、ライト信号の立ち下がり毎に、AND素子
501からの出力値を入力し、カウント信号stpcn
t[0]として出力するようになっている。また、Dフ
リップフロップ回路504には、AND素子502から
の出力値と、ライト信号wrの反転値が入力され、ライ
ト信号の立ち下がり毎に、AND素子502からの出力
値を入力し、カウント信号stpcnt[1]として出
力するようになっている。
【0027】シーケンスエラー検出60は、特定シーケ
ンスが正常に行われたかどうかを検出するブロックであ
り、特定シーケンスが正常に行われなかった場合にエラ
ー信号sq_errorを出力する。なお、図1には図
示していないが、一般的にこのエラー信号sq_err
orは、フラグとして、或いは、割り込み要求としてC
PU6へ伝えられる。このエラー信号sq_error
が発生するのは、ステップ1(901)とステップ2
(902)の間、又は、ステップ2(902)とステッ
プ3(903)の間に、他の書き込み動作が行われた場
合であり、これには4つのケースがある。
【0028】1つ目は、ステップ1(901)の後の最
初の書き込み動作が、対象とするレジスタ以外に対する
場合、2つ目は、ステップ1(901)の後の最初の書
き込み動作が、対象とするレジスタであるが、設定した
い値の反転値(ステップ1(901)での書き込み値の
反転値)以外の値を書き込む動作が行われた場合、3つ
目は、ステップ2(902)の後の最初の書き込み動作
が、対象とするレジスタ以外に対する場合、そして4つ
目に、ステップ2(902)の後の最初の書き込み動作
が、対象とするレジスタであるが、設定したい値(ステ
ップ1(901)での書き込み値)以外の値を書き込む
動作が行われた場合である。これら4つのケースが発生
した場合は、特定シーケンスに違反したものとして、レ
ジスタ1への書き込みが行われないとともに、これをシ
ーケンスエラーとして検出する。
【0029】図5は、シーケンスエラー検出60の構成
例を示すブロック図である。同図に示すように、シーケ
ンスエラー検出60は、AND素子601乃至604
と、OR素子605と、Dフリップフロップ回路606
とから構成されている。AND素子601には、セレク
ト信号sel_reg1の反転値、カウント信号stp
cnt[0]の値、stpcnt[1]の反転値がそれ
ぞれ入力される。AND素子602には、一致信号db
z_eqの反転値、stpcnt[0]、stpcnt
[1]の反転値がそれぞれ入力される。AND素子60
3には、セレクト信号sel_reg1の反転値、カウ
ント信号stpcnt[0]の反転値、stpcnt
[1]の値がそれぞれ入力される。AND素子604に
は、一致信号db_eqの反転値、stpcnt[0]
の反転値、stpcnt[1]の値がそれぞれ入力され
る。そして、各AND素子601乃至604は、入力信
号の論理積を演算し、演算結果をOR素子605に供給
するようになっている。OR素子605には、AND素
子601乃至604からの出力信号が入力され、入力信
号の論理和を演算し、演算結果を出力信号pr_sq_
errorとして出力するようになっている。Dフリッ
プフロップ回路606は、入力されたライト信号wrの
立ち上がりのタイミングで、OR素子605からの出力
信号pr_sq_errorを入力し、エラー信号sq
_errorとして出力するようになっている。AND
素子601にて1つ目のケース、AND素子602にて
2つ目のケース、AND素子603にて3つ目のケー
ス、AND素子604にて4つ目のケースをそれぞれ検
出し、これらの検出信号をwr信号パルスの立ち上がり
でDフリップフロップ回路606に取り込み、エラー信
号sq_errorを生成し、出力している。
【0030】プロテクトライト信号生成70は、プロテ
クト対象レジスタ1へのライト信号を生成するブロック
である。プロテクトライト信号生成70は、AND素子
701と、AND素子702とによって構成されてい
る。AND素子701には、ライト信号wr、カウント
信号stpcnt[1]、カウント信号stpcnt
[0]の反転値、一致信号db_eqが入力され、AN
D素子702には、AND素子701からの出力値と、
信号sel_reg1が入力される。
【0031】AND素子701は、ステップ3(90
3)において設定したい値を書き込む動作であることを
検出し、AND素子702は、さらに、その書き込む動
作がプロテクト対象レジスタ(この例の場合、レジスタ
1)であることを検出し、書き込み信号(wr_pre
g)を生成し、出力している。
【0032】AND素子80は、ライトデータ設定バッ
ファ20へデータ値を取り込むための信号wr_dbを
生成するためのものであり、カウント信号stpcnt
[0]の反転値、stpcnt[1]の反転値、セレク
ト信号sel_reg1の値、及びライト信号wrを入
力し、ステップ1(901)時点でのライト信号パルス
(wr)を検出し、これをwr_dbとしている。具体
的には、セレクト信号sel_reg1=1、ステップ
カウンタ50の値であるstpcnt[1:0]=00
(stpcnt[0]=0、stpcnt[1]=0)
の状態で、プロテクト対象レジスタ1へのライト信号
(wr)が来たこと(ライト信号wrの立ち上がり)を
検出する。
【0033】以下、本実施の形態の動作について説明す
る。まず、図6に示した特定シーケンスにより、レジス
タ1へデータ(12ABh(12ABhのhは、12A
Bが16進数で表された値であることを示している))
を書き込む場合の動作について、図7のタイミング図を
用いて説明する。
【0034】ステップカウンタ50の値がstpcnt
[1:0]=00bの状態から、ステップ1(901)
としてレジスタ1へのデータ12ABhの書き込み命令
を実行すると、AND素子80の入力信号の値(ライト
信号wrの値、信号sel_reg1の値、カウント信
号stpcnt[0]の反転値、stpcnt[1]の
反転値)が全て1となり、AND素子80において生成
されたwr_db信号パルスが出力され、このパルスに
より、ライトデータ設定バッファ20に書き込みデータ
(data[15:0]=12ABh)が取り込まれ、
ライトデータ設定バッファ20からの出力データdb
[15:0]の値が12ABhとなる。
【0035】また、この動作と平行して、図4のAND
素子501の入力信号の値(信号sel_reg1の
値、カウント信号stpcnt[0]の反転値、stp
cnt[1]の反転値)が全て1となり、Dフリップフ
ロップ回路503からの出力信号(stpcnt
[0])の値が1となる。これにより、ステップカウン
タ50の値が1つ進み、stpcnt[1:0]=01
bとなる。しかし、この書き込み動作では、プロテクト
ライト信号生成70でのパルス生成条件が揃わないた
め、レジスタ1のライト信号wr_pregのパルスが
発生せず、レジスタ1の値は更新されずに元の値のまま
となる。
【0036】次に、ステップ2(902)として、デー
タ12ABhの反転値であるデータED54hを、レジ
スタ1へ書き込むライト命令を実行すると、ライトデー
タ設定バッファの値(db[15:0]の値)の反転値
(いまの場合、ED54h)と、data[15:0]
の値(いまの場合、ED54h)が一致するので、比較
回路30の比較器303からの一致信号dbz_eqの
値が1になる。
【0037】よって、ステップ1(901)直後の書き
込みで、かつ、dbz_eqとsel_reg1の値が
1であるので、ステップカウンタ50の値がさらに1つ
進み、stpcnt[1:0]=10bとなる。しかし
この書き込み動作では、プロテクトライト信号生成70
でのパルス生成条件が揃わないためレジスタ1のライト
信号wr_pregのパルスが発生せず、レジスタ1の
値は更新されず元の値のままである。
【0038】次に、ステップ3として、データ12AB
hの書き込み命令を実行すると、ライトデータ設定バッ
ファの値(db[15:0]の値)と、data[1
5:0]の値が一致するので、比較回路30の比較器3
02からの一致信号db_eqが1になる。このとき、
プロテクトライト信号生成70では、AND素子701
にてステップカウンタ50の値がstpcnt[1:
0]=10b、一致信号db_eq=1の状態でライト
信号wrが来たことを検出し、さらに、AND素子70
2にて信号sel_reg1=1を検出し、wr_pr
eg信号のパルスが生成され、出力される。
【0039】このwr_pregのパルスにより、ライ
トデータ設定バッファ20の値であるdb[15:0]
(いまの場合、12ABh)がレジスタ1に書き込まれ
る。また、本ステップ3(903)の書き込み動作によ
り、ステップカウンタ50の値は、stpcnt[1:
0]=00bに戻る。
【0040】一方、特定シーケンスにてエラーが発生
し、書き込みが無効となる場合の動作について、図8、
図9、図10、及び図11のタイミング図を用いて説明
する。シーケンスエラーの発生には、上述したように4
つのケースがあるが、1つ目のケースが図8、2つ目の
ケースが図9、3つ目のケースが図10、4つ目のケー
スが図11にそれぞれ対応している。
【0041】図8は、1つ目のケースである、ステップ
1(901)後の書き込みが、プロテクト対象レジスタ
1以外に対するものであった場合のタイミング図であ
り、ステップ1(901)後、レジスタ1以外のレジス
タへの書き込みを行っているため、信号sel_reg
1の値が1から0に変化している。AND素子601に
は、信号sel_reg1の反転値と、stpcnt
[0]の値と、stpcnt[1]の反転値とが入力さ
れ、これらの論理積を演算し、演算結果がOR素子60
5に供給されるようになっている。従って、この状態
(ステップ1(901)後の書き込みが、プロテクト対
象レジスタ1以外に対するものである状態)を図5に示
したシーケンスエラー検出60のAND素子601で検
出し、ck端子から入力されるwr信号パルスの立ち上
がりエッジで、Dフリップフロップ回路606にD端子
から取り込み、Q端子から出力されるエラー信号sq_
errorが1となる。
【0042】また、図3に示した状態遷移図の状態80
2(stpcnt[1:0]=01)から、信号sel
_reg1=0での書き込みを行っているため、ステッ
プカウンタ50の値がstpcnt[1:0]=01b
からstpcnt[1:0]=00bに戻る。
【0043】図9は、2つ目のケースである、ステップ
1(901)後の書き込みで、設定したい値の反転値以
外の値をライトした場合のタイミング図である。ステッ
プ1(901)後、データ12ABhの反転値であるE
D54hではなく、データ1111hを書き込んでいる
ため、dbz_eq信号が0のままとなっている。この
状態(ステップ1(901)後の書き込みで、設定した
い値の反転値以外の値をライトした状態)を、図5に示
したシーケンスエラー検出60のAND素子602で検
出し、エラー信号sq_errorの値が1となる。即
ち、AND素子602の入力信号(dbz_eqの反転
値、カウント信号stpcnt[0]の値、stpcn
t[1]の反転値)が全て1となり、ライト信号wrの
立ち上がりのタイミングでエラー信号sq_error
=1が出力される。
【0044】また、図3に示す状態遷移図の状態802
から、一致信号dbz_eq=0での書き込みを行って
いるため、ステップカウンタ50の値がstpcnt
[1:0]=01bからstpcnt[1:0]=00
bに戻る。
【0045】図10は、3つ目のケースである、ステッ
プ2(902)後の書き込みが、プロテクト対象レジス
タ1以外に対するものであった場合のタイミング図であ
る。ステップ2(902)後、レジスタ1以外のレジス
タへの書き込みを行っているため、sel_reg1信
号が1から0に変化している。この状態(ステップ2
(902)後の書き込みが、プロテクト対象レジスタ1
以外に対するものである状態)を、図5に示したシーケ
ンスエラー検出60のAND素子603で検出し、エラ
ー信号sq_errorの値が1となる。即ち、AND
素子603の入力信号(セレクト信号sel_reg1
の反転値、カウント信号stpcnt[0]の反転値、
stpcnt[1]の値)が全て1となり、ライト信号
wrの立ち上がりのタイミングでエラー信号sq_er
ror=1が出力される。
【0046】また、図3に示す状態遷移図の803の状
態から書き込みを行っているため、ステップカウンタ5
0の値がstpcnt[1:0]=10bからstpc
nt[1:0]=00bに戻る。さらに、図2に示した
プロテクトライト信号生成70では、信号sel_re
g1=0であるため、AND素子702の出力であるレ
ジスタ1へのライト信号wr_pregの値は0のまま
となり、ライトパルスは発生しない。
【0047】図11は、4つ目のケースである、ステッ
プ2(902)後の書き込みで設定したい値以外の値を
ライトした場合のタイミング図である。ステップ2(9
02)後、書き込みたいデータ12ABhではなく、デ
ータ1111hを書き込んでいるため、一致信号db_
eqの値が0のままとなっている。この状態(ステップ
2(902)後の書き込みで設定したい値以外の値をラ
イトした状態)を、図5に示したシーケンスエラー検出
60のAND素子604で検出し、エラー信号sq_e
rrorの値が1となる。
【0048】また、図3に示す状態遷移図の状態803
から書き込みを行っているため、ステップカウンタ50
の値がstpcnt[1:0]=10bからstpcn
t[1:0]=00bに戻る。さらに、図2に示したプ
ロテクトライト信号生成70では、一致信号db_eq
=0であるため、AND素子701の出力が0となり、
wr_pregの値も0のままとなるので、ライトパル
スは発生しない。
【0049】このように、プロテクト対象レジスタ1へ
の書き込みは、特定シーケンスで書き込み動作を行った
場合にのみ有効となるので、他のレジスタへの書き込み
命令コードが何らかの原因でプロテクト対象レジスタ1
への不正書き込みを行う命令に変化してしまった場合
や、CPU6の暴走などにより不正書き込みが行われた
場合に、それらの不正な書き込み動作を無効化すること
ができ、システムに重要な影響を及ぼす制御レジスタの
値を守ることができる。
【0050】さらに、ステップ1(901)、ステップ
2(902)、及びステップ3(903)での書き込み
データ値を比較し、正常値であるかどうかを確認してい
るので、データバス8上で不慮のデータ化けが発生した
場合でも、不正なデータの書き込みを無効化することが
できる。
【0051】データバス8でのデータ化けについては、
データバス8自体に誤り訂正等の回路と付加ビットを施
す方法もあるが、本実施の形態では、データバス8に付
加ビットを増やす必要がなく、また、ハードウェアも比
較的少ない量で実現できるといった効果もある。
【0052】また、書き込みデータを一時保留するハー
ドウェアのみを用意し、データ値が正常であるかどうか
の検出をソフトウェアで行う方法も考えられるが、ソフ
トウェアでの検出はプログラムコードの増大と制御レジ
スタへの書き込み時間の増大を招くという欠点がある。
この方法と比べると、本実施の形態は、ライト命令を3
回実行するだけでよく、プログラムコード量を少なくで
き、かつ、制御レジスタへの書き込み時間を短くできる
といった効果がある。
【0053】また、ステップ2(902)では、データ
値を反転値としなければならないので、CPU6の暴走
などにより、同じ命令コードを繰り返し実行し、同一レ
ジスタへの連続書き込みが行われるといった事態が発生
した場合でも、この書き込み動作を無効化することがで
きる。
【0054】次に、図12乃至図18を参照して、本発
明の他の実施の形態について説明する。この実施の形態
の基本的な構成及び動作は、図1乃至図11を参照して
上述した実施の形態の場合と同様であるが、ライトプロ
テクトの対象となるレジスタを3つとした点で異なって
いる。図12は、本実施の形態の構成例を示すブロック
図である。
【0055】同図に示したように、各ブロックは図1に
示した実施の形態の場合と基本的に同様であるが、本実
施の形態の場合、レジスタ1、レジスタ2、及びレジス
タ3の3つのレジスタを、ライトプロテクトの対象とし
ている。従って、これら3つのレジスタ1,2,3への
書き込み用データ、及びライト信号は、ライトプロテク
ト回路11から供給されるようになっている。
【0056】図13は、図12のライトプロテクト回路
11の構成例を示すブロック図である。同図に示すよう
に、ライトプロテクト回路11は、ライトデータ設定バ
ッファ21、比較回路31、対象レジスタ検出41、ス
テップカウンタ51、シーケンスエラー検出61、プロ
テクトライト信号生成71、AND素子81、及びOR
素子91から構成されている。
【0057】ここで、ライトデータ設定バッファ21の
接続及び構成は、図2に示したライトデータ設定バッフ
ァ20の場合と同様であるので、その説明は省略する。
また比較回路31の接続及び構成も、図2に示した比較
回路30の場合と同様であるので、その説明は省略す
る。また、シーケンスエラー検出61は、図2に示した
シーケンスエラー検出60と比べると、入力信号の1つ
が、信号sel_reg1から信号preg_onに変
更されているが、その中身の構成及び動作は図2に示し
たシーケンスエラー検出60の場合と同様であるので、
その説明は省略する。同じ理由で、プロテクトライト信
号生成71も、図2に示したプロテクトライト信号生成
70と比べると、入力信号の1つが、信号sel_re
g1から信号preg_onに変更されているが、本ブ
ロック自体の構成及び動作は図2に示したプロテクトラ
イト信号生成70の場合と同様であるので、その説明は
省略する。また、AND素子81も、図2に示したAN
D素子80と比べると、入力信号の1つが、信号sel
_reg1から信号sel_p_orに変更されている
が、AND素子81の構成及び動作は、図2に示したA
ND素子80の場合と同様であるので、その説明は省略
する。
【0058】対象レジスタ検出41は、特定シーケンス
の対象レジスタが、3ステップで同一であるかどうかを
検出するブロックであり、図14に示すように構成され
ている。同図に示すように、対象レジスタ検出41は、
OR素子411,412、Dフリップフロップ回路41
3,414、AND素子415,416,417、OR
素子418から構成されている。OR素子411にはセ
レクト信号sel_reg1、sel_reg3が入力
され、これらの信号の論理和が演算され、演算結果がD
フリップフロップ回路413に供給される。OR素子4
12にはセレクト信号sel_reg2、sel_re
g3が入力され、これらの信号の論理和が演算され、演
算結果がDフリップフロップ回路414に供給される。
Dフリップフロップ回路413には、OR素子411か
らの出力信号と、AND素子81から出力される信号w
r_dbが入力され、信号wr_dbの立ち下がりのタ
イミングで、OR素子411からの出力信号をAND素
子415に供給し、OR素子411からの出力信号の反
転値をAND素子416に供給し、OR素子411から
の出力信号をAND素子417に供給するようになって
いる。また、Dフリップフロップ回路414には、OR
素子412からの出力信号と、AND素子81から出力
される信号wr_dbが入力され、信号wr_dbの立
ち下がりのタイミングで、OR素子412からの出力信
号の反転値をAND素子415に供給し、OR素子41
2からの出力信号をAND素子416に供給し、OR素
子412からの出力信号をAND素子417に供給する
ようになっている。また、AND素子415には、セレ
クト信号sel_reg1が入力され、AND素子41
6には、セレクト信号sel_reg2が入力され、A
ND素子417には、セレクト信号sel_reg3が
入力されるようになっている。図14において、保持回
路(Dフリップフロップ回路)413が保持する値se
l_info[0]、及び保持回路414が保持する値
sel_info[1]は、ステップ1(811)時点
での特定シーケンスの対象レジスタを示すものであり、
図14の中の一覧表に示すような情報を保持している。
【0059】保持回路413及び保持回路414が保持
する値は、ステップ1(811)時点の書き込みで更新
される。この保持回路413及び保持回路414の値s
el_info[1:0]を、ステップ1(811)時
点での対象レジスタの情報として扱い、ステップ2(8
12)時点、及びステップ3(813)時点における対
象レジスタと、ステップ1(811)時点における対象
レジスタとが同一レジスタであるかどうかを、AND素
子415,416,417で検出する。これらAND素
子415,416,417の出力信号をそれぞれOR素
子418で受け取り、特定シーケンスの各ステップでの
対象レジスタが同一であるか否かを検出し、検出結果と
しての検出信号preg_onを生成し、出力する。
【0060】この対象レジスタ検出41は、プロテクト
対象レジスタの数を1つとする場合には不要であるが、
複数のレジスタをプロテクト対象とする場合は、それら
のレジスタを区別するために必ず必要であり、対象レジ
スタ検出41の出力信号sel_infoのビット数
は、プロテクト対象レジスタが2個の場合は1ビット、
プロテクト対象レジスタが3又は4個の場合は2ビッ
ト、プロテクト対象レジスタが5乃至8個の場合は3ビ
ットとなるように構成される。
【0061】ステップカウンタ51は、プロテクト対象
レジスタが複数(この例の場合、3つ)になったため、
図1に示した実施の形態のステップカウンタ50とは少
し構成が異なる。即ち、図15の状態遷移図に示す通
り、ステップ1(811)の書き込み実施時点(ライト
信号wrの立ち下がり発生時点でsel_p_or=1
の場合)で使用する信号がsel_reg1からsel
_p_orとなり、ステップ2(812)の書き込み実
施時点(ライト信号wrの立ち下がり時点で(dbz_
eq=1)かつ(preg_on=1)の場合)で使用
する信号がsel_reg1からpreg_onとな
る。図15の状態遷移図に従って動作するように回路化
したものを図16に示す。
【0062】図16は、ステップカウンタ51の構成例
を示すブロック図である。同図に示すように、ステップ
カウンタ51は、AND素子511,512、Dフリッ
プフロップ回路513,514から構成されている。A
ND素子511は、信号sel_p_or、カウント信
号stpcnt[0]の反転値、stpcnt[1]の
反転値を入力し、入力された値の論理積を演算し、演算
結果をDフリップフロップ回路513に供給するように
なっている。AND素子512は、一致信号dbz_e
qの値、信号preg_onの値、カウント信号stp
cnt[0]の値、stpcnt[1]の反転値をそれ
ぞれ入力し、入力した値の論理積を演算し、演算結果を
Dフリップフロップ回路514に供給するようになって
いる。Dフリップフロップ回路514は、ライト信号w
rの立ち下がりのタイミングで、AND素子512の出
力信号をカウント信号stpcnt[1]として出力す
るようになっている。
【0063】OR素子91は、3つあるプロテクト対象
レジスタ(レジスタ1,2,3)のうちのいずれかが、
現在選択されているかどうかを示す信号sel_p_o
rを生成するためのものである。この信号sel_p_
orは、ステップカウンタ51及びAND素子81のブ
ロックで使用される。
【0064】次に、本実施の形態の動作について説明す
る。本実施の形態は、図1乃至図11を参照して上述し
た実施の形態の場合とは、プロテクト対象レジスタがレ
ジスタ1,2,3の3つになっている点が異なっている
が、基本的な動作は、図1乃至図11を参照して上述し
た実施の形態の場合と同様であるので、その詳細な説明
は省略する。
【0065】図17は、レジスタ2へデータ値12AB
hを書き込む場合のタイミング図を示している。この例
の場合も、図7に示したタイミング図と基本的に同様に
して、レジスタ2にデータ12ABhが書き込まれる。
図18は、シーケンスエラー発生時の例として、3つ目
のケースであるステップ2(812)後のライトで、対
象レジスタ以外のレジスタに書き込みを行った場合のタ
イミング図である。この例の場合、ステップ3(81
3)において、信号wr_pregの値が0のままとな
り、信号sq_errorの値が1となり、レジスタ2
へのデータ12ABhの書き込みは行われない。
【0066】以上説明したように、本実施の形態は、複
数のレジスタをライトプロテクトの対象にする場合の例
であり、システムの必要性に応じて、プロテクトの対象
となるレジスタの個数を自由に変更できるという効果が
得られる。
【0067】次に、本発明のさらに他の実施の形態につ
いて説明する。上記各実施の形態では、特定シーケンス
を図6に示した3ステップで構成しているが、本実施の
形態では、さらにステップを増やし、図24に示すよう
に4ステップで構成している。
【0068】図24に示した特定シーケンスのフロー
は、図6に示した上記各実施の形態でのフローのステッ
プ1の前に、コマンドレジスタへ特定値(この例の場
合、55AAh)を書き込むというステップを追加して
いる。ステップ2以降は、上記各実施の形態での3ステ
ップ(ステップ1(901)、ステップ2(902)、
ステップ3(903))と同様である。
【0069】本実施の形態の場合、図25に示した4つ
のステップ(ステップ1(921)、ステップ2(92
2)、ステップ3(923)、ステップ4(924))
を踏んだ場合にのみ、対象レジスタへのデータの書き込
みが有効となり、対象レジスタへ設定したいデータが書
き込まれる。
【0070】ここで、ステップ1(921)、ステップ
2(922)、及びステップ3(923)での書き込み
動作は、特定シーケンスを構成するステップに過ぎず、
これら各ステップの時点では、書き込みは無効で、ライ
ト信号(wr_preg)のパルスが出力されない。ス
テップ1(921)乃至ステップ4(924)までの書
き込みを順序よく実施した場合にのみ、ステップ4時点
での書き込みが有効となり、ライト信号(wr_pre
g)のパルスが出力される。
【0071】なお、これらのステップを踏まず、ステッ
プ1(921)とステップ2(922)の間、ステップ
2(922)とステップ3(923)の間、或いはステ
ップ3(923)とステップ4(924)の間に、他の
書き込み動作が行われた場合には、特定シーケンスでの
書き込みは無効となり、シーケンスエラーが検出され
る。再度書き込みを試みる場合は、再び最初のステップ
1(921)から書き込み動作を始めなければならな
い。
【0072】図19は、本実施の形態の構成例を示すブ
ロック図である。各ブロックは、図1に示した実施の形
態の場合とほぼ同様であるが、本実施の形態の場合、ア
ドレスデコーダ9において、コマンドレジスタの選択信
号sel_cmdを生成し、ライトプロテクト回路12
へ供給している点が異なっている。
【0073】ここで、コマンドレジスタについてである
が、コマンドレジスタは、特定シーケンスを構成するた
めのものであり、レジスタと呼んではいるが、実際には
実体(保持回路)がなく、アドレスのみ割り付けられる
ものとする。
【0074】図20は、図19のライトプロテクト回路
12の構成例を示すブロック図である。同図に示すよう
に、ライトプロテクト回路12は、ライトデータ設定バ
ッファ22、比較回路32、ステップカウンタ52、シ
ーケンスエラー検出62、プロテクトライト信号生成7
2、及びAND素子82から構成される。
【0075】ここで、図20に示したライトデータ設定
バッファ22、プロテクトライト信号生成72、及びA
ND素子82は、図2に示したライトデータ設定バッフ
ァ20、プロテクトライト信号生成70、及びAND素
子80とそれぞれ接続及び構成が同一であるので、その
説明は省略する。
【0076】図20に示すように、比較回路32は、図
2に示した比較回路30と比べると、データバス8の値
(data[15:0])と特定値55AAhを比較
し、一致信号55aa_eqを出力する比較器324が
新たに追加されている点が異なっている。
【0077】図21は、ステップカウンタ52のカウン
ト信号の状態遷移を示している。ステップ数が4つにな
ったことにより、カウント信号の値に応じた4つの状態
(stpcnt[1:0]=00b、stpcnt
[1:0]=01b、stpcnt[1:0]=10
b、stpcnt[1:0]=11b)が示されてい
る。カウント信号stpcnt[1:0]の値が00b
の状態で、ステップ1(821)の書き込みを行うと、
カウント信号stpcnt[1:0]の値は01bに遷
移し、ステップ2(822)の書き込みを行うと、カウ
ント信号stpcnt[1:0]の値は10bに遷移
し、ステップ3(823)の書き込みを行うと、カウン
ト信号stpcnt[1:0]の値は11bに遷移す
る。それ以外の書き込みが発生すると、カウント信号s
tpcnt[1:0]の値は00bに戻る。
【0078】図22は、図21に示した状態遷移図に従
って動作し、カウント信号stpcnt[1:0]を出
力する回路の例を示している。AND素子521には、
信号sel_cmdの値、信号55aa_eqの値、カ
ウント信号の1ビット目の値(stpcnt[0])の
反転値、カウント信号の2ビット目の値(stpcnt
[1])の反転値が入力され、各値の論理積を演算し、
演算結果を出力するようになっている。AND素子52
2には、信号sel_reg1の値、信号dbz_eq
の値、カウント信号の1ビット目の値(stpcnt
[0])の反転値、カウント信号の2ビット目の値(s
tpcnt[1])が入力され、各値の論理積を演算
し、演算結果を出力するようになっている。
【0079】AND素子523には、信号sel_re
g1の値、カウント信号の1ビット目の値(stpcn
t[0])、カウント信号の2ビット目の値(stpc
nt[1])の反転値が入力され、各値の論理積を演算
し、演算結果を出力するようになっている。AND素子
524には、信号sel_reg1の値、信号dbz_
eqの値、カウント信号の1ビット目の値(stpcn
t[0])の反転値、カウント信号の2ビット目の値
(stpcnt[1])が入力され、各値の論理積を演
算し、演算結果を出力するようになっている。
【0080】OR素子525は、AND素子521,5
22からの出力信号を入力し、論理和演算を行い、演算
結果を出力するようになっている。OR素子526は、
AND素子523,524からの出力信号を入力し、論
理和演算を行い、演算結果を出力するようになってい
る。
【0081】Dフリップフロップ回路527のD0端子
には、OR素子525からの出力値と、ライト信号wr
の反転値が入力され、ライト信号の立ち下がり毎に、O
R素子525からの出力値を入力し、カウント信号st
pcnt[0]として出力するようになっている。ま
た、Dフリップフロップ回路528には、OR素子52
6からの出力値と、ライト信号wrの反転値が入力さ
れ、ライト信号の立ち下がり毎に、OR素子526から
の出力値を入力し、カウント信号stpcnt[1]と
して出力するようになっている。
【0082】シーケンスエラー検出62は、本実施の形
態では6つのケースをエラーとして検出している。1つ
目は、最近の書き込み動作がコマンドレジスタへの55
AAhライトではない状態で、プロテクト対象レジスタ
1への書き込みを行った場合、2つ目は、ステップ1
(821)の後の最初の書き込み動作が、対象とするレ
ジスタ以外に対する場合、3つ目は、ステップ2(82
2)の後の最初の書き込み動作が、対象とするレジスタ
以外に対する場合、4つ目は、ステップ2(822)の
後の最初の書き込み動作が、対象とするレジスタである
が、設定したい値の反転値(ステップ2(822)での
書き込み値の反転値)以外の値を書き込んだ場合、5つ
目は、ステップ3(823)の後の最初の書き込み動作
が、対象とするレジスタ以外に対する場合、そして6つ
目は、ステップ3(823)の後の最初の書き込み動作
が、対象とするレジスタであるが、設定したい値(ステ
ップ2(822)での書き込み値)以外の値を書き込ん
だ場合である。これら6つのケースが発生した場合を、
シーケンスエラーとして検出する。
【0083】図23は、シーケンスエラー検出62の構
成例を示すブロック図である。同図に示すように、シー
ケンスエラー検出62は、AND素子621乃至626
と、OR素子627と、Dフリップフロップ回路628
とから構成されている。AND素子621にて1つ目の
ケース、AND素子622にて2つ目のケース、AND
素子623にて3つ目のケース、AND素子624にて
4つ目のケース、AND素子625にて5つ目のケー
ス、AND素子626にて6つ目のケースをそれぞれ検
出し、これらの検出信号をwr信号パルスでDフリップ
フロップ回路628に取り込み、エラー信号sq_er
rorを生成し、出力している。
【0084】なお、本実施の形態の場合、4ステップの
特定シーケンスになっているが、基本的な動作は、上述
した各実施の形態の場合と同様である。図25は、プロ
テクト対象のレジスタ1にデータ12ABhを書き込む
場合のタイミング図である。ステップ1(821)にお
いて、信号sel_cmdの値が1となり、data
[15:0]の値が55AAhとなるので、比較器32
4の出力信号55aa_eqの値が1となる。従って、
図22のAND素子521の入力信号である信号sel
_cmd、信号55aa_eq、カウント信号stpc
nt[0]、stpcnt[1]の値がそれぞれ1とな
るので、AND素子521の出力信号の値は1となる。
これにより、ライト信号wrの立ち下がりで、カウント
信号stpcnt[0]の値が1となる。これにより、
ステップカウンタ52の出力するカウント信号stpc
nt[1:0]=01bとなる。
【0085】ステップ2(822)においては、信号s
el_reg1の値が1となり、カウント信号stpc
nt[0]の値が1、stpcnt[1]の反転値が1
となるので、AND素子523の出力信号の値は1とな
る。従って、ステップカウンタ52の出力するカウント
信号stpcnt[1:0]=10bとなる。
【0086】ステップ3(823)においては、信号s
el_reg1の値が1、一致信号dbz_eqの値が
1、カウント信号stpcnt[1]の値が1、stp
cnt[0]の反転値が1となり、AND素子524の
出力信号の値が1となる、また、AND素子522の出
力信号の値も1となるので、ステップカウンタ52の出
力するカウント信号stpcnt[1:0]の値は11
bとなる。
【0087】ステップ4(824)においては、信号s
el_reg1の値が1、比較器322から出力される
一致信号db_eqの値が1、ステップカウンタ52か
ら出力されるカウント信号stpcnt[1]=1、s
tpcnt[]=1となるので、ライト信号wrの立ち
上がりで、ライトプロテクト回路12より出力される信
号wr_pregの値が1となり、プロテクト対象レジ
スタ1に対してデータ12ABhが書き込まれる。
【0088】図26は、最近の書き込み動作がコマンド
レジスタへの55AAhライトではない状態で、プロテ
クト対象レジスタ1への書き込みを行った場合(1つ目
のケース)に、シーケンスエラーが発生したときのタイ
ミング図である。この場合、信号sel_reg1の値
が1、カウント信号stpcnt[0]の反転値が1、
stpcnt[1]の反転値が1となるので、図23の
AND素子621の出力信号の値が1となり、OR素子
627の出力信号pr_sq_errorの値が1とな
る。これにより、ライト信号wrの立ち上がりで、Dフ
リップフロップ回路628にOR素子627からの出力
信号pr_sq_errorが取り込まれ、sq_er
ror信号として出力される。
【0089】図27は、ステップ3後のライトで設定し
たい値以外の値をライトし、シーケンスエラーが発生し
た場合のタイミング図である。同図に示すように、ステ
ップ3の後、レジスタ1に対して、データ1111hの
書き込みを行った場合、カウント信号stpcnt
[0]=1、カウント信号stpcnt[1]=1、信
号db_eqの値が0のままとなるので、AND素子6
26の出力が1となり、wr信号の立ち上がりで、エラ
ー信号sq_errorの出力値が1となる。また、w
r_pregの値は0のままとなり、wr_pregの
値も0のままとなる。
【0090】以上、本実施の形態では、特定シーケンス
のステップ数を4つに増やし、かつコマンドレジスタと
いう別レジスタの概念を追加しているので、CPU6の
暴走などによる同一レジスタへのランダム値の連続誤書
き込みについても、無効化できるという効果がある。
【0091】また、データバス上のデータ化けについて
は、データバス自体に誤り訂正等の回路と付加ビットを
施す方法もあるが、上記各実施の形態では、データバス
に付加ビットを増やす必要がなく、またハードウェアも
比較的少ない量で実現可能である。
【0092】また、書き込みデータを一時保留するハー
ドウェアのみを用意し、データ値が正常であるかどうか
の検出をソフトウェアで行う方法も考えられるが、ソフ
トウェアでの検出はプログラムコードの増大と制御レジ
スタへの書き込み時間の増大を招くという欠点がある。
この方法と比べると、上記各実施の形態は、ライト命令
を3回実行するだけでよく、プログラムコード量を少な
くでき、かつ、制御レジスタへの書き込み時間を短くで
きるといった効果がある。
【0093】なお、上記実施の形態の構成及び動作は例
であって、本発明の趣旨を逸脱しない範囲で適宜変更す
ることができることは言うまでもない。
【0094】
【発明の効果】以上の如く、本発明に係るライトプロテ
クト方法によれば、所定のレジスタへ所定のデータを書
き込むためのライト動作が、所定のシーケンスで行われ
たか否かを判定し、上記レジスタへデータを書き込むた
めのライト動作が、上記シーケンスで行われたと判定さ
れた場合にのみ、上記レジスタへのデータの書き込みが
行われるように制御するようにしたので、所定のレジス
タへの不正な書き込みを無効化することができる。
【図面の簡単な説明】
【図1】本発明のライトプロテクト方法を応用したライ
トプロテクト回路の一実施の形態の構成例を示すブロッ
ク図である。
【図2】図1のライトプロテクト回路の構成例を示すブ
ロック図である。
【図3】カウント信号の状態遷移を示す図である。
【図4】図1のステップカウンタの構成例を示すブロッ
ク図である。
【図5】図1のシーケンスエラー検出の構成例を示す図
ブロック図である。
【図6】プロテクト対象レジスタへの書き込み時の特定
シーケンスを説明するためのフローチャートである。
【図7】プロテクトの対象とするレジスタ1にデータ1
2ABhを書き込む場合のタイミング図である。
【図8】ステップ1後の書き込み動作が、対象とするレ
ジスタ以外に対するものであり、シーケンスエラーが発
生した場合のタイミング図である。
【図9】ステップ1後のライトで設定したい値の反転値
以外の値をライトし、シーケンスエラーが発生した場合
のタイミング図である。
【図10】ステップ2後の書き込み動作が、対象とする
レジスタ以外に対するものであり、シーケンスエラーが
発生した場合のタイミング図である。
【図11】ステップ2後のライトで設定したい値以外の
値をライトし、シーケンスエラーが発生した場合のタイ
ミング図である。
【図12】本発明のライトプロテクト方法を応用した他
の実施の形態の構成例を示すブロック図である。
【図13】図12のライトプロテクト回路の構成例を示
すブロック図である。
【図14】図13の対象レジスタ検出の構成例を示すブ
ロック図である。
【図15】カウント信号の状態遷移を示す図である。
【図16】図13のステップカウンタ51の構成例を示
すブロック図である。
【図17】レジスタ2にデータ12ABhを書き込む場
合のタイミング図である。
【図18】ステップ2後の書き込み動作が、対象とする
レジスタ以外に対するものであり、シーケンスエラーが
発生した場合nタイミング図である。
【図19】本発明のライトプロテクト方法を応用したさ
らに他の実施の形態の構成例を示すブロック図である。
【図20】図19のライトプロテクト回路の構成例を示
すブロック図である。
【図21】カウント信号の状態遷移を示す図である。
【図22】図20のステップカウンタの構成例を示す図
である。
【図23】図20のシーケンスエラー検出の構成例を示
す図である。
【図24】プロテクト対象レジスタへの書き込み時の特
定シーケンスを説明するためのフローチャートである。
【図25】プロテクトの対象とするレジスタ1にデータ
12ABhを書き込む場合のタイミング図である。
【図26】最近の書き込み動作がコマンドレジスタへの
55AAhライトでない状態で、プロテクト対象レジス
タへの書き込みを行った場合のタイミング図である。
【図27】ステップ3後のライトで設定したい値以外の
値をライトし、シーケンスエラーが発生した場合のタイ
ミング図である。
【図28】従来のライトプロテクト回路の一例を示すブ
ロック図である。
【符号の説明】
1乃至n レジスタ 6 CPU 7 プログラム格納メモリ 8 データバス 9 アドレスデコーダ 10,11,12,13 ライトプロテクト回路 20,21,22 ライトデータ設定バッファ 30,31,32 比較回路 41 対象レジスタ検出 50,51,52 ステップカウンタ 60,61,62 シーケンスエラー検出 70,71,72 プロテクトライト信号生成 80,81,82,415,416,417,501,
502,511,512,521,522,523,5
24,601,602,603,604,621,62
2,623,624,625,626,701,70
2,711,712,721,722 AND素子 91,411,412,418,525,526,60
5,627 OR素子301,311,321 反転器 302,303,312,313,322,323,3
24 比較器 413,414,503,504,513,514,5
27,528,606,628 Dフリップフロップ回

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 マイクロコンピュータを構成する所定の
    レジスタへの誤書き込みを防止するライトプロテクト方
    法であって、 前記所定のレジスタへ所定のデータを書き込むためのラ
    イト動作が、所定のシーケンスで行われたか否かを判定
    する判定ステップと、 前記判定ステップにおいて、前記レジスタへ前記データ
    を書き込むためのライト動作が、前記シーケンスで行わ
    れたと判定された場合にのみ、前記レジスタへの前記デ
    ータの書き込みが行われるように制御する制御ステップ
    とを備えることを特徴とするライトプロテクト方法。
  2. 【請求項2】 マイクロコンピュータを構成する所定の
    レジスタへの誤書き込みを防止するライトプロテクト装
    置であって、 前記所定のレジスタへ所定のデータを書き込むためのラ
    イト動作が、所定のシーケンスで行われたか否かを判定
    する判定手段と、 前記判定手段によって、前記レジスタへ前記データを書
    き込むためのライト動作が、前記シーケンスで行われた
    と判定された場合にのみ、前記レジスタへの前記データ
    の書き込みが行われるように制御する制御手段とを備え
    ることを特徴とするライトプロテクト装置。
  3. 【請求項3】 前記判定手段は、前記レジスタに対して
    前記データを書き込むための命令を含む複数の命令が、
    前記シーケンスに従って実行されたか否かを判定するこ
    とを特徴とする請求項2に記載のライトプロテクト装
    置。
  4. 【請求項4】 前記判定手段は、前記データの書き込み
    の対象となる前記レジスタに対して前記データを書き込
    むための命令と、前記レジスタに対して前記データとは
    異なる他の所定の値を書き込むための命令と、前記レジ
    スタに対して前記データを書き込むための命令とがこの
    順番で実行されたか否かを判定することを特徴とする請
    求項3に記載のライトプロテクト装置。
  5. 【請求項5】 前記判定手段は、前記データの書き込み
    の対象となる前記レジスタとは別の他の所定のコマンド
    レジスタに対して所定の値を書き込むための命令と、前
    記データの書き込みの対象となる前記レジスタに対して
    前記データを書き込むための命令と、前記レジスタに対
    して前記データとは異なる他の所定の値を書き込むため
    の命令と、前記レジスタに対して前記データを書き込む
    ための命令とがこの順番で実行されたか否かを判定する
    ことを特徴とする請求項3に記載のライトプロテクト装
    置。
  6. 【請求項6】 前記判定手段は、各命令が実行される毎
    に、各命令が前記シーケンスに従って実行されたか否か
    を判定し、各命令の実行が前記シーケンスに従って行わ
    れなかったことが判明した時点で、前記シーケンスの最
    初から各命令が前記シーケンスに従って実行されたか否
    かの判定を行うことを特徴とする請求項3,4または5
    に記載のライトプロテクト装置。
  7. 【請求項7】 前記他の所定の値は、前記データの反転
    値であることを特徴とする請求項4,5または6に記載
    のライトプロテクト装置。
  8. 【請求項8】 マイクロコンピュータを構成する所定の
    レジスタへの誤書き込みを防止するライトプロテクト装
    置を制御するライトプロテクトプログラムであって、 前記所定のレジスタへ所定のデータを書き込むためのラ
    イト動作が、所定のシーケンスで行われたか否かを判定
    する判定ステップと、 前記判定ステップにおいて、前記レジスタへ前記データ
    を書き込むためのライト動作が、前記シーケンスで行わ
    れたと判定された場合にのみ、前記レジスタへの前記デ
    ータの書き込みが行われるように制御する制御ステップ
    とを前記ライトプロテクト装置に実行させることを特徴
    とするライトプロテクトプログラム。
JP2001199080A 2001-06-29 2001-06-29 ライトプロテクト方法 Pending JP2003015958A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2001199080A JP2003015958A (ja) 2001-06-29 2001-06-29 ライトプロテクト方法
EP02013943A EP1271326A3 (en) 2001-06-29 2002-06-24 Write protect method
US10/180,876 US20030005241A1 (en) 2001-06-29 2002-06-26 Write protect method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2001199080A JP2003015958A (ja) 2001-06-29 2001-06-29 ライトプロテクト方法

Publications (1)

Publication Number Publication Date
JP2003015958A true JP2003015958A (ja) 2003-01-17

Family

ID=19036421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001199080A Pending JP2003015958A (ja) 2001-06-29 2001-06-29 ライトプロテクト方法

Country Status (3)

Country Link
US (1) US20030005241A1 (ja)
EP (1) EP1271326A3 (ja)
JP (1) JP2003015958A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008234358A (ja) * 2007-03-20 2008-10-02 Nec Corp 記憶装置、情報処理装置及び不正書込検出方法
US7900007B2 (en) 2004-07-08 2011-03-01 Panasonic Corporation Host device, storage device, and method for accessing storage device

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004348627A (ja) * 2003-05-26 2004-12-09 Toshiba Lsi System Support Kk マイクロコンピュータシステム
US8248901B2 (en) 2004-04-17 2012-08-21 Samsung Electronics Co., Ltd. Information recording medium, apparatus for recording and/or reproducing data on and/or from information recording medium, method of recording and/or reproducing data on and/or from information recording medium, and computer-readable recording medium storing program for executing the method
JP2006072935A (ja) * 2004-09-06 2006-03-16 Fujitsu Ltd 半導体装置及びデータ書き込み制御方法
KR20140120100A (ko) * 2013-04-02 2014-10-13 에스케이하이닉스 주식회사 수신회로를 포함하는 데이터전송시스템 및 데이터전송방법
US10719477B1 (en) * 2019-06-20 2020-07-21 Semiconductor Components Industries, Llc Methods and system for an integrated circuit
US11829227B2 (en) * 2020-08-05 2023-11-28 Infineon Technologies Ag Storage circuit with hardware read access
CN113836600B (zh) * 2021-11-26 2022-02-18 上海泰矽微电子有限公司 一种Embedded Flash误写保护方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4388695A (en) * 1980-02-21 1983-06-14 Timeplex, Inc. Hardware memory write lock circuit
US4980888A (en) * 1988-09-12 1990-12-25 Digital Equipment Corporation Memory testing system
US5027317A (en) * 1989-03-17 1991-06-25 Allen-Bradley Company, Inc. Method and circuit for limiting access to a RAM program memory
JP3742839B2 (ja) * 1992-07-21 2006-02-08 レジェリティ・インコーポレイテッド シャットダウンモードにおかれることが可能なクロック発生器
JP3202497B2 (ja) * 1994-09-09 2001-08-27 日本電気株式会社 情報処理装置
US6128758A (en) * 1998-05-20 2000-10-03 National Semiconductor Corporation Modular re-useable bus architecture
US6643751B2 (en) * 2000-03-20 2003-11-04 Texas Instruments Incorporated System and method for limited access to system memory

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7900007B2 (en) 2004-07-08 2011-03-01 Panasonic Corporation Host device, storage device, and method for accessing storage device
TWI410794B (zh) * 2004-07-08 2013-10-01 Panasonic Corp Memory device
JP2008234358A (ja) * 2007-03-20 2008-10-02 Nec Corp 記憶装置、情報処理装置及び不正書込検出方法

Also Published As

Publication number Publication date
EP1271326A3 (en) 2004-07-21
US20030005241A1 (en) 2003-01-02
EP1271326A2 (en) 2003-01-02

Similar Documents

Publication Publication Date Title
US6959367B2 (en) System having read-modify-write unit
US20080016415A1 (en) Evaluation system and method
JP2003015958A (ja) ライトプロテクト方法
JP3202497B2 (ja) 情報処理装置
US8423834B2 (en) Computer system and memory system
JP2004348627A (ja) マイクロコンピュータシステム
US9256495B2 (en) Processing unit and error processing method
US20100083073A1 (en) Data processing apparatus, memory controlling circuit, and memory controlling method
KR100525537B1 (ko) 인터럽트를 이용한 응용 프로그램의 에러검출장치 및 방법.
JP4236808B2 (ja) 不揮発メモリ内蔵マイクロコンピュータとその不揮発メモリの自己書換方法
JPH08235073A (ja) マイクロコンピュータ
JPH01125633A (ja) マルチプロセッサシステムのデバッグ法
JP2003316649A (ja) マイクロプロセッサ
JP2007064762A (ja) 半導体装置、テストモード制御回路
JP2587468B2 (ja) ロツクデータ設定装置
JP2002150795A (ja) 半導体集積回路
JPS6310234A (ja) 割込み処理装置
JPH0424836A (ja) マイクロプロセッサ
JP3616588B2 (ja) マイクロプログラムチェックシステム
JP2007206909A (ja) データ処理装置およびデータ処理方法
JPH05265864A (ja) メモリ管理回路及びメモリ管理回路付きのプロセッサユニット
JPH05120155A (ja) マイクロプログラム制御装置
JPS63150732A (ja) プログラム走行監視装置
JPH0535499A (ja) データ処理装置及びデータ処理方法
JPS58215799A (ja) 制御記憶検証方式