Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FPGAで遊んでみた

2,132 views

Published on

LT駆動開発 18 - 秋(not 安芸)の宮島で発表したスライドです。

Published in: Technology
  • Be the first to comment

  • Be the first to like this

FPGAで遊んでみた

  1. 1. FPGAで遊んでみた LT駆動開発 18 - 秋(NOT 安芸)の宮島
  2. 2. 自己紹介 名前:Akira345 職業:某社インフラ担当 元 PL/SQLバッチプログラマー
  3. 3. インフラ屋が何故FPGA?
  4. 4. LT駆動開発 18 - 秋(NOT安芸)の宮島
  5. 5. LT駆動開発 18 - 秋(NOT 安芸)の宮島
  6. 6. LT駆動開発 18 - 秋( 安芸)の宮島
  7. 7. 御静聴ありがとうございました。
  8. 8. FPGAとは? • 製造後に購入者や設計者が構成を設定できる集積回路であり、広義 にはPLD(プログラマブルロジックデバイス)の一種である。現場でプロ グラム可能なゲートアレイであることから、このように呼ばれている。 • FPGAの動作を定義するには、ユーザーがハードウェア記述言 語 (HDL) または回路図で設計を提供する。大規模な場合は回路図 よりもHDL方式の方が適している。しかし、回路図の方が設計の視覚 化が容易で事前に確認しやすい場合もある。 (Wikipediaより)
  9. 9. ざっくりいうと • プログラム可能なハードウ エア • オリジナルのLSIが作れる。 • CPUやゲーム機をまるっと 1Chipに収めることが出来る。 • ハードなのに書き換えが出 来るので、半田付けしなくて も回路を変更できる。 • オープンソースな回路もあ る。
  10. 10. VHDLとは? • デジタル回路設計用の、ハードウェア記述言語の一種である。EDA分 野における標準の一つで、主として論理回路の設計に、特にFPGAや ASICなどの設計で使われる。規格が存在し、IEEE 1076-2008 で ある。 • 米国防総省のプログラミング言語であるAdaの影響が大きく、その構 文は(Adaと同じく)いわゆる「ALGOL系」である。規格では、ケー ス・インセンシティブ(大文字、小文字の区別をしない)としている。 (Wikipediaより)
  11. 11. Ada
  12. 12. Adaとは? • Ada(エイダ)は、プログラミング言語の一つ。Pascalに類似した文 法と、高度な型の体系をもつ。 • 史上初のプログラマとされるエイダ・ラブレスの名前にちなんでAdaと命 名されているため、ADAと表記するのは誤り。 • ボーイング777や、F-22戦闘機の制御ソフトウェアはAdaによって書か れている。 (Wikipediaより)
  13. 13. 突然のPL/SQL • PL/SQL(ピーエル・エスキューエル)は、Oracle社が、Oracle Databaseのためにコンピュータのデータベース言語SQLを独自に拡 張したプログラミング言語である。 • PL/SQLの文法・構文はAda言語をベースにしている。 Oracle Corporation CEOのラリー・エリソンが、Oracle を開発する前に国 防総省向けのシステム開発をAda言語によって行っていた。その経緯 からAda言語を元にすることを採用したと推測される。 (Wikipediaより)
  14. 14. architecture Behavioral of LED is begin process(sw01) begin if (sw01 = '1') then led <='1'; else led <='0'; end if; end process; end Behavioral; Create or replace Procedure sample as sw number; begin sw := 1; if (sw = 1) then sw := 0; else sw := 1; end if; End; / 何となく似ている!!
  15. 15. なんか出来そう!
  16. 16. トレーニングボードの入手
  17. 17. 開発環境入手
  18. 18. コードから回路が生成されて・・
  19. 19. 完成
  20. 20. ヤバイ!楽しい!! • 書き込み方法はこちらにまとめてます。 http://junkbox.wicurio.com/index.php? VHDLから作成
  21. 21. ちなみに回路図からも書き込めます やり方はこちらに→http://junkbox.wicurio.com/index.php?回路図から作成
  22. 22. 余談ですが・・・ • CPUをFPGAで作ろうと思うと、どうしますか? • 回路を真面目に書く?? A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
  23. 23. ようは入力に対する出力が合えばいいよね? process(A,B) begin c<=‘0’; S<='0'; if (A='0' and B='0') then C <=‘0’; S <='0'; end if; if (A='0' and B='1') then C <='0'; S <='1'; end if; if (A='1' and B='0') then C <='0'; S <='1'; end if; if (A='1' and B='1') then C <='1'; S <='0'; end if; end process; A B C S 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0
  24. 24. ルックアップテーブルといいます。 ROM やRAM などのメモリにあらかじめ計算した値をテーブルとして書き 込んでおき,その値を必要に応じて参照するためのテーブルをLUT (ルックアップ・テーブル)といいます.例えば,ある関数y =f(x)を LUT で処理するためには,はじめにf(x)の値をあらかじめ計算してお き,メモリに記録します.メモリのアドレス線に入力x を与えると,メモリ のデータ線にy が出力されます.複雑な関数を回路で実現すると回路 規模や動作速度の面で不利になる場合がありますが,LUT を使用す れば高速かつ小面積化が期待できます. (FPGA用語集より)
  25. 25. ざっくり言うと • 要するにカンペです。(笑) • 三角関数を覚えても云々な話がありましたが(ぉ 三角関数やルートなどあらかじめ計算した結果を記録しておいて、 対応する入力値に対し応答すれば、それは計算しているのと等価。 • ルートの計算方法忘れても、√2=1.4142・・・・と覚えていれば。 • すべての入力に対する出力結果を記録し、模倣すれば同じものが作 れる。

×