簡易テキスト版
簡易テキストページは図や表を省略しています。
全文をご覧になりたい方は、PDF版をダウンロードしてください。
全文(PDFファイル:351KB、4ページ)
Linuxを搭載したFPGAシステムの開発 −画面表示機能とネットワーク機能を備えたFPGAシステム−
■電子情報部 米沢裕司 田村陽一
CPU回路などをFPGAに構築することにより,ハードウェア処理とソフトウェア処理の双方が可能なFPGAシステムを開発した。開発システムにはOSとしてLinuxを搭載し,各種ネットワークサービスを利用できるようにした。また,GUI統合開発環境であるWideStudioを利用できるようにした。その結果,開発システムでは,信号処理をハードウェア処理によって高速に行えることに加え,パソコンやCPUボード等を併用することなく,ネットワークを用いたデータの送受信や画面表示(GUI)をソフトウェア処理で行うことができる。開発システムは汎用性が高く,ネットワークや画面表示に関する機能をFPGAで実現する際のプラットフォームとして利用できるものであり,各種検査装置や計測装置等に広く応用することができる。
キーワード: FPGA,Linux,GUI,WideStudio,ネットワーク
Development of an FPGA System Loaded with Linux
- An FPGA System with the Functions of Screen Display and Networking -
Yuji YONEZAWA and Youich TAMURA
We have developed an FPGA system incorporating a CPU circuit, in which both hardware processing and software processing can be executed. Having the Linux OS loaded onto the system makes it possible to access various network services. WideStudio, which is an integrated development environment for GUI applications, is also made available. As a result, the system can send and receive data through a network and display screen images by GUI without the combined use of a personal computer or a CPU board, while the hardware performs high-speed signal processing. The system has a high general versatility, and can be used as a platform for FPGA with the functions of networking and displaying screen images added. Thus, it is widely applicable to inspection devices, measuring devices and others devices.
Keywords : FPGA, Linux, GUI, WideStudio, network
1.緒 言
FPGA(Field Programmable Gate Array)は,各種電子機器,特に検査装置や計測装置のセンサの信号処理などに使われている1)。これは,FPGAによるハードウェア処理を行えば,CPUによるソフトウェア処理に比べて,高速な信号処理ができるためである。
しかし,検査装置や計測装置では,センサの信号処理を高速に行うのみではなく,装置の出力(例えば検査装置では検査結果)を利用者に分かりやすく表示し,装置の利便性を向上させることも重要であり,そのために画面表示(GUI:Graphical User Interface)やネットワーク経由のデータ送受信の機能が求められる場合が多い。これらの機能を実現するための処理は,非定型的かつ複雑なことからハードウェア処理には適しておらず,ソフトウェア処理により行う必要がある。つまり,検査装置や計測装置で高速性と利便性を兼ね備えるには,FPGAによるハードウェア処理と,CPUによるソフトウェア処理の両方が必要である。一方,FPGAと,CPUすなわちパソコンやCPUボード等を併用することは,装置の部品コストやサイズの増大を招く。また,FPGAとCPUとの接続が煩雑なため,設計が複雑化するという問題がある。
本開発では,パソコン等を併用しなくても,FPGAボードのみで画面表示やネットワークに関するソフトウェア処理を容易に行うためのシステムの開発を目指す。具体的には,ハードウェア処理に加えてソフトウェア処理を行うために,画像信号生成回路,ネットワーク制御用回路などを開発し,これらの回路とCPU回路などをFPGA上に構築する。さらに,CPU回路上で,OS(基本ソフト)やデバイスドライバ,GUI統合開発環境などのソフトウェアを動作させ,ハードウェア処理とソフトウェア処理の両方が可能な,画面表示やネットワークの機能を備えたFPGAシステムを開発し,FPGAとCPUボード等との併用を不要にする。
2.ハードウェアの開発
2.1 試作したFPGAボードの概要
試作したFPGAボードの外観を図1に示す。構造は2段になっており,下段のボードはXilinx製の評価ボード「Spartan-3ADSPスタータプラットフォーム2)」を改造し,128MbitのフラッシュROM(ST Micro製 M25P128)を実装したものを用いた。このフラッシュROMには,FPGAの回路構成データや後述のソフトウェアと各種データを格納した。開発した上段のボードには,ネットワーク用IC(ASIX製 AX88796BLF),キーボード・マウスコネクタ(PS/2形式),ヘッダソケットなどを実装し,下段のボードとコネクタで接続した。
(図1 FPGAボードの外観)
2.2 回路の開発
前節で述べたボードを機能させるには,ボード上のFPGA(Xilinx製 Spartan-3ADSP1800)に回路を構築する必要がある。本開発では,ソフトウェア処理に必要なCPU回路の他,画面表示,ネットワーク,キーボード・マウス等の制御に必要な回路を開発して構築した。各種回路の開発はXilinx製のFPGA開発環境であるXilinx ISE 11上で行った。回路構成のブロック図を図2に示す。
MicroBlazeはXilinx製が提供するソフトコアCPUであり,用途に応じて任意にFPGAの回路上に構築可能なものである3)。また,MicroBlazeでは用途に応じてMMU(Memory Management Unit)の有無といった構成の詳細を決定することができる。本システムでは,後述するLinuxを動作させるために必要なMMUや,処理速度の向上のためキャッシュメモリを内蔵したMicroBlazeをFPGA上に構築した。なお,MicroBlazeと周辺回路はPLBバスによって接続し,PLBバス及びMicroBlazeの動作クロックは62.5MHzとした。
ネットワーク用IC制御回路は,ボード上に実装したネットワーク用IC AX88796BLFのレジスタ群をリード・ライトするための回路である。AX88796BLFのレジスタ群は,LANカードとして著名なNE2000と互換性があり4),このレジスタ群をCPUからリード・ライトすることにより,Ethernet通信を行えるようにした。AX88796BLFにはレジスタ群をリード・ライトする方法として3種類の方法が用意されているが,本システムでは,SRAMのリード・ライトと同様の方法4)により行っている。
キーボード・マウス処理回路は,PS/2形式5)の信号を送受信するための回路である。回路内部には,送信データレジスタがあり,CPUから送信データレジスタにライトされたデータをキーボードやマウスにPS/2形式に準拠して送信する機能をもっている。また,キーボードやマウスからのPS/2形式のデータを受信し,データを回路内部のFIFOバッファに格納するとともに,割り込み信号を発生させる機能を持っている。この割り込み信号をCPUが検知して,FIFOバッファ内のデータをリードすることにより,キーボードやマウスからのデータを処理する仕組みとした。
画像信号生成回路はアナログRGB形式の映像信号を生成する回路である。本システムではFPGAボード上のメインメモリ128MBのうち,約2MBをグラフィック用メモリとして使用しており,画像信号生成回路ではこのグラフィック用メモリの内容を一定周期でリードして,その内容に応じた映像信号を生成している。
SPI通信回路は,ボード上のフラッシュROMとCPUとでSPI形式のシリアル通信を行うための回路であり,フラッシュROMに格納されているプログラムやデータの読み出しや書き込みを行う。
さらに,FPGA上にはこれまでに述べた回路以外に,用途に応じた任意の回路を追加することができる。例えば,センサ信号を高速に処理する回路の追加することや,カメラの画像信号を高速に処理するための回路を追加することが可能であり,これにより本システムを様々な用途に展開することができる。
(図2 回路構成)
3.ソフトウェアの開発
3.1 Linuxの搭載
FPGAボードでのソフトウェア処理を簡便かつ効率的に行えるようにするため,LinuxをFPGAボード上に搭載した。Linuxを利用することにより,同時に複数のソフトウェアを動作させることや,メモリの管理,ファイルの管理などが容易に行うことができる。また,Linuxに標準的に備わっている機能や,Linuxで動作する既存のソフトウェアを活用することで,次節以降で述べるように画面表示やネットワークに関するソフトウェア機能を比較的容易に実現できる。
Linuxはソースコードが公開されており,無償で利用できることなどから,サーバーや組込み機器などで広く利用されているOSである6)が,動作させるにはFPGAボードの仕様に合わせてLinuxのソースコードを変更する必要がある。そこで,FPGAボードの仕様,具体的にはメモリマップ,割り込み信号,周辺回路の構成などに適合するようにLinuxのソースコードに変更を加えた。ソースコードをコンパイルして作成したLinuxのカーネールイメージを,FPGAボードの上のフラッシュROMに書き込み,ボードの電源投入時に自動的にフラッシュROMからメインメモリにコピーして,Linuxが起動するようにした。
3.2 ネットワーク機能
Linuxを用いてEthernet通信に関するソフトウェア処理を行えるようにするために,FPGAボード上に実装したネットワーク制御用IC AX88796BLF用のデバイスドライバを作成した。
前章で述べた通り,AX88796BLFのレジスタ群はネットワークカードNE2000と互換性があることから,本デバイスドライバはLinuxに標準的に用意されているNE2000用のドライバを基にした。
さらに,Linuxに標準的に用意されている各種ネットワーク用ソフトウェアをFPGAボード上で動作させることにより,Telnet,HTTP,FTP,NFSなどの各種ネットワークサービスを利用できるようにした。Telnetを利用すれば,FPGAボードをリモートでコントロールすることができる。また,HTTPを利用すれば,FPGAボードでの処理結果をリモートPCのWebブラウザに表示ができ,FTPやNFSを利用すれば,ネットワーク経由でデータファイルの送受信ができる。
3.3 画面表示機能
3.3.1 フレームバッファドライバ
Linuxを用いて画面表示に関するソフトウェア処理を行えるようにするために,2.2節で述べた画像信号生成回路用のフレームバッファドライバを開発した。
Linuxでは画面表示を担うハードウェアをフレームバッファデバイス(/dev/fb)と呼ばれる抽象化したデバイスとして取り扱う7)。Linux上で動作するソフトウェアは,FrameBuffer APIと呼ばれる共通した命令群を用いてフレームバッファデバイスにアクセスすることにより,画面表示に関する処理を行う。このような抽象化や共通化は,画面表示を担うハードウェアの仕様が異なる場合でも,それに左右されることなく画面表示に関するソフトウェア処理を行うためである。そのためには,フレームバッファドライバと呼ばれるデバイスドライバを,画像表示を担うハードウェアごとに用意する必要がある。
開発したフレームバッファドライバでは,FrameBuffer APIによる命令で画像信号生成回路が行うべき処理を定めており,本ドライバを用いれば,FrameBuffer APIを用いたLinux用の各種ソフトウェアが開発システムで動作する。また,画面表示に関する独自のソフトウェアをFrameBuffer APIを用いて作成することもできる。
3.3.2 WideStudioによるGUI
モニタ画面にグラフィカルな表示をし,マウスなどのポインティングデバイスでの操作を簡単に行えるようにするために,オープンソースのGUI統合開発環境であるWideStudio8)をソースコードに変更を加えてFPGAボード上で動作するようにした上で搭載した。
WideStudioをFPGAボードに搭載したことにより,図3のようにメニュー,ボタン,チェックボックス,インプットフィールド,文字などを表示できるようになった。さらに,マウスやキーボードを用いた入力操作を行うことができるようになった。表示位置や表示サイズ,色などは設定ツール(WSbuilder)を用いて簡単に設定することができる。
(図3 WideStudioを用いた画面表示の例)
4.開発システムの特徴
これまでに述べた通り,開発したFPGAシステムはCPU回路,画像信号生成回路,OS(Linux),画面表示ならびにネットワーク関連のソフトウェアなどを備えており,CPUボード等を併用する必要なく,画面表示機能やネットワーク機能を実現することができる。このことにより,検査装置や計測装置など画面表示機能やネットワーク機能が必要なFPGA応用機器のコストやサイズの削減を図ることができる。
また,開発システムには,使用していない回路領域が半分程度残っており,用途に応じた任意の回路を追加して構築することができる。さらに,ソフトウェアも用途に応じて変更や追加を行うことができ,各種用途に対応できる高い汎用性を備えている。例えば,開発システムを画像検査装置に応用する場合には,図4のように画像処理回路などをFPGAに構築して高速な画像処理をハードウェア処理によって行うとともに,画像処理の結果や設定を画面に表示するGUIアプリケーションソフトウェアを動作させることができる。
以上のように,開発システムは各種検査装置や計測装置でFPGAを用いる際のプラットフォームとして利用できるものである。
(図4 画像検査装置に応用した場合の構成例)
5.結 言
CPUを始めとする各種回路をFPGAに構築し,Linuxを動作させるなどにより,ハードウェア処理とソフトウェア処理の両方の処理が可能で,画面表示やネットワークの機能を備えたFPGAシステムを開発した。
開発したシステムは汎用性が高く,検査装置や計測装置になどに応用すれば,処理速度に優れ,画面表示やネットワークの機能を備えた装置を実現できる。
参考文献
1) 田村陽一, 米沢裕司, 牧野幹雄, 松浦隆弘. "霧検出可能な降積雪監視装置の開発". 平成22年度成果発表会予稿集. 石川, 2010-7-06/07, 石川県工業試験場. 2010, p. 27-28.
2) Spartan-3A DSP スタータ プラットフォーム ユーザーガイド. Xilinx, 2007, 34 p.
3) MicroBlaze Processor Reference Guide. Xilinx, 2009, 206p.
4) 服部憲晶. NE2000レジスタ互換のASIX AX88796Bの使い方. Interface. 2009, vol. 35, no. 12, p. 112-120.
5) Adam Chapweske. "The PS/2 Mouse/Keyboard Protocol". http://www.computer-engineering.org/ps2protocol/, (参照 2011-06-30).
6) 日本エンベデッドリナックスコンソーシアム監修. 組み込みLinux入門. CQ出版社, 2007, 271 p.
7) Sreekrishnan Venkateswaran. Essential Linux Device Drivers. Prentice Hall, 2008, p. 355-389.
8) 平林俊一編著. WideStudio徹底ガイドブック. パーソナルメディア, 2004, 739 p.