東京工業大学 ロボット技術研究会

東京工業大学の公認サークル「ロボット技術研究会」のブログです。 当サークルの日々の活動の様子を皆さんにお伝えしていきます。たくさんの人に気軽に読んでもらえると嬉しいです。
新歓特設ページ        ロボット技術研究会 HP        ロボット技術研究会 twitter公式アカウント

FPGA

「ロボット技術研究会」通称「ロ技研」は、その名前の通りロボットの制作や研究はもとより、電子工作や機械工作、プログラミングなどの幅広い分野にわたるものつくり活動を行っています。

カテゴリ一覧: loading

自作GPUのハナシ

これはrogy Advent Calendar 2015の18日目の記事
「狭義Lチカか広義Lチカか自作CPUのハナシ」です。

13の有塩(@salt_free_free)です.
2015-12-14-190453_107x85_scrotOpera

低レイヤは好きですか
低レイヤを知ろう
低レイヤは楽しい

FPGA上に載せるGPUもどきをつくるハナシをします.
ただし現在設計中なのでほとんど調べたことの垂れ流しです.
やでもアウトプットは大事だってサークルナカマも言ってたぞ

GPUとは
GPU-Wikipedia
画像処理をする計算装置です.
お手元のパソコンやスメイトホンの画面は実はこれかこれに相当するものに繋がってます.
3Dモデル描画を例に簡単に言うと,
CPUから「ココにこんな三角形書いて」と命令が飛んでくるのでひたすら描画をこなします.

もちろんそういう処理までCPUがやっても良いんですが,決まった処理の繰り返しが多いので
専用のハードウェアをつけてやってそこで処理を行うことで高速化・高性能化します.
それがGPUです.
アレ
なんでGPUもどきをつくるの
弊大学では6学期の実験で,半期で一人でFPGAでなにか作って発表する枠があります.
作品完成度が高いとか投票で1位になるとお点数がgetできるのでこれは頑張るしかないというワケ.
もともと低レイヤが好きで,CPUやGPUの勉強・設計をしてみたかったのでいいチャンスと思い,
CPUは5学期にアレしたのとそもそも実装済みのCPUが用意されているので今度はGPUにしました.
続きを読む

FPGAでプロセッサを作ろう vol.1

誰か代わりにアブスト書いてくれ!!
現実逃避中です.すいぼうです.

今回はFPGAで何故任意の回路を作ることが出来るのかという点について,簡単に説明しようと思います.
使ってる用語は情報工学科2年で聞くものがほとんどだと思います.
詳しくは末尾に参考サイトとしてリンクを貼って置きますので,そちらの方へどうぞ.

FPGAには内部RAMやI/Oなどユーザが任意のICを作成する上で使う機能が予め備わっています.
これらの機能をどのように接続してどのようなタイミングで動作させるのか,ユーザはこれを指定してあげることで任意の回路を作り出すわけです.

例えば,4ビットの入力に対応した16進数表示を7セグメントディスプレイ(以下7セグ)で行いましょう.
小数点部分は使わないので,表示パターンは以下の16通りですね.

7seg

この7セグは7つのLEDで構成されているので,ユーザは入力に対して計7本の出力を切り替えるような論理回路を組む必要があります.
FPGAのどのピンから入力するのか,どのピンから出力するのかも定義しなくてはなりません.
出力が1の時に対応したLEDは点灯し,0の時に消灯するように7セグとFPGAが接続されていることにします.
中央の横棒に注目しましょう.
0,1,7,cの時は0,それ以外では1を出力する必要があります.
対応した入力は0000, 0001, 0111, 1100ですね.
[]内の数字が小さいほうがLSB(least significant bit:最下位ビット)側として書くと,

中央の横棒 = ~((~input[3] & ~input[2] & ~input[1] & ~input[0]) |
                        (~input[3] & ~input[2] & ~input[1] & input[0]) |
                        (~input[3] & input[2] & input[1] & input[0]) |
                        (input[3] & input[2] & ~input[1] & ~input[0]));

となります.
これを人間ならカルノー図,コンピュータならクワイン・マクラスキー法なんかを使って簡単化します.
(~input[3] & ~input[2] & ~input[1] & ~input[0]) | (~input[3] & ~input[2] & ~input[1] & input[0])

~input[3] & ~input[2] & ~input[1]
みたいな感じです.
ツールがやってくれるんで,そこまで気にしなくても大丈夫ですけどね.

FPGAにはフリップフロップとLUT(ルックアップテーブル)をいくつか含んだセルがたくさん入っています.
XilinxならSlice,AlteraならALMというように呼び方は異なりますが.
このLUTはSRAMで構成されています.
今回の場合,このSRAMのアドレス線にFPGA外からの入力信号を,SRAMのデータを先程の論理式(もどき)に対応した値にします.
もしかしたら,16-1のマルチプレクサと同じ動きというように説明した方が分かりやすいかもしれません.
図にするとこんな感じです.

srammulti
↑黄色の部分をユーザが定義する.0,1,7,cの時に出力が0になる.

このSRAMからの出力を,FPGAの出力する部分に繋げればいいわけです.
こんな感じで残る6つを設定すれば,7セグの表示が出来そうですね.

先程も述べたようにFPGAにはセルがたくさん入っているので,この組み合わせによって様々な論理回路を構成できるようになります.

とまぁ,今回はここまで.
何故任意の回路を作れるのか,少しは疑問が解決できたでしょうか?
全く知らずに触れるよりは……と一番疑問となりそうな部分を説明してみました.
これより詳しくは触れないつもりですので,気になる人は調べてみてください.
面白いですよ(そしてハマりました).

次回は,早速Xilinxでの開発環境(PlanAhead)を入れてみたいと思います.
バックアップとってアンインストールして……と少し手間なので,遅くなるかも?

訂正や要望,質問等はコメントにどうぞ.

<< vol.0                vol.2 >>


参考サイト
半導体技術解説:いまさら聞けない FPGA入門 (2/3) - MONOist(モノイスト)
http://monoist.atmarkit.co.jp/mn/articles/0609/20/news118.html

FPGAでプロセッサを作ろう vol.0

初めまして,ロ技研シニア枠のすいぼうです.

自己紹介としましては,学部では大学ロボコンや電子工作なんかをやってました.
新入生に 機械系や電気電子工学科と間違われる 情報工学科の学部生でした.

ブログ画像2
↑PCとの通信はなく,H8マイコンだけで3500以上のLED(ばら売り)をダイナミック表示.
 右の方ではニコニコ動画であがっていた『Bad Apple!!』を表示しています.


最近は FPGA (後で説明)にハマっていて,UART,VGA,SDRAMコントローラとか作っていますね.
卒論ではプロセッサを作りました.
院では無関係のことをやっているので完全に趣味です.
次はカメラ映像の取り込みやUSBメモリへの読み書きとかやりたいですねー.

ブログ画像3
↑SDRAMに1フレーム分の画像を保存して,VGA出力.


ブログのネタもFPGAについて
です
正直,初心者の域を出てるかすら怪しい技術レベルなので,非効率的なツールの使い方や間違いも多々あると思います
ですので,あまり大きな期待はしないで下さい. というか,教えて下さい.
一応,Xilinx社とAltera社のFPGAの開発環境導入からシミュレーション実行の部分まで, 不定期に 連載していきたいと思います.
ちなみに,私はXilinxの方が使用歴が(少し)長いです.
せっかくなので関係ありそうな手法や講義の紹介,VerilogHDLの簡単な説明とかも入れたいですね.

目標もなしに説明するのもアレなんで,こちら『CPUの創りかた』に紹介されているCPU (TD4)を実装することにしましょう(今,思いつきました←).
ブログ画像1

各ICのVerilogHDL記述なんかも載せる予定ですが,回路図やアーキテクチャを読み取れる部分については非公開とさせていただきます.
気になる人は本屋さんなんかで見てみると良いですよ.
表紙は人を選びそうですが(寧ろ,うちの学生は手を出しそう?),簡潔にディジタル回路の仕組みが書かれていて良書だと思います.
情工なら,学部2年で論理回路理論等をやるのでそのあたりで読むとより理解できると思います.

(......これぐらい販促したら多少は許してもらえるよね?)


はい,では初回となる今回はFPGAについてかるーい紹介をしようと思います.
もうちょい突っ込んだ紹介は次回に.

ブログ画像4
↑wikipedia commonsよりAltera StratixIVの写真

FPGA(Field Programmable Gate Array)は「 後からでも回路の書き換えが可能 なロジック・デバイス」です(参考サイトより).
世間で使用されている大半のICは,設計時に仕事が決められているのでそれ以外の仕事を行うことが出来ません.
入力された数を足して出力する回路で,引き算を行うことは出来ないわけです(実際は同じ回路を工夫して使うことで引き算を行っていたりします.詳細は割愛).
しかし,FPGAは出荷後にユーザが好きな回路を実装することが出来るので,足し算だろうか引き算だろうが使いたい用途で動かすことが出来るわけです.

後で失敗に気づいたり,追加機能を載せたくなったりしたときでも, チップを作り直さずに 新しい回路データを入れるだけです.
開発期間の短縮やリスク低減などといったメリットが多数存在します.
予め仕事が決まっているICと比較すると,載る回路規模が小さいことや大量生産時には生産費用が大きくなることといったデメリットもあるわけですが.

産業的なニュースとしては,Intel社が14nmプロセスのFPGAをAltera社向けに製造し,Altera社がそのテストチップの試験を始めたそうですね.
まだまだ伸びていく分野だろうなぁと個人的に思って(期待して)たりします.

研究的なネタとしては,その特性を活かして並列計算機を構成しているものが挙げられます.
特に画像処理や一部の科学計算なんかをよく見かけます.
動的再構成(動作中に一部の回路構成を変えること)を使っているものも.

同人的なネタとしては,ゲーム機のハードウェアエミュレータ等,市販のマイコンでは制御しづらい回路の製作をされている方々がいらっしゃいます(探してみてください).
私がFPGAをやり始めたきっかけも,先の電光掲示板でマイコンのスペック不足やコンパイラの制限によって実装できなかった不満があったからです.

次回はどうやって任意の回路を構成しているのか,その仕組みについて簡単な説明をしようと思います.
訂正や要望,質問等はコメントへどうぞ.

参考サイト
日本アルテラ
"知って納得FPGA入門"
http://www.altera.co.jp/products/fpga.html

mynavinews
"Altera、Intel 14nmプロセスを用いたFPGAテストチップによる各種試験を開始"
http://news.mynavi.jp/news/2014/04/24/257/
ギャラリー
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント