本発明を適用した実施形態について、図面を参照しながら説明する。以下は、ベースモジュールの信号処理部が回路情報作成プログラムを実行することで回路情報作成装置として動作する試作ツールの実施形態について最初に説明する。次に、試作ツールとサーバーがそれぞれのプログラムを実行して回路情報を作成する回路情報作成システムの実施形態について説明する。
●ハードウェアの構成1
まず、本実施形態に係る回路情報作成プログラムを実行するハードウェアの構成の例について説明する。図1に示す回路情報作成装置としての試作ツール1000は、電子回路の試作用ツールとして用いられるハードウェア資源である。本実施形態において、回路情報作成プログラムは、試作ツール1000において実行されるコンピュータソフトウェアである。
試作ツール1000は、信号処理部を備えるベースモジュール10と、特定機能部であるデバイス21を備える拡張モジュール20と、ベースモジュール10と拡張モジュール20を結合する配線を切り換える配線モジュール30と、を有してなる。
ベースモジュール10は、信号処理部であるCPU11と、CPU11の各端子に対する配線を切り換えるスイッチング手段の一部を構成する第1信号変換部12と、を有してなる。
CPU11の内部には記憶手段としてのメモリ111が搭載されている。メモリ111には、CPU11が実行する回路情報作成プログラムや、回路情報作成プログラムが用いる定義を含むデータ群等が記憶されている。また、メモリ111には、CPU11に接続される拡張モジュールを含む各種の外部装置を動作させるためのファームウェアが記憶されている。このファームウェアは、CPU11のプログラムライブラリの一部であって、後述のように、回路情報作成プログラムの実行によって書き換えられることになる。書き換えられた新たなファームウェアもメモリ111に格納される。
なお、回路情報作成プログラムは、CPU11の内部のメモリ111ではなく、外部の記憶手段に保存されていてもよい。また、回路情報作成プログラムは、インターネットに接続されているWebサーバー上で実行されるソフトウェアとして構成されていてもよい。さらに、回路情報作成プログラムの実行に用いられるデータや、回路情報作成プログラムの実行によって作成される新たなファームウェアやデータは、Webサーバー上に保存されていてもよい。すなわち、本実施形態に係る回路情報作成プログラムは、その処理や、当該処理の準備に要する処理を実行可能なハードウェア資源と協働するソフトウェアによって構成されていればよい。本明細書における実施形態の説明は、これらを前提とする。
試作ツール1000は、ベースモジュール10と拡張モジュール20の配線を切り換えて、特定の機能を果たす電子回路を構成する。より具体的には、試作ツール1000は、ベースモジュール10のCPU11と、拡張モジュール20のデバイス21との配線を配線モジュール30によって切り換えて、所望する信号処理や制御動作をする電子回路を構成することで、所望の電子回路を試作する支援をする装置である。また、試作ツール1000は、後述のように、試作した電子回路の構成を示す情報(回路図情報や新たなファームウェア)を作成する回路情報作成装置としての役割を有する。
第1信号変換部12は、例えば、パラレル−シリアル変換機能、または、シリアル−パラレル変換機能を有し、回路情報作成プログラムを実行したCPU11によって動作を制御される。第1信号変換部12は、CPU11の各端子から出力された各種のパラレル信号をパラレル−シリアル変換処理してシリアル信号を生成し、該生成されたシリアル信号を拡張モジュール20に出力する。また、第1信号変換部12は、拡張モジュール20から出力されたパラレル信号をパラレル‐シリアル変換処理してシリアル信号を生成し、該生成されたシリアル信号を信号変換部12でシリアル信号をパラレル信号にしてCPU11に入力する。あるいは、CPU11は、信号変換部12を介さずにシリアル信号で試作ツールを動作させることもできる。この場合、CPU11は、拡張モジュール20の入出力端子に対する端子の割り当ての処理を後で行えばよい。
拡張モジュール20は、回路情報作成プログラムを実行したCPU11の制御に基づいて特定の機能の一部または全部を果たすように動作するデバイス21と、スイッチング手段の一部を構成する第2信号変換部22と、を有してなる。それぞれの拡張モジュール20は、識別情報としてアドレス情報(モジュールアドレス)を保有する。かかるモジュールアドレスは、CPU11の制御に基づいて拡張モジュール20からCPU11に送信(出力)される。モジュールアドレスは、一般には、プログラム動作での初期化の際や、個々の拡張モジュール20の使用の際に、CPU11によって受信(取得)される。モジュールアドレスが拡張モジュール20からCPU11に送信される他のタイミングについては後述する。デバイス21は、CPU11の制御に応じて所定の動作や処理を実行する。また、デバイス21は、かかる所定の動作や処理によって得た情報を、CPU11に出力する。
第2信号変換部22も、例えば、パラレル−シリアル変換機能、または、シリアル−パラレル変換機能を有し、回路情報作成プログラムを実行したCPU11によって動作を制御される。第2信号変換部22は、デバイス21の各端子から出力された各種のパラレル信号をパラレル−シリアル変換処理してシリアル信号を生成し、該生成されたシリアル信号をベースモジュール10に出力する。また、第2信号変換部22は、ベースモジュール10からのシリアル信号をシリアル−パラレル変換処理してパラレル信号を生成し、該生成されたパラレル信号をデバイス21に入力する。
配線モジュール30は、通信手段であって、回路情報作成プログラムを実行したCPU11によって制御される。配線モジュール30は、CPU11の各端子と各デバイス21の各端子とを接続する配線を、配線情報に基づいて動的に切り換える。なお、配線情報とは、ベースモジュール10と拡張モジュール20の結合状態を定義する情報である。より具体的には、配線情報は、ベースモジュールの端子と拡張モジュールに搭載されたデバイス類の端子を定義し、また、これら端子間の結合状態を定義する情報である。
図1では、配線モジュール30は、シリアル通信を行う回路として例示されている。なお、試作ツール1000における配線モジュール30は、この例に限られない。配線モジュール30は、有線通信回線である高速通信バスを用いて構成されることができる。あるいは、配線モジュール30は、無線チャネルおよび無線通信回線を用いて構成されることができる。
図1は、ベースモジュール10に3つの拡張モジュール20が接続されている状態を例示しているが、ベースモジュール10に接続される拡張モジュール20の数は任意である。ベースモジュール10の仕様によっては、拡張モジュール20の接続数は3つよりも多くなる。電子回路を試作するには、少なくとも1つの拡張モジュール20をベースモジュール10に接続すればよい。
なお、本実施形態に係る回路情報作成プログラムを実行することができる回路情報作成装置のハードウェア構成は、図1に例示した試作ツール1000に限られない。回路情報作成装置のハードウェアは、少なくとも、「信号処理部」と、信号処理部と結合して協働し特定機能を果たす「特定機能部」と、を有していればよい。また、回路情報作成装置のハードウェアは、信号処理部と特定機能部との結合を回路情報作成プログラムの命令に応じて動的に変化させる機能や、信号処理部と特定機能部との接続(結線)状態を切り替える機能を備える「配線切換部」を有していればよい。回路情報作成装置のハードウェアは、上に示した種々の機能を発揮するための処理を実行できるものであればよい。
●ハードウェアの構成2
次に、回路情報作成装置としての試作ツールのハードウェア構成の別の例について説明する。図2Aに示す試作ツール1001は、複数のベースモジュール101と、各ベースモジュール101に個別に接続する拡張モジュール201と、を有してなる。拡張モジュール201は、それぞれ独自のデバイス21を備えている。各デバイス21(デバイスA、デバイスB、及びデバイスC)は、それぞれの信号処理や動作を制御するベースモジュール101のCPU11と1対1で配線されて結合されている。その上で、各デバイス21(デバイスA乃至C)は、他のデバイス21と無線回線を介して相互に接続し、協働して特定の機能を果たすように構成されている。この例では、CPU11とデバイス21を1対1に組み合わせた電子回路同士が無線回線で接続されることで、各CPU11をメッシュ状に接続する。
図2Aに示す試作ツール1001は、特定の機能の一部を担う各々の拡張モジュール201を個別のCPU11によって制御することで、無線回線である配線モジュール301を介して拡張モジュール201同士を接続する。したがって、試作ツール1001によれば、無線接続機能を備える電子回路を試作することができる。
図2Bに示す試作ツール1002は、図2Aに示す2つのベースモジュール101を一つのベースモジュール102に置き換えた構成である。ベースモジュール102は、一つのCPU11に複数のデバイス21を接続するように構成されている。試作ツール1002において、ベースモジュール102は、他の一部のベースモジュール101と無線回線である配線モジュール301を介して接続される。
また、図2Aおよび図2Bに示すように、試作ツール1001および試作ツール1002は、無線通信回線を介して、複数のCPU11を1つの信号処理部として機能させることができる。すなわち、試作ツール1001および試作ツール1002は、複数分散しているCPU11の一部または全部を合わせて、一つのCPU(信号処理部)として機能させることができる。したがって、これら試作ツール1001,1002は、図1に示した試作ツール1000の構成すなわち、1つのCPU11に複数の拡張モジュール20が接続された構成と同様の機能を果たす。また、拡張モジュール20を結合させたベースモジュール10を複数接続して、これらを相互に連動させて特定の機能を果たす構成にしてもよい。以下、試作ツール1000、試作ツール1001、試作ツール1002、のいずれかの試作ツールを代表例として説明する場合、他の試作ツールも同様に適用できるものとして、その説明を省略する。
●ハードウェアの構成3
次に、回路情報作成装置としての試作ツールのハードウェア構成のさらに別の例について説明する。図3に示す試作ツール1003は、配線切換部に電子スイッチ群を用いるものである。
試作ツール1003におけるベースボード570は、試作ツール1000におけるベースモジュール10に相当し、拡張ボード580は、拡張モジュール20に相当する。
図3において、ベースボード570は、信号処理部であるマイクロコンピュータ590と、スイッチング手段を構成するスイッチング制御回路620、スイッチング回路621、およびスイッチング回路622と、を有してなる。また、ベースボード570は、表示部576を有している。ベースボード570には拡張ボード580が、コネクタ630によって結合されている。なお、スイッチング制御回路620としてはI/Oエキスパンダなどを用いることができる。
拡張ボード580は、指定判定部583と、スイッチング手段を構成するスイッチング回路581およびスイッチング回路592、特定の機能を果たすデバイス群582を有している。なお、拡張ボード580も、表示部594を有している。
マイクロコンピュータ590とスイッチング制御回路620、指定判定部583のすべては、信号バス575、信号バス572、信号バス585で数珠つなぎ状につながっている。
ベースボード570は、コネクタ630を介して拡張ボード580と電気的に接続することができる。ベースボード570と拡張ボード580の接続は、ベースボード570に配置されたスイッチング制御回路620によって、スイッチング回路621を無効にし、かつ、スイッチング回路622を有効にすることで行う。スイッチング回路621を無効にし、スイッチング回路622を有効にすることで、ベースボード570のスイッチング制御回路620の入出力端子I/Oと拡張ボード580の指定判定部583の入出力端子I/Oとを電気的に接続することができる。この状態でスイッチング制御回路620の入出力端子I/Oを入力状態とし、拡張ボード580上の指定判定部583からのコネクタ接続位置確認信号を受け取ることで、拡張ボード580の接続位置を確認することができる。
他の構成として、拡張ボード580の指定判定部583の入出力端子I/Oと、ベースボード570のスイッチング制御回路620の入出力端子I/Oとの入出力方向を逆にし、拡張ボード580側でベースボード570の出力信号を受け取るようにする。そしてこの信号を、通信バスを通してベースボード570のマイクロコンピュータ590に伝えるように構成してもよい。
また、試作ツール1003は、図1に示す例と同様に、ベースボード570に対して複数の拡張ボード580を接続する構成とすることもできる。他の構成として、拡張ボード相互間で接続位置の確認をするようにすれば、拡張ボード580を多段に接続する、すなわち拡張ボード580同士を直接接続することが可能となる。この場合、より規模の大きな回路情報作成装置を構築することができる。
試作ツール1003は、回路情報作成プログラムを実行したマイクロコンピュータ590の制御に基づいて、以下のように動作する。まず、マイクロコンピュータ590は、拡張ボード580上の指定判定部583の入出力端子I/Oと、ベースボード570のスイッチング制御回路620の入出力端子I/Oとの接続関係を確認するための信号を、拡張ボード580に対して送受信する。これによって、マイクロコンピュータ590は、拡張ボード580の接続位置をアドレス毎に確認する。拡張ボード580が正しく接続されていれば、マイクロコンピュータ590は、その旨を示す情報を、ベースボード570の表示部576に表示し、また、拡張ボード580の表示部594に表示させる。
第1制御ライン574は、ベースボード570における各スイッチング回路621,622を制御するスイッチング制御回路620の制御信号が伝送される信号線である。第2制御ライン593は、拡張ボード580における各スイッチング回路581,592を制御する指定判定部583の制御信号が伝送される信号線である。
マイクロコンピュータ590に接続された指定判定部583およびスイッチング制御回路620を制御するために信号バス575、信号バス585に伝送される制御信号は、すべて同じ信号である。また、マイクロコンピュータ590は、信号バス578と指定判定部583とスイッチング制御回路620を使用して、各スイッチング回路621、622、592、581を制御する。
マイクロコンピュータ590による上に示した制御は、スイッチング回路592とスイッチング回路622とを、信号バス587、信号バス578、信号バス5871を介して2つの接続状態を相互に切り換える制御に相当する。上記の制御による接続状態の一方は、指定判定部583の入出力端子I/Oとスイッチング制御回路620の入出力端子I/Oとをつなぐ状態である。また、接続状態の他方は、マイクロコンピュータ590と拡張ボード580のデバイス群582とを、スイッチング回路581とスイッチング回路621により信号バス588と信号バス578を介してつなぐ状態である。
図3において、ベースボード570側に拡張ボード580の位置信号を受け取るための入出力端子を別途に設けて、この入出力端子をベースボード570の入出力端子に接続し、拡張ボード580側にも指定判定部583の入出力端子に接続する端子を設けてもよい。こうすれば、ベースボード570側のスイッチング回路622と拡張ボード580側のスイッチング回路592がなくても、自動的に拡張ボード580の位置を判断することができる。また、取り付け位置に合わせて、指定判定部583から拡張モジュールの端子の数と種類、拡張モジュールのモジュールアドレス、その他、拡張モジュールの回路を使用するための各種情報を信号に乗せて送れば、より緻密な動作を実現することができる。
以上説明した試作ツール1003を用いると、ベースボード570に拡張ボード580を任意に取り付け或いは取り外しをし、ベースボードと拡張ボードをランダムにかつ多数の組み合わせを試しながら、容易に動作させて確認することができる。これによって、特定の機能を果たす電子回路の試作をより容易に、かつ、効率的に行うことができる。
ここまで説明した試作ツール1000、試作ツール1001、試作ツール1002および試作ツール1003のいずれを用いても、回路情報作成プログラムを実行して、試作した電子回路を動作させることができる。また、各試作ツールを用いて回路情報作成プログラムを実行すると、試作した電子回路の回路図を作成することができる情報(回路図情報)を自動的に作成することができる。また、各試作ツールによれば、試作した電子回路の動作に用いることができるファームウェアを容易に作成することができる。なお、試作ツールが回路情報作成プログラムを実行して作成された新たなファームウェアを、当該生成前に使用されるファームウェアと区別するために、「特定ファームウェア」という。
●試作手順
次に、回路情報作成プログラムを実行して電子回路を試作する手順の例を説明する。この手順は、図5に示す試作ツール1004を用いる場合を前提とする。図5に示す試作ツール1004は、すでに説明した試作ツール1000、1001、1002、1003を概念的に簡略化したものの例である。なお、ツールの特性によって、回路情報作成プログラムの処理手順に多少の違いが生ずる。このため、各ツールによる手順の違いについては、該当する説明箇所で適宜説明を加えるものとする。図4のフローチャートに示すように、まず、目的とする機能を発揮するような電子回路を構成するために必要となる拡張モジュール5020の組み合わせを選択し、それぞれの拡張モジュールをベースモジュール5010に取り付けて、試作する電子回路(以下、試作回路という。)を組み立てる(S101)。
次に、試作ツール1004とファームウェアとAPI(Application Programming Interface)を使用して、試作回路を動作させる(S102)。試作回路の動作が目的としている動作(予定している動作)でなければ(S103のNo)、試作回路を再度組み立てる(S101)。
試作回路の動作が目的としている動作であれば(S103のYes)、例えば不図示のユーザインタフェース画面の実行ボタンがユーザにより選択されて、S104でCPU5011が以下の処理を行う。CPU5011は、ベースモジュール5010に取り付けられている拡張モジュール5020の識別情報であるモジュールアドレスを各拡張モジュール5020から取得し、取得したモジュールアドレスの一覧であるモジュールアドレス一覧を生成して出力する(S104)。モジュールアドレス一覧の出力先は、例えば、ベースモジュール5010が備えるCPU5011のメモリ5111である。出力されるモジュールアドレス一覧は、拡張モジュール5020を一意に識別可能なアドレス情報によって構成されているデータ群である。
次に、CPU5011は、モジュールアドレス一覧に含まれている拡張モジュール5020のアドレス情報に該当する回路図データを特定し、この回路図データに対してCPU5011の端子を当てはめて、配線を固定した回路図データを生成する(S105)。CPU5011により回路図データを特定する処理は、例えば、拡張モジュール5020のモジュールアドレスと拡張モジュール5020の回路図データとを対応付けたデータベースを予めメモリ5111等に格納し、S104で取得されたモジュールアドレスに該当する回路図データを特定する。CPU5011は、生成された回路図データを、例えばメモリ5111に記憶する。なお、すでに説明のとおり、回路図データや、回路図を作成するプログラムは、CPU5011とは別体の記憶手段に記憶されてもよい。また、これらデータやプログラムはインターネット上に配置されているサーバーに記憶されてもよい。
次に、CPU5011は、S105で生成した回路図データすなわちCPU5011の端子を当てはめて固定した回路図データに合うように、S102で使用されたファームウェアを書き換える(S106)。この書き換えられた新たなファームウェアが特定ファームウェアになる。生成された特定ファームウェアは、CPU5011のメモリ5111に記憶される。なお、生成された特定ファームウェアは、CPU5011とは別途設けられた記憶手段に保存されてもよい。この場合、インターネット上に配置されたWebサーバー上に特定ファームウェアが保存されてもよい。
以上のとおり、回路情報作成プログラムを実行した試作ツール1004によれば、仮に構成したベースモジュールと1以上の拡張モジュールからなる電子回路の動作を確認した後に、当該電子回路の生産に必要な回路情報(回路図データ)および特定ファームウェアを自動的に作成することができる。すなわち、回路情報作成装置としての試作ツール1004によれば、当該ツールで使用したスイッチ群やシリアルパラレル変換器などの不要な部品が無い可及的に最少構成にした量産用の回路図を作成するために用いる回路図データを、自動的に作成することができる。また、試作ツール1004によれば、当該電子回路を構成するために用いられる特定ファームウェアを自動的に作成することができる。
●回路情報作成プログラムの機能構成例
次に、回路情報作成装置によって実行される回路情報作成プログラムについて、図5乃至図12を参照して説明する。図5に示す試作ツール1004には、前述した試作ツール1000や1001、1002、1003が概念的にも含まれている。試作ツール1004は、CPU5011とデバイス5021が配線モジュール5030を介して結合する構成である。配線モジュール5030は、スイッチング手段であって、回路情報作成プログラムとしてのプログラム100を実行したCPU11によって制御される。配線モジュール5030は、CPU5011とデバイス5021との接続をスイッチングしてつなぐ実質的な端子としてCPU5011によって制御されればよい。このため、配線モジュール5030は、パラレル通信、シリアル通信、再配線バススイッチング、無線など様々な通信形式を用いることができる。CPU5011は、信号の入出力に用いられる信号端子5013を複数備えている。デバイス5021は、CPU5011に複数結合可能なモジュールである。それぞれのデバイス5021は、CPU5011の信号端子5013と接続される機能端子5023を複数備えている。
プログラム100に基づいてCPU5011が処理を実行するときに使用するデータは、CPU5011のメモリ5111に予め記憶してある。CPU5011のメモリ5111に記憶してあるデータは、ファームウェア、CPU5011がデバイス5021を検知し識別するときに用いるアドレス情報、信号端子5013と機能端子5023の配線時に機能端子5023を識別する相対的端子番号などである。なお、アドレス情報や相対的端子番号は、CPU5011と別体の記憶手段に保存してもよい。この場合、これらのデータはインターネットに接続されたサーバー上に保存されてもよい。
図5においてCPU5011の信号端子5013は、GPIO01、GPIO02、・・・、GPIO09の9個の端子からなるものとする。これら9個の信号端子5013は、汎用入出力端子である。信号端子5013はそれぞれ、デバイス5021と接続して、CPU5011からデバイス5021への制御信号や、デバイス5021からCPU5011への信号等のやりとりを行うインターフェースを構成する。
また、図5においてデバイス5021の機能端子5023は、Signal1、Signal2、Signal3、の3個の端子からなるものとする。なお、後述するプログラム100を実行する環境は、CPU5011に接続するデバイス5021の数を3個に限るものではない。また、各デバイス5021が有する機能端子5023の数を3本に限るものでもない。
次に、試作ツール1004の動作に用いるファームウェアについて説明する。この例ではファームウェアは、CPU5011のメモリ5111に記憶しているが、CPU5011の外部の記憶媒体にファームウェアを記憶しておくこともできる。ファームウェアには、CPU5011とデバイス5021を接続するための配線の制御に必要な情報とコマンドが、定義情報として記述されている。図6は、ファームウェアに含まれる定義情報の一部の例を示している。図6に示す定義情報121は、アドレス情報と相対的端子番号を定義するための情報からなる。
図6に示すように、定義情報121に含まれる「#define」コマンドは、CPU5011が備える各端子(信号端子5013)を定義している。
「Module_A=」や「Module_B=」にて記述されている部分は、プログラム100で用いられるクラスやインスタンス、または構造体等を定義している。この定義によって、プログラム100は、デバイス5021を識別するための変数として「Module_A」、「Module_B」を用いることができる。この「Module_A」、「Module_B」は、デバイス5021のアドレス情報とデバイス5021の配線情報に相当する。
定義情報121に含まれているプログラム関数「set_IOs()」は、デバイス5021のそれぞれの機能端子5023に対応する配線状態を先ほどの#defineで定義したCPU5011の端子のどれかに当てはまるように指定するコマンドである。このコマンドにより、「Module_A」および「Module_B」として区別されるそれぞれのデバイス5021に対して、CPU5011が備える信号端子5013が各機能端子5023にどのように配線されるか指定される。
同じ定義の信号(Signal2、Signal3)は、「Module_A」および「Module_B」として区別されるデバイス5021に対して、イネイブル信号やバススイッチなどによって、接続を切り換えて用いられる。なお、同じ定義の信号が共通バス等であった場合は、切り換え処理が不要になる場合もある。
次に、本発明に係る回路情報作成装置が実行する回路情報作成プログラムの例であるプログラム100の機能構成について説明する。図7に示すように、プログラム100は、拡張モジュール検出部110と、配線操作部120と、拡張モジュール接続部130と、アドレス一覧取得部140と、回路情報生成部150と、特定ファームウェア生成部160と、を有してなる。言い換えると、回路情報作成装置のCPUは、プログラム100を実行することによって、かかるCPUが拡張モジュール検出部110、配線操作部120、拡張モジュール接続部130、アドレス一覧取得部140、回路情報生成部150、及び特定ファームウェア生成部160として機能する。
拡張モジュール検出部110は、ベースモジュール5010が備える物理的端子(信号端子5013)に接続されている拡張モジュール5020のそれぞれの位置を検出して特定する処理を実行する。なお、上述した試作ツール1000,1001,1002では、位置検出の処理を行う必要はなく、プログラム的に位置として指定することは任意である。
配線操作部120は、上に示した定義情報121に記述されているような配線の定義に基づいて、CPU5011とデバイス5021を配線する(動的に再配線する)ように配線モジュール5030を動作させる処理を実行する。なお、上述した試作ツール1000,1001,1002では、このように動的に再配線する必要はなく、プログラム的に動的に再配線することは任意である。
拡張モジュール接続部130は、CPU5011に対して各拡張モジュール5020を接続状態あるいは非接続状態にする制御を実行し、または、かかる制御を有効あるいは無効にする処理を実行する。拡張モジュール接続部130は、CPU5011に対して接続状態にするデバイス5021にはイネイブル信号(Enable)を通知し、CPU5011に対して非接続状態にするデバイス5021にはディスイネイブル信号(Disable)を通知する。
アドレス一覧取得部140は、拡張モジュール検出部110が検出した拡張モジュール5020の各アドレス情報(モジュールアドレスアドレス一覧)を取得する処理を実行する。
回路情報生成部150は、取得したモジュールアドレス一覧に基づいて、CPU5011のメモリ5111に記憶されている拡張モジュール5020の回路情報を読み出す。回路情報作成部150は、当該読み出された回路情報に示されている端子の名称等を定義情報121に基づいて書き換える。回路情報作成部150は、当該書き換えられた回路情報を、CPU5011のメモリ5111に記憶する。
特定ファームウェア生成部160は、回路情報生成部150において書き換えられた回路情報に基づいて、定義情報121を書き換える。ここで書き換えられた定義情報121は、CPU5011とデバイス5021との配線状態を反映させたものであるから、試作された電子回路を構成して動作させるときに必要になる情報である。特定ファームウェア生成部160は、書き換えられた定義情報121を含めてファームウェアを生成する。ここで生成されるファームウェアを、特定ファームウェアという。
●回路情報作成プログラムの処理の例
次に、図7に示した機能構成を備えるプログラム100による回路情報作成処置の流れの例について、図8のフローチャートを参照して説明する。図8において、各処理のステップをS110、S111、S112・・・のように表記する。
試作ツール1004において、ベースモジュール5010に必要な拡張モジュール5020を取り付けてプログラム100を実行すると、まず、CPU5011は、メモリ5111から定義情報121を読み出す(S110)。なお、プログラム100の中に定義情報121が含まれている場合は、CPU5011は、定義情報読み出し処理を実行せずに、次の処理に移行する。
続いて、CPU5011は、読み出された定義情報121に基づいて、CPU5011とデバイス5021の端子に関する情報や相対的な端子の名称、拡張モジュール5020を識別するアドレス情報を定義する(S111)。
続いて、CPU5011は、定義されたアドレス情報を用いて、ベースモジュール5010への拡張モジュール5020の取り付け位置を検出する処理を実行する(S112)。このとき、CPU5011は、ベースモジュール5010に取り付けられている拡張モジュール5020における各取り付け位置を検出する。なお、この取り付け位置を検出する処理(S112)は、試作ツール1000,試作ツール1001,及び試作ツール1002において任意の処理である。任意の処理であるのは、これら列記したツールを用いてプログラム100を実行させる場合、拡張モジュール5020の取り付け位置が関与しなくても問題ないからである。
次に、CPU5011は、配線モジュール5030を制御して、定義情報121に定義されている内容に基づき信号端子5013(GPIO01、GPIO02、・・、GPIO09)と機能端子5023の配線を変更する処理を実行する(S113)。この処理により、CPU5011の信号端子5013と、デバイス5021の機能端子5023のそれぞれが再配線される。この処理は、再配線しなくてもよい試作ツール1000、1001、1002では任意の処理である。再配線しない試作ツール1000、1001、1002は、配線モジュール5030にシリアル通信バスやCPU間の通信、有線無線を問わないという状態が対応している。
次に、CPU5011は、再配線されたデバイス5021をベースモジュール5010に接続する処理を実行する(S114)。この処理(S114)によって、ベースモジュール5010と拡張モジュール5020とで構成される電子回路は、動作可能な状態になる。次に、当該電子回路を動作させて、ベースモジュール5010と拡張モジュール5020の結合、その組み合わせにより特定の機能を果たす動作を得られるか否かを確認する(S115)。このS115では、試作された構成によって所望の回路が完成した否かの最終的な評価をユーザーが行う。なお、S115において、電子回路の動作や評価の一部を自動的に行うようにしてもよい。
試作された電子回路について、特定の機能を果たす動作を確認できなければ(S115のNO)、試作が完成していないものとして、試作する拡張モジュール5020の構成や動作プログラムを変更する(S116)。ここでの「動作プログラム」とは、ユーザが任意に作成するプログラムであって、上述したファームウェアとは異なる。このS116はユーザによって行われ、試作される拡張モジュール5020の構成が変更された後に、S110からの処理がCPU5011によって再び実行される。
試作された電子回路について特定の機能を果たす動作を確認して試作が完成すれば(S115のYes)、CPU5011は、S111で定義された、ベースモジュール5010に接続されている拡張モジュール5020のアドレス情報(モジュールアドレス)の一覧であるモジュールアドレス一覧を生成して出力する(S117)。S117において、モジュールアドレス一覧の出力先は、CPU5011のメモリ5111である。或いは、別途取り付けたプロセッサの内部メモリや、その他の外部記憶装置にモジュールアドレス一覧を出力してもよい。
次に、CPU5011は、S118の処理に移行して、以下のように回路図データを生成する。まず、CPU5011は、S117で生成されたモジュールアドレス一覧に基づいて、それぞれの拡張モジュール5020に対応する回路図データを特定してCPU5011のメモリ5111から読み出す。CPU5011は、読み出された回路図データに対して、すでに動作確認された電子回路の構成に係る相対的端子番号を、CPU5011の信号端子5013の名称に書き換える。かかる端子番号の書き換えの処理により、CPU5011とデバイス5021の配線が確定し、試作された電子回路の回路図データが確定すなわち配線モジュール5030が無い最少構成の回路図のデータ(回路図情報)が生成される。CPU5011は、生成された回路図データをCPU5011のメモリに記憶する。或いは、CPU5011は、生成された回路図データを、別途取り付けたプロセッサの内部メモリや、その他の外部記憶装置に記憶してもよい。このようにして記憶された回路図データは、試作回路の回路図を作成するときに、画面表示や印刷により、さらにはCADによる編集作業で使用できるデータになる。したがって、この回路図データを用いることで、当該電子回路の試作に必要となる回路図を作成することができる。
続いて、CPU5011は、S118で生成された回路図データに基づいて、特定ファームウェアを生成し、当該生成されたファームウェアをCPU5011のメモリ5111に記憶する(S119)。或いは、S119において、CPU5011は、生成されたファームウェアを、別途取り付けたプロセッサの内部メモリや、その他の外部記憶装置に記憶してもよい。この特定ファームウェアは、上に示した回路図データに基づく電子回路を動作させるときに用いることができるファームウェアである。
●回路図データの例
次に、CPU5011がプログラム100を実行することにより上述したS118で生成される回路図データについて説明する。図9は、回路図データを図面として表示するCADのデータの例を示している。図9に示すCADデータ91は、紙面右側にCPU5011が配置され、紙面左側にデバイス5021が配置されている。図9に示すように、プログラム100の実行によって生成されたCADデータ91は、CPU5011の信号端子5013とデバイス5021の機能端子5023を接続する配線とが1対1の関係になっている。なお、CADデータ91の元になる回路構成情報である回路図データには、予め回路規模も定義されている。したがって、CADデータ91は、CPU5011を表す部分(表示領域)とデバイス5021を表す部分とが互いに重ならないようにして生成される。このように端子番号が書き換えられて生成される図9に示すCADデータ91は、実際の電子回路の構成を示すものになる。なお、各種共通バスが複数のデバイス5021間で共有されていても構わない。
次に、CPU5011がプログラム100を実行することにより上述したS119で生成される特定ファームウェアについて説明する。まず、プログラム100が使用する定義情報121の詳細な例を図10に、ファームウェアの例を図11に示す。図10に示す定義情報121は、すでに説明したものよりも詳細な情報を用いるソースコードの一例である。なお、図10は、定義情報121の記述にpythonスクリプトを用いた場合を例示している。
定義情報121において定義されている情報は、以下のとおりである。まず、CPU5011の端子番号と、CPU5011の各端子における機能の関係を「#SPI bus」というコメント文から「NC=0」までの間で記述している。
次に、配列名を「io」として、配列ioの中にCPU5011の各端子の端子番号を要素として格納し、この配列ioを利用して、入力端子と出力端子の定義を抽象化している。入力端子は変数「inpin」として定義され、出力端子は変数「outpin」として定義されている。なお、「pcbOutput」と「pcbInput」は、試作段階では使用しない。
図10に示した定義情報121に基づいてデバイス5021の機能端子5023を割り当てるファームウェアの例を図11に示す。図11に示すファームウェアは、拡張モジュール5020のアドレス情報を引数として呼び出す「getWiring関数」を用いるものである。特定のアドレス情報を引数としてgetWiring関数を呼び出せば、そのアドレス情報に対応する拡張モジュール5020の相対的な配線情報を取得することができる。図11の例では、アドレス情報が「1」から「5」に相当する(5台の)拡張モジュール5020をベースモジュール5010に接続し得る状態を示している。
図10に例示した定義情報121と、図11に例示したファームウェアを用いてプログラム100を実行することで、図12に例示する特定ファームウェアが生成される。図12に示すように、ベースモジュール5010には、アドレス情報が「1」、「3」、「4」に相当する拡張モジュール5020のみが接続されている。
図12に示すように、特定ファームウェアも、「getWiring関数」の引数に拡張モジュール5020のアドレス情報を用いることで、当該アドレス情報に相当する拡張モジュール5020に固定された配線情報を取得することができる。この場合、図9に示した回路図データを用いて作成した回路図に係る電子回路を動作させるときのファームウェアとして、上に示したような配線情報をそのまま用いて動作させることができる。他の試作ツールについても同じように設定することができる。
以上説明したプログラム100は、試作ツールのハードウェア構成が上に例示したいずれの構成によるものであっても、利用可能である、すなわち試作ツールを回路情報作成装置として機能および動作させることができる。プログラム100および試作ツールは、ベースモジュール5010に接続された拡張モジュール5020のアドレスと、配線が定義されているファームウェアとを収集し、回路図データに含まれている配線の名称とファームウェアによる配線の定義とを書き換えられるものであればよい。
以上のようにプログラム100を実行した回路情報作成装置としての試作ツールによれば、試作段階を経て作成される量産用の電子回路について、配線モジュール5030が無い最少構成の量産用の回路図の元になる回路情報を自動的に生成することができる。また、上に示した試作ツール1004は、一部の拡張モジュール5020のみに1つのCPU5011を接続し、残りの拡張モジュール5020をCPU5011に接続せずに回路図やファームウェアを作成することもできる。この場合、CPU5011に接続する拡張モジュールの組み合わせ方も自由に行うことができる。
また、プログラム100は、CPU5011を含む複数のCPUに1以上の拡張モジュールを接続する構成の電子回路の回路図を試作ツール1004に自動生成させることができる。この場合、試作した電子回路を1つのCPU5011を備える回路に一部分割するなどの処理を行うことも可能である。その際におけるファームウェアの連動は、一部のCPU5011から統一して指示を出すか、別のパソコンやモバイル端末などのCPUから統一した指示を出せばよい。あるいは、拡張モジュールに接続されたCPUごとに何をするかをあらかじめ指示して決めておくこともできる。CPU5011とデバイス5021の配線が確定すれば、その配線情報を反映させればよい。すなわち、配線の情報を抽象化すればよい。
また、図2Aや図2Bで説明した試作ツール1001や試作ツール1002のように、複数のCPU11が分散した回路の場合、一部のCPU11のみを複数のデバイス21に任意に結合して(図2B参照)回路図やファームウェアを生成することもできる。また、その逆すなわち図2Bに示す形態で生成した回路図やファームウェアを単一のCPUに結合し直して(図2A参照)回路図やファームウェアを生成することも任意に実現できる。さらに、例えば、デバイスAに対してはCPU11を無線接続し、デバイスBに対してはCPU11を有線接続する回路図やファームウェアを生成することもできる。
したがって、上述した回路情報作成装置を用いれば、開発コストを削減することができ、電子回路のラピッドプロトタイピングを容易に行うことができる。したがって、回路情報作成装置は、ラピッドプロトタイピングが必要なスタートアップやIoT機器の開発などに有効に使用することができる。
次に、回路情報作成プログラムおよび回路情報作成装置のさらに別の実施形態について、図13及び図14を参照して説明する。すでに説明した試作ツール1004とプログラム100は、いわゆるスタンドアロン型で実行されるものである。他方、以下に説明する実施形態は、いわゆるネットワーク型のシステム構成である。
●別の構成例
図13に示すように、本実施形態は、クライアントプログラム6100が実行される試作ツール1004と、サーバー側プログラム6101が実行されるサーバー6200とによって、回路情報作成システムが構成される。試作ツール1004は、上述したように、ベースモジュールと拡張モジュールとが結合された電子回路である。加えて、本実施形態では、試作ツール1004は、ベースモジュールのCPU11がネットワーク6300を介してサーバー6200と通信可能に接続される。
クライアントプログラム6100は、すでに説明したプログラム100を基礎とし、サーバー6200上で実行されるサーバー側プログラム6101と連動するプログラムである。図13に示すように、クライアントプログラム6100は、配線操作部6120と、拡張モジュール接続部6130と、アドレス一覧取得部6140と、を有してなる。言い換えると、試作ツール1004のCPU5011は、クライアントプログラム6100を実行することにより、かかる試作ツール1004を配線操作部6120、拡張モジュール接続部6130、及びアドレス一覧取得部6140として機能させる。
サーバー側プログラム6101は、データアップロード部6270と、回路情報生成部6250と、特定ファームウェア生成部6260と、データダウンロード部6280と、を有してなる。言い換えると、サーバー6200のCPUは、サーバー側プログラム6101を実行することにより、かかるサーバー6200をデータアップロード部6270、回路情報生成部6250、特定ファームウェア生成部6260、及びデータダウンロード部6280として機能させる。また、サーバー6200には、サーバー側プログラム6101が適宜参照する基礎データであるデータ群6102が記憶されている。データ群6102は、たとえば、参照配線情報データ6201、参照回路図データ6202、参照アドレス一覧2003、参照ファームウェア6204からなる。
図13に示すクライアントプログラム6100を構成する拡張モジュール検出部6110と、配線操作部6120と、拡張モジュール接続部6130と、アドレス一覧取得部6140とは、すでに説明したプログラム100の実行により発揮される機能と同等のものである。したがって、これらの詳細な説明を省略する。
なお、サーバー6200は、例えばWebサーバーであって、サーバー側プログラム6101は、PHPなどのスクリプト言語で記述されているものとする。
データ群6102は、サーバー6200の外部から取り込むようにしてもよいし、試作ツール1004のCPU5011に記憶させておいてもよい。また、必要な処理のタイミングで試作ツール1004からサーバー6200にアップロードしてもよい。また、CPU5011で使用しているファームウェアまたはファームウェアを元に編集したデータを参照データとして使用してもよい。
●回路情報作成プログラムの処理の別の例
以上説明をした構成を備えるクライアントプログラム6100とサーバー側プログラム6101を実行した場合の処理の流れの例について説明する。図14に示すフローチャートは、各処理ステップをS110、S111・・・のように示している。すでに説明したプログラム100と同じ処理については、同じ符号を付与し、詳細な説明を省略する。
試作ツール1004においてクライアントプログラム6100を実行すると、試作ツール1004のCPU5011は、メモリ5111から定義情報121を読み出して(S110)、上述した一連の処理を実行する。その結果、CPU5011は、ベースモジュール5010に接続されている拡張モジュール5020のアドレス情報(モジュールアドレス)を取得し、その一覧であるモジュールアドレス一覧を生成して所定の記憶媒体(例えばメモリ5111)に出力する(S117)。
続いて、試作ツール1004により生成されたモジュールアドレス一覧をデータアップロード部6270を通じてサーバー6200にアップロードする(S201)。このS201の処理は、試作ツール1004とサーバー6200とが通信しながら、すなわち試作ツール1004のCPU5011とサーバー6200のCPUとで協働して行われる。また、試作ツール1004のCPU5011から各種外部装置を介して各種データをサーバー6200にアップロードしてもよい。その他、サーバー6200が参照すべきファームウェアや配線情報などが試作ツール1004側に記憶されているならば、S201では、それらの情報も同時にサーバー6200にアップロードしてもよい。
続いて、サーバー6200側で回路図データ生成処理(S118)が実行される。S118において、サーバー6200は、モジュールアドレス一覧に含まれたアドレス番号から回路図を特定して、CPU5011とデバイス5021との配線を対応付けた図9で上述したような回路図データを生成する。サーバー6200は、生成された回路図データを例えばサーバー6200内の記憶装置に出力(格納)する。
さらに、サーバー6200は、ファームウェア出力処理(S119)によって、図10に例示したような定義情報121を参照ファームウェア6204とし、特定ファームウェア生成部6260において適宜の書き換えを実行する。その結果、図12に例示したような特定ファームウェアが生成される。サーバー6200は、生成された特定ファームウェアを例えばサーバー6200内の記憶装置に出力(格納)する。
続いて、サーバー6200により生成された回路図データと特定ファームウェアは、データダウンロード部6280を通じて、試作ツール1004にダウンロードされる(S204)。このS204の処理は、試作ツール1004とサーバー6200とが通信しながら、すなわち試作ツール1004のCPU5011とサーバー6200のCPUとで協働して行われる。あるいは、S204の処理は、試作ツール1004以外の通信端末やサーバー6200の各種外部装置にダウンロードするようにすることもできる。
以上説明した例では、アドレス一覧から参照データをそれぞれ探し、CPU5011の信号端子に拡張モジュールの端子を合わせていく処理をしたが、これに限られるものではない。例えば、アドレス一覧をアップロードせず、拡張モジュール5020の配線情報のみをアップロードしても参照するモジュールがわかっていれば、配線の情報を書き換えることができ、上述と同様のデータを生成することができる。つまり、CPU5011とどのようなパターンで配線が接続されているかさえ分かれば、回路図データや特定ファームウェアとしてCPU5011とデバイス5021間の配線をすることができる。
なお、上記のサーバー側プログラム6101において実行される各処理は、Javascript(登録商標)のようにローカル側で処理できるコンピュータ言語によって作成されてもよい。また、その他クラウド上の分散型処理で行われてもよい。また、サーバー側プログラム6101において実行される各処理は、ローカルの専用アプリケーションを介して実行されてもよく、或いはローカルアプリケーション単体で実行されてもよい。