DSP-444 のテスト

何年か前の福箱に入っていた、aitendo で売っている DSP ラジオモジュール DSP-444 のテストをしています。

モジュールを解析した結果 I2C レジスタの仕様がある程度わかったので、とりあえず受信周波数の表示ができるようになりました。

写真は TBS ラジオ 954kHz を受信しているのですが、このモジュールは AM のチャンネルスペースが 5kHz の米国仕様なので 955kHz の受信になってしまいます。AM の音質が悪いのもこのせいだと思います。どこかの設定でチャンネルスペース 9kHz にできるといいのですが。

ロジック IC の出力特性を実測する その2

今回は偽ブランド品 (counterfeit) ロジック IC を中心に…

74HC04D(HYC)

これは NXP 社のロゴがありますが偽ブランド品だと思われます。
・同社 DIP の型番は 74HC04N であり、74HC04D ならば本来 SOP
・パッケージ形状が NXP のものと異なる

偽造 IC にはロット番号に本来の製造社名を入れている場合があり、この IC の場合 HYC というのが本来の社名だと思います。

特性を見ると、H 出力のドライブ能力が L 出力に比べて低くなっていますが、JEDEC 規格は満たしています。ファンクションも確認した限り正常です。

SN74HC164N (15FVNS)

・ロット番号の桁数が異なる
・ピンの太さが本物と比べて太い
ことから、偽ブランド品と判断しています。

ドライブ能力を見ると、L 出力がぎりぎりですが、一応規格は満たしているようです。

SN74HC164N(65CXD2K)

この IC はマーキングがきわめて薄く、パッケージ形状も TI のものと異なるので、人目で正規品でないとわかります。ドライブ能力は正規品と遜色ありません。

SN74HC595N(93DN8WY)

シフトレジスタの 74HC595 は需要が多い汎用 IC のため、偽造ブランド IC が多く見られます。実感として aliexpress では 90%、国内通販で 20% 程の確率でこうした IC を手にすることができます。

この IC のドライブ能力は本物より強いです。

SN74HC595N(11HMK7J)

この IC は機能が微妙に 74HC595 と異なっており、本来なら RCLK  ピンの rising エッジで出力データをロードすべきところ、トランスペアレントラッチ動作となっていました。たまにこういうことがあります。

74HC595N(YRD0914)

偽ブランド IC の世界でも、YRD はよく見かけるブランドです。ディジタルのみならずリニア IC も手がけているようです。

74HC595N(1108LHW)

SN74HC595N(13CNONK)

このロット No の IC もポピュラだと思います。出力特性はオリジナルよりむしろ良くなっています。他の IC も似たような特性なので、ダイスとパッケージングで水平分業になっているのではないかと思います。

ここまでの偽ブランド IC と比較して、正規品の特性を以下に示します。

M74HC595B1(正規品)

ちょうど TI の 74HC595 がなかったので、STMicro のものを示しています。

ここに示していないものも含めて多数のサンプルで測定をした結果、 74HC シリーズでは、正規品に比べて偽ブランド品の方がドライブ特性が強い傾向にあるように感じます。ただし、サンプル 11HMK7J のように、機能が微妙に異なる IC も混ざっているので注意が必要です

ロジック IC の出力特性を実測する その1

ロジック IC のきわどい応用を考える上で知っておきたいのがその出力特性です。
ロジック IC のデータシートには ○ mA のとき○V 以上、といった記述があるのみで、インピーダンスの非線形性や定格以上の電流を流す場合の特性などにはふつう言及されていません。
specsheet_example
(データシート上の出力特性例)
また、最近は中国製とみられる偽ブランド (counterfeit) IC も多く小売されており、それらが規格を満たしているかも興味深いところです。
そこで、いろいろなロジック IC の出力特性を実測してみました。

なお、以下では IC の最大絶対定格以上までグラフを引いていますが、言うまでもなく、実使用上は絶対定格を超えない範囲で使用すべきです。

SN74Nシリーズ (スタンダード TTL)

SN7400N

output_SN7400N

IOL-VOL、IOH-VOH グラフおよびその定格値、VIL(max)、VIH(min) を同じグラフ上に表示しています。上図はちょっとミスで 74LS の定格値が入っています。編集の段階で気づいたのですが、TTL は 5V ± 5% なので Vcc = 4.75V にすべきでした。(74HC に合わせてしまいました。以下同様)

74LS シリーズ

SN74LS00N

output_SN74LS00N

HD74LS00P

output_HD74LS00P

とりあえず TI の SN74LS00N と日立 HD74LS00P を測定しています。
VOL に変曲点が見られます。74LS は内部回路をみると高速動作のため出力から入力に SBD が入っており、この影響です。また、出力 Tr が非飽和動作をするため、スタンダード TTL と比較して VOL が高くなっています。

74ALS シリーズ

SN74ALS00AN

output_SN74ALS00AN

74ALS シリーズは 74LS を高速、低入力電流にしたもので、出力特性は 8mA/-0.4mA で 74LS と変化ありません。回路上の工夫で VOL はスタンダード TTL 並に戻っています。

74HC シリーズ(正規品)

HD74HC00P

output_HD74HC00P

TC74HC00P

output_TC74HC04P

とりあえず東芝と日立の 74HC00 を選択しています。
緑線は JEDEC の最悪値を示しています。JEDEC では Vdd = 4.5V で規定されているのでここでも 電源 4.5V でグラフを引いています。
グラフのように、それなりに対称な出力特性となっています。

次回は、いろいろな偽 IC を試してみる予定です。

測定風景

e_170423_221844_0

このような自作回路により測定しているので、値の正確性については一切保障できないことをおことわりしておきます。

Si5351A を使ったユニバーサル・オシレータの製作

Si5531A はワンチップの PLL IC で、25MHz の源信号から 25kHz – 200MHz までの任意のクロックを生成できる便利な IC です。

秋月で扱い始めた直後(2016/02)に、私はこの IC を使用して自作機器のテスト用オシレータを作りました。そのうち公開しようと思い気づけば1年…、今更ながら公開します。

Dscf0930

上掲はタカチのケースに入れた写真で、右の 5 つのボタンで電源 ON/OFF と周波数選択を行います。周波数は桁ごとに 1Hz 単位で設定できます。一応、 2 系統(Si5351A の出力は 3 系統だが、独立に設定できる 2 系統のみ使用)設定できるようになっていますが、ケースの空間がないため 1 系統のみ外に出しています。

Dscf0929

内部はこんな感じで、見ての通りいい加減な作りですが、私しか使わないので…。変換モジュールは使わず、べたグランドにコプタンテープ(カプトンテープではない)を張って IC 直付けです。写真の通り電池動作で設計していますが、この装置が役に立つのは試作時で、試作時はふつう電源装置があるので、素直に外部電源仕様にすればよかったと後悔しています。

コントローラには Atmel (今は Microchip というべき?)ATTINY26L を使用していますが、もっと ROM の大きいものを使うべきでしょう。ROM 領域が足りなくなってしまい、500kHz 付近の精度は少し妥協しています。プログラムは 2k の ROM をほぼ全て使っています。

LCD は以前日米で売っていた SC1602 というモジュールを使っています。一般的な 16×2 パラレル LCD なら何でも使用できます。

Schematics

ソースコード (C 言語)

回路図とソースコードを示します。操作方法や動作詳細はこれらを参照してください。Si5351A の制御部分は si5351a.c にまとめています。

中国製ピンヘッダは磁石にくっつく

Dscf0909

Dscf0908

表題の通り、安い中国製ピンヘッダには磁石にくっつくものがあります。
磁石につくということは材質は鉄(おそらく鉄に錫メッキ)でしょう。
これは普通の IC の端子処理と同じで、製造後すぐ半田付けする分には問題ないのですが、長期保存や傷に弱いためコネクタの材質としては不向きです。さびます。

普通のピンヘッダは黄銅に金などをメッキしたものなので、磁石につくことはありません。
もう一種類、少し高価な(それでも1個¥15 程度ですが)中国製のピンヘッダを持っていますが、そちらは磁石に付きませんでした。

もちろん、わかっていて使う分には問題ないのです。
最近は中国製電子部品を日本のネットで売る業者を見かけるので、知らずに掴むとこれは問題です。
例えば TI 製 74HC ロジックは偽物が多く・・・
偽ロジック IC については、少し私のサイトでまとめています。

でも、とても安いので没関係(ぜんぜん問題ない)です。

#メモ
TOP853 で EPROM に書き込むとき、Config から delay を 100us – 200us にしないと書き込みエラーになります。

USB-to-PSG インタフェース基板 rev.2

前回は AVR の VUSB で USB-PSG インタフェースを製作しましたが、速度的に問題がありました。
VUSB は USB Low Speed のみ対応していますが、規格上 LS のビットレートは最大 1.5Mbps なので、MIDI (31.25 kbps)程度の速度なら十分のように思っていました。
しかしながら、USB LS は バルク転送やアイソクロナス転送に対応しておらず、インタラプト転送で信号を送らなければいけません。
私の使用している Windows だとインタラプト転送のインターバルは最短 8ms、転送は最大 8 バイト(VUSB の仕様)なので、6バイト (2 MIDI メッセージ) / 8ms と考えると、実効ビットレートはわずか 6kbps しかありません。

Dscf0832

そういうわけで、USB2.0 に対応した PIC18F14K50 を使って、USB-PSG インタフェースを作り直しました。
(秋月ではいつの間にか 170 円から 210 円に値上がりしていますね…)
外観は前回とほとんど変わりませんが、ピン数の関係で SIPO SREG の 74HC164 を追加しています。

usb-to-psg_schematics_2
USB-PSG rev.2 回路図

ファームウェア

PIC の場合、Microchip Library for Applications (MLA) に含まれる USB サンプルをもとに USB デバイスを実装するのが便利です。
今回は「audio_midi」サンプルをベースに 仮想 USB デバイスを実装しています。
VID/PID とかデバイスディスクリプタは適宜書き換える必要があります。
今回はあくまで TTL-PSG のテスト用ということで、サンプルのままにしています。

USB2.0 のバルク転送だけあって、転送は USB LS のものよりはるかに高速になります。
これで、PC から PSG 音源のまともな演奏ができるようになりました。

USB-to-PSG インタフェース基板

Dscf0808

写真は TTL-PSG のテスト用に製作したインタフェース基板です。
AVR マイコンを USB デバイスとして動かす V-USB をベースにして、USB オーディオクラス(MIDI Out のみ)を実装しています。
Martin さんの V-USB-MIDI プロジェクトを実装のベースにしています。

usb-to-psg_schematics
回路図

ファームウェア(ベータ版)

TTL-PSG のために作ったものですが、もちろん本物の AY-3-8910 に繋いでも動くはずです。一応両方の接続図を回路図に入れています。
回路図左下はディジタルディレイで、本基板とは直接関係ありません。

実装している機能は以下の通り:
・矩形波 3ch: MIDI Port 0-2 に対応
・ノイズ ch: MIDI Port 9 (矩形波 C に mix)
・音量: 矩形波 ch はエクスプレッション、ノイズ ch はベロシティ
・ピッチベンド (±24 半音)
・エンベロープ: プログラムチェンジ、モジュレーション、リバーブで設定

sequenser

上図のように、Class-complient なので一般的な MIDI シーケンサを使って PSG 音源を動かすことができます。
一通り実装したのですが、今のところエクスプレッション変化などデータ量が多いと破綻してしまいます。
すこし改良が必要です。

TDK CE-1025の解析

ce-1025_01

秋月電子のおたのしみ袋に CE-1025 と印字のあるモジュールが入っていました。データが見つからないので解析してみます。

ce-1025_02

シールド内部はこのような基板が入っています。パワーインダクタがあることから、スイッチング電源モジュールのようです。
5 Pin や 6 Pin の石が見えますが、これは IC ではなく複合 Tr です。
ROHM の UMS1、EMX1、UML2N が使用されているようです。

ce-1025_ciruit

解析のためトレースした回路図が上図です。
見ての通りステップダウンレギュレータの構成になっています。
回路構成から入力定格は 12-24V 程度だと思います。
図中右側の PNP Tr は誤差増幅で、
フィードバック電圧と基準電圧は外付けですから、
可変電圧 (Vout > 3.5V) の SW レギュレータとして使用できます。

ce-1025_test

上記解析より、CE-1025 は図のような回路により使用できます。

TTL で PSG 音源を作る その4

さて重要なのは DAC の設計です。

AY-3-8910 は各 ch 内部 4bit の表現を持ちますが、その出力 DAC は対数出力となっています。
dac_output

対数出力ということは、ストレートに R-2R ラダーは使えません。
簡単に思いつく構成は以下の3 つ:

(1) 対数型 DAC を組む
(2) 74154 + 抵抗 16 個
(3) ディジタルで linear-log 変換をした後バイナリ DAC

独立 3ch 分の DAC を組まなければならないため、今回は一番構成部品の少ない (1) の構成で設計します。

ただし、(1) は「TTLで作る…」と銘打っておきながら CMOS IC を使うことになるので、TTL 縛りが重要なら (2) を採用することになります。オリジナルの IC は MOS によりますが・・・。

dac

設計した DAC の回路図を示します。CMOS のアナログスイッチ 4053B は都合良く 3 回路入りなので、3ch の 4 bit DAC が わずか 4 個の IC で構成できます。

対数の底については、データシートの図表から LSB が -3dB (sqrt(1/2) 倍) になるように回路定数を設定しています。この定数が妥当かどうかはわかりません。出力インピーダンスは 47k となりますが、これは手持ちの抵抗値によって定数を適当に設定した結果です。

TTL で PSG 音源を作る その3

すこし間が空いてしまいました。
設計と同時に実装を進めていますが、果たして基板2枚で収まるでしょうか。

Dscf0793

今回はノイズジェネレータ部分の設計です。
AY-3-8910 は1 系統のノイズジェネレータを搭載しており、前段のプログラマブルプリスケーラで周波数を調整できるようになっています。
ノイズ音の ON/OFF は、後段のミキサで 3ch 矩形波の任意の ch に合成することでコントロールされます。
音量は矩形波 ch で設定された音量と共通のようです。

noisegen_1

基本的に、ホワイトノイズを生成する回路は、シフトレジスタカウンタ(文献によっては線形カウンタと称する)により構成すると簡単です。
SIPO シフトレジスタの 74LS164 と XOR 74LS86 で作った回路が上図、出力波形が下図です。

noise_wave_1

オリジナルの modulo はデータシートに載っていないので、
回路の簡単な modulo 2^15-1 としています。
あとで調整が必要になるかもしれません。