コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 5月, 2007


hatena bookmark

CPLD 内部をほとんどスルーで構成して、V850 から SRAM が読み書きできるかどうかをテストする。
まあ、いくつか不具合があって修正しながらなんとか動作確認ができたのでめでたしめでたし。
不具合の内訳は、配線ミス 2箇所、CPLD の inout(データバス)部分で in の時はハイインピーダンスに設定するあたりが良くわかっていなかったというのが一つ。

ひとまず動作している様に見える CPLD の VHDL ソースとピン設定。
sram_test_cpld.zip

V850側のSRAMチェックソースコード。
v850_sram_check.zip
レジスタ設定しか参考にならないと思うけれども。いちお、メモ代わりに。

実際に外部バスへメモリを接続すると、V850側からは 0x100000 以降が外部RAM領域になる。それ未満のアドレスでは、読み出し時は ROM から、書き込み時は外部RAMへと変則的なアクセスとなる。
PM+ で新しいプロジェクト作成時「外部RAMを使うか」という項目があるけれども、ここで「はい」を選ぶとディレクティブの .data 領域(変数や可変データが置かれる領域)が 0x100000 に設定されてしまう。ああ、そういう意味だったのかと思った次第。
今回 SRAM 領域をコンパイラに使われると不具合があるので、内蔵 RAM を使うような設定となることを確認しておく。

配線のリストをちょっと更新。
必要かどうか悩んだV850のクロックを一応CPLDに与える事にした。そのために一部配線を入れ替え。

記事としては面白みが無いところだけれども、私としては動いて一安心という一区切りなのでした。


hatena bookmark

Synchronous SRAM を V850 付録基板のバスに繋いで、外部メモリとしてみるの巻。
SRAM は秋月で買うくらいしか、容易な入手手段が無いのがちと困りものではある。今回は 1Mbit(128KByte)の奴を使ったけれども、目的としては 256Kbit(32KByte)の奴でも事足りるし、256の方が通常在庫品なので安心して買えるというのはあるけれども。


SRAM をテストボードの裏側に貼り付け、CPLD 用の PLCC84 ソケットを挟む。
V850 と SRAM の間は全線 CPLD を挟んでいる。これは配線が間違っても、CPLD の書き換えでなんとかなるや……ではなく、当初からこういうのを作る目的で V850 をいじっていたので。
写真は、電源ラインとJTAGを結線したところ。ここまでは慎重に行う。
左側のレギュレータは 3.3V。SRAM と CPLD の電源は 5V だけれども、I/O 電圧を 3.3V にするために。
JTAG で CPLD に書き込みができることを確認して次へ。


SRAM はピン幅 1.27mm なので、上図の様にして 2.54mm ピッチのユニバーサル基板にハンダ付けする。
常套手段だけれども、自分でやるのは初めて。


そこにポリウレタン線を繋いでいく。
配線のリストを作成、一本線を引く毎に印を付けていって間違いや忘れが無いようにする。


一通り配線が終わった後のもっちゃりとした状態。
面倒くさがらずにちゃんと長さを合わせながら作るべき、と反省。


CPLD の中身を V850 と SRAM ほぼ直結となる様に作成。
V850 側で RAM 読み書きテストをするプログラムを動作させてチェックしていくのだけれども、今日は配線で疲れたのでここまで。

CPLD の脇にある 8ピンのパッケージは 14.318MHz のオシレータ。
この時点で何をやろうとしているのかモロバレではありますが。

・・・SRAM 動かなかったらどうしよう


hatena bookmark


プレイができるところまでできた。
–> Flash video
上のビデオは撮影用に右側のパドルを玉と同じ高さになるオートモードにしてある。それゆえ挙動がおかしいのは気にしない方向で。
ボールはパドルで打ち返す度に速度を増していく、8往復でスタート時の倍くらいの速度。パドルの中央で返すとボールは鋭角で(相手に向かって)飛んでいき、パドルの端で返すと鈍角(上下の壁に向かって)飛んでいく感じになるので、対人間戦だとわりとボールが散らばるはず。

ソースコード(CY8C29466用プロジェクト)
ntsc_pong.zip


テスト回路はこんな感じで作成。


回路図。


今回どうしてもボリュームでダイアル式のパドルコントロールにしたかったので、入力に ADコンバータを使ったのだけれども、PSoC の ADC モジュールはカウンターと割り込みを組み合わせて計測するためその割り込みタイミングでソフトウェア CRTC が乱される罠。
上のほうで歪んでいるのはそのため。
まあ、そのへんあきらめて取り敢えず完成させてみようかといった方針なので放置の方向で。
右のパドルが左側によっていて、都合ゲームフィールドが狭くなっているのも色々と苦しいところがありまして。

取り敢えずできたので良しとしようか。
PSoC は色々とラクチンで便利なんだけれども、問題点があることも今回見えたかなー。
タイミングクリティカルな処理にはどうも弱いというか。そういったところは、デジタルモジュールで簡潔させて、プロセッサコアを持ち出さない様にするしかない感じかな。