コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 2006


hatena bookmark

基板ができあがったところで、部品を載せて眺めていたら……


がびーん!244のサイズが違うぅぅ。

対策方法としては
(1)基板を修正して作り直す
(2)このサイズの244を買ってくる
(3)ジャンパーでごまかして無理矢理配線する
といったところが考えられるかなあ。
調べてみたら Eagle が持っていたパッケージパターンは SOPW といって、このサイズの 74244 は今入手できそうにもない。
念のためとチップ抵抗も載せて調べてみたら、


一見ぎりぎりだが、はみ出して、る?
改めてみてみたら手元のチップ抵抗はどうやら 2012 サイズだったらしい。てっきり 1608 だと思っていた。そういや、どうせ手作業でハンダ付けするから大きい方が良いやとかで選んだような……。

これは (1) の基板作り直ししかないですな。

74244 の方はそもそもで Eagle のライブラリに SOP が無かった。16ピンまではあるんだけれども、20ピンだと SOPW になっている。
しかたがないので 16ピン SOP パッケージをコピーして、そこから 20ピンのパッケージを作成。自前ライブラリとして使用する事に。


今度こそ問題がないように、予め紙の上で確認。


SRAM も載せて念入りに。

今度は良さそうなので再度基板作成。


2箇所ほどパッドが近接するランドにくっついていた(それくらいみっちりとした配線)のでカッターで切り離して完成。

fumi_la_eagle_061218.zip
この時点での EAGLE Project file (回路図&ボード)
—–


hatena bookmark

回路図が書き上がったところでため息ひとつ。
こんな数のワイヤーを皮膜線でぷちぷちハンダ付けなんかやりたくないのです。
というわけで、プリント基板の制作にとりかかる。

が、ここで軽く挫けることに。
これくらいのワイヤーになると両面基板でないと実装できなくなってくるのだ。
うむむ、ついに OLIMEX デビューの時か。と真剣に思ったけれども、既に年末で OLIMEX の年末年始休みにかかってしまうので時間がかかりすぎる。
なんとかがんばって自作基板でつくるのですよ。

最初は表面実装だった PSoC と CPLD を DIP と PLCC ソケットに差し替え。パッドの間に線が通せるようになるため。
74HS244 は 2つあるバッファの内、片方だけを使って、数を2個に増やす。これはバッファ 4ch 毎に向きが違うので、1個(8chある)で済まそうとすると配線が複雑になるのを回避するため。

色々手をかけた甲斐あって、片面基板でアートワークが引けた。


まあ、ジャンパー(赤い線)だらけですが。
一部ジャンパーが適当なのは、距離が長いのでスズメッキ線でなく皮膜線で繋がないとならないところ。
良くもまあ収まったものだ。パッドの間を 2本通すとか禁断の技を多用しているけど。


感光基板への焼き付けは特に問題もなく。


基板は完成。

もっとも、これで完成であるとか、一発動作する保証はどこにも無いのですよ。
まずはここまで。
—–


hatena bookmark

マイコン電子工作を始めてから、作ってみたいと思っていたものがある。
いや、作りたい物は結構沢山スタックしていて部品箱の中で出番を待っているものが沢山あるのだが。これはそんななかの一つであり、本当に初期の頃から「いつか作ってみたい」という憧れになっている物。それが「簡易ロジックアナライザー」の作成。
PICマイコンでの工作記事を探している時に見つけた「PICでロジアナ」の記事。これをみて、PIC 工作を物にしてみたいと思った。
マルキン’ず工房さんでもロジアナ制作記事がある。
マイコンではなくFPGA+SRAMだが「カメレオンUSBロジックアナライザー」も安価な簡易ロジアナとして有名なところ。

簡易ロジアナとはなにかというと、データ信号を定期的に RAM に記録し後で読み出せる装置のことだ。数KHz 程度ならマイコンだけでドライブできるけれども、ある程度の速度で調査したいとなるとデジタルロジックの補助が必要になる。
では自分で作るとしたらどうなるだろうか。
マイコンはマイブーム継続中である PSoC で良いとして、SRAM のコントロールをどうするかである。SRAM 自体は買い置きしてある SRM2B256SLMX55 を使うのだが、ドライブする I/O が不足気味。そこで CPLD を使ってアドレッシングを、シリアルインクリメントな感じでコントロールする。

ここで回路図を起こすとこんなかんじに、


参考にしたわけじゃないんだけれども、書き上がった後みてみたらマルキン’ず工房さんとこのとほとんど同じ構造だったり。あちらほど丁寧に作られてはいないけれども。

PSoC も CPLD もソフトウェアでピンが設定できるので、本数があっていればあとはなんとでもなるだろうという気楽さがうれしい。

—–


hatena bookmark

1chipMSX の PROM 更新ができるようになったところで、なにかちょこっとしたことをやりたくなってくる。
そんな場面で思い出すのがみんな気になっているアレだよな。あの緑色のLED。
そう、
残像が無いとナイトフラッシャーと言えないじゃないかっ!!

実は 1chipMSX のイルミLEDは 0 じゃなくて Z(ハイインピーダンス)に設定するとぼんやり光るような回路になっている。で、そのままでも実は 1つ前の LED がちょっと点いていて残像表現になっているのだけれども、ちょっと気づきにくい。
もちょっと明確に残光表現になるように、簡単な PWM で中間表現を追加してみた。


使用前


使用後
あのチカチカうるさいだけだった LED がちょっとゴージャスに :-)

emsx_top.vhd の diff ファイル
esemsx3_led_knightfade.diff

ソースコードいじっていて気が付いたんだけれども、この LEDイルミネーションって元はディップスイッチの設定を LED 表示するものだったみたい。
LED の点灯と同時にディップスイッチを読み取っていたりして、むやみに削れなかったりするのです。

とまあ、冗談やっているだけだとおしかりをうけそうなので次はもちょっとまじめに。
各所で LED 点滅を削ったり別の表示をさせたりというプチハックが続いている様で。SDカードアクセスランプに割り振るとか、データバスを光らせるとか良い感じのハックは既にやられちゃっているのでちょいと考えてみる。
LED が一列並んでいるのをみて思いついたのが、内蔵音源のレベルメーターにするというハック。


写真じゃわからないけど。

音声レベルメーター化 emsx_top.vhd の diff ファイル
esemsx3_led_levelmeter.diff

このために音周りを眺めていてちょいと変わったことをやっている事に気が付いた。
音声回路で PSG は 8bit、SCC は 9bit、OPLL は 10bit でレンダリングされているんだけれども、それを 16bit の桶でミキシングして 12bit の振幅解像度をもった音圧として内部では持っている。それをラダー抵抗の 6bit DAC で出力しているかというとそうではないのだな。
12bit の情報を 22kHz のローパスフィルタに通すのは良いとして、その後 10.5MHz ベースの PWM 変調をして 1bit の情報(最大か最小か)を出力している。 6bit DAC には 000000b か 111111b しか来ていないから実質意味はない。その 1bit PWM 音声はその直後の電解コンデンサーで平滑化されてアナログ信号となっている。
だから、6bit DAC なので音がイマイチという論は御門違いな様で。
音質で言えば電解コンデンサの質に因るところが大きいかも。
ちなみにステレオ処理はされておらずに、白と赤両方同じものが出力されているもより。

音が小さいというのはまたちょっと違った問題でして。
レベルメーターを作るのに苦労したんだけれども、最終的にミキサーされた 12bit 音声情報の内最上位は符号相当(無音時中央値)だから 11bit として、その上位 3bit はほとんど 0 のままなのよね。下の 8bit 部分だけがちまちま鳴っているので音圧が小さい。試しに 1bit シフトしてみたら、ちゃんと音が大きくなった。
しかしまあ、SCC は PSG よりちょっと音が大きめにミックスされているみたいだなあとか、なんか意図があってこの数値になっているんじゃないかとか穿ってみたり。
音量についてはなんかちょこっといじる気にならなかったのでしばらくそのままにしておこうか。

—–


hatena bookmark

一般販売も始まり、盛り上がっているんだかそうでないんだか良くわからない雰囲気の 1chip MSX。や、人は選ぶけど面白いよ。技術力があれば少しづつできることが広がっていって、じわじわ味が出てくる感じ。
さて、VHDL ソースコードもコンパイルできたし、書き込んで見たいこの頃。
SD カード経由でのアップデートはできるものの、すでに起動しているロジック上で行うものなので、万が一失敗したら手も足も出ないことになってしまう。やっぱりそれはなんとなく怖い。単純なアップデートならともかく、自分でロジックをいじる気にはならないところ。
となるとやっぱり AS で EPCS4 の書き込みがやりたいのです。

私が使っているダウンロードケーブルは、ストロベリー・リナックスの「PLD−PGMキット」


パラレルポート接続だけれども、XILINX と ALTERA のニコイチでケーブル付き 2000円なので在庫がある限りオススメなのですよ。
だけれども、このダウンロードケーブルは一般的な ByteBlasterMV 互換で、AS 書き込みには対応していない次第。
そういえばヒューマンデータ「とりあえず ByteBlasterII 互換として動く回路」が公開されていたなあ、と思い出し久々に見てみる。
こんなんで良いんだっけ。74HC244 なんかたしなみとして部屋にごろごろ転がっているし 25Pin D-SUB コネクタもまだ 1つある。むしろ無いのは抵抗器だ、2.2k はプルアップで使うのであるけど 100 はなあと部品箱を漁ったら数本は出てきた。茶黒茶。うむ、新規に作るのは無理だけれども、改造で ByteBlasterII 互換もどきにすることは可能そうだ。
レッツトライ。

「PLD−PGMキット」付属の回路図ではD-SUBの7番と10番が短絡されていない様に書いてあるけれどもそれは誤記で、実際は短絡されている。


部品面なので見づらいけれども。
パターンカットはその短絡部分のみ。あと 244 の GY2 への信号をカットするのだけれども、これは R16 と R21 を外せばよい。


破壊活動は以上。


あとは抵抗を追加しつつショート。
やってみるとあっさり終了。

わくわくしながら QuartusII を起動……。


キターーーーー(゜∀゜)!!!
JTAG だけじゃなくて Active Serial が選択できるよー!!

でもチキンな私は手元にあった FPGA ブレッドボード(借り物だけれども)でもってテストするのでした。

全くもって問題なかったので遂に 1chip MSX の更新にチャレンジ。


そして完了。(BGM:勝利のテーマ)

今回利用した、簡易互換回路だと AS コネクタを接続したら回路が停止してしまいケーブルを外すまで動き出さないという問題があるけれども、大した事ではないでしょ。書き込み終わったらケーブルを外すだけのお話。
ちなみに、ヒューマンデータさんのダウンロードケーブルキットだとその問題が回避されているのでより使いやすいのです。(使わせてもらったことがある)

あ、出荷時のROMイメージとっておくの忘れた……。
—–


hatena bookmark

「1チップMSX」の先行予約者の元に、遅れていたマニュアルと CD-ROM が届いている。
CD-ROM には公約通り FPGA ロジックの VHDL ソースコードと、MSX-DOS2 が含まれていた。

さて、この「1チップMSX」でまことしやかに囁かれていた噂があった。
「実は FPGA のロジックぎりぎりまで使っていて拡張の余地はないらしいぞ」
本当だろうか?さっそくソースコードをシンセシス&コンパイルしてみる。

…… Pentium4 3.0GHz で 14分ほどかかった。

気になる数値は、

10,026 / 12,060 Logic Element (83%)
171 / 173 Pins (99%)
74,014 / 239,616 Memory bits (31%)

といったところ。
Z80 モジュールで 2,201LE だから、まあそれなりに空いていると思う。
(私はまだスクラッチで 100LE 以上の物を書いたことが無いから見当つきにくい)

ちなみに、一番大きいのが流石に VDP で 2,677LE 次に eseopll の 1,380LE。
opll を削ると空きが増えそうだあね。

ROMイメージの取り扱いってどうなっているんだろ。
—–


hatena bookmark


なにかと話題を振りまいている「1チップMSX」が先行予約者の手元にぱらぱらと届きつつあるようだ。
私の手元にも届いたので軽く「コメ噛め視点」でレビュー。


本当に「ワンチップ」にこだわっていて異様に少ない部品点数。Cyclone がどでんと 1個あってその左に見えるのは 256MB の SRAM (32MByte ということやね)。それ以外だとコンフィギュレーション用シリアルROMと、その三点が主要パーツ。
Cyclone は EP1C12Q240C8N、ロジックエレメントは 12,060LE と価格レンジでは割と大きめのゲート数。シリアルROM は 4Mbit の EPCS4。


FPGA の周辺はI/Oプルアップ用のレジスタアレイで囲まれているけれども、これは一瞬なんだろうとか思ってしまった。
このみっちり置かれている抵抗は、ラダー抵抗による D/A コンバータなのね。
6bit D/A が 5つある。音声 2ch と RGB といったところだろうか。(コンポジット出力はRGB出力と排他切り替え)


Cyclone のロジック学習トレーニングボードとしても期待が集まる当セットだが、傍らにあるこの 10ピンのピンヘッダは残念ながら JTAG ではなかった。コンフィギュレーションROM書き込みようのASコネクタだ。
では JTAG はどうなっているかというと、使われてはいないがパターンを引き出されてもいなかった。FPGA の足に直接ハンダ付けする勇気があれば自分の手で引き出せるかもしれないが。
U1 とあるのはなんのICかわからなかった。多分リセットICだと思うんだけれども、情報求む。
〜〜〜
FPGA にあまり詳しくない人も読んでいるかもしれないので軽く説明。
FPGA や CPLD は中身のロジックをPCで設計して、JTAG ダウンロードケーブルを用いることで、それを書き込みます。CPLD は書き込まれたロジックを内部のフラッシュで保持しているから良いのだけれども、FPGA は RAM に保持しているので電源を切ったら忘れてしまいます(そのかわり大規模ロジックが組める)。
FPGA は電源投入で起きた時、頭は空っぽです。そのたびにダウンロードケーブルで、コンフィギュレーションしてやる必要があるのです。
それだと組み込み機器としてつごうが悪いので、起動時にROMやマイコンがFPGAに対し自動的にロジックを書き込むという仕掛けがとられます。これがコンフィギュレーションROMです。
通常、開発時は FPGA に対し JTAG ダウンロードケーブルで FPGA 内 RAM にコンフィギュレーションして開発を進めます。ある程度動くようになったら、コンフィギュレーションROM に対してコンフィギュレーションデータを書き込み、ダウンロード無しに動作する様にしてやるのです。
Xilinx の FPGA とコンフィギュレーションシリアル ROM は同じ JTAG ディジーチェーンとなっているので、JTAG ダウンロードケーブルでどちらにも書き込めます。
ところが ALTERA の方は FPGA は JTAG ダウンロードでコンフィギュレーションするのですが、コンフィギュレーションシリアル ROM は AS (アクティブシリアル)という別の手法かつ、別の端子から書き込んでやる必要があるのです。しかも、AS 書き込みは ByteBlasterMV 互換では行えず、ByteBlasterII 以降が必要となります。
〜〜〜
この 1チップMSX は JTAG による開発モードやシリアルROMからの起動を止める切り替えスイッチもない。つまり、書き換えようと思ったらコンフィギュレーションシリアル ROM に完成したコンフィギュレーションを書き込んで、電源再起動をするという手順を踏む。
(追記: 別段シリアルROMからの起動モード設定になっていてもJTAG経由のコンフィギュレーションはできるそうです)
SD カードに入っているコンフィギュレーションファイルを FPGA 自身を使ってコンフィギュレーションシリアルROM に書き込む回路が用意されている
いちいちROMに書くのも面倒だが、その手法で開発ができるのではないか?おそらくはできるであろう。問題はコンフィギュレーションシリアルROMの書き込み保証回数があることか。一応データシートだと 10万回となっていたから大きな問題でもなさそうだ。


I/O を引き出すことのできる拡張ピンヘッダ。
全てのピンに I/O がひいてあるものの、ジョイスティック端子とディップスイッチと 8個のLEDと共用なので、純粋な空き I/O となると 6本しか残らない模様。
ジョイスティック端子は 5番に +5V が引き出されており、おおっと思ったが、そこと GND 以外は Cyclone のI/O Vcc (早い話が 3.3V)のプルアップで出てきているのでちょいと注意。まあ、ジョイスティック端子は、GND に直結するか否かなので問題は起こりにくいと思うけれども。フォトインタラプタを噛まさず直接 5V をかけるようなジョイスティックデバイスだとちょっと不安。


裏面は何もなくてシンプル。

SHIFT を押しながら起動で DISK-BASIC をパージして ROM-BASIC が起動するとか、1 を押しながら起動で DISK-BASIC1.0 が起動するとか、そんな実機での技がちゃんと再現されているんだな。
BIOS 等はシリアルROMから SRAM に転送して使っているんだろうなあ。
Cyclone 内部のブロックRAM は 28KByte ほどしかないし、LE を ROM にするわけにもいかないし。


hatena bookmark

聞いた話で恐縮だが、先日発売された PS3 のパッドを分解すると、加速度センサーとして北陸電気工業の HAAM シリーズと、murata のジャイロスターが入っているらしい。
任天堂はまいどのアナログデバイセスとフリースケールだったっけか。

あれだけ入手しにくかった加速度センサーとジャイロセンサーが、計6軸 4800円(PS3パッドの実売価格)で買える様になったわけだ。本体と違って入手しやすいようだし。

流石に面実装部品で脚無し部品がリフローでくっついているわけだから、電子工作用にもぎるのは困難そうではあるけれども。でも手に入らないよりはるかにましかと。
振り回すと音が鳴るジャイロテルミンとか作り放題ですよ(なぜにテルミン)
—–


hatena bookmark

ちょいメモ。

EAGLE で PSoC を扱おうと思ったが標準のライブラリには入っていなかった。
自分で作るのも面倒(というか造り方をマスターしていない)なのでぐるぐる調べてみた。

EAGLE の開発元であるCadSoftのページに行くと Download の下に Libraries という項目がある。何はともあれまずはここから探すのが筋。
ここにある cypressmicro.zip というやつが PSoC のライブラリ。
でも、古めで CY8C25xxx/CY8C26xxx しか含まれていない。最近は CY8C27xxx/CY8C29xxx が主力なんでダメじゃん。とか思わない様に。
PSoC のピン配列なんて大体同じなんですよ。
だから CY8C26xxx の中から欲しいパッケージの奴をそのまま使えば大体オッケー。
名前くらいは変える必要があるかもしれないけれど。

—–


hatena bookmark

今回は番外編。
中古ゲーム基板という楽しみがある。
アーケードゲームの基板を中古で入手して自宅でアーケードゲームタイトルをそのまま楽しもうという娯楽である。一見高価でゴージャスな趣味のように聞こえるが、そんなに大人気でなくメジャーでもないゲームタイトルの基板なら五千円程度で入手できるので実は大したことも無い。私なんかはちとマイナー嗜好なところがあるので手元にある基板は皆 1万円以下の物だ。
自分が業務でプログラムを組んだゲームも手元に何枚かあったりもするが、それも五千円未満で入手できるあたりはご愛敬。


コレとかソレとか。(型番は一応隠してみる)

そんな中古基板を遊ぶ為にはコントロールBOXという基板からの信号を捌いたり電源を供給したりする機器が必要になる。


わが家のコントロールBOXはこいつ。自作品である。
遙か昔、まだ学生だったときに作った物だ。おそらく、こいつを作ってからこの Blog 開始までが、はんだごてから離れていた期間になると思う。


中身はこんな感じ。
シールドされたBOXがスイッチング電源で、手前の緑色の基板は(今はチップしか売っていない)秋月電子の「RGB→コンポジットビデオ変換基板キット」。
制作といっても各アイテムを線で結ぶだけでロジックが存在しないので今ひとつ電子工作としては面白くないあたり。

さて、ここからが本題。
この BOX を使って手元の基板は大体遊べているのだけれども、2枚だけビデオ出力すると画面が明るすぎて色が飛んでしまう基板があった。


写真だとわかりにくいけど明るめのところが全部白でつぶれてしまうのね。
まあ、自作BOXのせいだとは思うのだけれども、これまでは原因を調べる事がなかなかできなかったのですよ。しかし、今なら Picoscope 等の計測手段があるので容易に調べることができるはず。
というわけで計測開始。
仕様的には 1.0Vp-p らしい。正常に表示されている基板は大体 1.1Vp-p。これでも高めだがまあ通常は問題なし。
問題となる基板はおおよそその倍(DCだと 3.2V くらいまであった)。そりゃ駄目だろう。筐体だとそのへん調整するのかな。

原因がわかったところで適当に対処。
手元の部品箱をあさって、75Ωの抵抗器三本を RGB それぞれにかませる。


うむ、なんとかみれるようになった。低い出力の奴はちょっと暗くなるが、かえって丁度良い気もするので円満解決。

今回いじっていて思ったが、ひょっとして Picoscope の様な USB 接続型 PC オシロスコープってノートパソコンと組み合わせるとどこでも使える素晴らしいソリューションなんではなかろうか。

—–