posted by
rerofumi
2007/7/14 土曜日 17:41:54
テレビ出力の方が一息ついたので今度は音声の出力。
V850ES/JG2 には DAコンバータが 2ch ついていて、こいつらのセトリングタイムが 100kHz くらいは余裕であるので音声の出力に使える。
でも、電圧的には Vdd 範囲でも電流がほとんど得られないのでスピーカーを駆動させるためにはどうしてもオペアンプを通す必要があるわけだ。
コードの茂みの奥で見えにくいけれども DIP8ピンのICが刺さっている。これはオペアンプではなくて PSoC(CY8C27134)。
PSoC のアナログ部分を使ってゲイン値のプログラム可能な簡易アンプとして使おうという作戦。ついでにローパスフィルタも付けちゃえ。
他に部品が要らないのでラクチンラクチン。実験には最適。
流石にパスコンぐらいは付けないと、スピーカーから盛大なノイズが聞こえるけれどもね。
基板にまとめた。
ついでにタクトスイッチを二つつけて、ソフトウェアでゲイン値を変更できるようにする。簡易ボリュームやね。
V850側の音声ドライバは、DMA を使って DAC にデータを流し込む方式。
カウンタ TP2 を使って 8kHz のトリガを使い、DMA はそのトリガが来たら 1byte を DAC のレジスタへ転送をする。
一般的な音声ドライバの構成。
わかりにくいので図にするとこんな感じ。複数CH の重ね合わせができるように作ったのだけれども、どうしても 1声しかでなくてしばらく悩んでいた次第。どうやら、音声を合成してバッファに用意する部分の処理が重くて、メインに戻って来れていないのが原因だったらしい。コンパイラの最適化をかけることでなんとか回避。
そのうち高速化を考えるにしても、今のところは気をつけて使う様にすれば良いか。
サンプルでは P4.0〜P4.2 に繋いだスイッチを押すと、エアキャップ(プチプチ)をつぶす音が出る様に作ってある。でも、タクトスイッチのクリック音の方が大きくて全然楽しく無い罠。
音声データは 8kHz MONO の wav ファイルの内、波形データ部分を取り出したものを ROM に焼き込んで、それをならしている。
だんだんゴテゴテとしていくけれども、これで必要な要素は揃った。
posted by
rerofumi
2007/7/12 木曜日 23:58:40
今日は電子工作関係でいくつか買い物をした。
アルインコの安定化電源。
これまでは秋月の 5V スイッチングアダプタで工作を行ってきたけれども、なんとなくまともな電源が欲しくなったので無線機器用の安いところを購入。DM-310MV を選んだのは出力電圧の変動域が 1〜15V と 5V 以下も OK だったので。そんなに電流は要らないのでシリーズ型(トランス)で十分。
スペックではわかりにくい奥行きを CDケースとの比較で確認しよう。
ちなみにこれまで使っていた 5V スイッチングアダプタ。これでも十分といえば十分ではある。
はんだコテ台のクリーナースポンジ。消耗品。
そろっとぼろぼろになってきたので交換しようかと。
鈴商で売っている 384x192pixel の液晶パネル。VRAMが載っていないのでマイコンからは扱いにくく、PLD とかで CRTC を作らないとならないのだけれども、今ならそのへんもできなくはない事なので。
simさんの周辺で盛り上がっているのがうらやましくなって買ってきた次第。
今のところ、何を作ろうといった案は無いですが。
秋葉原の鈴商というとアナログパーツのお店といった印象があり、マイコン工作からは縁遠いところがあるのであまり寄らなかった次第。でも、それはそれなりに面白いデバイスもあるもんだなあと今回思った。
上はビデオメモリ用のデュアルポートSRAM。小さい方が 256KB(64kx4bit)、大きい方が 1MB(256kx4bit)。これがあると今作っているCRTCでRAMのバス調停を行わなくて済むからフルアクセスできるVRAMが作れる。
後はデータシート次第だな、とか思ったけれども案の定入手困難でとほほ。
90年代前半のデバイスだからデータシートも紙の時代だしなあ。
もっとも、256kbit 程度だったら Spaltan-3E のブロックRAMでヂュアルポートにできるから、FPGA を同等のデバイスとしていくらでも使えるわけですが。
—–
posted by
rerofumi
2007/7/10 火曜日 1:00:11
コンフィギュレーションROMを入手するのがめんどくさいので弄ることはないでしょ、とか思っていたDWMのSpartan3E基板。なんとなく Digikey を覗いてみたら、対象のコンフィギュレーションROM(XCF02S)が 550円程度だったので買ってみる事に。
最も、日本からの Digikey 利用は手数料 2〜3000円がかかるので割安感のためには 4個以上買わないとならないのですが。
てなわけで到着。
梱包はこんな感じ。
ブツ。
ハンダ付けの際はルーペが活躍。
まあ、これくらいなら手はんだでもなんとか。
面倒な場合はブリッジ上等な感じのはんだ多めで取り敢えず盛っておいて、はんだ吸い取り線でブリッジを除去しつつ整えていく感じで作業するのがよろしいかと。
無事バウンダリチェーンに現れた。
最初 J1 をカットするのを忘れていて悩んだのは秘密。試しにLEDピカピカテストをコンフィギュレーションROMに書き込んでみた。
これでダウンロード無しに、電源投入そくピカピカなのです。将来的にはこれでなんか作ってみるかねえ。
posted by
rerofumi
2007/7/6 金曜日 1:54:29
細かい調整も終わり、ひとまず CPLD CRTC も予定通りに仕上がった感じ。
高機能じゃないけれどもね。
cpld_ctrc_070706.zip
表示しながらの画面描画実験。
フラッシュビデオ その1
するするとシャッターの様に描かれていくのは、CRTCとCPUのSRAMバスアービトレーションを行っていないから。
CRTCが画面を描いている時というのは一生懸命SRAMからデータを読んでいる時である。そんなときにCPUから読み書きしようとするとバスが衝突してとんでもないアドレスを表示してしまうことになるし、CPUも思ったところに思ったデータが書けないことになる。
そこで、CRTCがSRAMからデータを読み出している期間はCPUからのアクセスを遮断している。この時、CPUがSRAMにアクセスできるのはCRTCが画面を描いていない時、つまりVBLANK期間だけとなる。
その隙を狙って描画するのだが、このテストコードではその VBLANK期間にだいたい5〜6ラインくらい描いているようだ。
CRTCのENABLEを下げて無効にすると画面は真っ暗になるが、フルタイムでSRAMにアクセスできるので 1枚画をその隙に転送するとか、画面をクリアするとかに使う。
posted by
rerofumi
2007/6/13 水曜日 0:01:39
ちょいと間が空いてしまったので、リハビリ代わりにDWM7月号付録の Spartan3E 基板をいじってみようかと。
基板をぼんやりと眺めてみたが、電源ICがついていることはありがたいけど他は何もついてないのねえ。まあ、そんなもんか。
実際使おうとした場合、
・JTAG接続用のピンヘッダ
・電源周り(3.3Vか、3.3Vレギュレータ)
・3.3V のクロック発信器
を用意する必要がある。
他、コンフィギュレーションROMがあるとなおよし。
んが、コンフィギュレーションROMの値段と入手性を考えると、ちと面倒というか気合い入れて使うのは難しいかも。
ちと高くてもヒューマンデータのブレッドボードを買った方が安心な気もする。
3.3Vの発信器はマルツにも売っているので問題はないけれども、手元には 5V のしかないなあ。手元に余っているのを使いたいので、トラ技06年4月付録のCPLD基板みたく74THC244をレベル変換バッファに使って5Vの信号を3.3Vにして与えようか。
ついでに3.3Vのレギュレータも外に付けて FPGA基板には 3.3Vを与える事で色々とシンプルにしてみた。
手元にある 244 は DIPパッケージだと HC しかなくて速度的にあれだったので、フラットパッケージの 74VHC244 を無理矢理使用。
適当に LEDピカピカなロジックを作ってダウンロードしようと思ったところで問題発生。
上手く通信ができていないのだ。
ひたすらうんうんと悩みまくったけれども、結局なひたふさんとこの過去記事にあった現象がそのままずばりだったもより。
手元に 74AC125 が無いのでしぶしぶ発注。
ヒューマンデータのブレッドボードだと問題なかったよなあ、と思って回路図を見てみたら JTAG信号安定のためにシュミットトリガバッファが挟んであった。なるほど。
試しに、もう1個 244 を使って JTAG のバッファにしてみるのです。
そしたら今度は上手くいって、無事ピカピカできたのでした。
この基板でちと気に入らないのが M0,M1,M2 が引き出されておらずにチップ下部で問答無用にGNDに落とされているあたり。
ここがいじれればマイコンからコンフィギュレーションできたり色々用途が広がるのにな。
posted by
rerofumi
2007/5/14 月曜日 0:42:24
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に与える事にした。そのために一部配線を入れ替え。
記事としては面白みが無いところだけれども、私としては動いて一安心という一区切りなのでした。
posted by
rerofumi
2007/5/9 水曜日 23:12:18
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 動かなかったらどうしよう