本開示に係る実施形態が、比較例と対比しながら説明される。
(比較例)
図1に示されるように、比較例に係るデジタルオシロスコープ900は、アナログ信号を取得してデジタル信号に変換するAD変換器(ADC)912と、ロジック信号を取得するサンプラ914とを備える。ロジック信号は、論理値を表す1又は0に2値化された信号に対応する。ADC912は、入力されるアナログ信号を所定のサンプリング周期でサンプリングしてデジタル信号に変換して出力する。サンプラ914は、入力されるロジック信号を所定のサンプリング周期でサンプリングしたロジック信号を出力する。
デジタルオシロスコープ900は、データ取込処理回路920と、デジタルトリガ回路922とを更に備える。データ取込処理回路920は、ADC912で変換されたデジタル信号を取り込む。データ取込処理回路920は、サンプラ914でサンプリングされたロジック信号を取り込む。デジタルトリガ回路922は、データ取込処理回路920に対してデータを取り込むタイミングを特定するトリガ信号を出力する。デジタルトリガ回路922は、アナログトリガ回路で置き換えられてもよい。デジタルトリガ回路922がアナログトリガ回路に置き換えられる場合、アナログ信号は、コンパレータを介してアナログトリガ回路に入力される。データ取込処理回路920は、プリトリガ又はポストトリガの少なくとも一方の管理を行いながらデジタルトリガ回路922又はアナログトリガ回路からのトリガ信号に基づいて、ACQメモリ930へのデータの格納を制御する。具体的には、データ取込処理回路920は、データの取り込み開始後、プリトリガ分取り込んだところでトリガイネーブルとし、その後発生するトリガ信号を受信後、ポストトリガ分取り込んだところで取り込みを停止する。プリトリガは、トリガ信号が入力されたタイミングから過去にさかのぼった所定期間に入力された信号をサンプリングした値を取得することを意味する。ポストトリガは、トリガ信号が入力されたタイミングから後の所定期間に入力された信号をサンプリングした値を取得することを意味する。
デジタルオシロスコープ900は、ACQ(Acquisition)メモリ930を更に備える。ACQメモリ930は、データ取込処理回路920が取り込んだデータを格納する。データ取込処理回路920が取り込んだデータは、ACQデータとも称される。
デジタルオシロスコープ900は、アナログ波形描画回路942と、ビットマップメモリ952とを更に備える。アナログ波形描画回路942は、ACQメモリ930からアナログ信号に基づくデータを取得してアナログ波形を描画する。ビットマップメモリ952は、アナログ波形描画回路942が描画したビットマップデータを格納する。
デジタルオシロスコープ900は、ロジック波形描画回路944と、ビットマップメモリ954とを更に備える。ロジック波形描画回路944は、ACQメモリ930からロジック信号に基づくデータを取得してロジック信号を描画する。ビットマップメモリ954は、ロジック波形描画回路944が描画したビットマップデータを格納する。
デジタルオシロスコープ900は、合成回路960を更に備える。合成回路960は、ビットマップメモリ952及び954から取得したビットマップデータを合成して合成ビットマップデータを生成する。デジタルオシロスコープ900は、合成ビットマップデータを表示する表示器970を更に備える。デジタルオシロスコープ900は、合成回路960と表示器970とを同期させる表示タイミング生成回路980を更に備える。
ここで、図2に例示される波形を参照して、デジタルオシロスコープ900の動作が説明される。図2に、アナログ入力のアナログ信号の波形と、ロジック入力のロジック信号の波形と、サンプリングクロックの波形と、デジタルオシロスコープ900が表示するアナログ表示波形及びロジック表示波形とが示されている。横軸は時間を表している。縦軸は各信号のレベルを表している。アナログ入力とロジック入力との間の比較をわかりやすくするために、アナログ入力及びロジック入力それぞれに入力される波形は同じものとしている。ロジック入力は、アナログ入力がコンパレータで2値化された波形に対応する。ロジック入力の値は、アナログ入力とスレッショルドレベルとの比較に基づいて2値化される。具体的には、ロジック信号は、アナログ信号がスレッショルドレベル未満である場合に0となり、アナログ信号がスレッショルドレベル以上である場合に1となる。アナログ入力及びロジック入力それぞれに入力される波形は、互いに独立で異なる波形であってもよい。
ADC912及びサンプラ914は、サンプリングクロックが立ち上がるタイミングでアナログ信号及びロジック信号をサンプリングする。サンプリングのタイミングは、アナログ信号及びロジック信号それぞれにおいて丸印で表されている。アナログ表示波形は、サンプリングされた値をドットで表示した波形に対応する。ロジック表示波形は、サンプリングされた値を線でつないで表示した波形に対応する。ドットは、1つの波形を表すACQデータの集合を構成する。ACQデータの集合の数は、1つの波形についての1回分の取り込みデータ数に対応する。
デジタルオシロスコープ900は、1つの信号を取り込んで、図2に例示されるようにその信号の波形だけを表示する処理を繰り返してもよい。一方で、デジタルオシロスコープ900は、信号の取り込みレートを上げるために、複数の信号をまとめて取り込んで、図3に例示されるように複数の信号を重畳した波形を表示してもよい。具体的には、図2に例示される波形は、デジタルオシロスコープ900が1回目に取り込んだ波形に対応する。図3において、デジタルオシロスコープ900が2回目、3回目及び4回目それぞれに取り込んだ波形が重畳されて表示されている。図3において、デジタルオシロスコープ900は、図2に例示される1回目に取り込んだ波形、及び、2回目から4回目までに取り込んだ波形を含む4つの信号の波形を重畳して表示している。横軸は時間を表している。縦軸は各信号のレベルを表している。サンプリングクロックとトリガとは非同期である。したがって、図3に示されるように、サンプリングクロックに対するトリガの位相は、毎回の取り込みにおいて変化し得る。図3のようにトリガを基準にして表示される場合、サンプリングクロックが毎回ずれるように見える。言い換えれば、図2に例示される1回目の波形を取り込み、更に2回目、3回目及び4回目の波形を取り込んで、図3に例示されるように、1回目から4回目までの4つの波形を重ね合わせたときに、アナログ入力からのトリガの位相に対して、1回目から4回目までの各回のサンプルクロックはランダムになる。したがって、トリガの位相がずれる。サンプル点のドット表示とロジック表示波形とを重ね合わせることによって、図3のように表示される。具体的には、図2に例示される1回目に取り込んだ波形において、トリガは、サンプリングクロックの立ち下がりのタイミングで入力されている。言い換えれば、図2において、トリガは、サンプリングクロックの立ち上がりからサンプリングクロックの1/2周期だけ遅れたタイミングで入力されている。また、2回目に取り込んだ波形において、トリガは、サンプリングクロックの立ち上がりからサンプリングクロックの1/4周期だけ遅れたタイミングで入力されている。また、3回目に取り込んだ波形において、トリガは、サンプリングクロックの立ち上がりからサンプリングクロックの3/4周期だけ遅れたタイミングで入力されている。また、4回目に取り込んだ波形において、トリガは、サンプリングクロックの立ち上がりのタイミングで入力されている。
デジタルオシロスコープ900は、複数回のデータ取り込みを、できるだけデッドタイムが少なくなるように繰り返す。デジタルオシロスコープ900が各回で取り込んだACQデータの集合は、1つの波形を表す。デジタルオシロスコープ900は、取り込んだ複数のACQデータの集合それぞれに基づく波形を重ねて描画して表示できる。デジタルオシロスコープ900が複数回にわたってデータを取り込む場合、波形を重ねて描画している間にデータの取り込みができなくなる場合があるため、各回におけるデータの取り込みは間欠的になる。しかし、平均的な取り込みレートは上げられる。
デジタルオシロスコープ900は、1つの波形を表すACQデータの集合の数が少ない場合、アナログ波形をSin(x)/x補間又は直線補間等の表示補間を行って表示してよい。しかし、表示補間が行われる場合、ACQデータだけでなく、補間した部分のピクセルにも描画する必要がある。これに対して、デジタルオシロスコープ900は、ACQデータだけを表示する場合、ACQデータに対応するピクセルだけに描画すればよく、描画を高速に行うことができる。
ACQデータだけが表示される場合、アナログ波形は、水平方向にも垂直方向にも離散的なドット表示で描画される。これに対して、ロジック波形が離散的なドット表示で描画される場合、デジタルオシロスコープ900によって波形を観測する利用者は、ロジック波形を理解しにくい。特に、論理値が1と0との間で変化することを表す縦線が描画されない場合、利用者は、ロジック波形を理解しにくい。したがって、デジタルオシロスコープ900は、ロジック波形を、常にACQデータの間をパルス補間して表示する。ここで、ロジック波形のパルス補間は、ACQデータを水平又は垂直につないで表示するための補間である。水平軸の分解能に対してACQデータの数が少ない場合、デジタルオシロスコープ900は、ある1つのACQデータの論理値と次のACQデータの論理値とが同じであれば同じ論理値同士をつなぐ水平方向の線を描画することによって補間してよい。デジタルオシロスコープ900は、ある1つのACQデータの論理値と次のACQデータの論理値とが異なるのであれば、次のACQデータの位置までの水平方向の線と、次のACQデータの位置における垂直方向の線とを描画することによって、補間してよい。
デジタルオシロスコープ900において、複数回にわたって取り込んだACQデータの集合で表される波形を重ね描きすることでデータ取り込みレートを上げる方法がある。ACQデータの数が少ないときに表示補間を実行せずにドット表示にすることで、描画時間が短くなる。描画時間が短くなることによって、データ取り込みレートが更に上げられる。
ロジック入力付きのデジタルオシロスコープ900は、ミックスドシグナルオシロスコープとも称される。ミックスドシグナルオシロスコープは、アナログ波形及びロジック波形の両方を表示する。上述したように、デジタルオシロスコープ900は、アナログ波形及びロジック波形の両方を表示する場合、アナログ波形を表示補間なしのドット表示で描画することができたとしても、パルス補間を実行してロジック波形を描画する必要がある。そうしてみると、ロジック波形の描画速度が低下する。その結果、デジタルオシロスコープ900は、アナログ波形を表示補間なしのドット表示で描画したとしても、ロジック波形の描画速度が高められないことによって、データ取り込みレートを高めにくい。
一例として、デジタルオシロスコープ900が1024画素×768画素のXGAサイズの画像を表示可能な表示器970を備える場合が説明される。この場合、デジタルオシロスコープ900は、表示器970に波形表示領域として水平方向に1000画素分を割り当てるとする。1画素は、表示器970の最小表示単位に対応する。1画素の大きさは、表示器970の表示分解能に基づいて定まる。
デジタルオシロスコープ900は、1秒当たり2.5ギガ個(2.5GS/s)のサンプリングレートで10ナノ秒(ns)分のACQデータを取り込んでドット表示する場合、水平方向の1000画素に対して25個のACQデータだけを表示する。デジタルオシロスコープ900は、ACQデータを1個ずつ処理するとして、アナログ波形を表示するために、25個のACQデータそれぞれをドット表示するために、ビットマップ上へのリードモディファイライトを25回実行する。
一方で、デジタルオシロスコープ900は、ロジック波形を表示するために、25個のACQデータについてパルス補間を行い、1000画素それぞれに書き込む1000個の描画データを生成する。したがって、1つの波形を表すACQデータの集合の数が25個であったとしても、ビットマップ上へのリードモディファイライトを1000回実行する必要がある。
例えば、デジタルオシロスコープ900が25個のACQデータを1つの集合として1000組のデータを取り込んで1000組それぞれのデータで表される波形を描画すると仮定する。この場合、デジタルオシロスコープ900は、アナログ波形を描画するために25×1000=25000回のリードモディファイライトを実行すればよい。一方で、デジタルオシロスコープ900は、ロジック波形を描画するために1000×1000=1000000回のリードモディファイライトを実行する必要がある。その結果、ロジック波形を表示するための波形描画時間は、アナログ波形だけを表示するための波形描画時間よりも長くなる。ロジック波形を表示するための波形描画時間が長くなることによって、アナログ波形だけを表示する場合に比べてACQデータの取り込みレートが低下する。
ここで、デジタルオシロスコープ900は、複数のアナログ波形を重畳して表示する場合、各波形の重なりの頻度を輝度又は色で表現することがあり、直接ビットマップに頻度データとして累積する場合がある。一方で、デジタルオシロスコープ900は、複数のロジック波形を重畳して表示する場合、波形の重なりの多寡にかかわらず同じ輝度又は色で表現することが多い。この場合、ビットマップに頻度データとして累積する必要がなく、重ね描きした波形の有無だけを1ビットのデータとしてビットマップに書き込めばよい。
ロジック波形が重畳される数にかかわらず波形の有無だけで表示される場合、デジタルオシロスコープ900は、ビットマップに直接描画せず、描画のためのコードを水平方向に1000画素分生成してよい。ロジック波形を描画するためのコードは、ロジックコードとも称される。デジタルオシロスコープ900は、ロジックコードに基づいてビットマップを生成してロジック波形を表示してよい。ここで、ロジックコードは、論理値が0となる状態、論理値が1となる状態、又は、論理値が0と1との間で遷移する状態のいずれかの状態を表すデータを含む。デジタルオシロスコープ900は、ロジックコードに対して複数のロジック波形を重畳し、ロジックコードに基づいてビットマップを生成することによって複数のロジック波形を重畳して表示することができる。このようにすることで、ビットマップの書き込み回数を減らすことができる。
以上述べてきたように、比較例に係るデジタルオシロスコープ900は、ロジック波形を表すACQデータの数が波形表示領域の水平方向の画素数よりも少ない場合であっても、ロジック波形を表示するために水平方向の画素数分のデータを処理する必要がある。波形表示領域の水平方向の画素数は、水平画素数とも称される。水平画素数分のデータの処理は、具体的には、全ての画素に対するビットマップデータの描画処理、又は、各画素に対応するロジックコードの生成処理を含む。この場合、ACQデータの数をいくら減らしても、ロジック波形を表示するために必要となる処理負荷は変わらない。ロジック波形を表すACQデータの集合の数の減少に応じて、ロジック波形を表示するために必要となる処理負荷を低減することが求められる。
そこで、本開示は、ロジック波形を表示するために必要となる処理負荷を低減できるデジタルオシロスコープ100(図4等参照)を説明する。
(本開示の一実施形態)
図4に示されるように、一実施形態に係るデジタルオシロスコープ100は、アナログ信号を取得してデジタル信号に変換するAD変換器(ADC)112と、ロジック信号を取得するサンプラ114とを備える。ロジック信号は、論理値を表す1又は0に2値化された信号に対応する。ADC112は、入力されるアナログ信号を所定のサンプリング周期でサンプリングしてデジタル信号に変換して出力する。サンプラ114は、入力されるロジック信号を所定のサンプリング周期でサンプリングしたロジック信号を出力する。
デジタルオシロスコープ100は、データ取込処理回路120と、デジタルトリガ回路122とを更に備える。データ取込処理回路120は、ADC112で変換されたデジタル信号を取り込む。データ取込処理回路120は、サンプラ114でサンプリングされたロジック信号を取り込む。デジタルトリガ回路122は、データ取込処理回路120に対してデータを取り込むタイミングを特定するトリガ信号を出力する。デジタルトリガ回路122は、アナログトリガ回路で置き換えられてもよい。デジタルトリガ回路122がアナログトリガ回路に置き換えられる場合、アナログ信号は、コンパレータを介してアナログトリガ回路に入力される。データ取込処理回路120は、プリトリガ又はポストトリガの少なくとも一方の管理を行いながらデジタルトリガ回路122又はアナログトリガ回路からのトリガ信号に基づいて、ACQメモリ130へのデータの格納を制御している。具体的には、データの取り込み開始後、プリトリガ分取り込んだところでトリガイネーブルとし、その後発生するトリガ信号を受信後、ポストトリガ分取り込んだところで取り込みを停止する。プリトリガは、トリガ信号が入力されたタイミングから過去にさかのぼった所定期間に入力された信号をサンプリングした値を取得することを意味する。ポストトリガは、トリガ信号が入力されたタイミングから後の所定期間に入力された信号をサンプリングした値を取得することを意味する。
デジタルオシロスコープ100は、ACQ(Acquisition)メモリ130を更に備える。ACQメモリ130は、データ取込処理回路120が取り込んだデータを格納する。データ取込処理回路120が取り込んだデータは、ACQデータとも称される。
デジタルオシロスコープ100は、アナログ波形描画回路142と、ビットマップメモリ152とを更に備える。アナログ波形描画回路142は、ACQメモリ130からアナログ信号に基づくデータを取得してアナログ波形を描画する。ビットマップメモリ152は、アナログ波形描画回路142が描画したビットマップデータを格納する。
デジタルオシロスコープ100は、ロジック波形描画回路10と、ビットマップメモリ154とを更に備える。ロジック波形描画回路10は、ACQメモリ130からロジック信号に基づくデータを取得してロジック波形を描画する。具体的には、ロジック信号をサンプリングしたACQデータに基づいてロジック波形を描画する。ビットマップメモリ154は、ロジック波形描画回路10が描画したビットマップデータを格納する。
デジタルオシロスコープ100は、合成回路160を更に備える。合成回路160は、ビットマップメモリ152及び154から取得したビットマップデータを合成して合成ビットマップデータを生成する。
デジタルオシロスコープ100は、合成ビットマップデータを表示する表示器170を更に備える。表示器170は、例えば液晶ディスプレイ等の種々のディスプレイを含んでよい。表示器170は、1024画素×768画素のXGAサイズの画像を表示可能に構成されるとする。表示器170は、種々のサイズの画像を表示可能に構成されてよい。
デジタルオシロスコープ100は、合成回路160と表示器170とを同期させる表示タイミング生成回路180を更に備える。
デジタルオシロスコープ100は、制御部200を更に備える。制御部200は、デジタルオシロスコープ100の各構成部の動作を制御する。制御部200は、例えば図4において破線で示されるように各構成部と通信可能に接続されてよい。制御部200は、例えばCPU(Central Processing Unit)等のプロセッサを含んで構成されてよい。制御部200は、プロセッサに所定のプログラムを実行させることによって所定の機能を実現してもよい。制御部200は、記憶部を備えてもよい。記憶部は、制御部200の動作に用いられる各種情報、又は、制御部200の機能を実現するためのプログラム等を格納してよい。記憶部は、制御部200のワークメモリとして機能してよい。記憶部は、例えば半導体メモリ等で構成されてよい。記憶部は、制御部200に含まれてもよいし、制御部200と別体として構成されてもよい。
デジタルオシロスコープ100は、操作部を更に備えてもよい。操作部は、ユーザの操作入力を受け付けることができるように構成される。操作部は、例えば、マウス等のポインティングデバイス、物理キー、又はタッチパネル等の入力デバイスを含んでよい。制御部200は、操作部によってユーザからの操作入力を受け付け、ユーザの操作に基づいて、デジタルオシロスコープ100の各構成部のパラメータを設定してもよい。
デジタルオシロスコープ100は、表示器170の水平方向の1024個の画素のうち1000個の画素に、ACQデータの集合で表される波形を表示する。ロジック波形描画回路10は、ACQデータの集合に基づいて、表示する波形を描画する。
図5に示されるように、ロジック波形描画回路10は、ACQメモリ130からACQデータを取得し、ACQデータに基づいて表示する波形をビットマップデータとして描画してビットマップメモリ154に書き込む。ロジック波形描画回路10は、ロジックコード生成回路20と、中間コード生成回路30と、中間コードメモリ40と、ロジックコード変換回路50と、ロジックコードメモリ60と、ビットマップ変換回路70とを備える。
ロジック波形描画回路10は、1つのロジック波形を表すACQデータの集合の数が1000個以上、つまり表示器170の水平画素数以上である場合、ロジックコード生成回路20によってロジックコードを生成する。ロジック波形描画回路10は、生成したロジックコードをロジックコードメモリ60に格納する。
ロジック波形描画回路10は、1つのロジック波形を表すACQデータの集合の数が1000個未満、つまり表示器170の水平画素数未満である場合、中間コード生成回路30で中間コードを生成して中間コードメモリ40に格納する。ロジック波形描画回路10は、中間コードメモリ40に格納した中間コードを、ロジックコード変換回路50でロジックコードに変換する。ロジックコード変換回路50は、中間コードから変換したロジックコードをロジックコードメモリ60に格納する。
デジタルオシロスコープ100は、複数の種類のロジック信号の入力を受け付けることができる。ロジック波形描画回路10は、各ロジック信号を別々の波形で表示できるように、別々に表示するロジック信号毎にロジックコードを生成する。つまり、デジタルオシロスコープ100が複数の種類のロジック信号の波形を別々に表示する場合、ロジックコードの数は、表示される波形の数に合わせられる。
ロジック波形描画回路10は、ロジックコードメモリ60に格納したロジックコードをビットマップ変換回路70でビットマップデータに変換してビットマップメモリ154に格納する。複数の種類のロジック信号それぞれに対応するロジックコードが格納されている場合、ビットマップ変換回路70は、各ロジック信号を垂直方向にずらした位置に表示するように、ロジックコードをビットマップデータに変換してよい。
以下、ACQデータの集合の数が表示器170の水平画素数以上である場合、及び、画素数未満である場合のそれぞれの場合におけるロジック波形描画回路10の動作が説明される。
<ACQデータの集合の数が水平画素数以上の場合>
デジタルオシロスコープ100の制御部200は、表示器170の水平画素数(例えば1000画素)に対して、画素数以上のACQデータの集合で表される波形を表示する場合、ロジックコード生成回路20にロジックコードを生成させる。具体的には、ロジックコード生成回路20は、表示器170の水平方向の各画素に対応するロジックコードを生成してロジックコードメモリ60に出力する。ロジックコードメモリ60は、ロジックコードを格納する。
制御部200は、ロジックコードメモリ60を最初にクリアしておく。あるいは、ロジックコードメモリ60は、ハードウェアシーケンスによって、ロジック波形描画処理の開始時にクリアされてもよい。このようにすることで、ロジックコードの生成を開始したときの初回の書き込み及び2回目以降の書き込みとして同じリードモディファイライトの処理が実行される。仮にロジックコードメモリ60がクリアされていない状態でロジックコードの生成のための初回の書き込みが行われる場合、その書き込みは、上書き処理で実行される必要がある。一方で、2回目以降の書き込みは、リードモディファイライトで実行される。この場合、初回の書き込みの処理と2回目以降の書き込みの処理とが異なる。その結果、ロジックコード生成回路20の処理が複雑になる。そうしてみると、制御部200がロジックコードメモリ60を最初にクリアしておくことによって、ロジックコード生成回路20の処理が簡易になり得る。
ロジックコードは、表示器170の水平方向の各画素に対応するデータを含む。ロジックコードは、1回分のロジック波形を描画したとき、又は、複数回分のロジック波形を重ね描きしたときに、各画素に対応する論理値を表すデータを含む。具体的には、ロジックコードは、各画素に表示されるロジック波形の論理値が1であるかを表すデータ、及び、各画素に表示されるロジック波形の論理値が0であるかを表すデータを含む。また、ロジックコードは、各画素に表示されるロジック波形の論理値が0と1との間で遷移するかを表すデータを含む。ある画素に表示されるロジック波形の論理値が0と1との間で遷移することは、その画素においてロジック波形が0から1に遷移すること、又は、その画素においてロジック波形が1から0に遷移することに対応する。この遷移は、ある画素に表示されるロジック波形の最初のACQデータの論理値と、その1つ前の画素に表示されるロジック波形の最後のデータの論理値とが異なる場合にも生じる。
論理値が1であるかを表すデータは、H(High)とも称される。ある画素に表示されるロジック波形の論理値が1である場合、その画素のHが1に設定される。ある画素に表示されるロジック波形の論理値が1でない場合、その画素のHが0に設定される。
論理値が0であるかを表すデータは、L(Low)とも称される。ある画素に表示されるロジック波形の論理値が0である場合、その画素のLが1に設定される。ある画素に表示されるロジック波形の論理値が0でない場合、その画素のLが0に設定される。
論理値が0と1との間で遷移するかを表すデータは、T(Transition)とも称される。ある画素に表示されるロジック波形の論理値が0と1との間で遷移する場合、その画素のTが1に設定される。ある画素に表示されるロジック波形の論理値が0と1との間で遷移しない場合、その画素のTが0に設定される。
ロジックコード生成回路20は、複数回分のロジック波形を重ね描きするときに、各画素において、各回のロジック波形の論理値の状態を重畳したデータを生成する。このように、ロジックコードは、1画素毎にH、L、及びTの3ビットのコードを含み、かつ、水平画素数分のコードを含む。水平画素数は、例えば1000個である。つまり、1回のロジック波形を描画した波形、又は、複数回分のロジック波形を重ね描きした波形は、水平画素数分のH、L、及びTの3ビットのコードを含むロジックコードによって表される。
また、ミックスドシグナルオシロスコープは、通常の波形(メイン波形)と、拡大した波形(ズーム波形)とを同時に表示してもよい。また、ミックスドシグナルオシロスコープは、複数個所を拡大してそれぞれのズーム波形を同時に表示してもよい。これらの場合、それぞれの表示に対応するロジックコードが生成される。
例えば、水平画素数が1000個である表示器170に、5000個のACQデータの集合で表される波形を表示する場合、1つの画素に表示する内容は、5つのACQデータに基づいて定まる。ロジックコード生成回路20は、ある画素に対応する5つのACQデータ全ての論理値が1である場合、その画素に対応するロジックコードのHだけを1に設定し、L及びTを0に設定する。ロジックコード生成回路20は、ある画素に対応する5つのACQデータ全ての論理値が0である場合、その画素に対応するロジックコードのLだけを1に設定し、H及びTを0に設定する。ロジックコード生成回路20は、ある画素に対応する5つのACQデータの一部のACQデータの論理値が0であり、かつ、他のACQデータの論理値が1である場合、その画素に対応するロジックコードのH、L及びTを全て1に設定する。ただし、ロジックコード生成回路20は、ある画素に対応する全てのACQデータの論理値が1又は0であっても例外処理をすることがある。ロジックコード生成回路20は、ある画素に対応する全てのACQデータの論理値が1であっても、直前の画素の最後のACQデータの論理値が0である場合、その画素に対応するロジックコードのH、L及びTを全て1に設定する。ロジックコード生成回路20は、ある画素に対応する全てのACQデータの論理値が0であっても、直前の画素の最後のACQデータの論理値が1である場合、その画素に対応するロジックコードのH、L及びTを全て1に設定する。
ここで、デジタルオシロスコープ100は、波形を水平方向に順次動かしながら表示することがある。波形を水平方向に順次動かして表示するモードは、ロールモードとも称される。本実施形態に係るデジタルオシロスコープ100は、ロールモードにおいて、波形を右から左に移動させるとする。デジタルオシロスコープ100がロールモードによる表示を開始した直後において、表示される波形の先頭は、表示器170の波形表示領域において、右端から左端に向けて移動するように表示される。
表示される波形の先頭が波形表示領域の左端に到達する前において、波形は、図6に例示されるように、波形表示領域の右端から途中まで表示され、途中から左端まで表示されない。つまり、図6に例示される波形において、波形表示領域の左側に波形として表示すべきACQデータが存在しない。図6において、横軸は時間を表している。縦軸は各信号のレベルを表している。ロジックコード生成回路20は、表示すべきACQデータが存在しない画素に対応するロジックコードを非表示データとみなす。具体的には、ロジックコード生成回路20は、表示すべきACQデータが存在しない画素に対応するロジックコードのH、L及びTを全て0に設定してよい。
また、デジタルオシロスコープ100がロールモードによる表示を開始した直後に限られず、波形表示領域の右端又は左端のズーム波形を表示する場合においても、右側又は左側の画素において表示すべきACQデータが存在しないことがある。この場合でも、ロジックコード生成回路20は、表示すべきACQデータが存在しない画素に対応するロジックコードを非表示データとみなす。
上述したように、制御部200は、複数の波形を表示する一連の描画処理を行う前にロジックコードメモリ60を一旦クリアする。このようにすることで、ロジックコード生成回路20は、ロジックコードメモリ60に初めてロジックコードを書き込む処理と、ロジックコードメモリ60に2回目以降にロジックコードを書き込む処理とを共通化できる。具体的には、ロジックコード生成回路20は、H、L及びTそれぞれの論理値を、論理和(OR)をとって格納するリードモディファイライトの処理で共通化できる。
ビットマップ変換回路70は、ロジックコードメモリ60からロジック波形を表すロジックコードを水平方向の全画素分について読み出す。ビットマップ変換回路70は、水平方向の各画素に対応するロジックコードのH、L及びTに設定されているデータに基づいて、ロジック波形を表すビットマップデータを描画し、ビットマップメモリ154に格納する。ビットマップ変換回路70は、H及びLそれぞれに1が設定されている場合に、垂直方向の位置をずらして描画することによって、ロジック信号の論理値が1であるか0であるかを表す。ビットマップ変換回路70は、Tに1が設定されている場合に、垂直方向の線を描画することによって、ロジック信号の論理値が0と1との間で遷移することを表す。また、ビットマップ変換回路70は、0又は1の少なくとも一方の論理値を垂直方向に複数画素を使って描画してもよい。この場合、0又は1の少なくとも一方の論理値が太い線で表される。その結果、論理値の変化がない場合等に、論理値は、0であるか1であるか識別されやすくなる。ロジックコードメモリ60に複数のロジック波形それぞれを表すロジックコードが格納されている場合、ビットマップ変換回路70は、各ロジックコードに基づくビットマップデータを垂直方向にずらして描画する。
<ACQデータの集合の数が水平画素数未満の場合>
デジタルオシロスコープ100の制御部200は、表示器170の水平画素数に対して、水平画素数未満のACQデータの集合で表される波形を表示する場合、中間コード生成回路30に一旦中間コードを生成させ、中間コードメモリ40に格納させる。水平画素数は、例えば1000個である。制御部200は、ロジックコード変換回路50に、中間コードに基づくロジックコードを生成させ、ロジックコードメモリ60に格納させる。具体的には、ロジックコード変換回路50は、中間コードメモリ40に格納された中間コードを読み出し、中間コードをロジックコードに変換してロジックコードメモリ60に格納する。
中間コードは、水平方向の各画素に対応するデータを有する。中間コードとロジックコードとは、水平方向の同じ画素に対応づけられることによって、互いに対応づけられる。中間コード生成回路30は、水平方向の全画素を対象とせず、ACQデータが存在する画素だけを対象として中間コードを生成する。したがって、ある波形を表すACQデータの集合の数が水平画素数未満であることによって、水平方向の全画素それぞれに対応するロジックコードを生成するよりも、少ない数の処理でロジックコードを生成できる。
以下、ロジック波形描画回路10が中間コードを一旦生成してからロジックコードを生成することによってロジック波形のビットマップデータを描画する構成が説明される。
<<中間コードの生成>>
中間コード生成回路30は、中間コードメモリ40に格納される中間データを最初にリセットしておく。このようにすることで、中間コード生成回路30は、中間コードメモリ40に初めて中間コードを書き込む処理と、中間コードメモリ40に2回目以降に中間コードを書き込む処理とを共通化できる。具体的には、中間コード生成回路30は、既に書き込まれている値を更新して書き込むリードモディファイライトの処理で共通化できる。中間データのリセットは、制御部200からの命令によって実行されてもよいし、ハードウェアシーケンスによってロジック波形描画処理の開始時に実行されてもよい。
中間コード生成回路30は、水平方向の画素に対応する全ての中間コードを生成せず、ACQデータが存在する画素に対応する中間コードだけを生成する。例えば、水平画素数が1000個であり、かつ、表示する波形を表すACQデータの集合の数が25個であるとする。この場合、中間コード生成回路30は、ACQデータが存在する25個の画素に対応する中間コードだけを生成すればよい。言い換えれば、中間コード生成回路30は、水平方向に並ぶ40個の画素のうちの1個の画素に対応する中間コードだけを生成すればよい。中間コードが生成される対象となる画素は、トリガが入力されるタイミングと、ACQデータのサンプリングのタイミングとの関係に基づいて定まる。トリガがサンプリングクロックに対して同期しない場合、中間コードが生成される対象となる画素は、水平方向に並ぶ40個の画素の中からランダムに定まる。
中間コードは、ロジックコードのHを決定するために用いられる、H加算用データ及びH減算用データを含む。H加算用データは、H_Addで表されるとする。H減算用データは、H_Subで表されるとする。また、中間コードは、ロジックコードのLを決定するために用いられる、L加算用データ及びL減算用データを含む。L加算用データは、L_Addで表されるとする。L減算用データは、L_Subで表されるとする。
中間コードに含まれる各データの値は、重畳して表示されるロジック波形の数以下となる。例えば、1000個のロジック波形が重畳して表示される場合、中間コードに含まれる各データの値は、最大でも1000である。この場合、中間コードに含まれる各データは、10ビット(最大1023)で表される。したがって、中間コードメモリ40は、中間コードの各データを少なくとも10ビットで表すことができるように構成される。このようにすることで、仮に1000個のロジック波形のサンプリングのタイミングとトリガのタイミングとが同期したとしても、各データの値がオーバーフローしない。
中間コード生成回路30は、ACQデータが存在する画素に対応する中間コードを、以下のルールに基づいて生成する。
(Case1:変化なし)全てのデータを変化させない。
(Case2:0→1)H_AddとL_Subとにそれぞれ1を加算する。
(Case3:1→0)H_SubとL_Addとにそれぞれ1を加算する。
(Case4:非表示→1、最初のデータが1の場合を含む。)H_Addだけに1を加算する。
(Case5:非表示→0、最初のデータが0の場合を含む。)L_Addだけに1を加算する。
(Case6:1→非表示)H_Subだけに1を加算する。
(Case7:0→非表示)L_Subだけに1を加算する。
中間コードを生成するルールは、生成する中間コードに対応するACQデータの論理値と、その1つ前のACQデータの論理値とに基づく。以下、上述のルールが具体的に説明される。
生成する中間コードに対応するACQデータの論理値と、1つ前のACQデータの論理値とが同じである場合(Case1)、中間コード生成回路30は、中間コードのいずれのデータにも1を加算しない。
生成する中間コードに対応するACQデータの論理値が1であり、かつ、1つ前のACQデータの論理値が0である場合(Case2)、中間コード生成回路30は、H_Add及びL_Subそれぞれに1を加算する。また、生成する中間コードに対応するACQデータの論理値が0であり、かつ、1つ前のACQデータの論理値が1である場合(Case3)、中間コード生成回路30は、H_Sub及びL_Addそれぞれに1を加算する。
ロジック波形は、波形表示領域の左側に表示されないことがある。この場合、最初に表示されるACQデータの1つ前のACQデータは非表示である。生成する中間コードに対応するACQデータの論理値が1であり、かつ、1つ前のACQデータが非表示である場合(Case4)、中間コード生成回路30は、H_Addだけに1を加算する。また、生成する中間コードに対応するACQデータの論理値が0であり、かつ、1つ前のACQデータが非表示である場合(Case5)、中間コード生成回路30は、L_Addだけに1を加算する。
ロジック波形は、波形表示領域の右側に表示されないことがある。この場合、最後に表示されるACQデータの次のACQデータは非表示である。生成する中間コードに対応するACQデータが非表示であり、かつ、1つ前のACQデータの論理値が1である場合(Case6)、中間コード生成回路30は、H_Subだけに1を加算する。また、生成する中間コードに対応するACQデータが非表示であり、かつ、1つ前のACQデータの論理値が0である場合(Case7)、中間コード生成回路30は、L_Subだけに1を加算する。
ロジック波形は、途中から波形表示領域に表示されることがある。ロジック波形を表すACQデータの集合のうち、あるACQデータが波形表示領域に表示されない最後のACQデータに対応する場合、その次のACQデータが波形表示領域に表示される最初のACQデータに対応する。
波形表示領域に表示される最初のACQデータが波形表示領域の左端の画素に対応する場合、中間コード生成回路30は、1つ前のACQデータが非表示であるとみなして中間コードを生成する。波形表示領域に表示される最初のACQデータが波形表示領域の左端よりも内側の画素に対応する場合、中間コード生成回路30は、以下に示す動作で中間コードを生成する。
波形表示領域に表示される最初のACQデータの論理値と、波形表示領域に表示されない最後のACQデータの論理値とが同じである場合、中間コード生成回路30は、中間コードのいずれのデータにも1を加算しない。また、波形表示領域に表示される最初のACQデータの論理値が1であり、かつ、波形表示領域に表示されない最後のACQデータの論理値が0である場合、中間コード生成回路30は、H_Add及びL_Subそれぞれに1を加算する。また、波形表示領域に表示される最初のACQデータの論理値が0であり、かつ、波形表示領域に表示されない最後のACQデータの論理値が1である場合、中間コード生成回路30は、H_Sub及びL_Addそれぞれに1を加算する。
中間コード生成回路30は、波形表示領域に表示されない最後のACQデータの論理値が1である場合、波形表示領域の左端の画素に対応する中間コードのH_Addだけに1を加算する。また、中間コード生成回路30は、波形表示領域に表示されない最後のACQデータの論理値が0である場合、波形表示領域の左端の画素に対応する中間コードのL_Addだけに1を加算する。つまり、波形表示領域に表示されない最後のACQデータの1つ前のACQデータが非表示であるとみなして、中間コードを生成する。
波形表示領域に表示される最後のACQデータが波形表示領域の右端の画素に対応する場合、中間コード生成回路30は、次のACQデータが非表示であるとみなして中間コードを生成する。波形表示領域に表示される最後のACQデータが波形表示領域の右端よりも内側の画素に対応する場合、中間コード生成回路30は、以下に示す動作で中間コードを生成する。
波形表示領域に表示される最後のACQデータの論理値が1である場合、中間コード生成回路30は、波形表示領域の右端の画素に対応する中間コードのH_Subだけに1を加算する。この場合、表示される波形として、最後のデータから右端の画素まで論理値が1であることを表す線が描画される。また、波形表示領域に表示される最後のACQデータの論理値が0である場合、中間コード生成回路30は、波形表示領域の右端の画素に対応する中間コードのL_Subだけに1を加算する。この場合、表示される波形として、最後のデータから右端の画素まで論理値が0であることを表す線が描画される。
波形表示領域に表示される最後のACQデータが非表示である場合、中間コード生成回路30は、波形表示領域の右端の画素に対応する中間コードのいずれのデータにも1を加算しない。以上述べてきたように、波形表示領域に表示されない最初のACQデータの論理値が1であるか0であるかにかかわらず、右端の画素の次の画素が非表示であるとみなして中間コードが生成される。
ロジック波形を表すACQデータの集合の数が水平画素数未満であることによって、1つのロジック波形が重畳される場合に1つの中間コードの各データに加算される値は、最大でも1である。
上述してきたルールからすると、中間コード生成回路30は、H_AddとL_Subとに同時にアクセスすることがある。また、中間コード生成回路30は、H_SubとL_Addとに同時にアクセスすることがある。一方で、中間コード生成回路30は、H_AddとH_Subとに同時にアクセスする必要がない。また、中間コード生成回路30は、L_AddとL_Subとに同時にアクセスする必要がない。したがって、中間コード生成回路30は、中間コードのデータのうち最大でも2つのデータに同時にアクセスできるように構成される。同時にアクセスできるデータの数が最大でも2つにされることによって、その数が3つ以上にされる場合と比べて、構成が簡易化され得る。
以下、ACQデータの具体例に基づいて、中間コードの生成の動作が説明される。以下の具体例において、ACQデータに対応する画素は、5画素毎に並ぶとする。つまり、ACQデータの数は、水平画素数の1/5であるとする。また、トリガ信号が入力されるタイミングは、波形表示領域の左端の画素に揃えられるとする。
図7に例示されるように、波形表示領域に表示されるロジック波形を表すACQデータとして1回目に取得したACQデータの集合が、{0、0、0、1、1、1、・・}であるとする。これらのACQデータの集合のうち1番目のACQデータは、波形表示領域に表示されないとする。つまり、ACQデータの集合のうち2番目以降のACQデータが波形表示領域に表示されるとする。1番目のACQデータは、波形表示領域に表示されない最後のACQデータに対応する。2番目のACQデータは、波形表示領域に表示される最初のACQデータに対応する。
波形表示領域に表示されない最後のACQデータ、つまり1番目のACQデータは、波形表示領域の左端の画素に対応づけられる。1番目のACQデータの論理値が0である。よって、中間コード生成回路30は、波形表示領域の左端の画素の中間コードにおいて、L_Addだけに1を加算する。ここで、値が変化したセルは、ハッチングで強調されるとする。以下の説明においても、値が変化したセルは、ハッチングで強調されるとする。
2番目のACQデータは、左端から3個目の画素に表示される。2番目のACQデータの論理値が0であり1つ前のACQデータ(1番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から3個目の画素の中間コードのいずれのデータにも1を加算しない。
3番目のACQデータは、左端から8個目の画素に表示される。3番目のACQデータの論理値が0であり1つ前のACQデータ(2番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から8個目の画素の中間コードのいずれのデータにも1を加算しない。
4番目のACQデータは、左端から13個目の画素に表示される。4番目のACQデータの論理値が1であり1つ前のACQデータ(3番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から13個目の画素の中間コードのH_AddとL_Subとに1を加算する。
5番目及び6番目のACQデータはそれぞれ、左端から18個目及び23個目の画素に表示される。5番目及び6番目のACQデータの論理値がそれぞれの1つ前のACQデータ(4番目及び5番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から18個目及び23個目の画素の中間コードのいずれのデータにも1を加算しない。
図8に例示されるように、波形表示領域に表示されるロジック波形を表すACQデータとして2回目に取得したACQデータの集合が、{1、0、0、1、1、・・}であるとする。これらのACQデータの集合のうち1番目のACQデータは、波形表示領域に表示されないとする。つまり、ACQデータの集合のうち2番目以降のACQデータが波形表示領域に表示されるとする。1番目のACQデータは、波形表示領域に表示されない最後のACQデータに対応する。2番目のACQデータは、波形表示領域に表示される最初のACQデータに対応する。
波形表示領域に表示されない最後のACQデータ、つまり1番目のACQデータは、波形表示領域の左端の画素に対応づけられる。1番目のACQデータの論理値が1である。よって、中間コード生成回路30は、波形表示領域の左端の画素の中間コードにおいて、H_Addだけに1を加算する。ここで、L_Addは、図7を参照して説明した処理によって既に1となっている。
2番目のACQデータは、左端から5個目の画素に表示される。2番目のACQデータの論理値が0であり1つ前のACQデータ(1番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から5個目の画素の中間コードのH_SubとL_Addとに1を加算する。
3番目のACQデータは、左端から10個目の画素に表示される。3番目のACQデータの論理値が0であり1つ前のACQデータ(2番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から10個目の画素の中間コードのいずれのデータにも1を加算しない。
4番目のACQデータは、左端から15個目の画素に表示される。4番目のACQデータの論理値が1であり1つ前のACQデータ(3番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から15個目の画素の中間コードのH_AddとL_Subとに1を加算する。
5番目のACQデータは、左端から20個目の画素に表示される。5番目のACQデータの論理値が1つ前のACQデータ(4番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から20個目の画素の中間コードのいずれのデータにも1を加算しない。
図9に例示されるように、波形表示領域に表示されるロジック波形を表すACQデータとして3回目に取得したACQデータの集合が、{0、0、0、0、1、1、・・}であるとする。これらのACQデータの集合のうち1番目のACQデータは、波形表示領域に表示されないとする。つまり、ACQデータの集合のうち2番目以降のACQデータが波形表示領域に表示されるとする。1番目のACQデータは、波形表示領域に表示されない最後のACQデータに対応する。2番目のACQデータは、波形表示領域に表示される最初のACQデータに対応する。
波形表示領域に表示されない最後のACQデータ、つまり1番目のACQデータは、波形表示領域の左端の画素に対応づけられる。1番目のACQデータの論理値が0である。よって、中間コード生成回路30は、波形表示領域の左端の画素の中間コードにおいて、L_Addだけに1を加算する。ここで、L_Addは、図7を参照して説明した処理によって既に1となっていたので、1を加算されたことによって2になっている。また、H_Addは、図8を参照して説明した処理によって既に1となっている。
2番目のACQデータは、左端から2個目の画素に表示される。2番目のACQデータの論理値が0であり1つ前のACQデータ(1番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から2個目の画素の中間コードのいずれのデータにも1を加算しない。
3番目及び4番目のACQデータはそれぞれ、左端から7個目及び12個目の画素に表示される。3番目及び4番目のACQデータの論理値がそれぞれの1つ前のACQデータ(2番目及び3番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から7個目及び12個目の画素の中間コードのいずれのデータにも1を加算しない。
5番目のACQデータは、左端から17個目の画素に表示される。5番目のACQデータの論理値が1であり1つ前のACQデータ(4番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から17個目の画素の中間コードのH_AddとL_Subとに1を加算する。
6番目のACQデータは、左端から22個目の画素に表示される。6番目のACQデータの論理値が1であり1つ前のACQデータ(5番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から22個目の画素の中間コードのいずれのデータにも1を加算しない。
図10に例示されるように、波形表示領域に表示されるロジック波形を表すACQデータとして4回目に取得したACQデータの集合が、{1、0、0、1、1、1、・・}であるとする。これらのACQデータの集合のうち1番目のACQデータは、波形表示領域に表示されないとする。つまり、ACQデータの集合のうち2番目以降のACQデータが波形表示領域に表示されるとする。1番目のACQデータは、波形表示領域に表示されない最後のACQデータに対応する。2番目のACQデータは、波形表示領域に表示される最初のACQデータに対応する。
波形表示領域に表示されない最後のACQデータ、つまり1番目のACQデータは、波形表示領域の左端の画素に対応づけられる。1番目のACQデータの論理値が1である。よって、中間コード生成回路30は、波形表示領域の左端の画素の中間コードにおいて、H_Addだけに1を加算する。ここで、H_Addは、図8を参照して説明した処理によって既に1となっていたので、1を加算されたことによって2になっている。また、L_Addは、図9を参照して説明した処理によって既に2となっている。
2番目のACQデータは、左端から3個目の画素に表示される。2番目のACQデータの論理値が0であり1つ前のACQデータ(1番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から3個目の画素の中間コードのH_SubとL_Addとに1を加算する。
3番目のACQデータは、左端から8個目の画素に表示される。3番目のACQデータの論理値が0であり1つ前のACQデータ(2番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から8個目の画素の中間コードのいずれのデータにも1を加算しない。
4番目のACQデータは、左端から13個目の画素に表示される。4番目のACQデータの論理値が1であり1つ前のACQデータ(3番目のACQデータ)の論理値から変化している。よって、中間コード生成回路30は、左端から13個目の画素の中間コードのH_AddとL_Subとに1を加算する。ここで、H_Add及びL_Subは両方とも、図7を参照して説明した処理によって既に1となっていたので、1を加算されたことによって2になっている。
5番目及び6番目のACQデータはそれぞれ、左端から18個目及び23個目の画素に表示される。5番目及び6番目のACQデータの論理値がそれぞれの1つ前のACQデータ(4番目及び5番目のACQデータ)の論理値と同じである。よって、中間コード生成回路30は、左端から18個目及び23個目の画素の中間コードのいずれのデータにも1を加算しない。
以上、図7、図8、図9及び図10を参照して説明してきたように、中間コード生成回路30は、ロジック波形を表すACQデータの集合を4回分取得し、4つのロジック波形を重畳して表示する場合の中間コードを生成できる。
ロジックコード変換回路50は、中間コードメモリ40に格納されている中間コードをロジックコードに変換してロジックコードメモリ60に格納する。ロジックコード変換回路50は、各画素に対応する中間コードを、各画素に対応するH、L及びTを含むロジックコードに変換する。
<<中間コードに基づくロジックコードの生成>>
ロジックコード変換回路50は、ロジックコードメモリ60に格納されるロジックコードを最初にリセットしておく。このようにすることで、ロジックコード変換回路50は、ロジックコードメモリ60に初めてロジックコードを書き込む処理と、ロジックコードメモリ60に2回目以降にロジックコードを書き込む処理とを共通化できる。具体的には、ロジックコード変換回路50は、既に書き込まれている値を更新して書き込むリードモディファイライトの処理で共通化できる。ロジックコードのリセットは、制御部200からの命令によって実行されてもよいし、ハードウェアシーケンスにより、ロジック波形描画処理の開始時に実行されてもよい。
ロジックコード変換回路50は、ACQデータが存在する画素に対応するロジックコードを、以下のルールに基づいて生成する。
ロジックコード変換回路50は、ある画素の中間コードのH_Add又はL_Subのうち少なくとも一方が0であり、かつ、H_Sub又はL_Addのうち少なくとも一方が0である場合、ロジックコードのTを0に設定する。ロジックコード変換回路50は、それ以外の場合に、ロジックコードのTを1に設定する。
ロジックコード変換回路50は、ロジックコードのHを設定するために、各画素について、中間コードのH_AddとH_Subとに基づいて、H加減算結果と称されるパラメータを算出する。具体的には、ロジックコード変換回路50は、最初にH加減算結果を0に設定し、左端の画素の中間コードのH_Addの値をH加減算結果に加算するとともに、H_Subの値をH加減算結果から減算して、左端の画素のH加減算結果を算出する。次にロジックコード変換回路50は、左端から2番目の画素の中間コードのH_Addの値を左端の画素のH加減算結果に加算するとともに、H_Subの値をH加減算結果から減算して、左端から2番目の画素のH加減算結果を算出する。ロジックコード変換回路50は、左端の画素から順番に、各画素のH加減算結果を算出する。
ロジックコード変換回路50は、H加減算結果が1以上である画素において、ロジックコードのHを1に設定する。ロジックコード変換回路50は、H加減算結果が0である画素において、ロジックコードのHを0に設定する。ロジックコード変換回路50は、H加減算結果の全ビットの論理値の論理和(OR)を計算し、計算結果が1である場合にH加減算結果が1以上であると判定し、計算結果が0である場合にH加減算結果が0であると判定してよい。ロジックコード変換回路50は、例外処理として、ある画素のロジックコードのTが1に設定されている場合、その画素のロジックコードのHも1に設定する。
ロジックコード変換回路50は、ロジックコードのLを設定するために、各画素について、中間コードのL_AddとL_Subとに基づいて、L加減算結果と称されるパラメータを算出する。具体的には、ロジックコード変換回路50は、最初にL加減算結果を0に設定し、左端の画素の中間コードのL_Addの値をL加減算結果に加算するとともに、L_Subの値をL加減算結果から減算して、左端の画素のL加減算結果を算出する。次にロジックコード変換回路50は、左端から2番目の画素の中間コードのL_Addの値を左端の画素のL加減算結果に加算するとともに、L_Subの値をL加減算結果から減算して、左端から2番目の画素のL加減算結果を算出する。ロジックコード変換回路50は、左端の画素から順番に、各画素のL加減算結果を算出する。
ロジックコード変換回路50は、L加減算結果が1以上である画素において、ロジックコードのLを1に設定する。ロジックコード変換回路50は、L加減算結果が0である画素において、ロジックコードのLを0に設定する。ロジックコード変換回路50は、L加減算結果の全ビットの論理値の論理和(OR)を計算し、計算結果が1である場合にL加減算結果が1以上であると判定し、計算結果が0である場合にL加減算結果が0であると判定してよい。ロジックコード変換回路50は、例外処理として、ある画素のロジックコードのTが1に設定されている場合、その画素のロジックコードのLも1に設定する。
以下、具体例に基づいて、中間コードをロジックコードに変換する動作が説明される。
図7から図10までに例示されるACQデータに基づいて生成された中間コードが図11に例示される。ロジックコード変換回路50は、図11に例示される中間コードをロジックコードに変換する。
ロジックコード変換回路50は、中間コードに基づいて、H加減算結果とL加減算結果とを算出する。例えば、左端の画素において、H_Addが2、かつ、H_Subが0であることに基づいて、ロジックコード変換回路50は、H加減算結果を2として算出する。L_Addが2、かつ、L_Subが0であることに基づいて、ロジックコード変換回路50は、L加減算結果を2として算出する。また、左端から3番目の画素において、1つ前の画素のH加減算結果が2であることと、H_Subが1であることとに基づいて、ロジックコード変換回路50は、H加減算結果を1として算出する。また、左端から3番目の画素において、1つ前の画素のL加減算結果が2であることと、L_Addが1であることとに基づいて、ロジックコード変換回路50は、L加減算結果を3として算出する。ロジックコード変換回路50は、他の画素においても、上述のルールに基づいてH加減算結果とL加減算結果とを算出する。
ロジックコード変換回路50は、中間コードの各データ、並びに、H加減算結果及びL加減算結果に基づいてロジックコードを生成する。
例えば、左端の画素において、ロジックコードのTを1に設定する条件が満たされていないので、ロジックコード変換回路50は、ロジックコードのTを0に設定する。また、ロジックコード変換回路50は、H加減算結果及びL加減算結果が1以上であることに基づいて、ロジックコードのH及びLを1に設定する。
例えば、左から3番目の画素において、H_Sub及びL_Addが両方とも1であることに基づいて、ロジックコード変換回路50は、ロジックコードのTを1に設定する。また、ロジックコード変換回路50は、H加減算結果及びL加減算結果が1以上であることに基づいて、ロジックコードのH及びLを1に設定する。
例えば、左から5番目の画素において、H_Sub及びL_Addが両方とも1であることに基づいて、ロジックコード変換回路50は、ロジックコードのTを1に設定する。また、ロジックコード変換回路50は、L加減算結果が1以上であることに基づいて、ロジックコードのLを1に設定する。また、ロジックコード変換回路50は、H加減算結果が0であるもののロジックコードのTが1であることに基づいて、ロジックコードのHを1に設定する。
以上述べてきたように、4つのロジック波形を重畳して表示するためのロジックコードが生成される。ビットマップ変換回路70は、ロジックコードに基づいて4つのロジック波形が重畳して表示されるビットマップデータを描画する。ビットマップ変換回路70がロジックコードに基づいてビットマップデータを描画する処理は、ACQデータの集合の数が水平画素数以上の場合に実行される処理と同じであってよい。
具体的には、ビットマップ変換回路70は、以下のようにビットマップデータを描画してよい。ビットマップ変換回路70は、ロジックコードのHが1に設定されている、論理値が1の行に位置する画素にドットを描画する。つまり、ビットマップ変換回路70は、論理値が1であることを表す水平方向の線をドットの集合として描画する。ビットマップ変換回路70は、ロジックコードのLが1に設定されている、論理値が0の行に位置する画素にドットを描画する。つまり、ビットマップ変換回路70は、論理値が0であることを表す水平方向の線をドットの集合として描画する。ビットマップ変換回路70は、ロジックコードのTが1に設定されている場合、論理値が1の行に位置する画素と論理値が0の行に位置する画素との間の画素にドットを描画する。つまり、ビットマップ変換回路70は、論理値が1であることを表す画素と論理値が0であることを表す画素とを結ぶ垂直方向の線をドットの集合として描画する。ビットマップ変換回路70は、論理値が1である行、又は、論理値が0である行の少なくとも一方に複数の行を割り当ててもよい。この場合、0又は1の少なくとも一方の論理値を表す水平方向の線が太い線で表される。その結果、論理値の変化がない場合等に、論理値は、0であるか1であるか識別されやすくなる。
以上述べてきたように、本実施形態に係るロジック波形描画回路10は、ロジック波形を表すACQデータの集合の数が水平画素数未満である場合に、中間コードを生成することによって書き込み回数を減らすことができる。具体的には、ロジック波形描画回路10は、中間コードメモリ40に対して、水平画素数に対応する回数のデータの書き込みを実行する必要がなく、水平画素数未満のACQデータの数に対応する回数のデータの書き込みを実行するだけでよい。つまり、ACQデータの数が少ないほど、メモリへの書き込み処理の回数が減少する。
比較例として、ある波形を表すACQデータの集合の数が水平画素数未満である場合でも、ロジックコード生成回路20がACQデータに基づいてロジックコードを生成する。この場合、ロジックコード生成回路20は、水平画素数未満のACQデータを、水平画素数に合わせて補間するデータを生成し、水平画素数分のロジックコードを生成する。したがって、ロジックコードメモリ60に対して水平方向の全画素数に対応する回数の書き込み処理が発生する。
例えば、水平画素数が1000個である場合に、ロジック波形を1000回取り込んで重畳して表示すると仮定する。また、1つのロジック波形を表すACQデータの集合の数は25個であると仮定する。この仮定において、比較例によれば、1回のロジック波形毎に全画素に対応するロジックコードを生成してロジックコードメモリ60に格納する必要がある。そうすると、ロジックコードメモリ60への書き込みが1000回×1000画素分=1000000回も発生する。
一方で、本実施形態によれば、1回のロジック波形毎に25個のACQデータに対応する中間コードが生成され中間コードメモリ40に格納されればよい。そうすると、中間コードメモリ40への書き込みが1000回×25個分=25000回で済む。中間コードからロジックコードに変換することによるロジックコードメモリ60への書き込みが1000回発生するものの、メモリへの書き込み処理は、合わせて26000回で済む。つまり、複数回取り込んだロジック波形を中間コードの段階で重畳することによって、メモリへの書き込み処理の回数が減少する。したがって、本実施形態によれば、ACQデータの集合の数が減るほど、メモリへの書き込み処理の回数が減少する。その結果、処理時間の短縮、及び、処理負荷の低減が実現される。
(ロジック波形描画方法)
ロジック波形描画回路10は、図12に例示されるフローチャートの手順を含むロジック波形描画方法を実行してもよい。ロジック波形描画回路10は、制御部200によってロジック波形描画方法を実行するように制御されてもよい。ロジック波形描画方法は、制御部200等のプロセッサに実行させるロジック波形描画プログラムとして実現されてもよい。ロジック波形描画プログラムは、非一時的なコンピュータ読み取り可能な媒体に格納されてよい。
ロジック波形描画回路10は、中間コードメモリ40の中間コード及びロジックコードメモリ60のロジックコードをそれぞれリセット(クリア)する(ステップS1)。
ロジック波形描画回路10は、ACQメモリ130からACQデータを取得する(ステップS2)。
ロジック波形描画回路10は、1つのロジック波形を表すACQデータの集合の数が水平画素数未満であるか判定する(ステップS3)。1つのロジック波形を表すACQデータの集合の数は、データ数とも称される。つまり、ロジック波形描画回路10は、データ数が水平画素数未満であるか判定する。
ロジック波形描画回路10は、データ数が水平画素数未満でない場合(ステップS3:NO)、つまりデータ数が水平画素数以上である場合、ステップS4の手順をスキップしてステップS5の手順に進む。
ロジック波形描画回路10は、データ数が水平画素数未満である場合(ステップS3:YES)、中間コード生成回路30に中間コードを生成させる。具体的には、中間コード生成回路30は、1つのロジック波形を表すACQデータの集合に基づいて、中間コードを生成して中間コードメモリ40に格納する。ロジック波形描画回路10がACQデータの集合を複数取得した場合、中間コード生成回路30は、各集合に基づく中間コードを重畳して中間コードメモリ40に格納する。
ロジック波形描画回路10は、ロジックコードを生成する(ステップS5)。ロジック波形描画回路10は、中間コードを生成しない場合、ロジックコード生成回路20にロジックコードを生成させる。ロジックコード生成回路20は、1つのロジック波形を表すACQデータの集合に基づいてロジックコードを生成してロジックコードメモリ60に格納する。ロジック波形描画回路10がACQデータの集合を複数取得した場合、ロジックコード生成回路20は、各集合に基づくロジックコードを重畳してロジックコードメモリ60に格納する。ロジック波形描画回路10は、中間コードを生成した場合、ロジックコード変換回路50に、中間コードをロジックコードに変換させる。ロジックコード変換回路50は、1つ又は複数のロジック波形から生成した中間コードをロジックコードに変換してロジックコードメモリ60に格納する。
ロジック波形描画回路10は、ビットマップデータを生成する(ステップS6)。ロジック波形描画回路10は、ビットマップ変換回路70に、ロジックコードに基づいてビットマップデータを描画させる。ビットマップ変換回路70は、ロジックコードをビットマップに変換してビットマップメモリ154に格納する。ロジック波形描画回路10は、ステップS6の手順の実行後、図12のフローチャートの手順の実行を終了する。
(他の実施形態)
ロジック波形描画回路10は、複数のロジック波形をそれぞれ区別して表示するようにビットマップデータを描画してよい。ロジック波形描画回路10は、例えば、複数回にわたって取り込まれたロジック波形のうち、最後に取り込まれた1つのロジック波形と、それ以外に取り込まれた1つ又は複数のロジック波形とを区別して表示するようにビットマップデータとして描画してもよい。
また、ロジック波形描画回路10は、複数種類のロジック波形をまとめてバス表示することがある。仮に、複数回取り込んだロジック波形それぞれのバス表示が重畳して表示される場合、それぞれのバス表示が見にくくなる。そこで、ロジック波形描画回路10は、複数回取り込んだロジック波形のうち1回分のロジック波形に基づいてバス表示するようにビットマップデータを描画してよい。この場合、ロジック波形描画回路10は、バス表示に用いられたロジック波形を、バス表示に用いられないロジック波形と区別して表示するようにビットマップデータを描画してよい。
このように複数のロジック波形をそれぞれ区別した表示は、例えば、以下に示される構成で実現され得る。
<複数面を有するロジックコードメモリ60>
ロジック波形描画回路10のロジックコードメモリ60は、波形表示領域に表示する内容に対応づけられるロジックコードを格納する領域を有する。ロジックコードメモリ60は、ロジックコードを格納する領域を少なくとも1面有する。ロジックコードメモリ60は、ロジックコードを格納する領域を2面以上有してもよい。ロジック波形描画回路10は、1面の領域毎に格納されるロジックコードに基づいて、波形表示領域に表示するビットマップデータを描画できる。
具体的には、ビットマップ変換回路70は、ロジックコードを格納する1面の領域毎に対応する色でロジック波形を区別して表示するようにビットマップデータを描画できる。ロジックコードを格納する領域が2面以上ある場合、ビットマップ変換回路70は、2色以上の異なる色で区別されるロジック波形を表示するようにビットマップデータを描画できる。色の違いは、グレースケール等の輝度の違いによって表されてもよいし、RGB等の色彩の違いによって表されてもよい。
上述したように、ロジック波形描画回路10は、複数回にわたって取り込まれたロジック波形のうち、最後に取り込まれた1つのロジック波形と、それ以外に取り込まれた1つ又は複数のロジック波形とを区別して表示するようにビットマップデータを描画できる。この場合、ロジック波形描画回路10は、最後に取り込まれた1つのロジック波形に基づくロジックコードと、それ以外に取り込まれた1つ又は複数のロジック波形に基づくロジックコードとを、ロジックコードメモリ60の異なる面に格納する。ビットマップ変換回路70は、異なる面に格納されたロジックコードそれぞれに基づいて異なる色でビットマップデータを描画することによって、各ロジックコードに基づくロジック波形を区別可能に表示できる。
以上述べてきたように、ロジック波形描画回路10は、ロジックコードメモリ60がロジックコードを格納する領域を2面以上有することによって、ロジック波形を区別して表示できる。例えば、ロジック波形描画回路10は、複数回取り込んだロジック波形のうち1回分のロジック波形だけを区別して表示するようにビットマップデータを描画できる。
<MSBを有する中間コード>
全てのロジック波形を重畳した表示と特定の1つのロジック波形の表示とを区別する場合において、ロジック波形描画回路10は、2面の領域に分けてロジックコードを格納することができる。ロジック波形描画回路10は、特定の1つのロジック波形の表示に対応するロジックコードだけを2面両方ともに格納し、全てのロジック波形の表示に対応するロジックコードを1面だけに格納してよい。
ここで、1つのロジック波形を表すACQデータの集合の数が水平画素数以上である場合、ロジック波形描画回路10は、ACQデータに基づいてロジックコード生成回路20にロジックコードを生成させる。ロジックコード生成回路20は、上述のとおり、2面の領域に異なるロジックコードを格納することで、表示の区別を実現できる。
一方で、ロジック波形描画回路10は、1つのロジック波形を表すACQデータの集合の数が水平画素数未満である場合に生成する中間コードの構成を変更することによって、表示の区別を実現してもよい。具体的には、中間コードメモリ40が以下のように構成されてよい。
例えば、1000個のロジック波形が重畳して表示される場合、中間コードメモリ40は、中間コードの各データを10ビットで表すことができるように構成される。ここで、中間コードメモリ40は、中間コードの各データに1ビットを追加し、各データを11ビットで表すように構成されてよい。追加された1ビットは、各データの値を表すために用いられる10ビットとは区別され、MSB(Most Significant Bit)として用いられる。
上述のとおり、特定の1つのロジック波形の表示に対応するロジックコードだけが2面両方に格納されるとともに、全てのロジック波形を重畳した表示に対応するロジックコードが1面だけに格納されるとする。この場合、中間コード生成回路30は、特定の1つのロジック波形を表すACQデータの集合に基づく中間コードの各データのMSBに1を立て、他のロジック波形を表すACQデータの集合に基づく中間コードの各データのMSBを0とする。
ロジックコード変換回路50は、MSBが1とされている中間コードをロジックコードに変換する際に、変換したロジックコードを2面両方に格納する。ロジックコード変換回路50は、MSBが0とされている中間コードをロジックコードに変換する際に、変換したロジックコードを1面だけに格納する。
このようにすることで、中間コードメモリ40が中間コードを格納する領域を2面有しなくても、中間コードが2種類のロジックコードに変換される。つまり、中間コードメモリ40が中間コードを格納する領域を2面有しなくても、ロジック波形が区別して表示され得る。例えば、最後に取り込んだACQデータの集合に基づいて生成される中間コードの各データのMSBが1とされることによって、最後に取り込んだACQデータの集合で表されるロジック波形が区別して表示される。
本実施形態に係るロジック波形描画回路10は、以下のように構成される。
ロジック入力付きのデジタルオシロスコープ100が複数回にわたって取り込んだACQデータを重ね描きすることでデータ取り込みレートを上げる方式において、ロジック波形を表示しても取り込みレートの向上を妨げないロジック描画方式が提供される。
また、ACQデータの数が少ないときに表示補間をせずにドット表示することによって、取り込みレートを更に向上させようとした場合、アナログ波形が表示補間なし(ドット表示)で表示される。一方で、ロジック波形がパルス補間で表示されたとしても、できるだけ取り込みレート向上の妨げにならないようなロジック描画方式が提供される。
また、重ね描きするロジック波形をH、L、及び、Tそれぞれを表すロジックコードにコード化し、そのコードに応じてビットマップメモリ154に波形を展開し表示することで、データ数が少ないときの処理が高速化される。
また、ACQデータの数が波形表示領域の水平画素数以上である場合、1つの画素毎のACQデータと、その1つ前の画素のACQデータとに基づいて各画素のロジックコードが生成され、ロジックコードメモリ60に格納される。
また、ACQデータの数が波形表示領域の水平画素数未満である場合、データ補間することなく、ACQデータ数分だけ現在よりも前のACQデータから変化があった画素の中間コードが積算値として生成され、中間コードメモリ40に格納される。このとき、波形表示領域上に表示すべきACQデータがないことを示す非表示データからの変化、又は、非表示データへの変化の少なくとも一方が考慮される。また、中間コードメモリ40から読み出した中間コードを変換したロジックコードがロジックコードメモリ60に格納される。
また、ACQデータの数と波形表示領域の水平画素数との大小関係にかかわらず、共通のロジックコードが生成される。その結果、ロジックコードに基づいてビットマップデータを生成する処理、及び、その後の処理を実行する回路は、共通の回路で構成され得る。
本開示に係る実施形態について、諸図面及び実施例に基づき説明してきたが、当業者であれば本開示に基づき種々の変形又は修正を行うことが容易であることに注意されたい。従って、これらの変形又は修正は本開示の範囲に含まれることに留意されたい。例えば、各構成部に含まれる機能などは論理的に矛盾しないように再配置可能であり、複数の構成部を1つに組み合わせたり、或いは分割したりすることが可能である。
表示器170は、時間を表す軸が水平方向に延びるように波形を表示すると仮定して説明されてきた。表示器170は、時間を表す軸が垂直方向等の他の方向に延びるように波形を表示してもよい。この場合、時間を表す軸が延びる方向は所定方向とも称される。また、水平画素数は、所定方向の画素数と言い換えられる。