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

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

2014年06月

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

カテゴリ一覧: loading

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

二足歩行ロボット製作進捗その4+α

こんばんは、MST-labのもりゅー(@Moryu_io)です。お久しぶりです。

 今日は二足歩行ロボットの製作状況と、なんかよく分からないものを作ったので、その紹介をしたいと思います。

・二足歩行ロボット「焼き鳥」 
前回の更新から2か月ほど経ち、その間に大体のモーションができあがり、またコントローラーからの無線操縦も可能になりました。

そんな現在の「焼き鳥」がこれです!!

1401797573473

!?



1401797596691
1401798156968

はい首が折れました。元々倒れたときに鼻先が真っ先に地面について首が曲がりまくっていたので、いつかは折れるだろうと思っていましたが、ついに・・・という感じです。

作り直しついでに頭のデザインをもうちょい変えようと思います。
もっと鳥らしくしたいですね。


・なんかよくわからないもの
Bnxr-cACAAA0cs2
なんとなくフルカラーLEDが使いたくて調べていたらテキサスインスツルメンツ社の「TLC5940」という所謂LEDドライバICを発見。
無償サンプルを請求して、データシートを読んで、挫折して、最終的に
https://mbed.org/users/suupen/notebook/tlc594016channel-led-driver-grayscale-pwm-control-/
を参考させてもらいながら適当にやったら動きました。mbedすごい

上の写真は、それを利用してTITECHを一文字ずつ様々な色に光らせる感じのものです。特に面白いものでもないですが、一応作ったので写真をあげてみた次第です。



ではでは。 
ギャラリー
  • ABUロボコン結果報告
  • スマホから部屋の電気をつけてみた
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • MakerFaireTokyo2017に出展します
  • たのしいロボット帝国 製作物紹介
記事検索
最新コメント