(57)【特許請求の範囲】
【請求項１】
所与のプログラムデータにしたがって所定の動作を行う機能回路に所望のプログラムデータをロードするプログラムロード装置であって、
前記プログラムデータを予め設定した第１の記憶場所を先頭記憶場所とする第１の記憶領域に保持するとともに、前記第１の記憶場所を指定するアドレスポインタのデータを第２の記憶領域内に予め設定した第２の記憶場所に保持するプログラムメモリと、
前記プログラムデータのロード処理を指示するために、前記プログラムデータを所定のプログラム指定情報で指定するプログラム指定部と、
前記プログラム指定部より与えられる前記プログラム指定情報を基に前記プログラムメモリから前記プログラムデータを読み出して前記機能回路に転送するプログラムローダと
を有し、
前記プログラム指定部が、前記プログラム指定情報として前記第２の記憶場所に対応する前記プログラムデータに固有のプログラム番号を前記プログラムローダに与え、
前記プログラムローダが、
前記プログラム番号のデータを保持するための第１のレジスタを有し、前記プログラム指定部より受け取った前記プログラム番号のデータに対して前記第１のレジスタを用いて第１の演算を施して、前記第２の記憶場所を指定する開始アドレスを生成するアドレス生成部と、
前記アドレス生成部より得られた前記開始アドレスで前記プログラムメモリにアクセスして、前記第２の記憶領域内の前記第２の記憶場所から前記アドレスポインタのデータを読み出すアドレスポインタ読出部と、
前記アドレスポインタ読出部に読み出された前記アドレスポインタのデータにしたがって前記プログラムメモリをアクセスして、前記第１の記憶領域から前記プログラムデータを読み出すプログラムデータ読出部と
を有するプログラムロード装置。
【請求項２】
前記第１の演算は、前記第１のレジスタにおけるデータのシフト、インクリメント、乗算、加算の少なくとも１つを含む請求項１に記載のプログラムロード装置。
【請求項３】
前記アドレス生成部が、前記アドレスポインタのデータをロードする第２のレジスタを更に有し、前記第２のレジスタより前記第１の記憶場所をアドレス指定するための先頭アドレスを発生し、前記アドレスポインタのデータに対して前記第２のレジスタを用いて第２の演算を施して、前記第１の記憶領域内で前記第１の記憶場所の後に続く複数の記憶場所を順次指定するための後続アドレスを生成する請求項１または請求項２に記載のプログラムロード装置。
【請求項４】
前記第２の演算は、前記第１のレジスタにおけるデータのインクリメントを含む請求項３に記載のプログラムロード装置。
【請求項５】
前記プログラムメモリにアドレスバスを介して前記第１のレジスタの出力端子もしくは前記第２のレジスタの出力端子のいずれか一方を選択的に接続するアドレス切換スイッチを有する請求項３または請求項４に記載のプログラムロード装置。
【請求項６】
前記プログラムメモリ内の所定の記憶場所には前記プログラムメモリについて設定されたアクセス時間を表すメモリアクセス時間設定値が格納され、
前記プログラムローダは予め設定された低速のアクセス時間で前記プログラムメモリからのプログラムデータの読み出しを開始し、前記アクセス時間データを読み出した後は前記メモリアクセス時間設定値の指示するアクセス時間で前記プログラムメモリからのプログラムデータの読み出しを行う請求項１〜５３のいずれか一項に記載のプログラムロード装置。
【請求項７】
前記アクセス時間に応じて基準動作クロックの速度を変える請求項６に記載のプログラムロード装置。
【発明の詳細な説明】
【００１０】
【発明の属する技術分野】
本発明は、所与のプログラムデータにしたがって所定の動作を行う機能回路に所望のプログラムデータをロードする装置に関する。
【００２０】
【従来の技術】
このような機能回路を１つまたは複数個備えるシステムでは、各機能回路にロードされるプログラムまたは設定値（以下、プログラムデータと称する。）を変更することで、多種様々な動作モードまたはアプリケーションを実現することが可能である。
【００３０】
従来のこの種システムでは、多数組または多種類のプログラムデータをメモリに予め蓄積（用意）しておき、要求されるアプリケーションに応じてマイクロプロセッサがそのメモリの中から１組のプログラムデータを読み出して、各機能回路に各分のプログラムデータをロードするように構成している。このため、マイクロプロセッサは、メモリ内の各組のプログラムデータの記憶番地を予め把握しておく必要がある。
【００４０】
【発明が解決しようとする課題】
しかしながら、システムのバージョンアップ等により、メモリに用意しておくプログラムデータのデータ長に一部でも変更が生じると、メモリに格納される各組のプログラムデータの記憶位置または番地が変わってしまうことがある。この場合、マイクロプロセッサ側でも、そのようなプログラムデータ記憶番地の変更に応じてソフトウェアを手直ししなければならず、これが非常に面倒であった。
【００５０】
また、上記のようにマイクロプロセッサがメモリからプログラムデータを読み出して各機能回路にロードする方式は、マイクロプロセッサ自体が制御プログラムを逐次的にメモリから読み出して解読しながら処理を進めるため、どうしても相当の時間を必要とし、短時間でのプログラムロードを実現することは難しい。したがって、電源投入後やモード切換後に直ちに動作しなくてはならないシステムには向かなかった。
【００６０】
本発明は、かかる従来技術の問題点を解決するものであり、プログラムメモリに蓄積しておくプログラムデータのデータ長または記憶番地に変更が生じてもソフトウェアの手直しを必要とすることなく、プログラムデータのロード処理を行えるようにしたプログラムロード装置を提供することを目的とする。
【００７０】
また、本発明は、高速かつ効率的にプログラムデータのロード処理を行えるようにしたプログラムロード装置を提供することを目的とする。
【００８０】
上記の目的を達成するために、本発明のプログラムロード装置は、所与のプログラムデータにしたがって所定の動作を行う機能回路に所望のプログラムデータをロードするプログラムロード装置であって、前記プログラムデータを予め設定した第１の記憶場所を先頭記憶場所とする第１の記憶領域に保持するとともに、前記第１の記憶場所を指定するアドレスポインタのデータを第２の記憶領域内に予め設定した第２の記憶場所に保持するプログラムメモリと、前記プログラムデータのロード処理を指示するために、前記プログラムデータを所定のプログラム指定情報で指定するプログラム指定部と、前記プログラム指定部より与えられる前記プログラム指定情報を基に前記プログラムメモリから前記プログラムデータを読み出して前記機能回路に転送するプログラムローダとを有し、前記プログラム指定部が、前記プログラム指定情報として前記第２の記憶場所に対応する前記プログラムデータに固有のプログラム番号を前記プログラムローダに与え、前記プログラムローダが、前記プログラム番号のデータを保持するための第１のレジスタを有し、前記プログラム指定部より受け取った前記プログラム番号のデータに対して前記第１のレジスタを用いて第１の演算を施して、前記第２の記憶場所を指定する開始アドレスを生成するアドレス生成部と、前記アドレス生成部より得られた前記開始アドレスで前記プログラムメモリにアクセスして、前記第２の記憶領域内の前記第２の記憶場所から前記アドレスポインタのデータを読み出すアドレスポインタ読出部と、前記アドレスポインタ読出部に読み出された前記アドレスポインタのデータにしたがって前記プログラムメモリをアクセスして、前記第１の記憶領域から前記プログラムデータを読み出すプログラムデータ読出部とを有する。
【００９０】
上記の装置構成においては、所定の動作モードまたはアプリケーションに対応したプログラムデータをプログラムメモリ内の予め設定した第１の記憶場所を先頭記憶場所とする第１の記憶領域に格納するとともに、該第１の記憶場所を指定するアドレスポインタのデータを該プログラムメモリ内の第２の記憶領域に予め設定した第２の記憶場所に格納しておく。そして、機能回路に該プログラムデータをロードする必要が生じた場合は、プログラム指定部が該プログラムデータを指定するプログラム指定情報として該プログラムデータに固有のプログラム番号をプログラムローダに与える。ここで、このプログラム番号と上記第２の記憶場所との間にはデータ（数値）上の対応関係がある。
【０１００】
プログラムローダでは、プログラム指定部よりプログラム番号のデータを受け取ると、アドレス生成部が、そのプログラム番号のデータを第１のレジスタにロードし、該レジスタを用いてプログラム番号のデータに第１の演算（たとえばシフト、インクメント、乗算、加算等）を施して、第２の記憶場所を指定する開始アドレスを生成する。すなわち、プログラムメモリや他のメモリまたはテーブルを介することなく、開始アドレスを得るようにしている。
【０１１０】
次に、アドレスポインタ読出部が、上記開始アドレスを基にプログラムメモリにアクセスして、第２の記憶場所からアドレスポインタを読み出す。
【０１２０】
次いで、プログラムデータ読出部が、アドレスポインタ読出部に読み出された上記アドレスポインタにしたがってプログラムメモリをアクセスして、メモリ内の上記記憶領域からプログラムデータを読み出す。読み出されたプログラムデータは、そのまま機能回路に転送され、機能回路内の所定のメモリまたはレジスタにロードされる。本発明の好適な一態様によれば、アドレス生成部が、アドレスポインタのデータをロードする第２のレジスタを更に有し、第２のレジスタより第１の記憶場所をアドレス指定するための先頭アドレスを発生し、アドレスポインタのデータに対して第２のレジスタを用いて第２の演算を施して、第１の記憶領域内で第１の記憶場所の後に続く複数の記憶場所を順次指定するための後続アドレスを生成する。この場合、好適な一態様として、メモリアクセスを１回行う度毎に第２のレジスタの内容（アドレスのデータ）をインクリメントして、次回のメモリアクセスに用いるアドレスのデータを生成してよい。
【０１３０】
本発明においては、上記のように、プログラマブルに動作する所定の機能回路に対して所望のプログラムデータをロードするに際して、従来のようにＣＰＵが制御プログラムを逐次的に読み出して解読しながらステップ数の多い煩雑な処理を進めるのとは異なり、ハードウェア回路だけで構成可能なプログラムローダが一義的な高速・最小ステップ数の処理を行う。
【０１４０】
本発明の好適な一態様によれば、プログラムメモリにアドレスバスを介して第１のレジスタの出力端子もしくは第２のレジスタの出力端子のいずれか一方を選択的に接続するアドレス切換スイッチが設けられる。
【０１５０】
また、好適な一態様によれば、プログラムメモリ内の所定の記憶位置にはこのプログラムメモリについて設定されたアクセス時間を表すメモリアクセス時間設定値が格納され、プログラムローダは予め設定された低速のアクセス時間でプログラムメモリからのプログラムデータの読み出しを開始し、アクセス時間データを読み出した後はメモリアクセス時間設定値の指示するアクセス時間でプログラムメモリからのプログラムデータの読み出しを行う。このようにプログラムメモリに対する読み出しのアクセス時間の可変制御を行うときは、好適な一態様として基準動作クロックの速度を変える方式が採られる。
【０１６０】
【発明の実施の形態】
以下、添付図を参照して本発明の実施例を説明する。
【０１７０】
図１に、本発明の一実施例によるプログラムロード方法および装置を適用したシステムの基本構成を示す。
【０１８０】
このシステムには、各々が所与のプログラムデータ（プログラムまたは設定値）にしたがって動作する（ｎ＋１）個の機能回路ＦＣ0 ，ＦＣ1 ，…ＦＣn が含まれている。そして、これらの機能回路にプログラムデータを書き換え可能にロードするために、プログラム蓄積用メモリたとえばＲＯＭ（Read-Only Memory) １０、プログラムローダ１２およびプログラム指定装置たとえばマイクロプロセッサ（ＭＰＵ）１４が設けられている。このうち、マイクロプロセッサ１４は、本来的にはシステム外部の装置として機能するものでもあってもよい。
【０１９０】
なお、後述するように、プログラムローダ１２をこのシステムにおける機能回路ＦＣの１つに加えることも可能である。
【０２００】
このシステムでは、複数の動作モードまたはアプリケーションが用意され、各動作モード毎に全ての機能回路ＦＣ0 ，ＦＣ1 ，…ＦＣn 向けの１組のプログラムデータが作成または設定される。ＲＯＭ１０には、そのような複数の動作モードにそれぞれ対応する複数の組のプログラムデータがまとめて格納される。
【０２１０】
プログラムローダ１２は、ＲＯＭ１０とはアドレスバス１６、データバス１８および所要の制御線（図示せず）を介して接続されている。また、マイクロプロセッサ１４とは適当なバスまたは通信インタフェース１５を介して接続されている。
【０２２０】
また、プログラムローダ１２は、各機能回路ＦＣ0 ，ＦＣ1 ，…ＦＣn に対しては、アドレス／データ共用型の内部バス２０および所要の制御線たとえばこのバス２０上の信号がアドレス信号なのかデータなのかを識別するためのバス信号識別線２２、内部バス２０上のデータをいずれか１つの機能回路ＦＣi だけに選択的に書き込むための書き込み制御線２４等を介して接続されている。
【０２３０】
図２に、ＲＯＭ１０のメモリ領域に格納されるデータの配置（メモリマップ）の一例を示す。
【０２４０】
このＲＯＭ１０は、たとえばデータが８ビット、アドレスが１６ビットで、８×２16ビットの記憶容量を有している。図２の例では、アドレス０〜Ｖ2m+1の記憶領域にｍ＋１個分（ｍは整数）のアドレスポインタＶ0 〜Ｖm がこの順序で格納されている。
【０２５０】
ここで、各アドレスポインタＶK (K＝0 〜m ）は１６ビットのデータ長であるため、上位バイト（８ビット）ＶKHと下位バイト（８バイト）ＶKLとに分けて２つのアドレスに書き込まれている。たとえば、ｍを２５５とした場合、このＲＯＭ１０には２５６個までのアドレスポインタが設定可能であり、２５６組までのプログラムデータが格納可能であることを意味する。
【０２６０】
上記のようなアドレスポインタの設定と関連し、このＲＯＭ１０では、第１のアドレスポインタＶ0 に対応するアドレスＶ0 を先頭記憶番地とする所定の記憶領域に第１組のプログラムデータが格納され、第２のアドレスポインタＶ1 に対応するアドレスＶ1 を先頭記憶番地とする所定の記憶領域に第２組のプログラムデータが格納されるというように、各アドレスポインタによって指示される記憶場所に各対応する組のプログラムデータが格納される。
【０２７０】
このようなメモリ管理方式によれば、各組のプログラムデータを指定するためのプログラム指定情報たとえばプログラム番号ＰＮは、各対応するアドレスポインタを指定すればよい。そうすると、指定されたアドレスポインタから、目的のプログラムデータの記憶場所を直ちに割り出すことができるようになっている。
【０２８０】
図３に、ＲＯＭ１０に格納されている各組（第Ｋ組）のプログラムデータのデータ内容および格納配置の一例を示す。
【０２９０】
先ず、先頭アドレスＶK-1 には第１の転送先となるべき機能ブロックＦＣ（たとえばＦＣ0 ）を識別するための１バイトのデータＤＦＣ0 が格納される。次の２つのアドレスＶK-1 ＋１，ＶK-1 ＋２には、第１の転送先へ転送すべきプログラムデータのデータ長（バイト数）の値に２を加えたデータＬＫ0 が２バイト（ＬＫ0H，ＬＫ0L）で格納される。
【０３００】
次の第４および第５番目のアドレスＶK-1 ＋３，ＶK-1 ＋４には、第１の転送先（機能回路）においてプログラムデータが書き込まれるべきメモリまたはレジスタの先頭記憶番地を示す２バイトのデータＡＤ0 （ＡＤ0H，ＡＤ0L）が転送先番地として格納される。
【０３１０】
次の第６番目のアドレスＶK-1 ＋５から（プログラムデータ長ＬＫ0 −２）に応じたアドレスにわたって、第１の転送先（機能回路）にロードされるべきプログラムデータが１バイト単位Ｄa(1)，Ｄa(2)，…で各アドレスに格納される。
【０３２０】
上記のようにして、第Ｋ組のプログラムデータの先頭部分には、第１の転送先となる機能回路に対応する第１グループのプログラムデータが連続した記憶番地（ＶK-1 ，ＶK-1 ＋１，ＶK-1 ＋２，……）に格納される。
【０３３０】
上記第１グループのプログラムデータの終端アドレスは、ＶK-1 ＋ＬＫ0 ＋３−１となる。この式の中で、第３項の定数“３”はＤＦＣ0 ，ＬＫ0H，ＬＫ0Lに充てられる３つのアドレスに相当する。
【０３４０】
この終端アドレス（ＶK-1 ＋ＬＫ0 ＋３−１）の次のアドレス（ＶK-1 ＋ＬＫ0 ＋３）からは、第２の転送先となる機能回路に対応する第２グループのプログラムが上記第１グループと同様のフォーマットで格納される。転送されるべきプログラムデータＤb(1)，Ｄb(2), …の量つまりプログラムデータ長は、第２の転送先におけるプログラムデータ格納手段（メモリまたはレジスタ等）の記憶容量または要求仕様に依存する。
【０３５０】
第３の転送先以降についても、各対応するグループのプログラムデータが上記と同様のフォーマットでＲＯＭ１０のメモリ領域に順次格納される。そして、最後の転送先に対応するグループのプログラムデータが格納される記憶場所の次のアドレスには、この組（第Ｋ組）のプログラムデータがここで終了したことを示す終了指示データＤＦend が格納される。
【０３６０】
図４に、プログラムローダ１２の回路構成例を示す。このプログラムローダ１２は、各種の情報またはデータを一時的に入力して保持する複数個のレジスタ３０〜３６と、アドレス切換スイッチ３８と、ローダ内の各部および外部の機能回路等を制御する制御部４０とから構成される。この例において、プログラムローダ１２は、Ｉ2 Ｃバス（Inter IC-Bus）インタフェース回路４２を介してマイクロプロセッサ１４に接続されている。
【０３７０】
図５に、このプログラムローダ１２における制御部４０の制御または処理動作をフローチャートで示す。
【０３８０】
以下に、プログラムローダ１２がＲＯＭ１０より第Ｋ組のプログラムデータを読み出してシステム内の各機能回路にロードする場合の動作を説明する。なお、図６には、第１の転送先たとえば機能回路ＦＣ0 に対して第Ｋ組のプログラムデータの中の第１グループのプログラムデータをロードする場合のより詳細なステップと各経路上で伝送される関連アドレス信号またはデータの分布を示す。
【０３９０】
先ず、システムの電源投入直後あるいは動作モードの切換直後に、マイクロプロセッサ１４より所望の組（この例では第Ｋ組）のプログラムデータを指定するプログラム番号ＰＮK-1 がプログラムローダ１２に送られてくる。
【０４００】
Ｉ2 Ｃバス・インタフェース回路４２は、このプログラム番号ＰＮK-1 を受信すると、このことを知らせる受信通知信号ＨＳを制御部４０に伝えるとともに、レジスタ３０に対してこの受信したプログラム番号ＰＮK-1 をロードする。ここで、信号ＨＳはレジスタ３０のライトイネーブル信号ＷＥとしても働く。
【０４１０】
制御部４０は、上記受信通知信号ＨＳを受け取ると、プログラムローダ１２内の各部を初期化する。特に、アドレス切換スイッチ３８については、出力端子（ＲＯＭアドレス出力端子）をレジスタ３０側の入力端子に切り換えておいてよい（ステップＳ1 ，Ｓ2 ）。
【０４２０】
レジスタ３０においては、プログラム番号ＰＮK-1 をロードすると、このデータの桁を１つ上位に移動させて最下位桁に“０”を挿入する。この結果、レジスタ３０内のデータは、プログラム番号ＰＮK-1 を２倍にした値（２×ＰＮK-1 ）となる。
【０４３０】
こうして、このレジスタ３０内のデータ（２×ＰＮK-1 ）が第１回目のＲＯＭアドレスとしてスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からはこのＲＯＭアドレス（２×ＰＮK-1 ）で指定される記憶位置のデータつまりアドレスポインタＶK-1 の上位バイトＶ(K-1)Hがデータバス１８上に読み出される（ステップＳ2 ）。
【０４４０】
ＲＯＭ１０より読み出されたアドレスポインタＶK-1 の上位バイトＶ(K-1)Hはプログラムローダ１２内のレジスタ３２にロードされる。
【０４５０】
次に、制御部４０は、レジスタ３０の内容を１つインクリメントし、２×ＰＮK-1 ＋１とする。こうして、このレジスタ３０内のデータ（２×ＰＮK-1 ＋１）が第２回目のＲＯＭアドレスとしてスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からはこのＲＯＭアドレス（２×ＰＮK-1 ＋１）で指定される記憶位置のデータつまりアドレスポインタＶK-1 の下位バイトＶ(K-1)Lがデータバス１８上に読み出される（ステップＳ4 ）。
【０４６０】
ＲＯＭ１０より読み出されたアドレスポインタＶK-1 の下位バイトＶ(K-1)Lはプログラムローダ１２内のレジスタ３２にロードされる。
【０４７０】
この際、先にロードされている上位バイトＶ(K-1)Hを８桁だけ上位側に移動して、つまり定数２５６を乗算してから、その下位桁に下位バイトＶ(K-1)Lをセット（加算）することで、２バイトのアドレスポインタＶK-1 が得られる（ステップＳ5 ）。このアドレスポインタＶK-1 は、第Ｋ組のプログラムデータが格納されている記憶場所の先頭記憶番地を示すアドレスである。
【０４８０】
一方、制御部４０はアドレス切換スイッチ３８をレジスタ３２側に切り換えておく。こうして、レジスタ３２よりアドレスポインタＶK-1 が第３回目のＲＯＭアドレスとしてスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からは第Ｋ組のプログラムデータの先頭データつまり第１の転送先を指示する転送先識別データＤＦＣ0 が読み出される（ステップＳ6 ）。
【０４９０】
ＲＯＭ１０より読み出された転送先識別データＤＦＣ0 は、プログラムローダ１２内のレジスタ３４にロードされ、このレジスタ３４の内容から制御部４０は第１の転送先となるべき機能回路ＦＣを認識し、その機能回路に対する書き込み制御信号ＷＥをアクティブにする。
【０５００】
制御部４０は、今回のＲＯＭ読み出しの直後にレジスタ３２の内容を１つインクリメントする（ステップＳ6 ）。したがって、次に、レジスタ３２より先頭記憶番地ＶK-1 の１つ後のアドレス（ＶK-1 ＋１）がＲＯＭアドレスとしてスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からは第１の転送先に対するプログラムデータ長ＬＫ0 の上位バイトＬＫ0Hがデータバス１８上に読み出される（ステップＳ8 ）。この直後に、制御部４０は、レジスタ３２の値を１つインクリメントとする。
【０５１０】
なお、ＲＯＭ１０より読み出された上記プログラムデータ長ＬＫ0 の上位バイトＬＫ0Hは、プログラムローダ１２内のレジスタ３６にロードされる。
【０５２０】
次は、レジスタ３２よりアドレス（ＶK-1 ＋２）がスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からは第１の転送先に対するプログラムデータ長ＬＫ0 の下位バイトＬＫ0Lが読み出される（ステップＳ9 ）。この直後に、制御部４０は、レジスタ３２の値を１つインクリメントする。
【０５３０】
今回読み出されたプログラムデータ長ＬＫ0 の下位バイトＬＫ0Lもレジスタ３６にロードされる。この際、レジスタ３６内で、先にロードされている上位バイトＬＫ0Hを８桁だけ上位側に移動して、つまり定数２５６を乗算してから、その下位桁に下位バイトＬＫ0Lをセット（加算）することで、２バイトのプログラムデータ長ＬＫ0 が得られる（ステップＳ10）。制御部４０は、レジスタ３６の内容を読み取ることができる。
【０５４０】
次に、レジスタ３２よりアドレス（ＶK-1 ＋３）がスイッチ３８を介してアドレスバス１６上に出力される。このアドレスを受けてＲＯＭ１０からは、第１の転送先となる機能回路においてプログラムデータの最初の格納先を示す「転送先番地」ＡＤ0 の上位バイトＡＤ0Hがデータバス１８上に読み出される（ステップＳ12）。
【０５５０】
ＲＯＭ１０よりデータバス１８上に読み出された転送先番地ＡＤ0 の上位バイトＡＤ0Hは、直接内部バス２０上に転送され、このバス２０を通って第１の転送先であるライトイネーブル状態の機能回路ＦＣにロードされる。この際、制御部４０は、信号識別線２２上の信号識別情報ＡＤＴをアドレス送信モードを示す論理値たとえばＨレベルとする。また、制御部４０は、レジスタ３２の内容を１つインクリメントしてＲＯＭ読み出しアドレスを１つ先に更新するとともに、レジスタ３６の内容を１つディクリメントして残りのプログラムデータ長ＬＫを１つ減少させる（ステップＳ12）。
【０５６０】
次の読み出しサイクルでは、レジスタ３２よりアドレス（ＶK-1 ＋４）がスイッチ３８を介してアドレスバス１６上に出力され、ＲＯＭ１０からは転送先番地ＡＤ0 の下位バイトＡＤ0Lが読み出される（ステップＳ11，Ｓ12）。そして、この読み出された転送先番地ＡＤ0 の下位バイトＡＤ0Lも、前回のサイクルと同様に、内部バス２０を介して第１の転送先である機能回路ＦＣにロードされる。
【０５７０】
次の読み出しサイクルでは、レジスタ３２よりアドレス（ＶK-1 ＋５）がスイッチ３８を介してアドレスバス１６上に出力され、このアドレスを受けてＲＯＭ１０からは第１の転送先に対応する第１グループのプログラムデータの最初の１バイトＤa(1)が読み出される。
【０５８０】
この１バイトのプログラムデータＤa(1)も、内部バス２０を介して第１の転送先である機能回路ＦＣにロードされる。この際、制御部４０は、信号識別情報ＡＤＴをデータ送信モードであることを示す論理値たとえばＬレベルとする。これによって、この１バイトのプログラムデータＤa(1)は、当該機能回路内で先にロードされている転送先番地ＡＤ0 で指示される格納番地にロードされることになる。
【０５９０】
それ以後も、上記と同様な読み出しサイクルが繰り返され、各サイクル毎にＲＯＭ１０より第１の転送先に対応する第１グループのプログラムデータが１バイトずつ読み出されては、内部バス２０を介して第１の転送先の機能回路ＦＣに転送され、その機能回路内の各対応する記憶場所にロードされる。
【０６００】
制御部４０は、上記の読み出しサイクルが行われる度にレジスタ３２内のアドレス値を１つインクリメントするとともに、レジスタ３６内の残りのプログラムデータ長ＬＫを１つディクリメントする。
【０６１０】
そして、レジスタ３６でＬＫが０に達したならば、そこで第１の転送先に対するプログラムデータの転送は終了したことを認識し、次のサイクルでＲＯＭ１０より読み出したデータを次の（第２の）転送先を識別するための転送先識別データＤＦＣ1 であると判断して、このデータＤＦＣ1 をレジスタ３４にセットする（ステップＳ11，Ｓ6 ）。
【０６２０】
以後、上記した第１の転送先に対する動作と同様の動作が繰り返される（ステップＳ6 →Ｓ7 →Ｓ8 →Ｓ9 →Ｓ10→Ｓ11→Ｓ12→……→Ｓ11→Ｓ6 ）。そして最後の転送先に対しても必要な全てのプログラムデータが転送され、その直後のＲＯＭアクセスで終了指示データＤＦend を読み出すと、この時点でこの第Ｋ組のプログラムデータに関する一切の処理を終了する（ステップＳ7 ，Ｓ1 ）。
【０６３０】
図７に、各機能回路ＦＣにおいてプログラムローダ１２からのプログラムデータをロードするための回路構成例を示す。
【０６４０】
各機能回路ＦＣは、内部バス２０上からアドレス信号およびデータをそれぞれ受信するアドレス受信部５０およびデータ受信部５２を備えている。
【０６５０】
アドレス受信部５０は、アドレスレジスタ５０ａを有しており、当該機能回路ＦＣ内においてプログラムデータを保持する１個または複数個のメモリまたはレジスタＲｅｇ0 ，Ｒｅｇ1 ，……ＲｅｇM の記憶領域にバイト単位でアドレス指定するためのアドレスをこのアドレスレジスタ５０ａに格納して管理する。
【０６６０】
データ受信部５２は、受信したデータを一時的に保持するデータバッファからなり、そのデータ出力端子は各メモリまたはレジスタＲｅｇ0 ，Ｒｅｇ1 ，……ＲｅｇM のデータ入力端子に接続されている。
【０６７０】
プログラムローダ１２からのプログラムデータの分配に際しては、上記したように、先ず信号識別線２２上の信号識別情報ＡＤＴがＨレベルに変化することでアドレス送信モードであることが分かり、このモード下で伝送されてきた最初の２バイトのデータＡＤH ，ＡＤL を「転送先番地」ＡＤとしてアドレス受信部５０が受信する。アドレス受信部５０は、受信した転送先番地ＡＤをアドレスレジスタ５０ａに格納する。
【０６８０】
次に、信号識別情報ＡＤＴがＬレベルに変わり、それ以後に内部バス２０を介して伝送されたきたデータは、データ受信部５２が受信する。そうすると、アドレス受信部５０は、アドレスレジスタ５０ａに格納してあるアドレスでアドレス指示されるメモリ番地またはレジスタ番地をライトイネーブル状態にする。これにより、データ受信部５２に受信されているデータがその選択された番地に書き込まれる。この直後に、アドレス制御部５０は、アドレスレジスタ５０ａの内容を１つインクリメントして、書き込みアドレスの値を１つ更新する。
【０６９０】
このようにして、プログラムローダ１２より転送されたきた１バイト単位のデータは、データ受信部５２を介して各対応するメモリまたはレジスタの記憶番地にロードされる。
【０７００】
なお、図７の構成例は一例であり、種々の変形が可能である。特に、各機能回路ＦＣ内で所望のメモリまたはレジスタ番地を選択またはアドレス指定する方法には従来周知の種々の回路構成を採用できる。
【０７１０】
上記したように、本実施例のシステムでは、複数の動作モードまたはアプリケーションにそれぞれ対応した複数組のプログラムデータをＲＯＭ１０内の所定の記憶領域に組別に格納して保持するとともに、各組のプログラムデータの記憶番地を指示するアドレスポインタをＲＯＭ１０内の予め設定した記憶番地に格納しておき、外部のマイクロプロセッサ１４より所望の組のプログラムデータを指定するためにいずれか１つのアドレスポインタに対応するプログラム番号ＰＮが与えられると、プログラムローダ１２がそのプログラム番号ＰＮを基にＲＯＭ１０から対応アドレスポインタを読み出し、このアドレスポインタから目的の組のプログラムデータの格納場所を割り出すようにしている。
【０７２０】
したがって、マイクロプロセッサ１４は、各動作モードに応じたプログラム番号ＰＮだけを管理すればよい。ＲＯＭ１０に格納される各組のプログラムデータの記憶場所が変更された場合、これに伴って変更すべきものはＲＯＭ１０内のアドレスポインタの値だけであり、ＲＯＭ１０の外部では何の変更や修正も一切不要である。特に、マイクロプロセッサ１４のソフトウェアを変更する必要は一切ない。
【０７３０】
また、本実施例のシステムでは、ＲＯＭ１０に対してマイクロプロセッサ１４ではなく、ハードウェア回路だけで構成可能なプログラムローダ１２によってプログラムデータの読み出しと各機能回路への転送を行うので、最小限のステップ数で高速にプログラムデータのロード処理を実行することができる。
【０７４０】
ところで、上記したように、プログラムローダ１２もこのシステムにおける機能回路ＦＣの１つに加えることが可能である。このためには、たとえば図７に示すような回路を制御部４０に備えればよい。制御部４０は、その内蔵の設定値レジスタＲｅｇにロードされる各種設定値にしたがって上記プログラムロード動作の特性をプログラマブルに変更することができる。
【０７５０】
この方式の好適な例として、以下に説明するようにＲＯＭ読み出しのアクセス時間（速度）をプログラマブルに制御する方法がある。
【０７６０】
市場で入手可能なＲＯＭは、アクセス時間の短い（速い）ものもあれば長い（遅い）ものもあり、そのばらつきの度合いはかなり大きい。この実施例のシステムにおいて、ＲＯＭ１０は着脱自在に交換できるものが好ましく、その場合には低速型のＲＯＭも高速型のＲＯＭも接続され得る。全てのＲＯＭに対して一定のアクセス時間で対応しようとすれば、規格上の最低速度に合わせる外ない。しかし、それでは、高速型のＲＯＭが接続された場合にも、規格よりも格段に遅い速度でメモリアクセスを行うことになり、プログラムデータのロード処理の効率は低下する。
【０７７０】
そこで、本発明の一実施例においては、システムにおける機能回路の１つにプログラムローダ１２を加えるとともに、ＲＯＭ１０に格納される各組のプログラムデータにおいてこのプログラムローダ１２に対応するグループのプログラムデータの中に当該ＲＯＭ１０で設定されている規格上のアクセス時間を表すデータも入れておく。そして、プログラムローダ１２内の制御部４０においては、ＲＯＭアクセス時間の初期値として実用上最も低速のアクセス時間を設定しておく。なお、プログラムローダ１２を第１の転送先と設定しておくのが望ましい。
【０７８０】
かくして、プログラムローダ１２は、マイクロプロセッサ１４からのプログラム番号ＰＮを受け取ると、上記最低速の設定アドレス時間でＲＯＭ１０からのプログラムデータの読み出しを開始する。
【０７９０】
上記した例では、アドレスポインタの読み出しから少なくとも転送先番地ＡＤの読み出しまでこの最低速の設定アドレス時間でメモリアクセスが行われる。したがって、どのような仕様アクセス時間を有するＲＯＭ１０に対しても、プログラムローダ１２からのアクセス速度が速すぎて読み出し不能となることはない。
【０８００】
そして、プログラムローダ１２は、ＲＯＭ１０よりこのＲＯＭ用の標準アクセス時間のデータを読み出して自己の設定値レジスタにロードすると、それ以降はアクセス速度をこの標準アクセス時間に切り換えて、この組のプログラムデータに関するロード処理を継続する。
【０８１０】
したがって、このＲＯＭ１０が高速型のＲＯＭである場合は、この切換時点から高速のメモリアクセスでプログラムデータの読み出しが行われることとなり、ロード処理の全所要時間が格段に短くて済む。また、このＲＯＭ１０が中速型のＲＯＭである場合は、この切換時点から中速のメモリアクセスでプログラムデータの読み出しが行われることとなり、それ相当に全ロード処理時間の短縮化をはかることができる。
【０８２０】
このようにして、ＲＯＭ１０にどのような仕様アクセス時間を有するＲＯＭが用いられても、そのＲＯＭの仕様速度に見合ったアクセス時間で安全確実にメモリアクセスを実行することができる。
【０８３０】
プログラムローダ１２において、上記のようなアクセス速度の切換を行うためには、たとえば図８に示すような設定値レジスタ６０およびプログラマブルカウンタ６２を制御部４０に設けてよい。上記したようなＲＯＭ１０の標準アクセス時間データＤt は、たとえば４ビットデータ（ｄ3,ｄ2,ｄ1,ｄ0 ）として設定値レジスタ６０の所定のフィールドＦＤにロードされ、ここからプログラマブルカウンタ６２のプログラム入力端子に設定値Ｎとして与えられる。
【０８４０】
プログラマブルカウンタ６２は、最高速度のアクセス時間に対応する基準動作クロックＣＫを入力し、プログラム入力端子に受け取る設定値Ｎに対して（１６−Ｎ）進で基準動作クロックＣＫ0 を分周するカウンタとして動作する。プログラムローダ１２内の各部、特に制御部４０は、プログラマブルカウンタ６２より出力されるクロックＳＣＫN の速度で動作する。
【０８５０】
ＲＯＭ読み出しの開始時点では、設定値レジスタ６０のフィールドＦＤに初期値「０」がセットされており、つまり（ｄ3,ｄ2,ｄ1,ｄ0 ）が（０，０，０，０）であり、プログラマブルカウンタ６２のプログラム入力端子には設定値「０」が与えられている。これにより、プログラマブルカウンタ６２は、１６進カウンタとして動作し、基準動作クロックＣＫの１／１６の速度を有するクロックＳＣＫ0 を出力する。したがって、プログラムローダ１２は、この最も低速のクロックＳＣＫ0 に応じたアクセス時間（たとえば５００ナノ秒）でＲＯＭ１０にアクセスすることになる。
【０８６０】
上記のようにして、ＲＯＭ１０からの標準アクセス時間データＤt が設定値レジスタ６０のフィールドＦＤにロードされ、この値がたとえば「１５」のとき、つまり４ビットデータ（ｄ3,ｄ2,ｄ1,ｄ0 ）が（１，１，１，１）のときは、プログラマブルカウンタ６２のプログラム入力端子に設定値「１５」が与えられ、プログラマブルカウンタ６２の出力端子より基準動作クロックＣＫと同速度のクロックＳＣＫ15が出力される。これにより、プログラムローダ１２は、この最も高速のクロックＳＣＫ15（ＣＫ）に応じたアクセス時間（たとえば５０ナノ秒）でＲＯＭ１０にアクセスすることになる。
【０８７０】
図１０に、この実施例によるシステムの具体的な応用例の１つとして画像処理プロセッサの回路構成を示す。
【０８８０】
この画像処理プロセッサは、処理されるべき画像データとしてディジタルの映像信号ＶＳを外部より取り込む入力部７０と、画像データを走査線単位で入力、処理および出力するＳＶＰ(Scan-line Video Processor）７２と、画像データを走査線単位で書き込みおよび読み出す画像メモリ７４と、処理後の画像データを外部に出力する出力部７６と、これら入力部７０、ＳＶＰ７２、画像メモリ７４および出力部７６を相互に接続するデータ・パス７８とを有している。
【０８９０】
また、この画像処理プロセッサには、ＳＶＰ７２をＳＩＭＤ (Single-Instruction  Multiple-Data)型のディジタル信号処理部として動作させるため、ＳＶＰ７２用のプログラムを保持するＲＡＭからなる命令メモリ８０と、この命令メモリ８０より命令を１つずつ取り出してこの命令に対応したマイクロ命令等の制御信号をＳＶＰ７２に与える命令発生回路（ＩＧ）８２とが設けられている。
【０９００】
さらに、この画像処理プロセッサには、入力部７０、ＳＶＰ７２、画像メモリ７４、出力部７６およびＩＧ８２に所要のタイミング制御信号を供給するタイミング制御ユニット（ＴＣＵ）８４も設けられている。
【０９１０】
この画像処理プロセッサにおいて、これらの入力部７０、ディジタル信号処理部（７２，８０，８２）、画像メモリ７４、出力部７６およびＴＣＵ８４は、それぞれ所与のプログラムデータにしたがって動作するようになっており、図１の機能回路ＦＧ0 ，ＦＧ1 ，…ＦＧn に相当する。
【０９２０】
そして、この画像処理プロセッサ内の各部つまり入力部７０、ＳＩＭＤ型ディジタル信号処理部（７２，８０，８２）、画像メモリ７４、出力部７６およびＩＧ８２内のプログラムデータ保持部（メモリ、レジスタ等）に内部バス２０を介してＲＯＭ１０内の所望のプログラムデータを分配するためのプログラムローダ１２およびＩ2 Ｃバス・インタフェース回路４２も含まれている。また、図示しないが、プロセッサ内の各部に所要のクロックを供給するためのたとえばＰＬＬ回路からなるクロック回路も含まれている。
【０９３０】
ＳＶＰ７２はデータ入力レジスタ（ＤＩＲ）８６、プロセッシング・エレメント部（処理部）８８およびデータ出力レジスタ（ＤＯＲ）９０の３層構造からなっている。
【０９４０】
ＤＩＲ８６は、ＴＣＵ８４からのタイミング制御信号とクロック回路からのクロックとＩＧ８２からのアドレス（ADDRESS)とにしたがって動作し、たとえば最大３チャンネル分（たとえば４８ビット）までの画像データＤ1 〜ＤN を走査線単位で繰り返し入力する。
【０９５０】
処理部８８は、１水平走査線上の画素数Ｎに等しい数（たとえば８６４個）のプロセッシング・エレメントＰＥ1 〜ＰＥn を並列配置（接続）してなる。これらのプロセッシング・エレメントＰＥ1 ，ＰＥ2 ，…ＰＥn は、ＩＧ８２からのアドレス（ADDRESS)およびマイクロ命令（MICROINSTRUCTION）とクロック回路からのクロックとにしたがって並列動作し、各々対応する画素データＤ1 ，Ｄ2 ，…ＤN について同一の画像処理演算を１水平走査期間内に実行する。
【０９６０】
ＤＯＲ９０は、ＴＣＵ８４からの制御信号とクロック回路からのクロックとＩＧ８２からのアドレス（ADDRESS)とにしたがって動作し、１水平走査期間毎にプロセッシング・エレメントＰＥ1 〜ＰＥN からの演算処理結果のデータを最大３チャンネル分までの水平走査線１本の画像データＤ1'〜ＤN'に揃えて出力する。
【０９７０】
ＤＩＲ８６、処理部８８およびＤＯＲ９０にそれぞれ供給されるクロックは互いに非同期であってよい。また、ＤＩＲ８６から処理部８８へのデータ転送、および処理部８８からＤＯＲ９０へのデータ転送は、それぞれ水平ブランキング期間内に行われる。
【０９８０】
このように、ＤＩＲ８６、処理部８８およびＤＯＲ９０によりそれぞれ１水平走査線分のデータ入力、並列演算処理およびデータ出力がパイプライン方式で非同期かつ並列的に実行され、リアルタイムな画像処理が行われる。
【０９９０】
なお、このＳＩＭＤ型ディジタル信号処理部の命令メモリ８０には、プログラムローダ１２より内部バス２０を介して所望のプログラムデータ（命令）がロードされる。
【１０００】
画像メモリ７４は、画像データを一時的に記憶する高速メモリとしてＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）を有するとともに、データ書き込み動作とデータ読み出し動作とを並列的かつ独立的に行うための複数の入力バッファおよび出力バッファを含む単一のインタフェース部（ＳＤＲＡＭインタフェース部）を有している。
【１０１０】
このＳＤＲＡＭインタフェース部の制御部は、設定値レジスタを有し、プログラムローダ１２よりこのレジスタにロードされたプログラムデータとＴＣＵ８４からのタイミング制御信号とにしたがって各入力バッファおよび出力バッファにおける書き込み／読み出しの制御、およびＳＤＲＡＭに対するメモリアクセスを制御する。
【１０２０】
ＴＣＵ８４は、プログラムメモリやシーケンスメモリ等を有し、これらのメモリにプログラムローダ１２からのプログラムデータを格納する。そして、この格納しているプログラムデータに基づき、入力画像信号より抽出された垂直同期信号、水平同期信号および画素クロックに同期してシステム内の各部に所要のタイミング制御信号を供給する。
【１０３０】
この画像処理プロセッサでは、ＳＩＭＤ型のディジタル信号処理部（特にＳＶＰ７２）と書き込み動作および読み出し動作を並列的かつ独立的に実行できる画像メモリ７４とをデータパス７８を介して相互に接続し、プロセッサ内の各部（機能回路）をプログラムローダ１２よりロードされるプログラムデータにしたがってプログラマブルに動作させるようにしたので、小規模な回路構成で高度かつ多種多様な画像処理を実現することができる。
【１０４０】
上記した実施例では、本発明のシステムにおいてプログラムデータを蓄積しておくためのプログラムメモリにＲＯＭを用いたが、ＲＡＭ（Random Access memory）で代用できることはもちろんである。また、このようなプログラムメモリ内に格納される各種データ（アドレスポインタ、プログラムデータ等）の格納位置または記憶場所、単位データ長等は自由に選択可能である。プログラムメモリより読み出したプログラムデータを各機能回路に転送する方法には、従来周知の任意の方式を採用することができる。
【１０５０】
上記した実施例では、プログラム指定情報として、アドレスポインタの記憶番地を直接的に表示するプログラム番号を採用するため、簡単なデータ操作で対応するアドレスポインタを容易に検索できるようになっている。しかし、プログラムローダが所要のデコード機能を備えるものであれば、プログラム番号（アドレス値）ではなく適当なコードをプログラム指定情報とすることも可能である。また、上記実施例では、プログラムローダに対するプログラム指定情報をマイクロプロセッサ１４より与えたが、任意の回路より与えることが可能である。
【１０６０】
また、上記した実施例では、各アドレスポインタが各対応する組のプログラムデータの記憶番地を直接表示するものであった。しかし、間接な仕方の対応関係も可能であり、たとえば各アドレスポインタに一定の演算を施すことで各対応する組のプログラムデータの記憶番地を割り出すことも可能である。
【１０７０】
【発明の効果】
以上説明したように、本発明のプログラムロード装置によれば、プログラムメモリに蓄積しておくプログラムデータのデータ長または記憶番地に変更が生じてもソフトウェアの手直しを必要とすることなく、しかも高速かつ効率的にプログラムデータのロード処理を行うことができる。
【図面の簡単な説明】
【図１】本発明のプログラムデータロード方法および装置を適用したシステムの基本構成を示すブロック図である。
【図２】実施例のシステムにおいてプログラムメモリ（ＲＯＭ）のメモリ領域に格納される配置の一例を示す図である。
【図３】実施例のシステムにおいてプログラムメモリ（ＲＯＭ）に格納される各組のプログラムデータの内容および格納配置の一例を示す図である。
【図４】実施例のシステムにおけるプログラムローダの回路構成例を示すブロック図である。
【図５】実施例のシステムにおけるプログラムローダの制御部の動作を説明するためのフローチヤート図である。
【図６】実施例のシステムにおけるプログラムローダの制御部の動作を説明するためのブロック図である。
【図７】実施例のシステムにおける各機能回路に備えられるプログラムデータロード部の構成例を示すブロック図である。
【図８】実施例のシステムにおいてプログラムローダに組み込み可能なメモリアクセス時間切換部の構成例を示すブロック図である。
【図９】図９のメモリアクセス時間切換部で得られる動作クロックの波形を示す波形図である。
【図１０】実施例のシステムの具体的な応用例の１つである画像処理プロセッサの回路構成を示すブロック図である。
【符号の説明】
１０    ＲＯＭ（プログラムメモリ）
１２    プログラムローダ
１４    マイクロプロセッサ
１６    アドレスバス
１８    データバス
２０    内部バス
２２    バス信号識別線
２４    書き込み制御線
ＦＣ0 ，ＦＣ1 ，…ＦＣn     機能回路
３０，３２，３４，３６    レジスタ
３６    アドレス切換スイッチ
４０    制御部
【図１】
0004060414.tif 000002
【図２】
0004060414.tif 000003
【図３】
0004060414.tif 000004
【図４】
0004060414.tif 000005
【図５】
0004060414.tif 000006
【図６】
0004060414.tif 000007
【図７】
0004060414.tif 000008
【図８】
0004060414.tif 000009
【図９】
0004060414.tif 000010
【図１０】
0004060414.tif 000011