Tech と Culture

テクノロジーとカルチャー

FPGAキットで始めるハード&ソフト丸ごと設計

CQ出版社からブログの内容に加筆して
FPGAキットで始めるハード&ソフト丸ごと設計: CPUと周辺回路を作り込んでCプログラミング」
を出版しました。
<img src="http://blog-imgs-62.fc2.com/f/p/g/fpgadesign/cover.jpg" alt="cover.jpg" border="0" width="300" height="300" /></a>">cover.jpg

ブログの内容と同じく以下の様なシステムをFPGA上に開発します。
fig-sys.png

FPGAの中は以下の図のようなSoCでLinuxが動作しています。
fig-soc.png

すべてのソースコード( ハードウェア:VHDL, OS: Linux, アプリケーション&デバイスドライバ : C)はGPLライセンスsourceforgeで公開しています。

最初にJPEGハードマクロが無い状態でストリーミング再生を行います。FPGAのCPU性能は低いため紙芝居のような再生となります。そのシステムでプロファイラを動作させて処理の重さを測定します。処理の重いJPEGデコードをハードウェアにオフロードすることにより高速化され紙芝居が通常の動画再生のレベルにまでなります。

ブログの内容に、ソフトウェア処理とハードウェア処理においてチップの中でどのようにデータ処理が行われているのかの解説を付け加えています。(1)単純な演算処理でのソフトウェア処理とハードウェア処理の違い(2)システムにおいてソフトウェア処理とハードウェア処理の違いを理解できるようにしました。ハードウェア処理はソフトウェア処理と異なり、並列動作が可能なこと、1クロック内であれば直列につないで処理できることを理解できるようにしたつもりです。
Appendix的にAMBAバスの説明を付けています。

対象読者は、FPGAの使いこなしは既に知っているが、小規模なロジックの実装しかしたことがなく大規模システムの開発がどのような物か知りたい人です。優秀な大学院生や企業の新入社員等をイメージしました。

実習書的な側面が大きく実際に動作させることによって理解できるようにイメージしています。

FPGA内部の設計データがハードなのかソフトなのかという話を出版社と色々しました。VHDLコードはそのままASIC化ができるハードウェアの設計データでもあり、FPGAにマッピングする限りはソフトウェア相当と見るべきという考え方もあります。ココらへんはオープンソースハードウェアのまた一つの別の流れだと私は思っていてオープンソースハードウェアというムーブメントを広めるという私の個人的な意思があります。その時のユーザーニーズとしては教育が一番分かりやすいのかな?という感覚があります。

すべてがGPLライセンスでgitで公開しているため、以下のような開発をgit上で開発していくイメージとなります。
既に大規模システム設計できるレベルのエンジニアの方にはこの事でハードウェアもオープンソース化やバザール開発への扉が開きつつあることを感じてもらえるのではないかという期待もちょっとあったりします。
fig-git.png