posted by
rerofumi
2006/12/15 金曜日 0:53:08
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 よりちょっと音が大きめにミックスされているみたいだなあとか、なんか意図があってこの数値になっているんじゃないかとか穿ってみたり。
音量についてはなんかちょこっといじる気にならなかったのでしばらくそのままにしておこうか。
—–
posted by
rerofumi
2006/12/13 水曜日 1:14:46
一般販売も始まり、盛り上がっているんだかそうでないんだか良くわからない雰囲気の 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イメージとっておくの忘れた……。
—–
posted by
rerofumi
2006/11/30 木曜日 22:51:02
「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イメージの取り扱いってどうなっているんだろ。
—–
posted by
rerofumi
2006/11/24 金曜日 4:27:50

なにかと話題を振りまいている「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 にするわけにもいかないし。
posted by
rerofumi
2006/11/22 水曜日 0:51:58
聞いた話で恐縮だが、先日発売された PS3 のパッドを分解すると、加速度センサーとして北陸電気工業の HAAM シリーズと、murata のジャイロスターが入っているらしい。
任天堂はまいどのアナログデバイセスとフリースケールだったっけか。
あれだけ入手しにくかった加速度センサーとジャイロセンサーが、計6軸 4800円(PS3パッドの実売価格)で買える様になったわけだ。本体と違って入手しやすいようだし。
流石に面実装部品で脚無し部品がリフローでくっついているわけだから、電子工作用にもぎるのは困難そうではあるけれども。でも手に入らないよりはるかにましかと。
振り回すと音が鳴るジャイロテルミンとか作り放題ですよ(なぜにテルミン)
—–
posted by
rerofumi
2006/10/24 火曜日 22:46:12
ちょいメモ。
EAGLE で PSoC を扱おうと思ったが標準のライブラリには入っていなかった。
自分で作るのも面倒(というか造り方をマスターしていない)なのでぐるぐる調べてみた。
EAGLE の開発元であるCadSoftのページに行くと Download の下に Libraries という項目がある。何はともあれまずはここから探すのが筋。
ここにある cypressmicro.zip というやつが PSoC のライブラリ。
でも、古めで CY8C25xxx/CY8C26xxx しか含まれていない。最近は CY8C27xxx/CY8C29xxx が主力なんでダメじゃん。とか思わない様に。
PSoC のピン配列なんて大体同じなんですよ。
だから CY8C26xxx の中から欲しいパッケージの奴をそのまま使えば大体オッケー。
名前くらいは変える必要があるかもしれないけれど。
—–
posted by
rerofumi
2006/10/9 月曜日 23:01:53
今回は番外編。
中古ゲーム基板という楽しみがある。
アーケードゲームの基板を中古で入手して自宅でアーケードゲームタイトルをそのまま楽しもうという娯楽である。一見高価でゴージャスな趣味のように聞こえるが、そんなに大人気でなくメジャーでもないゲームタイトルの基板なら五千円程度で入手できるので実は大したことも無い。私なんかはちとマイナー嗜好なところがあるので手元にある基板は皆 1万円以下の物だ。
自分が業務でプログラムを組んだゲームも手元に何枚かあったりもするが、それも五千円未満で入手できるあたりはご愛敬。

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

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

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

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

うむ、なんとかみれるようになった。低い出力の奴はちょっと暗くなるが、かえって丁度良い気もするので円満解決。
今回いじっていて思ったが、ひょっとして Picoscope の様な USB 接続型 PC オシロスコープってノートパソコンと組み合わせるとどこでも使える素晴らしいソリューションなんではなかろうか。
—–
posted by
rerofumi
2006/10/8 日曜日 3:23:32

オープンソースマガジンの 9月号と 10月号 2回にわけて、当Blog「コメを噛め」での制作物を元とした原稿を書かせてもらった。
9月号の方には記事内で使っている PIC テストボードのプリント基板を読者プレゼントとしているが、これは記事だけでは実際に作ってみようというには敷居が高すぎるのでなんとか低くできないかと考えての事。
記事自体とはあまり関係が無く、私が勝手に暴走して行っていたことなのだけれども、編集の方には読者プレゼントとして快諾して頂けた。
正直プレゼント応募者が居なかったらどうしようと小心者の私は思っていたりしたのだが、応募者はそれなりにいて当選した 3名も決まった様だ。
まあ、せっかく作ったものなので成果として公開する次第。
添付の制作マニュアルは私にしては珍しく手順を追って説明してあると思う。(原稿本文よりページ数多かったりするし)
・プリント基板パターン(PDF)
pic16f876_testboard.pdf
・プリント基板パターン(PCBEデータ)
pic16f876_testboard_master_rev2.pcb
・PIC実験ボード組み立てマニュアル(PDF 16.7MB)

PIC実験ボード自体は以前作った物と同じで、それをプリント基板に起こした物。
配線の都合で I/O コネクタの順番が変わっていたりするけれども、言わなきゃわかるまい。
—–
posted by
rerofumi
2006/9/19 火曜日 2:52:27
CPLD ボードができたので、当初の目的であったカップラーメンタイマーのロジック作成を行う。
カップラーメンタイマーと言っても、3分とかが計測できるというだけで要はスタート値固定のダウンカウンターである。
7セグメントは同時に1つしか点灯できないので、高速で表示位置を切り替えていくダイナミックドライブ方式を用いる。後は10進数カウンターを桁数だけ繋げるのと、ボタンが押されたときに規定値にセットされるような仕組みがあればよいはず。
ボタンは 3つ用意してあるのでそれぞれ「180秒」「240秒」「300秒」のスタートとする。これで大抵のカップラーメンに対応できるだろう。

ま、なんとか完成。
単純なカウンターだけなら 6桁も余裕なんだけれども、カップラーメンタイマーとして作り込んでいったら CPLD のロジックが足りなくなったので 5桁に落としている。
まあ、それでも 10ms 単位で表示できているわけだから十分かと。
オシレーターの出力が可変にできない問題の関係で分周カウンターに結構レジスタが食われているので、このへん修正すればもちょっとマクロブロックが空くかもしれない。後わりと無駄な部分も多いからなあ。
VHDL ソースコード
cpld_ramen_timer.zip
基板制作もロジック作成も適度に難しくて良いトレーニングになりました。
—–
posted by
rerofumi
2:00:23
制作編。
プリント基板もできた事だし、さっそく作成。
一番の問題は、片面基板で作った事によるジャンパー線。ジャンパー線を作るのに普通のスルホール&表面配線でつくってあるというのは前回記述したとおり。それ自体は問題ないのだけれども、なんせスルホール扱いなのでパッドが 0.8mm のホールが 0.5mm とかなり小さい。ドリルでの穴あけは慣れたこともありまあなんとかなるのだけれども、小さなパッドとぎゅうぎゅうに押し込まれたパターンへのハンダ付けが困難を極める。ちと気を抜くと隣のパターンとブリッジするのでハンダ吸い取り線大活躍で少しずつ事を進める。

ジャンパー完了した基板表面はこんな感じ。
ここまで終わったらテスターとルーペでブリッジショートしていないか地味にチェック。案の定問題点がみつかり無事修復、一箇所だけだけど。
後は普通に部品のハンダ付け。

ジャンパー線のハンダ付けに比べれば CPLD の QFP ハンダ付けなぞ楽勝ですよ。

ドリル穴を減らすためにできるだけ面実装部品を使用したので、表はほとんど何もない感じ。
JTAGダウンローダでチップが見えていることを確認できて、これにて完成。
—–