説明

信号制御装置及び信号制御方法

【課題】2つのCPUがデュアルポートRAMに同じタイミングで読出し又は書込みを行う場合に、データ信号を正しく読出すこと。
【解決手段】信号制御装置4は、第1及び第2のCPUがデュアルポートRAM5に書き込むアドレスの衝突を検出するアドレス衝突検出部14を備える。また、アドレスの衝突が検出された場合に、デュアルポートRAM5に書込みを行う第1又は第2のCPUのいずれかに設けられたバッファメモリに、衝突したアドレスから読出したデータ信号を保存する制御を行う制御部13を備える。また、第1及び第2のCPUの読出し可能状態又は書込み可能状態に応じて、データ信号の読出し元であるレジスタ又はバッファメモリを切替えて、読出し可能状態となるCPUに読出した前記データ信号を出力するマルチプレクサ15a,15bを備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、例えば、デュアルポートRAMに同時アクセスする場合に適用して好適な信号制御装置及び信号制御方法に関する。
【背景技術】
【0002】
従来、2つのCPUがデータにアクセスするデュアルポートRAMが用いられている。しかし、2つの異なるCPUがデュアルポートRAMに対して読出し/書込みアクセスを同時に行うと、読み出されるデータが保証されない場合があった。例えば、デュアルポートRAMに読出しと書込みのアクセス衝突が起こると、それぞれのポートのアクセスタイミングの違いにより、データを書き換えている途中で読み出してしまう危険性がある。その場合、不定値を読み出す可能性がある。このため、2つのCPUがデュアルポートRAMに同時にアクセスしても、正しくデータを読出せるようにするため、以下に例示するように様々な対策が採られていた。
【0003】
(1)それぞれのCPUで読出しと書込みが重ならない様にタイミングを取り決めしておくことで衝突を回避する。
(2)他方のCPUがデュアルポートRAMに書込みしている間、Busy信号などを出力して一方のCPUの読出し動作を待つ。
(3)2組のデュアルポートRAMを用意して、それぞれのアクセスを分け、バスアクセスの無いときにRAMの内容をマージすることで衝突を回避する(特許文献1)。
(4)書込みデータをラッチする(特許文献2〜4)
【先行技術文献】
【特許文献】
【0004】
【特許文献1】実開平5−23263号公報
【特許文献2】特開平6−19832号公報
【特許文献3】特開平4−313132号公報
【特許文献4】特開平3−292695号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、上述した(1),(2)に示した技術を用いて、アクセスタイミングの取り決めを行ったり、CPUを待たせたりすると、CPUに制約や時間の無駄が生じてしまったり、CPUがアクセスできるタイミングが制限されたりすることがあった。また、(3)に示した技術を用いると、マージするためのリソースを大きく必要とするため、製造コストが高くなる。
【0006】
また、(4)に示した技術を用いると、書込みデータをラッチしてデュアルポートRAMに後書きする必要があり、後書き用回路を組み込まなければならない。このため、デュアルポートRAMを制御するための回路規模が増加するだけでなく、その制御も煩雑となる。また、”Write Enable”状態が終了した後もアドレスと書込みデータを保持しなければならないため、極めて短いサイクルでの連続した書込みには不向きである。
【0007】
本発明はこのような状況に鑑みて成されたものであり、2つのCPUがデュアルポートRAMに同じタイミングで読出し又は書込みを行う場合に、データ信号を正しく読出すことを目的とする。
【課題を解決するための手段】
【0008】
本発明は、2つのポートにそれぞれ接続される第1及び第2のCPUによって、データ信号の読出し又は書込みが所定の動作タイミングで行われるデュアルポートRAMを用いる。
ここで、第1のCPUがデュアルポートRAMからデータ信号の読出しを行うアドレスと、第2のCPUがデュアルポートRAMにデータ信号の書込みを行うアドレスの衝突を検出する。
また、第1のCPUがデュアルポートRAMから読出したデータ信号を第1の記憶部に記憶する。合わせて、アドレスの衝突が検出され、第1のCPUが読出し可能状態でない場合に、第2のCPUが、書込み可能状態であるか否かにかかわらず、第2のCPUが、デュアルポートRAMにデータ信号を書き込むアドレスから読出したデータ信号を第2の記憶部に記憶する。
そして、アドレスの衝突が検出されず、第1のCPUが読出し可能状態である場合に、第1の記憶部からデータ信号を読出す。また、アドレスの衝突が検出され、第1のCPUが読出し可能状態でない場合に、第2のCPUが、書込み可能状態であるか否かにかかわらず、第1の記憶部からデータ信号を読出す。一方、アドレスの衝突が検出され、第1のCPUが読出し可能状態でなく、第2のCPUが書込み可能状態である場合に、第2の記憶部からデータ信号を読出す。このようにして、第1のCPUが接続されるポートに出力する読出し元の切替えを行って、読出し可能状態となる前記第1のCPUに読出した前記データ信号を出力する。
【0009】
このようにしたことで、第1及び第2のCPUが同時にデュアルポートRAMにデータ信号の読出し又は書込みを行う際に、書込みアドレスと読出しアドレスが衝突しても、デュアルポートRAMから正しくデータ信号を読出すことが可能となる。
【発明の効果】
【0010】
本発明によれば、第1及び第2のCPUが同時にデュアルポートRAMに対して、データ信号を書込み又は読出す場合に、第1のCPUの読出し可能状態と、第2のCPUの書込み可能状態に基づいて、データ信号の読出し元の切替えを行う。このため、各CPUの動作速度によらず、任意のタイミングで同じアドレスのデータにアクセスすることができる。このとき、読出しを行うCPUは、書込みを行うCPUの処理が完了するまで待機する必要がないため、高速にデータ信号を読出すことができるという効果を奏する。
【図面の簡単な説明】
【0011】
【図1】本発明の一実施の形態における映像処理システムの内部構成例を示すブロック図である。
【図2】本発明の一実施の形態における信号制御装置の内部構成例を示すブロック図である。
【図3】本発明の一実施の形態における第1のCPUの読出しと、第2のCPUの書込みが同じタイミングで発生した場合におけるタイミングチャートである。
【図4】本発明の一実施の形態における第1のCPUの読出し中に、第2のCPUの書込みが衝突した場合におけるタイミングチャートである。
【図5】本発明の一実施の形態における第2のCPUの書込み中に、第1のCPUの読出しが衝突した場合におけるタイミングチャートである。
【図6】本発明の一実施の形態における信号制御方法の例を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、発明を実施するための最良の形態(以下実施の形態とする。)について説明する。なお、説明は以下の順序で行う。
1.第1の実施の形態(デュアルポートRAMのアクセス制御:2つのCPUが同時にデュアルポートRAMを読出し/書込みする例)
【0013】
<1.第1の実施の形態>
[デュアルポートRAMのアクセス制御:2つのCPUが同時にデュアルポートRAMを読出し/書込みする例]
【0014】
以下、本発明の一実施の形態について、添付図面を参照して説明する。本実施の形態では、一方のCPUがデュアルポートRAMからデータ信号(以下、「データ」とも呼ぶ。)を読出し、一方のCPUがデータを書き込む場合に、読出されるデータが不正な内容とならないように制御を行う信号制御装置4に適用した例について説明する。
【0015】
図1は、映像処理システム10の内部構成例を示す。
カメラ1が撮像した映像を処理する映像処理システム10は、被写体を撮像するカメラ1と、映像を記録する記録装置3を備える。記録装置3は、映像を記録するために不図示のビデオテープ、HDD等の大容量の記録媒体を備える。カメラ1は、カメラ1が備える不図示の処理ブロックの動作を制御し、記録装置3に各種の制御信号を出力したり、データを読出したりする第1のCPU2を備える。
【0016】
記録装置3は、記録装置3が備える不図示の処理ブロックの動作を制御する第2のCPU6を備える。また、記録装置3は、第1のCPU2と第2のCPU6の間でデータを受け渡すために使用するデュアルポートRAM5と、デュアルポートRAM5にアクセスする第1のCPU2と第2のCPU6のアクセス制御を行う信号制御装置4を備える。
【0017】
カメラ1と記録装置3は、お互いに内蔵する第1のCPU2と第2のCPU6を用いて、デュアルポートRAM5に記録したタイムコード等のデータを共有している。本例では、第1のCPU2は、約33MHzで動作し、16ビットバスでデータを伝送する。一方、第2のCPU6は、約74MHzで動作し、8ビットバスでデータを伝送する。そして、デュアルポートRAM5には、2つのポートにそれぞれ接続される第1及び第2のCPUによって、データ信号の読出し又は書込みが所定の動作タイミングで行われる。
【0018】
信号制御装置4は、第1のCPU2と第2のCPU6がデュアルポートRAM5に要求する読出しと書込みの参照するアドレスが衝突した時点で、書込みに先立ち該当するアドレスのデータを読出し、バッファする機能を有する。そして、信号制御装置4は、必要に応じてこのバッファしたデータを読出させるか、デュアルポートRAM上のデータを読出させるかを切り替えることで、CPUが不定値を読出ししてしまうことを防ぐものである。
【0019】
図2は、信号制御装置4の内部構成例を示す。
【0020】
[第1のCPU2側]
信号制御装置4は、第1のCPU2側の読出し処理に用いる処理ブロックとして、第1のCPU2がデュアルポートRAM5から読出したデータ信号を一時的に保持する第1の記憶部として、レジスタ11aを備える。また、信号制御装置4は、アドレスの衝突が検出された場合に、第2のCPU6が、デュアルポートRAM5にデータ信号を書き込むアドレスから読出したデータ信号を記憶する第2の記憶部として、バッファメモリ12aを備える。また、信号制御装置4は、レジスタ11a又はバッファメモリ12aのいずれかに記憶されたデータ信号を選択し、この選択したデータ信号に切替えて出力する切替え部として、マルチプレクサ15aを備える。
【0021】
[第2のCPU6側]
また、信号制御装置4は、第2のCPU6側の読出し処理に用いる処理ブロックとして、第2のCPU6がデュアルポートRAM5から読出したデータ信号を一時的に保持する第1の記憶部として、レジスタ11bを備える。また、信号制御装置4は、アドレスの衝突が検出された場合に、第1のCPU2が、デュアルポートRAM5にデータ信号を書き込むアドレスから読出したデータ信号を記憶する第2の記憶部として、バッファメモリ12bを備える。また、信号制御装置4は、レジスタ11b又はバッファメモリ12bのいずれかに記憶されたデータ信号を選択し、この選択したデータ信号に切替えて出力する切替え部として、マルチプレクサ15bを備える。
【0022】
また、信号制御装置4は、レジスタ11a,11b、バッファメモリ12a,12b、マルチプレクサ15a,15bのデータ信号の取込みや、出力するデータ信号の切替えを制御する制御部13を備える。また、第1のCPU2がデュアルポートRAM5からデータ信号の読出しを行うアドレスと、第2のCPU6がデュアルポートRAM5にデータ信号の書込みを行うアドレスの衝突を検出するアドレス衝突検出部14を備える。
【0023】
次に、信号制御装置4内の各部の動作例を説明する。
ここでは、第1のCPU2がデュアルポートRAM5からデータ信号を読出し、第2のCPU6がデュアルポートRAM5にデータ信号を書き込む場合を想定する。
このとき、レジスタ11aは、第1のCPU2がデュアルポートRAM5から読出したデータ信号を記憶する。また、バッファメモリ12bは、第1のCPU2が読出し可能状態でない場合に、以下の動作を行う。即ち、バッファメモリ12bは、第2のCPU6が、書込み可能状態であるか否かにかかわらず、第2のCPU6が、デュアルポートRAM5にデータ信号を書き込むアドレスから読出したデータ信号を記憶する。
【0024】
マルチプレクサ15aは、アドレスの衝突が検出されず、第1のCPU2が読出し可能状態である場合に、レジスタ11aからデータ信号を読出す。また、マルチプレクサ15aは、アドレスの衝突が検出され、第1のCPU2が読出し可能状態でない場合に、第2のCPU6が、書込み可能状態であるか否かにかかわらず、レジスタ11aからデータ信号を読出す。一方、アドレスの衝突が検出され、第1のCPU2が読出し可能状態でなく、第2のCPU6が書込み可能状態である場合に、バッファメモリ12bからデータ信号を読出す。このようにして、第1のCPU2が接続されるポートに出力する読出し元の切替えを行って、読出し可能状態となる第1のCPU2に読出したデータ信号を出力する。
なお、第1のCPU2がデュアルポートRAM5にデータ信号を書込み、第2のCPU6がデュアルポートRAM5からデータ信号を読出す場合は、上述した動作は全て対に設けられた処理ブロックが行うこととなる。
【0025】
次に、第1のCPU2が読出し、第2のCPU6が書込みの場合における各部の処理例について、図3〜図5を参照して説明する。ただし、役割が逆の場合(第1のCPU2が書込み、第2のCPU6が読出し)は、レジスタやバッファメモリも反対側ものを使うだけで基本的な動作は同じである。以下の図3〜図5において、網掛け部分が衝突区間を表し、読出し又は書込みが行われるデータをデータ信号として表している。また、図3〜図5のタイミングチャートの時系列に沿って記した数字は、後述するフローチャート(図6参照)の各ステップに記した数字に対応する。
【0026】
アドレスが衝突するパターンとして、以下の3パターンに場合分けできる。
(1)第1のCPU2の読出しと第2のCPU6の書込みがクロックの立上がりから同じタイミングで発生した場合
(2)第1のCPU2の読出し中に第2のCPU6の書込みが衝突してきた場合
(3)第2のCPU6の書込み中に第1のCPU2の読出しが衝突した場合
【0027】
また、2つのCPUの速度としても以下の3パターンに場合分けできる。
(1)第1のCPU2、第2のCPU6の速度が同じ場合
(2)第1のCPU2が第2のCPU6よりも速い場合
(3)第1のCPU2が第2のCPU6よりも遅い場合
これらの各場合(9つの組合せ)について、それぞれアドレス衝突時の動作と、読出すデータ信号の例を説明する。
【0028】
<1.第1のCPU2の読出しと第2のCPU6の書込みが同じタイミングで発生した場合>
図3は、第1のCPU2の読出しと第2のCPU6の書込みが同じタイミングで発生した場合の例を示すタイミングチャートである。以下の説明で、“Read”、“Write”と記載した場合、実際にデュアルポートRAM5からデータを読出し又は書込みが始まるわけではない。この状態では、“Read”又は“Write”の準備が開始され、実際の読出し又は書込みは、”Read Enable”状態(読出し可能状態)又は”Write Enable”状態(書込み可能状態)になったときに行われる。
【0029】
ここで、マルチプレクサ15a,15bは、第1のCPU2がデュアルポートRAM5からデータ信号を読出すタイミングが第2のCPU6がデュアルポートRAM5にデータ信号の書込みを行うタイミングと同じ場合に、以下の処理を行う。このとき、アドレスの衝突が検出されたことが必要である。そして、マルチプレクサ15a,15bは、第1のCPU2と第2のCPU6の動作速度に応じて、マルチプレクサ15a,15bが出力するデータ信号を読出すレジスタ11a,11b及びバッファメモリ12a,12bを切替える。
【0030】
具体的には、マルチプレクサ15a,15bは、第1のCPU2と第2のCPU6の動作タイミングが等しい場合に、第1のCPU2が第1又は2の記憶部に書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より速い場合に、第1のCPU2がバッファメモリ12bに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より遅い場合に、第2のCPU6がバッファメモリ12bに書き込んだデータ信号を出力する。
以下に詳細な処理例を説明する。
【0031】
[1−1]第1のCPU2と第2のCPU6が同速度である場合(図3A)
(1)始めに、第1のCPU2は、レジスタ11aにデュアルポートRAM5から読出したデータをラッチする。
(2)次に、アドレス衝突検出部14は、アドレス衝突を検出する。
(3)アドレス衝突検出部14がアドレス衝突を検出すると、バッファメモリ12bにデュアルポートRAM5の出力をバッファする。
(4)第1のCPU2が”Read Enable”状態となるときには、レジスタ11a,バッファメモリ12bどちらを読み出しても安定したデータが得られる。
(5)第2のCPU6は、通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
【0032】
[1−2]第1のCPU2の動作速度が第2のCPU6よりも速い場合(図3B)
この場合、[1−1]と同様に処理が進む。しかし、第2のCPU6が”Write Enable”状態となる前に第1のCPU2は”Read Enable”状態となる。このため、マルチプレクサ15aは、第1のCPU2にレジスタ11aから読出したデータを出力する。この結果、第1のCPU2はレジスタ11aからデータを読み出すこととなる。
【0033】
[1−3]第1のCPU2の動作速度が第2のCPU6よりも遅いとき(図3C)
この場合、[1−1]と同様に処理が進む。しかし、第1のCPU2の読出し準備中に第2のCPU6は”Write Enable”状態となってしまう。このため、マルチプレクサ15aは、第1のCPU2にバッファメモリ12bから読出したデータを出力する。この結果、第1のCPU2はバッファメモリ12bからデータを読み出すこととなる。
【0034】
<2.第1のCPU2の読出し中に第2のCPU6の書込みが衝突した場合>
図4は、第1のCPU2の読出し中に第2のCPU6の書込みが衝突した場合の例を示すタイミングチャートである。
【0035】
ここで、マルチプレクサ15a,15bは、第1のCPU2がデュアルポートRAM5からデータ信号を読出す途中に、第2のCPU6がデュアルポートRAM5にデータ信号の書込みを行う場合に以下の処理を行う。このとき、アドレスの衝突が検出されたことが必要である。そして、マルチプレクサ15a,15bは、第1のCPU2と第2のCPU6の動作速度に応じて、マルチプレクサ15a,15bが出力するデータ信号を読出す第1及びバッファメモリ12bを切替える。
【0036】
具体的には、マルチプレクサ15a,15bは、第1のCPU2と第2のCPU6の動作タイミングが等しい場合に、第1のCPU2がレジスタ11aに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より速い場合に、第1のCPU2がバッファメモリ12bに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より遅く、第1のCPU2がデュアルポートRAM5からデータ信号を読出す準備を行っている場合に、第2のCPU6がバッファメモリ12bに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より遅く、第1のCPU2がデュアルポートRAM5からデータ信号を読出す場合に、第1のCPU2がレジスタ11aに書き込んだデータ信号を出力する。
以下に詳細な処理例を説明する。
【0037】
[2−1]第1のCPU2と第2のCPU6が同速度の場合(図4A)
この場合、”Read Enable”状態の前、途中を問わないものとする。
(1)レジスタ11aにデュアルポートRAM5から読出したデータをラッチする。
(2)アドレス衝突検出部14は、アドレスの衝突を検出する。
(3)アドレスの衝突を検出すると、バッファメモリ12bにデュアルポートRAM5の出力をバッファする。
【0038】
(4)レジスタ11aのラッチは”Write Enable”状態より前に終了するので、マルチプレクサ15aは第1のCPU2にレジスタ11aから読出したデータを出力する。この結果、第1のCPU2はレジスタ11aからデータを読み出すこととなる。
(5)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
【0039】
[2−2]第1のCPU2の動作速度が第2のCPU6よりも速い場合(図4B)
[2−1]と同様に処理が進む。しかし、第2のCPU6が”Write Enable”状態となる前に第1のCPU2は”Rea第1のCPU2が先に”Read Enable”状態に入る。このため、マルチプレクサ15aは第1のCPU2にレジスタ11aから読出したデータを出力する。
【0040】
[2−3]第1のCPU2の動作速度が第2のCPU6よりも遅い場合(図4C)
a.読出し準備中に書込みが発生した場合
(1),(2),(3)は[2−1]と同様の処理を行うため説明を省略する。
(4)第1のCPU2が”Read Enable”状態に入る前に、第2のCPU6が”Write Enable”状態に入るので、マルチプレクサ15aは第1のCPU2にバッファメモリ12bから読出したデータを出力する。この結果、第1のCPU2はバッファメモリ12bのデータを読み出すこととなる。
(5)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
(6)衝突が終了しても、第1のCPU2の読出しが終了していないので、バッファメモリ12bのデータは第1のCPU2の読出しが終了するまで保持しておく。
【0041】
b.”Read Enable”状態中に書込みが発生した場合
(1),(2),(3)は[2−1]と同様の処理を行うため説明を省略する。
(4)第1のCPU2は既に”Read Enable”状態に入っているので、マルチプレクサ15aは第1のCPU2にレジスタ11aから読出したデータを出力する。この結果、第1のCPU2はレジスタ11aからデータを読み出すこととなる。
(5)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
【0042】
<3.第2のCPU6の書込み中に第1のCPU2の読出しが衝突した場合>
【0043】
ここで、マルチプレクサ15a,15bは、制御部の制御によって、第2のCPU6がデュアルポートRAM5にデータ信号の書込みを行う途中に、第1のCPU2がデュアルポートRAM5からデータ信号を読出す場合に以下の処理を行う。このとき、アドレスの衝突が検出されたことが必要である。そして、第1のCPU2と第2のCPU6の動作速度に応じて、マルチプレクサ15a,15bが出力するデータ信号を読出す第1及びバッファメモリ12bを切替える。
【0044】
具体的には、マルチプレクサ15a,15bは、第1のCPU2と第2のCPU6の動作タイミングが等しい場合に、第2のCPU6がバッファメモリ12bに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より速く、データ信号の書込みの準備中に読出しが行われる場合に、第1のCPU2がレジスタ11aに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より速く、データ信号の書込み中に読出しが行われる場合に、第2のCPU6がバッファメモリ12bに書き込んだデータ信号を出力する。第1のCPU2の動作速度が第2のCPU6の動作速度より遅い場合に、第2のCPU6がバッファメモリ12bに書き込んだデータ信号を出力する。
以下に詳細な処理例を説明する。
【0045】
3−1)第1のCPU2と第2のCPU6が同じ速度(周波数)で動作する場合
この場合、”Write Enable”状態の前、途中を問わないものとする。
(1)第2のCPU6は書込みの準備を開始する。
(2)アドレス衝突検出部14は、アドレスの衝突を検出する。
(3)第1のCPU2が通常の読出しをするのと同様に、レジスタ11aにデュアルポートRAM5から読出したデータをラッチする。
(4)アドレスの衝突を検出すると、バッファメモリ12bにデュアルポートRAM5の出力をバッファする。
【0046】
(5)第1のCPU2の読出しが始まったとき、書込みが動作しているので、レジスタ11aのデータは不定の可能性がある。
(6)一方、バッファメモリ12bのデータも衝突が生じてからバッファされているが、バッファメモリ12bは書込み側のポートから、書込み側のタイミングでバッファするため、不定にはならない。
【0047】
(7)第1のCPU2が”Read Enable”状態に入ったときに、既に第2のCPU6側は”Write Enable”状態に入っている。
(8)そのため、マルチプレクサ15aは第1のCPU2に安定したバッファメモリ12bから読出したデータを出力する。この結果、第1のCPU2はバッファメモリ12bからデータを読み出すこととなる。ただし、第1のCPU2側で準備したレジスタ11aのデータは不定値の可能性がある。
【0048】
(9)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
(10)衝突が終了しても、第1のCPU2の読出しが終了していないので、バッファメモリ12bのデータは第1のCPU2の読出しが終了するまで保持しておく。
【0049】
3−2)第1のCPU2の動作速度が第2のCPU6よりも速い場合
a.書込み準備中に読出しが発生した場合
(1),(2),(3),(4)は3−1)と同様の処理を行うため説明を省略する。
(5)第2のCPU6が”Write Enable”状態に入る前に第1のCPU2は”Read Enable”状態に入っているため、レジスタ11aのデータは安定する。
(6)マルチプレクサ15aは第1のCPU2にレジスタ11aから読出したデータを出力する。この結果、第1のCPU2はレジスタ11aのデータを読み出すこととなる。
(7)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
【0050】
b.”Write Enable”状態中に読出しが発生した場合
(1),(2),(3),(4)は3−1)と同様の処理を行うため説明を省略する。
(5)第1のCPU2の読出しが始まったとき、既に”Write Enable”状態となっているので、レジスタ11aのデータは不定の可能性がある。
(6)一方、バッファメモリ12bのデータも”Write Enable”状態中にバッファされているが、バッファメモリ12bは書込み側のポートから、書込み側のタイミングでバッファするため、不定にはならない。
【0051】
(7)第1のCPU2が”Read Enable”状態に入ったときに、既に第2のCPU6側は”Write Enable”状態に入っている。
(8)そのため、マルチプレクサ15aは第1のCPU2に安定したバッファメモリ12bから読出したデータを出力する。この結果、第1のCPU2はバッファメモリ12bからデータを読み出すこととなる。このため、第1のCPU2側で準備したレジスタ11aのデータは不定値の可能性がある。
【0052】
(9)第2のCPU6は通常通り、”Write Enable”状態に合わせてデュアルポートRAM5にデータを書き込む。
(10)衝突が終了しても、第1のCPU2の読出しが終了していないので、バッファメモリ12bのデータは第1のCPU2の読出しが終了するまで保持しておく。
【0053】
3−3)第1のCPU2の動作速度が第2のCPU6よりも遅い場合
3−2)のa.同様、第2のCPU6が先に“Write Enable”状態に入るため、マルチプレクサ15aは第1のCPU2にバッファメモリ12bから読出したデータを出力する。
【0054】
図6は、信号制御装置4が行う信号制御方法の例を示す。
始めに、第1のCPU2は、デュアルポートRAM5から読出したデータをレジスタ11aにラッチする(ステップS1)。次に、アドレス衝突検出部14は、アドレスが衝突したか否かを判断する(ステップS2)。
【0055】
ステップS2において、アドレスが衝突していないと判断した場合、第1のCPU2が”Read Enable”であるか否かを判断する(ステップS5)。ステップS5において、第1のCPU2が”Read Enable”であると判断した場合、ステップS10に処理を移す。一方、第1のCPU2が”Read Enable”でないと判断した場合、ステップS2に処理を移す。
【0056】
ステップS2において、アドレスが衝突したと判断した場合、制御部13は、第1のCPU2が”Read Enable”でなく第2のCPUが”Write Enable”でないか否かを判断する(ステップS3)。この条件に合致しない場合、制御部13は、第1のCPU2が”Read Enable”でなく第2のCPUが”Write Enable”であるか否かを判断する(ステップS4)。
【0057】
ステップS4において、条件に合致する場合、第2のCPU6は、DPRAM5から読出したデータをバッファメモリ12bにラッチして(ステップS6)、ステップS9に処理を移す。一方、ステップS4において、条件に合致しない場合、そのままステップS9に処理を移す。
【0058】
ステップS3において、条件に合致する場合、第2のCPU6は、DPRAM5から読出したデータをバッファメモリ12bにラッチする(ステップS7)。
【0059】
次に、制御部13は、第2のCPU6が”Write Enable”であるか否かを判断する(ステップS8)。第2のCPU6が”Write Enable”である場合、マルチプレクサ15aは、バッファメモリ12aのデータを選択し、バッファメモリ12aから読出したデータを出力する(ステップS9)。
【0060】
一方、ステップS3,S8において、第2のCPU6が”Write Enable”でないと判断した場合、又は、ステップS5において、第1のCPU2が”Read Enable”であると判断した場合、以下の処理を行う。即ち、マルチプレクサ15aは、レジスタ11aのデータを選択し、レジスタ11aから読出したデータを出力する(ステップS10)。
【0061】
ステップS9,S10の処理の後、制御部13は、第1のCPU2が”Read Enable”であるか否かを判断する(ステップS11)。第1のCPU2が”Read Enable”でない場合、処理を終了する。
【0062】
一方、第1のCPU2が”Read Enable”である場合、制御部13は、レジスタ11aとバッファメモリ12bのデータを保持させて、処理を終了する(ステップS12)。
【0063】
以上説明した本実施の形態に係る信号制御装置4は、デュアルポートRAMに5アクセスする場合に、第1のCPU2がデュアルポートRAM5ポートから読出し、第2のCPU6が書き込む動作を同時に行う場合に有効な構成としてある。ここで、信号制御装置4は、書込み動作と読出し動作のアドレス衝突のタイミングを検出するアドレス衝突検出部14を備える。そして、書込み側となる第2のCPU6は、一連の書込み動作の初期にデュアルポートRAM5からデータを読出す構成とするため、その読出ししたデータを保持するためのバッファメモリ12bを持つ。一方、読出し側となる第1のCPU2は、アドレス衝突検出部14の判断に従い、書込み側となる第2のCPU6がバッファしたデータ、またはデュアルポートRAM5の内容をコピーしたレジスタ11aのデータのどちらかを選択する。これにより、第1のCPU2は、どちらかに保存されている正しいデータを、マルチプレクサ15aを介して取り込むことができる。また、第1のCPU2が行う動作は、第2のCPU6においても同様に行うことが可能である。
【0064】
このように信号制御装置4を構成したことにより、2つのCPUが同時にデュアルポートRAM5に、読出し又は書込みを行う場合であっても、2つのCPUの読出し可能状態又は書込み可能状態に基づいて、データ信号の読出し元の切替えを行う。このため、2つのCPUの動作速度によらず、任意のタイミングでアクセスすることができる。例えば、第2のCPU6が”Write Enable”状態に入る前に第1のCPU2の”Read Enable”状態が始まると、第1のCPU2は第1のCPU2側でラッチしたレジスタ11aを読む。そして、第1のCPU2が”Read Enable”状態に入る前に第2のCPU6が”Write Enable”状態になったら、第1のCPU2は第2のCPU6側でバッファしたバッファメモリ12bを読み出す。これにより、相互のCPUのアクセスタイミングによらず、不定値の出力を回避することができる。
【0065】
また、従来の技術として挙げた(1)、(2)に対する優位性は、CPUは読出し側も書込み側も、アクセスタイミングの制約や、待たせる時間の無駄なく自由にデュアルポートRAM5にアクセスできることである。また、(3)に対する優位性は、バッファとコントローラという小さなリソースで実現できること。そして、第1のCPU2と第2のCPU6の同期非同期に関わらず、データ化けを回避できる。
【0066】
また、一方のCPUは、他方のCPUの処理が完了するまで待機する必要がなく、データを高速に書込み又は読出すことができる。また、これを実現するには、データをバッファするための装置とデータの選択回路、及びアドレス検出回路などの簡易な装置で構成することが可能であり、製造コストを低減することができる。
【0067】
また、第1のCPU2,第2のCPU6のアクセスタイミングや速度が異なる場合でも、不定値を読み出さない。デュアルポートRAM5に少しのリソースを追加するだけでデータの読出し又は書込みが衝突した時のデータ化けを回避できるようになる。
【0068】
また、従来課題としていたような、アクセスタイミングの制約なく、自由にデュアルポートRAM5にアクセスできる。また、書込みデータをラッチしておく必要がないため、アドレスをインクリメントしながら連続して書き込むことができる。また、書込みのラッチが無い分リソースも小さくて済む。
【0069】
また、本発明は上述した実施の形態に限られるものではなく、特許請求の範囲に記載した本発明の要旨を逸脱しない限りその他種々の応用例、変形例を取り得ることは勿論である。
【符号の説明】
【0070】
1…カメラ、2…第1のCPU、3…記録装置、4…信号制御装置、5…デュアルポートRAM、6…第2のCPU、10…映像処理システム、11a,11b…レジスタ、12a,12b…バッファメモリ、13…制御部、14…アドレス衝突検出部、15a,15b…マルチプレクサ

【特許請求の範囲】
【請求項1】
2つのポートにそれぞれ接続される第1及び第2のCPUによって、データ信号の読出し又は書込みが所定の動作タイミングで行われるデュアルポートRAMと、
前記第1のCPUが前記デュアルポートRAMから前記データ信号の読出しを行うアドレスと、前記第2のCPUが前記デュアルポートRAMに前記データ信号の書込みを行うアドレスの衝突を検出するアドレス衝突検出部と、
前記第1のCPUが前記デュアルポートRAMから読出した前記データ信号を記憶する第1の記憶部と、
前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でない場合に、前記第2のCPUが、書込み可能状態であるか否かにかかわらず、前記第2のCPUが、前記デュアルポートRAMに前記データ信号を書き込むアドレスから読出した前記データ信号を記憶する第2の記憶部と、
前記アドレスの衝突が検出されず、前記第1のCPUが読出し可能状態である場合に、前記第1の記憶部から前記データ信号を読出し、前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でない場合に、前記第2のCPUが、書込み可能状態であるか否かにかかわらず、前記第1の記憶部から前記データ信号を読出し、前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でなく、前記第2のCPUが書込み可能状態である場合に、前記第2の記憶部から前記データ信号を読出すことによって、前記第1のCPUが接続されるポートに出力する読出し元の切替えを行って、読出し可能状態となる前記第1のCPUに読出した前記データ信号を出力する切替え部と、を備える
信号制御装置。
【請求項2】
前記切替え部は、前記第1のCPUが前記デュアルポートRAMから前記データ信号を読出すタイミングが前記第2のCPUが前記デュアルポートRAMに前記データ信号の書込みを行うタイミングと同じであって、前記アドレスの衝突が検出された場合に、前記第1及び第2のCPUの動作速度に応じて、前記切替え部が出力する前記データ信号を読出す前記第1及び第2の記憶部を切替える
請求項1記載の信号制御装置。
【請求項3】
前記切替え部は、前記第1及び第2のCPUの動作タイミングが等しい場合に、前記第1のCPUが前記第1又は2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より速い場合に、前記第1のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より遅い場合に、前記第2のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力する
請求項2記載の信号制御装置。
【請求項4】
前記切替え部は、前記第1のCPUが前記デュアルポートRAMから前記データ信号を読出す途中に、前記第2のCPUが前記デュアルポートRAMに前記データ信号の書込みを行うことによって、前記アドレスの衝突が検出された場合に、前記第1及び第2のCPUの動作速度に応じて、前記切替え部が出力する前記データ信号を読出す前記第1及び第2の記憶部を切替える
請求項1又は2記載の信号制御装置。
【請求項5】
前記切替え部は、前記第1及び第2のCPUの動作タイミングが等しい場合に、前記第1のCPUが前記第1の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より速い場合に、前記第1のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より遅く、前記第1のCPUが前記デュアルポートRAMから前記データ信号を読出す準備を行っている場合に、前記第2のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より遅く、前記第1のCPUが前記デュアルポートRAMから前記データ信号を読出す場合に、前記第1のCPUが前記第1の記憶部に書き込んだ前記データ信号を出力する
請求項4記載の信号制御装置。
【請求項6】
前記切替え部は、前記第2のCPUが前記デュアルポートRAMに前記データ信号の書込みを行う途中に、前記第1のCPUが前記デュアルポートRAMから前記データ信号を読出すことによって、前記アドレスの衝突が検出された場合に、前記第1及び第2のCPUの動作速度に応じて、前記切替え部が出力する前記データ信号を読出す前記第1及び第2の記憶部を切替える
請求項1、2又は4のうち、いずれか1項に記載の信号制御装置。
【請求項7】
前記切替え部は、前記第1及び第2のCPUの動作タイミングが等しい場合に、前記第2のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より速く、前記データ信号の書込みの準備中に読出しが行われる場合に、前記第1のCPUが前記第1の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より速く、前記データ信号の書込み中に読出しが行われる場合に、前記第2のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力し、前記第1のCPUの動作速度が前記第2のCPUの動作速度より遅い場合に、前記第2のCPUが前記第2の記憶部に書き込んだ前記データ信号を出力する
請求項6記載の信号制御装置。
【請求項8】
2つのポートにそれぞれ接続される第1及び第2のCPUによって、データ信号の読出し又は書込みが所定の動作タイミングで行われるデュアルポートRAMに、前記第1のCPUが前記デュアルポートRAMから前記データ信号の読出しを行うアドレスと、前記第2のCPUが前記デュアルポートRAMに前記データ信号の書込みを行うアドレスの衝突を検出するステップと、
前記第1のCPUが前記デュアルポートRAMから読出した前記データ信号を第1の記憶部に記憶し、前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でない場合に、前記第2のCPUが、書込み可能状態であるか否かにかかわらず、前記第2のCPUが、前記デュアルポートRAMに前記データ信号を書き込むアドレスから読出した前記データ信号を第2の記憶部に記憶するステップと、
前記アドレスの衝突が検出されず、前記第1のCPUが読出し可能状態である場合に、前記第1の記憶部から前記データ信号を読出し、前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でない場合に、前記第2のCPUが、書込み可能状態であるか否かにかかわらず、前記第1の記憶部から前記データ信号を読出し、前記アドレスの衝突が検出され、前記第1のCPUが読出し可能状態でなく、前記第2のCPUが書込み可能状態である場合に、前記第2の記憶部から前記データ信号を読出すことによって、前記第1のCPUが接続されるポートに出力する読出し元の切替えを行って、読出し可能状態となる前記第1のCPUに読出した前記データ信号を出力するステップと、を含む
信号制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate