自分自身のための ものづくり / 自分自身のためのものづくりメモ

* Nintendo64(前期)のアナログRGB出力

#RGB #Nintendo64 #メモ
 VDC-NUS が、D/Aコンバータ。アナログRGB信号を生成。
 ENC-NUS が、ビデオエンコーダ。アナログRGB信号から、コンポジットビデオ信号とセパレート(Y/C)信号を生成。

 VDC-NUS が出力するアナログRGB信号は、0〜0.7V。

 ENC-NUS の受け側(1,2,3pin)では、2.5V〜3.2V。クランプして処理している模様。

ENC-NUS
1-3アナログRGB入力
4クランプ電位? 2.5V-
5C-SYNC?入力?
6H-SYNC?入力?
7GND-
8
10C出力
11GND-
12CVBS出力
13Y出力


 いわゆる後期版では、ENC-NUSが無くなり、デジタル信号から直接コンポジットビデオ信号とセパレート信号を生成している?

ソース:手持ちのを今更改めて調べてみた

* 電子部品Web通販比較 (2010初頭)

#電子工作 #部品調達
名称送料他手数料送料無料閾値決済方法補足
RSオンライン460円-8000円クレカ・銀行振込・代引(*)*:代引手数料無料
チップワンストップ450円-5000円クレカ・銀行振込・代引(*)・コンビニ決済*:代引手数料無料
Digi-Key2000円-7500円クレカ・銀行振込-
秋月電子通商500円300円(*)代引・銀行振込・クレカ(**)*:代引手数料 **:1万円以上購入
千石電商420円-10000円代引(現金)(*)・佐川e-コレクト・銀行振込・コンビニ払い(前金)・Edy決済*手数料315円
共立エレショップ380円7500円クレカ・銀行振込(*)・郵便振替・代引*:JNB・りそな銀行
マルツパーツ館450円-5000円クレカ・銀行振込・代引(*)*代引手数料無料
若松通商504円(*)370円(**)クレカ・銀行振込・代引*:ゆうパック5kg以内 **:ゆうパック代引手数料

更新

http://www.sengoku.co.jp/info/shipping.html
>送料などの改定に関して (2010/04/19)
>■ 当社発送分の送料ほかを改定いたしました
 690〜1090円 → 全国一律420円

* RGB21ピンコネクタ

#RGB #部品調達 #メモ
マル信無線電機株式会社 / 製品カタログ
http://www.ab.auone-net.jp/~est/pg-menu.htm
http://www.ab.auone-net.jp/~est/pdf/M-CN.pdf

SCART(RGB)PLUGS
オス MRS-670M
メス MRS-671J


 通販で扱っているところは、共立エレショップしか知らない。共立エレショップ自体では扱っていないが、シリコンハウスの店頭の品を未登録商品として注文できる。

シリコンハウス4F在庫品リスト
http://www.siliconhouse.jp/floor/4f-list.html
ROC アナログRGBコネクタ 21PソケットL型 ¥155
ROC アナログRGBコネクタ 21Pソケット縦型 ¥155
マル信 アナログRGBコネクタ 中継ソケット MRS-671J  ¥315
マル信 アナログRGBコネクタ 中継プラグ MRS-670M  ¥315

 秋葉原だとガード下で売っている。千石にもあるかもしれないが、無かったような気もする。日本橋には行ったことがないが、シリコンハウス共立の店頭で買えるのだろう。

* スーパーファミコン用純正RGBケーブル SHVC-010 のコンデンサの液漏れ

#RGB #メモ
 スーパーファミコン用純正RGBケーブル SHVC-010 は、一部にコンデンサが液漏れしているものがある。割合は1/10ぐらい?
 新品未開封のでも液漏れしているのがある。使用条件によるものではないっぽい。外見は大丈夫でも容量が抜けていることもある。
 そんなわけで、まだ無事でもコンデンサを交換しておいた方が安心。

 ↓は、ジャンクコーナーで発掘した中古品。








余談:
 RGBのカップリングコンデンサを本体に内蔵せずにケーブル側に入れたのは、滅多に使われないRGB出力のために大きめの電解コンデンサが3つ増えるのを避けたためだろう。もしも本体に内蔵していたら、SFCの故障率はもっと高くなったかもしれない。

 2010年現在でも SHVC-010 の新品は比較的容易に入手できる。ということは、ずいぶん売れ残ったわけだ。SFCより後のゲーム機(Nintendo64 NUS-001、スーパファミコンJr. SHVC-101)がRGB出力非対応になったのも仕方ない。RGB出力を省いて節約できるものは結構多く、対応して増える売り上げは微々たるものだろうから。
#でも、スーファミJr.がS信号出力まで無いのはどうかと思う。

* サターン用RGBケーブル, 音声ノイズ, GNDの接触改善

#電子工作 #RGB #メモ
 だいぶ前に組んだサターン用RGBケーブル(純正ケーブル HSS-0109 のサターン側約15cmとSFC用純正RGBケーブル SHVC-010 を継いだもの)と、XRGB-2plusを繋いで、久々にサターンを起動した。すると、音声にずいぶんノイズが乗っていた。

 サターン側のミニDIN10ピンコネクタのフレームが曇っていたので、コンタクトZで接点を磨いたところ、ノイズは解消された。


 サターンの映像出力端子は、GNDがピンに割り当てられておらず、ミニDIN10ピンのフレームにGNDが割り当てられている。で、そのフレームはピンよりも接触が不安定だし、メッキ部が曇ったりもする。その結果、サターン・モニタ間のGNDの抵抗が増える。

 75Ω終端の映像信号は、比較的大電流の信号だ。終端抵抗に0.7Vの電圧を発生させている間は、9.3mAの電流が流れる。RGB接続なら、R,G,B,複合同期(コンポジットビデオ信号)の4本で、計37mA

 というわけで、仮にサターン側コネクタのGNDに1Ωの抵抗が挿入された場合、映像信号がフルにスイングするとそのリターン電流のために、相互のGNDレベルに37mVの変動が生じる。


 その点、プレステのAVマルチ出力は、GNDがRGB,Video,Audioで分けられているので安心。でも、実際には機器側のコネクタでいきなり共通になっていたりして、意図どおりに機能することはあまりない気もする。

* XRGB-2plusのドットクロックをファミコンに合わせる

#RGB #ファミコン
 スーパーモードを有効にして、DTC_TYP を[USER]に、USR_DTCを1023に設定。

 SCAN は [SVGA](47kHz) に設定しておく。VGA(31kHz)では、スキャンライン毎に表示されるドットがずれる。また、SVGAモードの方がPPUの動作に伴う(?)「縦線」ノイズが目立ちにくい。
(というか、XRGB-2plusの31kHzモードでやたら縦線ノイズが目立つ。サンプリング周期/2以上の周波数のノイズが突き抜けているのか? 出力がVGAかSVGAかで変わるのが謎だ。出力が違っても入力のサンプリングは変わらないだろうに…。)

http://nesdev.parodius.com/2C02%20technical%20reference.TXT
+---------------+
|PPU base timing|
+---------------+
(中略)
  • Pixels are rendered at the same rate as the base PPU clock. In other
words, 1 clock cycle= 1 pixel.

  • 341 PPU cc's make up the time of a typical scanline (or 341/3 CPU cc's).
341*3 = 1023

* これは ひどい D2FC-F-7N(MS) のチャタリング

#電子工作 #実験 #メモ
 IntelliMouse Explorer 3.0 のダブルクリック暴発が多発するボタンのマイクロスイッチ D2FC-F-7N(MS) のチャタリングの様子を観測した。









 これは ひどい
 手持ちの他のマイクロスイッチに比べて、明らかにチャタリングの持続時間が長い。最大で2msに達しそうだし、1msでは安定しない場合が多い。

 マイクロスイッチを交換してもダブルクリック暴発が発生するのでプログラム的な問題が大きいと思っていたが、スイッチ自体の品質の問題もかなり大きいようだ。
 質が悪いのか、他とはひと味違う軽い感触を得るための代償か。(いずれにしても、それで意図しない動作をしてしまうファームはダメだと思うが。)

* マイクロスイッチのチャタリングの様子の観測

#電子工作 #実験 #メモ

はじめに

 チャタリングによるダブルクリックが頻発する IntelliMouse Explorer 3.0 を、Windows上で動くフリーソフトの ChatteringCanceler を用いて騙し騙し使っている。
 色々不毛で不便。ハードウェア的にパッチをあてるために、まずは、マイクロスイッチのチャタリングの挙動を観測してみた

機材

 PICkit2のソフトに簡易ロジアナ機能があるので、それを利用。3chまでしか観測できないけど、1chあれば十分。

 PICkit2の1ch,2chには内蔵の4.7kΩプルダウンがある。なので、マイクロスイッチのコモンを1chに接続。NO接点にPICkit2のVDDを接続し、VDD出力にチェックを入れる。
 トリガを1chの立ち上がりに設定し、RUNして、スイッチを押す。

結果

 0.5msでだいたい安定するが、1.5ms程度まではチャタリングが時折発生する。

 IME3.0のチャタリングは、こんなパルスを拾った結果なのだろうか。

対策

 色々な手法はあるけど、はて、どうしたものか…。
 H/Lで+1/-1してカウンタを増減させて、上下の閾値に達したら論理確定、ってあたりが確実か。
 パラメータは、500μ秒の連続ON/OFFで切り替わるぐらいで。マウスのボタンなら、0.5ms遅延したところで全く問題ない。

 マイコンを使うことを考えていたが、素直に積分+シュミットトリガゲートの方が…いや、5ch分のCRは場所食いだ。無駄に集積回路を使うけどマイコンの方が部品点数は少なくて済む。

* Bad Apple!! PV-FC (2) がファミコン実機で映像が乱れる。原因は黒より暗い黒

#ファミコン
※最新版では問題は修正済

発端

Bad Apple!! PVをファミコンで再現してみた。(その2)
http://www.nicovideo.jp/watch/sm9170895
に感動した。
 エミュレータでの再生では満足できず、実機で再生するためにMMC3搭載カセットのROMを剥いでEP-ROMを載せたカセットを作成した。


事象

 RF接続した赤白ファミコン(HVC-001)では映像が乱れる。RP2C03を載せたRGB出力AV仕様ファミコン+XRGB-2plusでは乱れない。

↑MTV-2000にRF接続し、キャプチャ

調査とわかった事

 後期型ファミコンの裏蓋を外し、オシロスコープでPPUの出力を眺めた。その結果、映像の黒部分に、バースト直後の黒レベルよりも低いレベルの信号が出ていた。

↑はAV仕様ファミコン(無改造)の映像出力

黒より暗い黒

http://nesdev.parodius.com/2C02%20technical%20reference.TXT
+-----------------------+
|Video signal generation|
+-----------------------+
(中略)
Luminance value 0, mixed with chrominance value 13 yield a "blacker than 
black" pixel color. This super black pixel has an output voltage level close 
to the vertical/horizontal syncronization pulses. Because of this, some 
video monitors will display warped/distorted screens for games which use 
this color for black (Game Genie is the best example of this). Essentially 
what is happening is the video monitor's horizontal timing is compromised by 
what it thinks are extra syncronization pulses in the scanline. This is not 
damaging to the monitors which are effected by it, but use of the super 
black color should be avoided, due to the graphical distortion it causes.

 パレットについての関連参考資料。
ファミコンの詳しい話
http://www.wizforest.com/OldGood/FamiCom/FamiMisc.html

 Bad Apple!! PV-FC では、黒として 'Luminance value 0, mixed with chrominance value 13' つまり 0x0D を使っているのだろう。(未確認。VirturalNESのパレットビューアでは、どのパレットを使っているかが数値では表示されない)
 作者の門真なむさんは実機で動かしているが、RP2C05-99を積んだツインファミコンで動かしたために、普通のファミコンで映像が乱れる(モニタにもよるだろう)ことに気づかなかったのかな。

追記

 問題が出る環境はかなり限られている模様。悪条件に相当弱い機器でなければ、はっきりした問題にはならないのかも。
 うちでは、MTV-2000にRF接続でノイズだらけになる。(MTV-2000はノンスタンダード信号に弱いので、blacker than black 以前の問題もあるかも)LGの安物VHSビデオデッキにチューナが死んだテレビデオ(普通のテレビ放送でも同期外れがたまに出るほど、同期周りが弱い)にて、同期外れが頻発。

* NEO GEO 用メモリカード(等)のSRAMの、FRAM化の検討

#NEOGEO #メモ
MCS48(8048)マイコンのページ(2007-05)
http://www.protom.org/micon/?date=200705
通常のSRAMのように扱えるので乗せ変えるだけと思いきや、これが全く動かず。しばしデータシートを眺めると、/CS(チップセレクト)端子を動かしてアドレスを内部にラッチさせないとダメとありました。この8048ボードは/CS線はGNDに繋がっているので原因究明。空きスペースにTTLの74LS08を置いて、8048からのPSEN,RD,WRでNegative-ORして/CS線に繋いであげると動き出しました。

  • FRAM Design Considerations
When designing with FRAM for the first time, users of SRAM will recognize a few minor differences. First, bytewide FRAM memories latch each address on the falling edge of chip enable. This allows the address bus to change after starting the memory access. Since every access latches the memory address on the falling edge of /CE, users cannot ground it as they might with SRAM.

 富士通の場合は、/CEがLにて/WEか/OEの↓でラッチアドレス?
 非同期SRAMと置き換えるだけでは、ダメか…。

* NEO GEO / MVS 用メモリーカード (MV-IC) の 分解

#資料 #NEOGEO #分解

フタを剥がした


同様のタブの付いた電池があれば、電池交換できるだろう。が、試していない。
#分解したのは2006年頃だが、放置中。

Digi-Keyにタブ付CR2016の在庫あり。
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=P222-ND
単価108円。最小数量1。

タブ付CR1616の在庫もあった。
http://search.digikey.com/scripts/DkSearch/dksus.dll?Detail&name=P273-ND
NEO GEO とは関係ないけど、メモ。ゲームボーイのソフトの電池交換に。


載っているのは、16Kbit(2KByte)のSRAM、他

高解像度画像


HP200LXにてフォーマット。容量は16Kと誤認されている。


カード自体が認識されれば、dd等でデータの待避・復帰ができるだろう。
ただし、他のDOSやWindowsやLinuxでの認識は未確認。

* LP3872/LP3875 1.5A 高速超低ドロップアウト・リニア・レギュレータ

#電子工作 #メモ #部品 #電源
http://www.national.com/JPN/ds/LP/LP3875.pdf
ドロップアウト電圧: 超低ドロップアウト電圧。 代表値は150mA負荷電流時38mV、1.5A 負荷電流時380mV。
 入力電源電圧上限7.0Vが、昔ながらの5VのICに使う際にやや面倒。別のLDOで6Vでも作っておくか?


RSオンラインにて取り扱いあり。
LP3875EMP-5.0,Fast,Ultra LDO,Linear Reg,5.0V
(1.5A, SENSE, SOT223-5)
5〜 @360

LP3875ES-5.0,Fast,Ultra LDO,Linear Reg,5.0V
(1.5A, SENSE, TO-263-5)
5〜 @410

TO220 の LP3875ET の取り扱いは無し、か。


 入力コンデンサ・出力コンデンサは、データシートの「代表的な性能特性」によると、各々100uFのOSCONでいいか。それで、1.5A・100usの負荷にて2.5V出力の電圧変動を20mV以下に抑え込めるようだ。
 RS扱いの面実装のだと、
導電性高分子コンデンサ,SMT,PCG0J151MCL1GS,105°C,6.3V,150μF
あたりか。5〜で@200。
 入力側を耐圧10V(6.3x6),出力側を6.3V(5x6)。各々150uF。
http://www.nichicon.co.jp/products/pdf/cg.pdf

 面実装のタンタルでもいいか?
コンデンサ,固体タンタル,面実装,7343,T491D107K010AT,10V,100uF
10〜 @68
T 491 D 107 K 010 A T
タンタル 491シリーズ Dサイズ 100uF ±20% 10V
Dサイズ:L7.3 W4.3 H2.8


プリント基板のレイアウト設計
プリント基板の設計が適切でない場合、グラウンド・ループと電圧ドロップが原因となり不安定動作を引き起こすので、必ず適切なレイアウト設計を行わなければなりません。入力コンデンサと出力コンデンサは、他の回路の電流が流れないよう独立した配線パターンを用いてLP3872/3875 の入力ピンまたまたは出力ピンとグラウンド・ピンに直接接続します( ケルビン接続)。
(中略)
VIN に対しては大電流が流れ込み、またVOUT からは大電流が流れ出しますが、入力コンデンサと出力コンデンサのグラウンド側リードをケルビン接続すれば、配線パターンによる直列抵抗分の影響を考慮する必要はありません。

 SENSEピンは使うか、使わないか。
また、LP3872/3875 の出力に接続されている負荷が、例えばクロックなど高速にスイッチングするような場合、LP3872/3875 の出力コンデンサが過渡的な負荷電流を供給できるように設計しなければなりません。これはレギュレータのループ帯域が100kHz 以下と低いため、そのような高周波の過渡的な負荷変動に対してレギュレータの制御ループが応答できないからです。すなわち、100kHzを超える周波数領域でのLP3872/3875 回路の実効的な出力インピーダンスは、出力コンデンサによって決まります。
 ちょっと遠目程度なら、SENSEを引き回すより、その分電源パターンを太くした方がいいだろう。

* ビデオゲーム機のRGB出力、傾向と対策

#RGB #メモ
機種工作難易度部品入手難易度信号源信号備考
ファミコン普通至難RP2C05-99等-
スーパーファミコン容易普通背面端子0.7Vp-p(75Ω終端時)-
Nintendo64 前期型普通普通VDC-NUS0.7Vp-p (0〜0.7V)-
Nintendo64 後期型不明アナログRGB無し?
SG-1000II 前期型無しTMS9918Aはビデオ出力のみ
SG-1000II 後期型普通普通カスタムチップ1.4Vp-p-
SEGA MarkIII普通背面端子1.4Vp-p (0〜1.4V)150Ω負荷の駆動不可
MASTER SYSTEM背面端子0.7Vp-p (75Ω終端時) CXA1145の出力に100μFと75Ωが付いている
MEGA DRIVE背面端子1.4Vp-pCXA1145のピンがそのまま繋がっている
スーパーカセットビジョン背面端子-
PC Engine普通HuC6260 0.8Vp-p (4.2〜5V)-
NEO GEO背面端子-

* シリアルマウス

PC mouse info
http://www.tkk.fi/Misc/Electronics/then/mytexts/mouse.html
更新:リンク変更

PIC K iT PS/2⇔シリアル マウスインターフェイス
http://members.jcom.home.ne.jp/irv/documents/sermouse/0511123_SirialMouse_manualB0.pdf
スクロールマウスのデータフォーマットの情報あり。その他にも色々参考になる。


 比較的簡単なハードウェアとソフトウェアでWindows機(等)にマウス扱いされる自作ハードを繋げるのは魅力だが、Windows2000, XPでは電源ON時にしか認識されない(?)等、微妙に面倒が多いのが難点。
 あと、近頃はシリアルポート搭載率が減少傾向。USB<->シリアル変換はシリアルマウスには対応していないのが多い。

#電子工作

* Vista環境にて、PL-2303を使用したUSB接続COMポートで、TEXCELLのRubyシリアル通信ライブラリを用いてデータを受信できない。その原因と対処法

#プログラミング #Ruby #シリアルポート

事象

 Windows Vista の環境にて、USB接続のCOMポート(シリアルポート)を介して繋いだ機器のデータを、TEXCELLのRubyシリアル通信ライブラリ wincom.rb にて全く受信できない。teratermでは受信できる。。
 同じ接続対象機器・同じプログラムでも、レガシーな COM1 に繋いだならば受信できる。
 同じ接続対象機器・同じUSB接続シリアルポート・同じプログラムで、WindowsXP 環境では受信できる。

原因

 Vista環境にて、USB接続シリアルポートでは、ReadFileを実行した際、「読み取ったバイト数」として常にゼロが帰ってくるため。
 ドライバのバグか?

対処

 ReadFileの「読み取ったバイト数」は使わず、ClearCommErrorを実行した際に得られた COMSTAT構造体 の「受信バッファにあるデータのバイト数」を使う。
 ReadFileでそのバイト数読むと指示しているのだから、問題ない…と思う。問題あったとしても、常に0バイトよりはマシだ。
    def receive
(中略)
#                rcvchar = @wcrecv.unpack("a#{irlen[0]}")[0]
                rcvchar = @wcrecv.unpack("a#{ilen}")[0]

補足

 試したUSB接続シリアルポートアダプタは、以下2点。
 UC-232Aのドライバは、uc232a_windows_vista.rar (Ver._v1.0 2007-7-10)を使用。
 URS232GFは、Vista標準ドライバで利用できるとの事だが、できなかった。「URS232GFは一部ロットにて使用できません。」とのこと。チップ製造元であるProlificのサイトから、PL2303_Prolific_DriverInstaller_v10518.zip (2009/7/23 v1.0.5.18 )をダウンロードし、インストール。
 上記2点、チップ自体は同じか。ならば、ドライバもほぼ同一なのだろう。

あとがき

 今までTEXCELLのwincom.rbをありがたく便利なブラックボックスとして使わせて頂いていたのだが、中身を見て、色々と面倒な Win32API を隠蔽してくれていた事を実感した。今回必要に迫られてベールの下を覗いたけど、Win32APIは直接触らずに済むならそうしたい代物だ。


関連ページ

TEXCELL Rubyシリアル通信ライブラリ
http://www.texcell.co.jp/ruby/wincom/rubywincom.html

hirax.net::wincom.rbのCOM10以上対応
http://www.hirax.net/diaryweb/2009/07/29.html

Serial Communications in Win32
http://msdn.microsoft.com/en-us/library/ms810467.aspx

Windows/Vista/USB-RS232C(シリアル) - Tomocha WikiPlus
Windows Vista で動く、USB-RS232C変換ケーブル情報
http://wiki.tomocha.net/Windows_Vista_USB-RS232C.html