posted by
rerofumi
2009/6/14 日曜日 3:24:45
GP2X wiz が届いたものの、その後開発マシンのOS入れ替えで開発環境構築し直しにより触れなくなっていたしだい。
GP2X wiz の Toolchain 構築で七転八倒してちょいあきらめた状態(後述)でとりあえず気になっていた Wiz の速度テスト。
スプライトサンプルアプリを動くようビルドして色々とチェックその結果わかったことは……。
私のコードはGP2XとWiz上でもっとも高速に動くよう、16bit depth のフレームバッファモードで動かしているとこはちょいと注意してね。PCの方で32bitで動作させると、倍の負荷がかかったりするから。

でまあ、このスプライトサンプルアプリではスプライトの数を増やしてどれくらい時間がかかるかをみることができるのです。これでSDLとfbdevの速度をなんとなく見る。
元々の GP2X-200 とかでは、fbdev から液晶に表示させるまでの負荷が異様に重くそれだけで 13~14ms かかっているというのが最大のネック。なので、2Dスプライトでも 60fps で動かすのはほとんど無理。
でも、ピクセルフィルレートは 327680pixel/16ms とそんなに悪いわけでもなく、320x240pixel なら 4画面分とそこそこだった。
なので GP2X-200 では 30fps 以下が基本。
Wiz では、fbdev の処理が 5~6ms と結構高速になっているため色々と軽く見える様だ。
ピクセルフィルレート換算だと 491520pixel/10ms とかなり早くなっている。16ms換算で、786432pixel なので倍を超えている。
その他色々な要素を総合して、CPUクロックが 266MHz から 533MHz にあがった分の数値そのまま高速化されていると考えて良いようだ。画面周りは改善されているので fbdev はそれ以上に早くなった様に見え、それがアプリのスムーズ化に現れている。
んが一つ大きな問題を見つけた。
ファーストインプレッションで「なんか動作が遅い」と言ってた理由がわかった。私がGP2Xの頃使っていた SDL を static で利用していると SDL_tick() の単位が 1ms ではなく 10ms になっているようだ。ハードやカーネルが変わりタイマーの単位が変更となったようだ。なので60fpsを数えるために16msを計測しようとしても、10ms単位なので20msしかわからないということらしい。増えた4msの分だけ遅くなっていたというわけ。
Wiz 内にあるシェアドライブラリではどうかはまだ試せていない。
利用するタイマーを変えるか、シェアドライブラリを試してみるかしないとならないかもなー。
なんとかして、10ms未満で時間を計測できる手法を見つけなくては。
posted by
rerofumi
2009/6/6 土曜日 17:00:15

さて、せっかくマルツボードとFPGAを手に入れたのでなんか作るか。ということで、以前CPLDで修行したときの「カップラーメンタイマー」を移植することにした。(CPLD版の制作記 2, 3)
お試しで作るのにちょうど良い題材。
CPLDのときはゲート数も少なく、なんとか詰め込むような感じだったけれども、今回の Lattice FPGA XP2-5E は単純比較で 30倍くらいの規模があるため余裕ありあり。なので、以前はできなかった「時間がきたらアラームが鳴る仕組み」も追加することにする。

アラームのために圧電スピーカを追加している(左上)。
ボタンはSW2~5 の 4つで左から、5分、4分、3分、1分のスタートとなっている。
完成したラーメンタイマーの ispLEVER7.2 プロジェクト。(余計なファイルも混ざっていたらごめん)
Download: ramen_timer_lattice.zip
VHDLのソースコードのみアーカイブ
Download: ramen_timer_lattice_vhdl.zip
動作しているところの動画など。
Read the rest of this entry »
posted by
rerofumi
2009/5/18 月曜日 23:28:43

先日買ったマルツのFPGA学習ベースボードについているパラレルプログラマでうはうはのFPGA生活が送れているかというとさにあらず。この五日間コンフィギュレーションができなくて悪戦苦闘していた。
■ 第一の難関、増設パラレルポートの罠
Lattice の ispVM を起動してダウンロードケーブルを設定することから始まるのだけれども、自動認識に失敗しケーブルを発見することができない。
でまあ、パラレルポート設定の所に 0x0378 とか書いてあるのを見て気がつく。これは、マザーボードというかチップセット内蔵のパラレルポート時のI/Oアドレスだ。うちのは増設カードによるパラレルポートなのでI/Oアドレスが違うはず。

で、見てみたら 0xb400 だったのでこれを手動設定。

これでダウンロードケーブルが認識されて使える様になった。
■ 第二の難関、バウンダリスキャンできない
ところが次の段階であるバウンダリスキャンによるデバイス検出ができずエラーのみが帰ってくる状態に。さっぱりわからないので、超簡易プローブテスタを作成して、マルツボード上を信号が流れているか確認する。

大活躍の超簡易プローブテスタ。
みっちりと調査し、結構な時間をかけてわかったことは、JTAGの信号はちゃんとFPGAに届いていること。たぶん、TDOが受け取れずに 1 オンリーを検出している状態であること。
おまけに、調査しているときなんかの切っ掛けですぐ信号が出てこなくなる現象に遭遇。これに出会うとアプリを起動し直しなのだけれども、4回に1回とかの頻度で起こるのでちときつい。
ちなみに Xilinx モードにしたら Impact で普通にバウンダリスキャンできた(デバイスは不明な奴と表示される)。なのでマルツボードのせいでも、FPGA基板のせいでもなさそうである。
パラレルポートドライバと増設パラレルポートの関係な気がしてきて、やる気はがっつり減退。なにかに頼りたくなってくる。

頼りになる女神降臨(ひだりのほうね)。USBなかわいいアイツ。
まあ、Windows7 のときに「パラレルポート撤廃しようかなー」とかいっていた時はまだ迷いがありながらも検討していたと言うことで。
しかし……。
■ 第三の難関、USBケーブルでもバウンダリスキャンできない
流石にUSBケーブルでもコンフィグできなかった時は目の前まっくらになりましたよ。
今回のLattice基板(&雑誌)3つ買ってあったのだけれども、3つとも駄目ってどういうことよ。いったい何がどうなっているのよさ。
具体的にはパラレルポートの時とは違って、スキャンはできる。できるんだけれども、NO-JTAG という「不明なデバイス」扱いになってしまうという現象。
~~ 2日間の格闘を挟んで ~~
5日を費やしてようやく思い出した。そういや以前にもコンフィグできない問題ってあったよなと。
あれは2007年の Spaltan3E 基板の時。コンフィグできないという問題で一堂騒然。結局波形を揃える必要があるということで、うまくコンフィグできない人は244でバッファを作ってかますか、コンデンサを調整して波形を調整するということになっていたと思う。

その時につくった 74VHC244 なアダプタ。
これを基板とケーブルの間にかますと……。

ばっちりというかあっさりスキャンできるようになりましたよ。こんちくしょうめ。
もちろん、コンフィグもバッチリ。
これで Lattice FPGA基板で開発して遊ぶことができますよ。(目の端にキラリと光ものが)
たぶん、増設パラレルポートで上手くいかないみたいと言う問題と、バッファを噛ました方が良いという問題はそれぞれ別の事象。
私の場合はこうだったという情報までに。
posted by
rerofumi
2009/5/14 木曜日 1:40:39

マルツ電波の「FPGA学習ベースボード」を買ってみましたー。
やあ、デジタル・デザイン・テクノロジー連動付録の Lattice FPGA を使ってみたくなったもので。Lattice FPGAが使えるダウンロードケーブルは手元にないのでどうしたものかなあと考えていたのです。
なひたふさんが XilinxやAlteraのパラレルダウンロードケーブルで Lattice FPGA をプログラミングするサポートダウンローダを公開されているし、Lattice のパラレルダウンロードケーブルの回路図もあるので自作しても良かったりはする。でも、「難しくは無い」けど「面倒くさい」ときってあるよね。その面倒くさいも時には楽しい要素なのだけれども、今回は回避した次第。
それに、テストボードも作るの面倒で、これくらいのがスタートアップにあるのも結構便利なものだったりするのです。いずれは、自作のテストボードができてそれで済ます様になるかもね。
手に取るまで気がつかなかった、というか見落としていたのだけれども。

パラレルポートコネクタがオス型じゃん。
これまで使っていたストロベリーリナックスのパラレルダウンロードケーブル(現在は販売終了)がメス型コネクタだったのでケーブルが合わないよ。中継ぎコネクタでも買ってくるか……。
まあ、ByteBlaster もオス型コネクタだったし、メス型というほうが逆なのかもしれない。
このベースボード、7セグにスイッチにラダー抵抗DACとシリアルって結構バランスの良い学習ボードだと思う。取り敢えずの学習でこの辺は使いやすいしね。汎用I/Oポート端子に245バッファがついているところも初心者向けやマイコン応用用途としてポイント高し。
7セグがダイナミックでなく直繋ぎなのでポートを食い過ぎなのが難点。SRAMがついているとかなり汎用度が高まるんだけれども、まあそのへんはブロックRAMでなんとかするところか。
回路として簡単なのでおまけ的に USBコネクタがついているのだけれども、使える人がどれくらいいるかはちと疑問ではある。
この後に続く、Splatan3E と Cyclone 互換基板の販売が楽しみ。
この手の基板が後々入手できることの安心感は大きいと思うのです。
posted by
rerofumi
2009/5/11 月曜日 4:52:33
前回の続き。
どちらかというとこっちの方が難易度の高い調査。詳しい方はフォローよろしく。
■ MosChip PCIシリアル/パラレル増設カード
Windows7 64bit : 動作した
今使っているデスクトップにはパラレル/シリアルポートが付いていなかったので敢えて付けるために増設したPCI拡張カード。
何でこれが欲しかったのかの理由が以降続く。
■ ISE 11.1 Webpack
Windows7 64bit : 利用不可
Windows7 32bit : 動作した
Windows7 64bit XP mode : 一応動作した
Xilinx のPLDデザイン環境。
Webpack は 64bit Windows での利用は不可で、使いたかったら有料版を使ってねーということになっている。以前から。
今回 64bit Windows 上だと Webpack のインストーラが起動しないのを確認した。
32bit の方だと現状のVistaで動かすのと同じ感じ。ただ、ISEでもやはりインストーラからのドライバーインストールが失敗して入らない現象が起こるので、それに気がつかないとImpactでダウンロードできなくて首をひねることになる。
このへん、インストール後 ISE のディレクトリ内にある install_driver.exe という奴を手作業で実行してやれば良い。
Windows7 32bit においてはパラレルケーブル経由のコンフィグが可能。
XP mode ではパラレル仮想デバイスがないので、USBダウンロードケーブルの利用のみが可となる。それよりも ISE の様な鈍重なアプリをVirtualPCで動作させるのはかなりきつい。気長に使って吉。
あと、環境のせいかは不明だが XP mode だと若干不安定だったような気がする。
■ SPARTAN-3E スタータキット
Windows7 64bit : ISE Webpack利用不可
Windows7 32bit : 動作した
Windows7 64bit XP mode : 動作した
Xilinx USB ダウンロードケーブル相当なので、こいつでUSBドライバの確認をした。まあ、結果は順当。
■ Quartus II Web Edition 8.1
Windows7 64bit : 動作した、パラレル利用不可?
Windows7 32bit : 動作した、パラレル利用不可?
ALTERA のPLDデザイン環境。
ALTERAの方はUSBダウンロードケーブルを持っていないのと、あまり使わないのとでまともに調査できていない。
ISEみたく64bit版への縛りはないし、USB Blasterやその互換品であれば64bitドライバが用意されていることを確認したので使えそうな気がする。
コンフィグ時、どうやってもハード追加にByteBlaster互換が現れなかったのでできないのかもしらんと諦めた次第。
■ 寸評
64bitだとISEが使いづらい。どうしましょ。
XP以降パラレルポートはデバイスドライバ経由でないと触れなくなったので、扱いやすいポートとは言えなくなってきた。このへんが潮時で、パラレルポートを利用するデバイスは見切りをつけてUSB経由のものに切り替えていった方が良いのかもしれない。
posted by
rerofumi
2009/5/10 日曜日 9:31:57
Windows7のRCが公開になり、ダウンロードしてみた。
世の中は新しいバージョンのWindowsで盛り上がっているのに、我が家の主力開発マシンはまだまだXPのままである。Vistaだの64bit windows だのにしてみたい欲求はあるのだけれども、どうにもXPから離れられない。
理由は明確で32bitのXPで無いと動作しない「デバイスドライバー」を用いている周辺機器がいくつもあるからですな。
しかしまあ、Vistaが発売になってから結構な時がたっているので、そろっとVista対応ドライバもこなれてきた頃合い。Vista対応は良くなってきて、こんどは64bit対応が進んでいくはず。さて、そんな状況はともかく、今OSを変えたらどうなるのだろうか。いろいろな開発機材は使えるのだろうか。
ふと気がついてみると、そのデバイスドライバーがどうにもならんのであきらめているのって電子工作系の開発機材ばっかりだったりもする。ちょいと前まではDTM関連も鬼門だったのだけれども、最近はVistaや64bit対応が完全に進み割と問題無い感じになっている。なので、やっぱり電子工作系だけなのです。
逆に、そのへんの対応状況さえわかれば良いんじゃないかと。
せっかくの Windows7 RC なんだからそういった調査に使ってみる事にした。どっちかというと64bitドライバ対応調査といった趣。
■ PicoScope 2202
Windows7 64bit : 動作した
USB PCストレージオシロスコープ、安い割に結構使える奴。最新版のアプリをインストールするだけでさっくり対応ずみ。
■ minicube2
Windows7 64bit : だめ
Windows7 32bit : だめ
Windows7 64bit XP mode : 動作した
V850や78Kのプログラマ&デバッガ。なんとドライバがVistaにすら対応していないアレっぷり。
XP mode はVirtualPCそのものなのだけれども、USBをトンネルスタブで渡して仮想マシンで扱える様になった(VMwareでは昔からできていた)。逆に仮想環境まるまるなので純粋なXPが動いている状況なため、ドライバもそのまま使える。

こんな感じで入れ子で動く形になる。USBデバイスの有効化指示をしないとならないので、売りのシームレスウィンドウ化は使えない。
■ PSoC miniprog
Windows7 64bit : だめ
Windows7 32bit : だめ
Windows7 64bit XP mode : 動作した
PSoCのプログラマ。Vista64対応なので本当は動作するはずなんだけれども、インストーラがWindows7未対応で最後に2段起動でドライバインストーラが動くはずなところ起動せずに終わってしまう。なので、ドライバ不在のままPSoC Programmerのみインストールされる形に。
インストーラの改善待ち。
XP mode では普通に動くので、それまでは XP mode の中で使う事で利用可能。

■ CP2102 USBシリアルコンバータ
Windows7 64bit : 動作した
最新のドライバを使用。
■ FT232R USBシリアルコンバータ
Windows7 64bit : 動作した
最新のドライバを使用。
■ Arduino
Windows7 64bit : 動作した
FT232Rがインストールできたので、デバイス的には問題なし。
Arduino.exe が立ち上がらない時は java/ ディレクトリを削除するといった TIPS はそのままだけれども、Arduino.exe が 32bit アプリとして立ち上がるので、32bit版のjdkを入れておかないと動作しないといったあたりがポイント。
■ MPLAB ICD2
Windows7 64bit : 動作した
PICマイコンのプログラマ&ソフトウェアデバッガ。
ICD2の通常ドライバは32bitなので、MPLABをインストールした直後にICD2を接続してもドライバはインストールされない。…/MPLAB IDE/VistaXP64 というディレクトリにあるドライバを手作業で指示してインストールするとかろうじて動作する様になる。
かなり古めのICD2で型番がP/N 10-00319の奴だと、64bitではどうやっても動作しないとの素敵情報有り。うちのはかろうじてP/N 10-00397の動作する型番だったので、利用できた次第。
■ TOP2005+
Windows7 64bit : だめ
Windows7 32bit : だめ
Windows7 64bit XP mode : だめ
Windows7 64bit + VMware workstation + XP 32bit : 動作した
USBユニバーサルプログラマ(ROMライタ)。
以前も書いた様にソフトウェアがだめだめ過ぎる。ドライバが古すぎるためVistaでも動作はしない。てなわけでXP mode ならやってくれると期待したものの、ドライバのインストールとデバイスの認識まではいけたが、アプリがデバイスを認識しなくてアウト。
VMwareで動かすと使えたけれども、そこまでいくと力業過ぎる。
いい加減捨てて、別なプログラマを買うべきかも。
■ 寸評
意外にいける。これなら64bit環境に移行できるかもしれないと思った。
XP mode がこれまた意外に使える。VirtualPCそのままと聞いて最初はしょんぼりと思ったけれども、逆に仮想環境まるごとなのでXPのデバイスドライバがそのまま使える。これが大きい。USBデバイスであればXPレガシーであってもある程度持っていくことができる。
こういった組み込み系開発環境は全部Virtual XPに押し込めてしまうというのもアリかも。CQ出版の雑誌に基板がつくたびに新しい開発環境をインストールとかいう習慣があるなら、わざとsandboxにしておいて日常環境と分離するというのはどうだろう。
この企画はもうちょっとだけ続くかも。
posted by
rerofumi
2009/5/7 木曜日 2:46:04

マイコン電子工作で半ば定番とも言えるキャラクター型LCDモジュール。
個人的こいつらが大好きである。そこそこ、手間がかかるので制御している感が味わえるし、如何にもマイコンっぽい気分がする。7セグLEDを光らせるよりも手軽にあつかえるしね。
そんな理由よりも、ポケコン時代に刷り込まれた何かがあるのかもしれない。
実際にどんな場面で使うのかというと、大抵開発中の動作確認用だったりする。
レジスタや変数の内容をLCDモジュールに表示しながら、動作が正しいかを確認するといった場面。まあ、最終的にはLCDが要らないプロダクトだったり、GPIOが足りないので取り外したりするのだけれども、序盤のデバッグには無くてはならない感じ。
そんなLCDモジュールで所有しているものでも、OPTREXの奴は黒字に抜き文字がかっこよくてお気に入りだ。

Read the rest of this entry »
posted by
rerofumi
2009/4/29 水曜日 20:30:45

aitendoを覗いていたら、有機ELディスプレイモジュールの取り扱いをしていたので買ってみる。
実は有機ELモジュールは以前モジュール単体で買って扱いきれなかったので、ちょっぴり苦手意識があったりする。

昔、興味本位でひょっこりと買った有機ELモジュール。もう型番も忘れてしまった。
有機ELモジュールのコントローラ自体は液晶キャラクタモジュールと大差ないので、コントロールはマイコンで行える範囲である。なのに何となく面倒で手が出せなかった理由は、
- フレキケーブルなのでピッチの合うコネクタが必要
- ロジック用電圧とは別に12V程度のELドライブ電圧を用意する必要がある
とかいったあたり。特にどう配線するかは悩むところ。(強者だと直接UEWをハンダ付けしていきそうだけれども)
で、今回 aitendo で見つけたものはキャリーボードも併売されていた。これを使えば楽々配線で動作実験ができるというもの。
有機ELに再チャレンジ、でござる。
Read the rest of this entry »
posted by
rerofumi
2009/4/18 土曜日 20:31:34

中古のアーケードゲーム基板でギャラクシアンを入手した。
残念ながらオリジナルではなくてコピー基板。オリジナルだと今や5万円くらいの値段がついているところなのだけれども、コピー品なので1.5万円というそこそこのお値段。それでも高めではあるのだけれども、そこはそれ、もう30年近く昔のものなので十分にビンテージな一品でありある意味完動であるだけでもすげえといったところもあるので。
日本で流通していた一枚基板モノだと、プログラムROMは3つ載っていたらしい。32kbit が2つに、16kbit が1つ。バイトで表現すると10kBほど。

これの 32k のところを 7F, 7J、16k のところを 7L と表記しておく。


ところがこのコピー基板ではプログラムROM部分がドーター基板になっていて 16kbit のROMを5個使う形になっていた。
これら複数のプログラムROMを手元の 256kbit(128kbitでも良いけど) UV-EPROM に焼き込んで、一本にまとめてみようというのが今回のチャレンジ。
Read the rest of this entry »
posted by
rerofumi
2009/4/7 火曜日 0:05:11
準備を進めていた「奏」キット頒布の準備が整いましたので、申し込みフォームでの受付を開始しました。
[頒布受付特設ページ]
よろしくお願いします。