HOME > ソフテックだより > 第234号(2015年5月20日発行) 現場の声編「新しい技術の習得〜FPGAを利用した開発へのチャレンジ〜」

「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。

ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ


ソフテックだより 第234号(2015年5月20日発行)
現場の声編

「新しい技術の習得 〜FPGAを利用した開発へのチャレンジ〜」

1. はじめに

私は約20年前にソフテックへ入社して、エンジニアの立場から、この20年間の技術の進歩を見てきました。

技術の進歩により、様々な家電がネットワークで繋がるようになり20年前に比べて、生活が便利になりました。
また通信速度も年々高速化されており、大容量データを扱う映画などもインターネット経由で視聴できるようになっており、便利なだけではなく生活も快適になっています。

これを技術的な面で見ると、20年以上前のCPUの機能は現在よりも少なく、組み込み系システムで利用されているCPUのマニュアルを読んでも100ページ前後しかありませんでした。
しかし、現在の組み込み系CPUは性能を上げるために様々な機能が組み込まれているため、それらを説明するマニュアルも2000ページを超えている場合があります。

ネットワークの通信速度を高速にしたい場合は、CPUも高性能にする必要があります。
そのためには上記のような2000ページのマニュアルを読みCPUの機能を習得してプログラムを作る必要があります。

また、世間では古い技術でも自分が経験したことが無ければ、自分にとっての新技術として技術情報を集め知識の習得が必要となります。

上記で挙げたように、エンジニアの仕事には新しい技術の習得が付き物です。

今回の「ソフテックだより」では、私が技術習得にチャレンジした例として「FPGAを利用した開発」について紹介します。

2. FPGAとの出会い

FPGA(Field Programmable Gate Array)とは、プログラムによって作成した電子回路をLSI化できるデバイスです。

CPUはプログラムを1命令ずつ読み込んで実行しますが、FPGAの場合はプログラムが回路になるためハードウェアとして動作します。

今回の「ソフテックだより」は技術レポートではないため、FPGAの詳細説明は省略します。

始めてFPGAを知ったのは、ある大手のLSIメーカー向けに開発協力をした1997年頃です。
私はソフトウェア開発担当として開発協力をしていましたが、FPGAを担当していたLSIメーカーの方からFPGAについての話を聞くことができました。
私は学生時代に電気工学を学んでいたため、LSIについても興味を持っており、プログラム(言語)によってLSIを作ることが出来るFPGAという技術を使ってみたいと考えるようになりました。

3. FPGAの学習

FPGAを使ってみたいと考えていましたが、仕事で使う機会もなく、技術系の雑誌で記事を読む程度のまま時間が過ぎました。

2012年に地方独立行政法人青森県産業技術センター八戸地域研究所殿から「FPGA回路技術実習」研修会を開催する案内をいただいたので、上司の許可を得て研修会に参加しました。

講義の内容は基礎的なことでしたが、市販のFPGA評価ボードを利用して自分で作成したプログラムを動かすことが出来たため、とても参考になりました。

市販のFPGA評価ボード
図1.市販のFPGA評価ボード

その後、FPGA用のプログラミングの本や、FPGAの技術書を数冊購入して、会社からの帰宅後や、休日などに購入した本を読み、FPGAに対する理解を深めました。

4. FPGAを利用した開発

FPGAの研修会に参加してから半年が過ぎた頃に、ソフテックでは初めてのFPGAを利用した開発依頼をいただきました。

始めは自分の考えどおりにプログラムを組んでみましたが、回路のサイズが大きくなりFPGAに収まらない状況となりました。
CPU用のプログラムであれば、経験からプログラムサイズを小さくする対策を考えて実施することができますが、初めてのFPGA開発の場合は経験が足りないため対策方法が分かりません。
また社内にFPGAの知識を持っている人も居ないため、書籍やインターネットで情報を調べ、解決方法を考え1つ1つ自力で問題を解決しました。

5. 技術サポートについて

FPGAを使った開発も後半になり、「時々、正常に動作しない」という現象が発生しました。
自分で原因になる可能性を調べ、検証をしましたが問題の解決をすることが出来ませんでした。
開発期間が限られていることもあり、FPGAの講習会で講師をしていただいた方に相談したところ、地方独立行政法人青森県産業技術センター八戸地域研究所が「工業ドクター派遣制度」という制度を実施していることを教えていただきました。
この制度は青森県産業技術センターの専門職員を開発現場へ派遣していただき、問題解決のサポートをして貰える制度です。

早速、「工業ドクター派遣制度」の申請をしてFPGA開発のサポートを受けました。
サポートでは、FPGA開発のセオリーや検証方法を教えていただき、それを自分で検証する形式で進めました。
今回の問題が発生したことにより、書籍やインターネット上でも情報が少ないFPGA内部の信号遅延時間の設定方法や検証方法まで教えていただき、自分だけでは習得が難しいノウハウを習得する機会となりました。

色々と検証した結果、プログラムで書いたとおりにツールが回路に出力していないことが原因であると分かり、プログラムの書き方を修正することで解決することが出来ました。

今回は、FPGA開発ということもあり、社内にノウハウを持っている社員がいないため、社外のサポートを受けて対応をしました。
しかし、通常のソフト開発時に発生した問題に対しては「このような問題で困っている」と社内報告を出すと、事業所の垣根無く、問題の解決方法を知っている社員が返信をしてくれるため、会社全体のサポートを受け、そこでも新しい知識を得る機会となります。

私もFPGAを利用した開発の経験から、社員からFPGAに関する相談を受けることがあります。
また、私の後にFPGAの開発をする人のために、今回の開発で得たノウハウは社内文書として残しており、少しでも次に続く人のサポートが出来ればと考えています。

6. まとめ

はじめにも書きましたが、エンジニアの仕事では新しい技術の習得が必要であり、新しい技術を習得するためには実務による経験だけではなく、日々の学習の積み重ねが大切です。
私の場合は、毎日のように学習の時間を取ることが出来ていませんが、ソフテック社員の中にはきちんと学習を継続している人も多く、そのような人には頭が下がります。

エンジニアという仕事を通して、顧客や社会の発展に少しでも寄与できるよう、新しい技術の習得に今後も励んでいきたいと思います。

(T.O.)


関連ページへのリンク

関連するソフテックだより

ページTOPへ