簡易テキスト版

簡易テキストページは図や表を省略しています。
全文をご覧になりたい方は、PDF版をダウンロードしてください。

全文(PDFファイル:849KB、4ページ)


FPGAを用いた高機能信号入力ボードの開発

■電子情報部 米沢裕司 田村陽一

 パソコンベースの検査装置や計測装置では,信号入力ボードを用いてセンサからデータを取り込み,演算処理を行う。しかし,画像データのように大容量で高速なデータを演算処理する場合は,パソコンの処理能力が不足することがある。また,これらの装置にセンサ信号が関係する不具合が発生した場合,原因究明に多くの時間を要してしまうことがある。そこで,これらの課題を解決するために,FPGAを用いた信号入力ボードを開発した。本ボードは,センサからの信号をパソコンに転送するという一般的な信号入力ボードの機能のほか,FPGAによって高速に演算を行う機能や,センサ信号を蓄積する機能を有している。
キーワード: 信号入力ボード,FPGA,信号処理,USB

Development of a Sophisticated Data Acquisition Board by Using FPGA

Yuji YONEZAWA and Youichi TAMURA

In personal-computer-based inspection machines and measuring machines, sensor data are acquired by data acquisition boards and processed by personal computers. However, when mass data such as image data are processed at high speed, the processing performance of the personal computer might be insufficient. Moreover, if there is machine trouble related to sensor signals, a lot of time might be required to determine the cause. Therefore, to solve these problems, we developed a data acquisition board by using a field programmable gate array (FPGA). The board has the functions of high-speed processing and sensor data storing in addition to the data acquisition function.
Keywords : data acquisition board, FPGA, signal processing, USB

1.緒  言
 信号入力ボードはパソコンベースの検査装置や計測装置などで,センサ等の信号をパソコンに入力する際に用いられるインターフェースボードの一種である。例えば,パソコンベースの温度計測装置では,温度センサが出力するアナログ電圧信号を信号入力ボード(ADボードとも呼ばれる)においてデジタルデータに変換した上で,パソコンにデータを入力する。また,画像検査装置では,カメラの映像信号を信号入力ボード(画像入力ボードやフレームグラバとも呼ばれる)を経由してパソコンに画像データを入力する。そして,入力された信号に対し,パソコンで様々な演算処理が行われる。
 このとき,画像検査装置のように高速で大容量のデータを演算処理する場合には,パソコンの処理能力が不足することがある。その結果,検査結果が出力されるまでに時間がかかったり,検査の精度を落とさざるを得なくなったりすることが課題となっている。
 また,検査装置や計測装置では,センサ信号に起因した不具合が生じることがあるが,不具合の再現(不具合発生時のセンサ信号の再現)ができずに,不具合の原因究明や動作検証に多くの時間を費やしてしまうことが課題となっている。
 そこで,このような課題を解決するための手段として,FPGA(Field Programmable Gate Array)に着目した。FPGAとは回路構成の書き換えができるLSIの一種であり,回路構成次第で様々な演算処理を高速に行えることから,これを用いた高速処理が可能なシステムの開発を進めてきた1) 。
 本開発では信号入力ボードにこのようなFPGAを搭載することにより,ボード上でセンサ信号に対する高速な演算処理を行えるようにした。また,大容量のメモリを搭載することにより,ボード上にセンサ信号データを蓄積し,蓄積した信号データをパソコンへ再送できるようにした。これらの機能により,パソコンの処理能力不足の課題を解消するとともに,不具合発生時の原因究明の迅速化を図った。
 本稿では,開発した信号入力ボードとパソコンとのデータの送受信方法や,信号入力ボードに搭載したFPGAの動作や機能について述べる。また,開発した信号入力ボードをパソコンで取り扱うためのソフトウェアについて解説する。

2.ハードウェアの開発
  2.1 概要
 開発したボードの外観を図1に,ブロック図を図2に示す。ボードは2段構造になっており,下段のボードはザイリンクス社製の評価ボードSpartan-3ADSPスタータプラットフォームを使用した。このボードにはFPGA(ザイリンクス社製XC3SD1800A-4FG676C)の他,128MBのDDR2SDRAM(以下SDRAMと記す),ボタン,LEDなどが搭載されている2)。
 また,この下段のボードだけでは信号入力ボードとして用いるには不十分であるため,USBコントローラやADコンバータ(8bit 80Mサンプル/s 2ch),USBコネクタなどを搭載した上段のボードを設計開発した。

(図1 開発したボードの外観)
(図2 開発したボードのブロック図)

2.2 USBによる通信
 本ボードとパソコンとのデータ送受信は,USB通信によって行うようにした。USB通信にはUSB1.0,USB1.1,USB2.0といった複数の仕様が策定されており,バス速度もロー・スピード(1.5Mbps),フル・スピード(12Mbps),ハイ・スピード(480Mbps)の3種類の速度が定義されている3)。本開発では,この中で最も高速なUSB2.0のハイ・スピード伝送を用いてボードとパソコン間の通信を行うこととした。このハイ・スピード伝送に対応したUSB通信コントローラとしてサイプレス社製 EZ-USB FX2LP(以下FX2LPと記す)をボードに搭載した。
 FX2LPにはマイコン(インテル8051互換)や通信時のバッファとして用いるエンドポイント(EP)と呼ばれるFIFOメモリが内蔵されており4) 5),本ボードでは各EPを以下のように用いた。
・EP2:パソコンから受信したレジスタ読み込みやレジスタ書き込みに関するデータを格納する(レジスタについては後述)
・EP6:ボードからパソコンに送信するレジスタデータを格納する
・EP8:ボードからパソコンに送信するセンサ信号データを格納する
 上記の各EPの設定をはじめとする通信の設定や制御は,内蔵マイコンで動作するソフトウェアによって行っており,このソフトウェアの開発はKEIL社製の8051マイコン開発用ツールであるmビジョン3を用いてC言語により行った。また,開発したソフトウェアはボード上のフラッシュROMに書き込み,電源投入時に自動的にFX2LPがフラッシュROMからこのソフトウェアを読み込むようにした。
 なお,本ボードとパソコン間でのUSBによる通信速度を計測したところ32MB/sであった。この速度は,検査装置や計測装置によく用いられるモノクロ標準カメラを例にすると,カメラ3台の非圧縮映像を取りこぼすことなくボードからパソコンに送信できる速度に相当するものであり,信号入力ボードとして十分な通信速度である。

2.3 FPGA回路
2.3.1 FPGA回路の概要
 ボードに搭載したFPGAの回路は図2のように3つの回路モジュールから構成されており,FX2LPやADコンバータ,SDRAMの制御などを行っている。各回路モジュールの機能を次節以降に記す。
 なお,FPGA回路の設計開発は,ザイリンクス社製のFPGAデザインツールISE10.1を用いて,ハードウェア記述言語Verilog HDLによって行った。

2.3.2 USB制御モジュール
 USB制御モジュールは,FIFOメモリの空き状況などを監視しながらFX2LPの制御を行い,FPGAとFX2LPの間でデータの送受信を行う。具体的には,FX2LP内のFIFOメモリEP8に空きがあり,かつ,FIFOメモリA(パソコンへ送信するセンサ信号データが格納される)にデータがある場合,FIFOメモリAのデータをEP8に送信するようにした。そして,送信データ数が設定値に達した場合やパソコンから停止コマンドを受信した場合に送信を停止するようにした。同様に,FIFOメモリB(パソコンへ送信するレジスタデータが格納される)のデータもEP6に送信するようにした。
 また,EP2(パソコンから受信したレジスタの読み取りや書き込みに関するデータが格納される)にデータがある場合は,EP2のデータを受信し,受信したデータに基づき,レジスタモジュールに対して,レジスタの書き込みや読み取りを行うようにした。

2.3.3 レジスタモジュール
 レジスタモジュールは,レジスタ値を格納しており,レジスタ値によってセンサからのデータ取り込みのタイミングやデータ取り込み数などを定めている。
 レジスタは,アドレスと値を指定して,パソコンから書き込めるようにした。また,アドレスを指定して,パソコンから読み取れるようにした。この書き込みや読み取りは,上述のようにUSB制御モジュールを経由してUSB通信によって行うこととした。

2.3.4 SDRAM制御モジュール
 SDRAM制御モジュールはボード内のSDRAMの読み書きを行うためのモジュールである。センサからの信号はADコンバータを経由した後,本モジュールによってSDRAMに順次データが書き込む。SDRAMに書き込まれたデータは,書き込まれた順に本モジュールによって読み出され,USB制御モジュール内のFIFOメモリAに書き込まれる。つまり,本ボードではSDRAMをセンサ信号データのバッファとして用いており,その制御を本モジュールが行うようにした。SDRAMをバッファとするのは,高速な信号を取りこぼすことなくUSB通信でパソコンに転送するには,大容量のバッファが必要なのに対し,FPGA内部やFX2LP内部には十分な容量のバッファを確保することができないためである。
 なお,SDRAMモジュールによって読み出されたSDRAM内のデータは,センサからの新たな信号データに上書きされるまでは,SDRAMに保持されるようにした。つまり,SDRAMにはパソコンに送信したセンサ信号が最大128MB蓄積されている。そこで,SDRAMの読み出しアドレスを制御することによって,一度転送したSDRAM内のセンサ信号データを再度パソコンに送信できるようにした。なお,読み出しアドレスの制御は,レジスタやボード上のスイッチによって行えるようにした。
 この機能は,信号入力ボードを用いる装置(検査装置や計測装置等)に不具合が発生した場合の原因究明に有用である。例えば,SDRAM内のデータを再度転送すれば,不具合の発生が入力データに起因するものであるかどうかや,入力データがどのような場合に不具合が発生するのかを調べることが容易にでき,迅速に不具合の解決を図ることができる。

2.3.5 演算処理回路
 上述の3つのモジュールはFPGA (XC3SD1800A) 内の回路のうち,約6%を使用しているに過ぎない。そこで,残りの94%の領域を用いて,演算処理回路をFPGAに構築することができる。
 演算処理の内容は任意であるが,例えばフィルタ処理や変換処理といった前処理をFPGAで行うことができる。また,パソコンで行っていた検査処理や計測処理の一部をFPGAが担うこともできる。さらに,時間がかかる処理を信号入力ボード上のFPGAで高速に行うことにより,パソコンの処理能力の不足を補うことができる。
 なお,市販されている信号処理ボードにはルックアップテーブルのような特定の前処理を行う機能を備えているものもあるが,本ボードが行う処理は特定の処理に限定されるものではない。処理の内容は,用途に応じて自由に定めることができる。

3.ソフトウェアの開発
3.1 ソフトウェアライブラリ
 本ボードをパソコンで用いるために必要となるドライバはCypress社が提供するドライバ6)が利用できる。また,このドライバを用いてソフトウェアを開発するために同社が提供しているインターフェース(API)を用いれば,ボードからのセンサ信号データの受信や,ボード上のレジスタの読み書きができる。しかし,これらを行うにはFPGA内の3つのモジュールやFX2LP内のマイコンのソフトウェアの詳細を理解した上で,複雑なソフトウェアを開発する必要がある。そこで,ボードの基本的な制御を簡単に行うためのソフトウェアライブラリを開発した。これは,ボードの初期化,信号データの受信,入力チャンネルの設定などの各種設定(レジスタ値の読み書き)などを行う関数群であり,本ボードを用いたソフトウェアの開発を容易に行うことができる。

3.2 サンプルソフトウェア
 前節で述べたソフトウェアライブラリを用いて信号入力を行うサンプルソフトウェアを作成した(図3)。このソフトウェアを用いれば,信号入力のほか,入力チャンネルの設定,SDRAMに蓄積されているデータの再送,レジスタ値の読み書きなどを行うことができる。また,信号データのグラフ表示や,ファイルへの書き込みもできる。サンプルソフトウェアはVisual C++で作成しており,本ボードを用いるソフトウェアを開発する際の参考にすることができる。

(図3 サンプルソフトウェア)

4.結  言
 FPGAを搭載した信号入力ボードを開発した。本ボードは信号入力に加え,演算処理をFPGAで高速に行うことができ,パソコンの処理能力が不足する場合にそれを補うことができる。また,ボード上の大容量のメモリにセンサ信号を蓄積し,すでにパソコンに転送したセンサ信号データをパソコンに再送することができる。これにより,不具合の原因究明や動作検証作業の迅速化を図ることができる。
 本ボードのキーデバイスはFPGAである。FPGAの回路は3つのモジュールから構成されており,信号入力やセンサ信号の蓄積に必要な処理を担っている。また,FPGAの空き領域には用途に応じた様々な演算回路を構築することができる。
 開発したボードにより,演算処理の高速化によるタクトタイムの短縮や,検査の高精度化などが期待できる。我々は,本ボードを活用した画像検査装置や画像計測装置への応用を進めており,今後もさまざまな装置への応用を進めていきたいと考えている。

参考文献
1) 米沢裕司,田村陽一,漢野救泰. “FPGAを用いた高速信号処理ボードの開発”. 石川県工業試験場研究報告. 2007, No.56, p.20-33.
2) XILINX. Spartan-3A DSPスタータプラットフォームユーザーガイド. 2007, 354p. http://japan.xilinx.com/support/documentation/user_guides/
j_ug454_sp3a_dsp_start_ug.pdf, (参照 2009-07-09).
3) 水越幸弘. “USBデータ転送プロトコルの基礎知識”. 改定新版USBハード&ソフト開発のすべて. CQ出版社, 2005, p.8-31.
4) 桑野雅彦. “ハイ・スピード対応USBコントローラEZ-USB FX2の使い方”. USBターゲット機器開発のすべて. CQ出版社, 2005, p.162-205.
5) Cypress Semi-conductor. EZ-USB Technical Reference Manual. 2007, 354p.http://www.cypress.com/?rID=14667&l=2, (参照 2009-07-09).
6) Cypress Semi-conductor, “SuiteUSB 3.4-USB Develop-ment tools for Visual Studio 2007, http://www.cypress.com/?rID=34870, (参照 2009-07-09).