ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
Main Menu
Tweet
Facebook
Line
:-?
スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
webadm
投稿日時: 2006-10-3 3:14
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
FPGAを作るという発想
目が覚めた時にふととんでもない発想が生まれた。

FPGAを自分で作れないかというもの。

4入力1出力のLUTは16接点のDIPSWで、レジスタはDタイプFFの74シリーズ標準ICで、スイッチマトリックスはバナナクリップケーブルと陸式ターミナルで。

できないことはない。しかしまともな回路を構成するには数百のロジックセルが必要だ。学習用なら少ない数でも十分かもしれない。しかし実用的な回路が構成できないとありがたみがわかないかもしれない。

するとLUTは本物と同じSRAMで構成する必要が、そうなるとコンフィグレーション手段が必要になる。本物はシリアル書き込みパラレル読み出しという特殊なSRAMだし、そんなものは標準部品にはない。使うとするとDual Ported SRAMとかになるがこれは書き込みもパラレルなので書き込みにSP変換回路が必要。他にもいろいろ実現する手段はありそうだが、結構実装面積とのトレードオフを考えないと。

あと実用的なデザインをどうやって自作のFPGAに配置配線するかという問題。考えるとFPGAは半導体としても特殊だけどデザインツールとの両輪で成り立っていることがよくわかる。実際にどんなフォーマットでコンフィグレーション情報が構成されているかは秘密だし。それはまるで生命体のDNAみたいにも思えてくる。

既存のFPGAのコンフィグレーションビットストリームのどの部分がLUTの情報に相当するかは謎である。なので既存のFPGAで回路をデザインしてビットストリームを生成してそれを自作FPGAに流用するということは困難である。

そんなことを思いめぐらしているうちに、子供の頃にコンピュータに強い関心を抱いた時の頃の思いがよみがえってきた。

今ははっきり言えるけど、当時はまったく意識してなかったが無意識のうちにコンピューターが人造生命体の一種であると信じたからに違いない。

FPGAを考案した人に直接聞けないので彼らが意識していたかどうかわからないが、FPGAもそういう発想で見れば一つの人造細胞というかコンフィグレーションビットストリームというDNAを注入するとその中の遺伝子情報が発動して活動をし始めるという点では立派に自然界の生命を模倣した人造生命体である。

子供の頃にコンピューターに強い興味を抱いたのは、英数字だけれどもコンソールタイプライターに自ら人間にアルファベットの文章で問いかけをしてくるという動作を見る限り、その向こうに本当の人間が居るような錯覚を覚えたからに違いない。その向こうには実際は人間は居なくて人造生命体であるコンピューターとその頭脳であるプログラムの仕業であることは承知していても興味が尽きなかった。可能性は無限に広がった。

昔からコンピューターにとりつかれた人は自分でコンピューターを作るという行動に出るのが普通だった。FPGAにとりつかれた者がそれを極めるためにFPGAを自分で作るということは自然の成り行きだ。昔から熱心な仏教信者は自らの手で仏像を刻むという。

おりに触れ「貧乏人のFPGA」というFPGAを自分で作る構想を描いていこう。夏休みはもう終わったので冬休みのテーマーかな。
webadm
投稿日時: 2006-11-3 15:58
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
LUTを実現する回路の再発明
FPGAをゼロから自作するためには、LUTを実現するための回路を考案しなければならない。これは過去FPGAを考案し開発してきた先駆者が通って来た道を再体験することを意味する。

真に技術なり技能の継承者となるには必ず先駆者が悟りを得た瞬間を再体験した者であることが不可欠である。

別に先駆者が考案した方法をうまいこと利用するだけなら再体験はしなくても良いが、技術の核心に触れる改良を加えたり、それに代わる考案を生み出すにはすくなからず再発明の努力が必要である。

何故かFPGAを使う側の立場から作る側の立場になってFPGAを見るようになると今まで知らずに済んでいた秘密のベールが見えてくる。

LUTってどういう回路になっているのだろう?

という単純な疑問である。利用する立場での理屈ではコンフィグレーションシーケンスでビットシリアルでコンフィグレーションビット情報を流し込んでいくので、内部はシフトレジスタみたいな形にメモリが数珠繋ぎになっていることは想像に難くない。

もちろん単純なシフトレジスタではなく、それぞれのレジスタビットはおのおの機能が異なる。一部はLUTであり、他はスイッチとして使われる。

JTAGとか最近のことは除外して初期のスレーブシリアルとかパッシブシリアルとかいう原始的なしかし確実で有効なコンフィグレーション方式をサポートすることを前提に置こう。

全体は後回しにして、まず一番肝心なLUTを考えよう。4ビット入力1出力として、その入力と出力およびSRAMビットのつながりすらピンと来ない。4ビットの値をデコードして16ビットのSRAMのいずれか1ビットをセレクトする回路になるのだろうか。トランジスタ回路で構成するとどうなるのだろうか、基本から勉強し直しだ。もはやトランジスタでコンピュータが作れるぐらいにならないとだめだな。
webadm
投稿日時: 2006-11-5 23:25
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
最初はまずDIP SWを使って
SRAMとかの実現方法を考え始めるととてつもなく脇道にそれてしまうので、とりあえず当初発案した通りDIP SWでコンフィグレーションを行うという方式で考えることにする。

あとでSRAMの実現方法が思いついたらそれでDIP SWを置き換えればいいし。

SRAMでもDIP SWでもどちらにしてもField Programmableという点ではまったく同じである。

4入力1出力のLUTひとつあたり16接点のDIP SWが必要になる。8bitのDIS SWを2個並べる感じ。それほどスペース的には大きくない、SRAMをトランジスタ回路で載せるのと比べれば遙かに優位性がある。

こんなことをまじめに考えていて良いのかという疑問はこの際無視しよう。そのうち画期的なアイデアを思いつくかもしれないのだから。
webadm
投稿日時: 2006-11-6 10:27
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
視点を変えてみたら見えてきた
疲労が残っているので少し横になって仮眠して目が覚めた時にふとひらめいた

今までゲートレベルとかトランジスタレベルで作ろうとばかり考えていたから全然見えなかったが、RTLで見ればマルチプレクサでしかない。

4入力で16の入力のどれか一つをセレクトして出力するありふれたMUXである。ISEやQuartusのRTLビュアーなどでMUXが沢山でてくるのはLUTの真の姿がそうだからですぎない。

そうわかれば、MUXの16の入力がDIP SWで与えるかシフトレジスタで与えるかどれでも良いことになる。そういえばコンフィグレーションをワンタイムのヒューズで行うFPGAもあった。LUTの基本特許の種類としてはSRAMで行う方法とヒューズで行う方法がきっと個別に認められているのだろう。しかし良く考えればどれもありふれている。学生でも考えつきそうなことだ。しかし「必要は発明の母」であることから、必要性を感じない学生には思いつくはずもない。ロジックはゲートで組むものという先入観念がじゃまをする。

当時ゲートアレイとかの製品が既にあってカスタムなロジック回路はそれで集積度を高めるというのが常識だった中にFPGAが登場した。ゲートアレイを作っていた人達は同じアイデアを思いつかなかったのだろうか? やはり既に製品化、事業化してしまうとそれと敵対する技術は生まれにくくなる。思いついていた人はいたかも知れないが、きっと悔しい思いをしたに違いない。

となると、あとはMUXというかデータセレクタとコンフィグレーションレジスタ(DIP SWもしくはシフトレジスタ)の回路を組み合わせて複数チェインすれば任意の組み合わせ回路を構成することができる。実際にFPGAにするには、LUTとDFFを含むロジカルエレメントもしくはロジックセルまたはファンクショナルブロック、更に任意の入出力ピン機能を構成するI/Oブロック、それらをつなぎ合わせるスイッチマトリックスを具体化する必要がある。
webadm
投稿日時: 2007-5-13 5:45
Webmaster
登録日: 2004-11-7
居住地:
投稿: 3107
リレーで作るというアホな発想
アイデア倒れになりかけているFPGAを自分で作るという発想だが、今風になら誰でも思いつくやり方になってしまう。そこがモチベーションが著しく下がる点だ。

誰もやらないことをやらないと意味が無いと思っている。

そこで最近浮かんだのがリレーで作るという発想。

これは近頃よく目にする蒸気機関を使ってロボットを作ったりマウスを作ったり、キーボードを作ったりするスチームパンクと呼ばれる人々の存在を知ったことにもインスパイアされている。

さすがに蒸気機関で作ったら世界中の人々を震撼させることになりかねないので、一歩下がってリレーで作るということを思いついた。

かなり大きく動作も目で見えるぐらいに遅くなるので教材には良いかもしれない。

プログラミングインターフェースとかはどうするのだろうか、やはりJTAGだろうか。JTAGのコネクタもでかいものにすると年寄りにもわかりやすいかもしれない。

コンフィグレーションにやけに時間がかかりそうな気もしないでもないが、これなら少しモチベーションが上がりそうである。

リレーパンクの時代か。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
ページ変換(Google Translation)
サイト内検索