‘PLD’ カテゴリーのアーカイブ

OLIMEXの精度でも無理って、、、

2009 年 8 月 16 日 日曜日

コミケでの戦利品を読んでいて、ここ最近喪失していた戦意が一気に回復しました。

っと思っているのもつかの間。

さっそくFPGAでやる事を再構成していたのですが、、、

OLIMEXの精度でこれできるのか?

と言う問題に直面

TMDなど今まで作ってきたモノはできるところまでの精度でがんばってきました。

しかーし、FPGAみたいなでかい石が真ん中にどでーんとおわしますとI/Oラインや、特に電源ラインをとるのがヒジョーにしんどい。ってか無理。

特に電源です。PLLの電源を分けろとか言われても無理です。I/Oひくので通せません。となるわけです。ほんで、電源をテキトーに回すと、まあ動かんわなww(そういえば前作ったFPGAボードもPLLなしでも電源まともじゃなかったなww同じくARMも)

アルテラマスターPも撮影できますPもP板.comを使用しておられます。一回設計してみましたけど困ることがあんまりありません。

いや、正直使いたいですよ。でもお金がないんです。

他にもカナダ、中国、シンガポールのベンダを見てみたんですが、、、やっぱり精度×。

コミケでの頒布で大量に発注するならP板使えるんですけどねー。プロトタイプは?と言う話になるわけです。

ほんでもって一番安い方法はAlteraの開発ボードを買うってことです。10000円ちょいで買えます。

たぶん同志でお金集めて買うハメになると思います。

IFでCycloneの付録ボードでないかなーと心に期待しながら、、、

本格的に始動

2009 年 7 月 8 日 水曜日

さーて夏休みの予定

宿題→コピペまともにやる

レスキューロボの半田付けー一日?

レスキューロボの設計ー一日?

レスキューロボのパーツ切りだしーCNCが数時間でやってくれる

CNCのCADデータ製作ー一時間?

レスキューロボ組み立てー一日?

FPGAのコア製作ー数週間

1:PSP LCD Controller

2:その他ハードの設計

3:GPU

要はレスキューロボ製作に3~4日ですか。夏休みは6週間。内、2週は外せない用事(合宿とか休みになってた分の授業とか)。大体、三週間FPGAに明け暮れると。いいですね。最高の青春ww

アルテラマスターPさん。コメントありがとうございます。コミケに行く予定なので、FPGA技術を参考にさせていただきたいと思います。

FPGAについて基本的なこと 其の二

2009 年 7 月 4 日 土曜日

で、まあ、前回みたいな感じでハードは終わり。

中身ですね。中身はブロックダイアグラムかHDLでかきます。

ブロックダイアグラムというのは、その名の通り、ブロックのダイアグラムです。回路図を書くようりょうでFPGAの内部を作っていきます。

一方、HDL(ハードウェア記述言語)は一種の言語です。そのうち、VHDLとVerilogHDLがあります。どちらも言語には変わりないのですが、文法は全然違います。どちらがいい?っと言われると、、、人によるのでは?

で、そこら辺のことはAlteraのQuartusがやってくれます。ダウンロードまで。

と、ここまでいろいろ語ってきましたが要はFPGAは何がいいかというと

中身が自由

ピン配置も自由

ってことです。ピン配置自由なのでかなり基板がきれいに出来ます。

FPGAについて基本的なこと(Altera布教中)

2009 年 7 月 3 日 金曜日

ここまでいろいろ語ってきましたがそもそもFPGAって何って方がおられると思うので、いろいろ語ります。

FPGAとは何でも出来る夢が詰まったICです

なぜなら、FPGAというICは内部構造を好きに書き換えられます。ってことは、自分オリジナルのICが作れるってことです。ってことは、自分がやりたい処理専用のICが出来るってことです。ほら何でも出来るでしょ♪(もちろんFPGAの性能で制約はあります)

で、これと同じようなやつでCPLDって奴がいます。

どちらもPLDと言うグループの中にあります。その中で分類すると

FPGA:大規模だがコンフィグROM必要。

CPLD:小規模だがコンフィグROMいらず。

コンフィグROMってのはPLDの内部データをいれとくROMのことです。マイコンで言うプログラムROMみたいなもんです。

僕はAltera信者なんでAlteraで説明すると

FPGA:

Cyclone/CycloneII/CycloneIIIがある。コンフィグROMはEPCSってのを使います。

CPLD:

MAX/MAXIIです。これ単体で動作

で、問題は書き込み。内部データをパソコンからダウンロードする場合に、もちろんダウンロードケーブルを使います。で、そのダウンローダはByte BlasterMV/Byte BlasterII/USB Blasterってのがあります。USB Blaster以外はパラレルポートで接続ww

パラレルポートついてるパソコンなんてそうそうお目にかかれませんよww

ちなみにUSB Blasterは40000円ぐらい。互角品が10000円ぐらいです。ま、これ一台でNiosのデバックも出来るなら安いもんですけど、学生の身分ではもちろん高い買い物ww

で、解決策

Byte Blasterは両方とも自作可能。で、USB BlasterはMAXを使ってます。要するに、Byte BlasterでMAXにUSB Blasterのデータを書き込む、っと言うわけです。だれかにパラレルポート借りてくださいww

もしくは

マイコンなんかでエミュレート。しかし、こちらはソフトで実現してるので遅いようです。

もしくは

PCカードーパラレル変換ってのが10000円ぐらいで売ってるっぽい。でもこれ買うならUSB Blasterでしょ。

って名感じで何とかするしかありません。

GPUについて一通りまとめ

2009 年 7 月 3 日 金曜日

はいGPUについてです。へぼいマイコンでもPSPのLCDを動かせるようにできるだけアクセラレータ使います。

まずは、機能の整理

:通常コマンド

・文字生成&サイズ指定&その場所&文字の色

・図形生成&座標指定&色指定

・レイヤー操作

:特殊コマンド

・ウィンドウ生成

・拡張動画命令

はい。かっこよさそーな名前がズラリww

必要なハードは

SRAM4Mbits

SRAM or SDRAM(容量は未定。どの程度の演算をさせるかによる)

FPGA(Cyclone)

はい説明していきます。一番上の二つは特になし。三つ目のレイヤー操作、というのは、文字や図形を重ねたときに、どちらを上に持って行くのか、とか色は加算or乗算orオーバーレイ、とか、レイヤーを消すとか、レイヤーを動かすとか、を決めるコマンドです。よって、文字や図形にはすべてレイヤー番号を指定していくわけです。ウィンドウ生成は、GPUに内蔵さしたウィンドウの画面を描写さすだけです。もちろんサイズ指定で。動画拡張命令はマイコンから動画情報orSDからの動画再生の場合の支援機能です。一応書いときます、が、使うかどうか不明。

もちろん、英字、数字、記号は全てASCIIコード内蔵です。さすがに漢字はちょっと、、、

で、描画時のコマンドは

:文字

\レイヤー番号:A 座標(x,y) 文字サイズ(z) 文字色(RGB) 文字内容(……)

:図形

\レイヤー番号:A 番号座標(x1,y1) (x2,y2) (x3,y3),,, 色(RGB)

:レイヤー操作

\コマンド名(削除、移動、合成) 対象レイヤー(:A) 各種コマンド(移動なら移動座標x,y , 重ねるならどういう方法で重ねるか)

:ウィンドウ生成

\ウィンドウ名(:W) ウィンドウサイズ(x,y) ウィンドウ配置場所(x,y)

:動画支援

\再生動画(…)

夢が大きくていいですww

出来るかどうかわかりませんががんばります。ってかもうロボでやることこれしかないしww

GPUとI2Cについての雑記

2009 年 7 月 2 日 木曜日

アイデアふくらましてます。

今日はGPUについて。

具体的にどうするか。画面データ(ビットマップ形式)を送らず、数値情報(主にベクトル)を解析して画面に出力させます。

まずそのために必要なメモリ。

画面用SRAM4Mbit

演算、データ蓄積用SDRAM

ここで、後者をSDRAMにしたのはただ単に安いからです。IPはいくらでもありますし、そこまで速度が必要というわけでもないので。

で、まずは、SDRAMからのデータを引っ張りまくる→アクセラレータで演算して、その結果をSDRAMに保存→ある程度貯まったらSRAMに放出。で、画面更新完了。この更新速度なんかは全てコマンドで操作できるようにする。つもりです。

描画コマンドは、文字生成&サイズ指定&その場所、ウィンドウ生成、図形データを直入力、レイヤー合成、、、ぐらいを考え中。

いやー、大変そうですけどおもしろそうですよね。僕はただ単にFPGAとVerilogで遊びたいだけです(遊びの範囲を超えてるような、、、)。

で、もちろんSOPC Builderで使えるようAvalon-Busに対応させます。

ほら、マイコン+FPGAになるはずだった物がFPGA一つに♪。しかも小型化&バスの速度というボトルネック解消ww

それと、オリジナルのI2C I/Fについて。

ピンは、CK,IN-DATA[0..6],Adress[0..6],OUT-DATA[0..6]にしようと思います。で、ACK取得は無視or自動化。CKは常にいれます。Adressに値をいれてるときにそのアドレスのデバイスと通信。IN-DATAでレジスタ値入力→OUT-DATAからスレーブからのデータがざくざく出てくる。

っとうまくいくように作ります。(正直、I2CなどシリアルインターフェースはFPGAの苦手中の苦手分野なんですけどね。低速だし、使う物なんで一応作ります)

いやー口で言うのってホントに簡単ですねww

はいはいこれからのことですね

2009 年 7 月 1 日 水曜日

さーてと、とりあえず、レスキューロボはホントに数時間あればできそうだ。基本は今までの回路に若干の変更を加えるだけ。

で、肝心のFPGAの方。とりあえず必要なIPコア列挙

NiosII ーあり

SRAM I/F ーあり

SDRAM I/F ーあり

NAND Flash I/F ーあり

I2C I/F ーあり

USART I/F ーあり

Timer ーあり

CMOS Camera I/F ーあるわけ無い。けどある可能性も若干。ITU565ならOK

PSP LCD Controller ーあるわけ無いww

PSP LCD GPU ーあったら作った人と一夜しゃべり通せそうww

ってことで、基板を作った後もお仕事は残ってるって訳です。しかもこれを冬休みまでに、、、

で、もちろん使うのはCycloneIII。前はCycloneIIにする予定だったんですが、ロジック数的にCycloneIIIの方がいいですね。Exposed Padであることは除いてww

ほんとにこんなことして僕って暇人ですねww

もちろん夏休みはFPGAに捧げます。

周りは東大行くとか京大行くとか阪大行くとか、、、そのために夏期講習どうしようとか、、、

俺も焦るべき?(今現在高一、高三になっても塾行く気はナシ)

担任の一言

「君の人生の目標が物作りなら高三でもロボ作れ」

もちろん☆やりますとも。しかも命令形ですかww

で、大学どこいこーか

1:マサチューセッツ工科大学 ーどうやっていくんですか?

2:チューリッヒ工科大学 ーどうやっていくんですか?

3:東京大学 ー今から本気で勉強すれば、、、でもそんなのむりっすww

4:東京工業大学 ーたぶんぎりぎりライン。

5:筑波大学 ー現実的ライン。ってか電気系の研究室多いし良いです

6:東京農工大学 ーここも同じく電気系の研究室多し

え?なんで京都と大阪がないかって(ちなみに私大阪在住)。ここ大切↓

名前で大学決めてんじゃねーよ。何を研究したいかで決めろよ!!

周りの奴らに一番言いたい言葉ww

大阪とか京都で僕がやりたい研究してるとこってあんまり無いです。はい。

たぶん筑波の工学システムぐらいかな。今の学力ならww

っと、高校生になるといろいろ考えないとだめで疲れるんですよ。そういえば、昔、いつも疲れた疲れた言ってた先輩がいたけどその先輩の気持ちが今ヒジョーに良くわかりますww

Alteraは俺に勇気と希望をくれた

2009 年 6 月 27 日 土曜日

昨日ブログにテキトーに書いたことが実現しました。SOPC Buildereをこそこそいじってたらなんかコアがもうできてしまいましたww

Alteraすげえよ

なんでクリックだけでCPUができんだよww

今日、Cortexが絶望的な状況になって、戦意喪失してるときにこそこそやってある程度気力回復。

あーあ、もうARM WorldなんかやめてAltera World構築しようかなーww

でも、ロボカップのロボ製作が一段落したら後輩と一緒にFPGA修行の旅に出てくると思います。

さ、さっさとロボ作ってFPGAにあけくれよ。

もう信じられる物は何もないww

2009 年 6 月 26 日 金曜日

ども、

テンション下がりまくりです。

なぜか、

なんで書き込みはできるのに通信できないんだよ!!

どういうことか。早速DWについてたCortex基板にプログラムを書いたんですけど、その書いたプログラムがちゃんと動かない。しかも、そのプログラムというのがUSART1の通信テストプログラムなんです。ちなみに、書き込みはUSART1ですよ。あれ?なんかおかしいですねww

まったくもう、H8に戻るとかいやですよ。でもどうすればいいのかなー

I2Cが入ってて25MHz以上ならどんなマイコンでもいいんです。でも、それで使えそうなのがなかなか見つからない。

一つ、素晴らしいけど難しい方法

FPGAにエミュレート♪

Cortex-M0でもNiosIIでも選んで、SIMD拡張命令追加で高速化。ほんで、どうせ必要なのはI2CぐらいなんでI2CとAvalon-BusをつなぐIPコアを一緒にいれとけば完成。

つまり内部は

CPU(Cortex-M0 or NiosII)

メモリ用バス

I2C I/F

このコアを作るのはSoPC Bulderなんでドラッグアンドドロップするだけ。しかーし、内部のプログラムに関する資料があまりないっていうのがちょっと困ります。

さーて、本気でどうしようか。ま、ここを何とかするのがハードウェア設計者なんですけどねww

フレームバッファ=カウンタの塊

2009 年 6 月 12 日 金曜日

久しぶりの技術解説のブログ

はい、フレームバッファです。具体的にどうするか。カウンタの塊を作ればよいのです

どういうことか、

まずはメモリから読み出すとき。

1:データはずっと開きっぱなし、アドレスのピンをカウンタで回して、順に読み込んでいきます。

2:FPGA内部のFIFOにメモリからのデータをためていきます

3:FIFOの内容をLCDに書き込み

単純に説明するとこんな感じ。

で、LCDに書き込むとき

1:HSYNCをカウンタで回して横方向に描画していきます。これを480カウント。ちなみに、このクロックと、FIFOの読み出しクロックは同期。

2:480カウント目でVSYNCをワンカウント。縦に一つずらして下の列の一本を描画。

を永遠に繰り返す。

簡単に説明すればこれだけです。

ほかにも、起動シーケンスやクロック同期、、、などなどのためにカウンタが必要です。そのほかデコーダを少々。

これ、手書きでもいけるかなww

そういえば、今日、先輩に頼んでた基板とパーツをもらいに行きました。Blackfinのピンの多さに感動ww

JTAGもあるので明日がんばって半田付けしてCortexを動かします。