ロジック 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 としています。
あとで調整が必要になるかもしれません。

本当にBAT81?

外袋に「BAT-81」と書かれたダイオードを入手したのですが、巷で手に入る BAT81 とは外観が異なるように見えます。

Dscf0795
今回入手した BAT81。

他の BAT81 は普通のダイオードのケースだったり、青色ケースだったりするようです。

そこで、以前製作した USB デバイスアナライザを使ってデバイスの特性を測定してみます。

Vf-If

実測した VF-IF グラフを上図に示します。
比較のため、1S2076A の測定値を同じグラフに表示しています。
グラフで特徴的なのは逆 S 字カーブを示していることで、これは等価直列抵抗値が大きいことを示しています。
また、VF の値も全体的に SBD としては大きめです。

BAT81_DS

Philips 社の BAT81 データシートから抜粋した、VF-IF グラフが上図で、実測値と良く一致しています。
このことから、このダイオードは BAT-81 と考えて問題ないようなので、安心して使用できます。

TTL で PSG 音源を作る その2

今回は矩形波生成ブロックを設計します。

AY-3-8910 の矩形波生成ブロックは、12bit の分周比 N によって クロックを分周させ、さらに 1/16 のプリスケーラと組み合わせることで、fck/16/N の周波数を生成します。
・・・とデータシートに書かれているのですが、出力のデューティー比は 50% にするため、回路上は 1/8 のプリスケーラと 1/2 のポストスケーラによって構成されているものと思います。

PSG 音源にはデューティー比を可変する機能はないので、これは単なる 1/N 分周器(プログラマブル分周器)によって構成できます。

プログラマブル分周器はいろいろな回路が考えられますが、
TTL IC を組み合わせて作るので、部品点数、在庫、価格など
いろいろ考えて設計しなければいけません。

divider_1

上図は 74LS161 を使用した完全同期式のプログラマブル分周器で、プリセットに N の論理反転を入力することで、1/(N+1) 分周器として働きます。
(上図ではデューティー 50% にするため、さらに 1/2 していますが。)
161 は 4bit カウンタなので、8bit や 12bit で動作させる場合、複数個組み合わせて使用します。
上図のように CO 端子から出力を取ろうとすると、複数個組み合わせた場合ひげが出てしまうので、一度元のクロックで同期してやる必要があります。

divider_2

74LS197 のような、安価な非同期式のカウンタで構成した例が上図です。74LS197 にはキャリー出力がないので、MSB の立下りエッジでカウンタをロードしています。ロードは非同期なので、出力周波数はひとつ上の回路と同様になります。

今回は 1/(N+1) ではなく 1/N の分周器を作る必要があります。上記回路では、論理反転のほかに算術 -1 する回路を追加せねばならず、不適です。

divider_3

1/N カウンタの実現方法のひとつは、ダウンカウンタを使用することです。74LS191 を使用した 1/N 分周器を上図に示します。74LS193 でも同様です。この回路でも動くと思いますが、MSB のCO 出力はマルチバイブレータ等でパルス拡張した方がベターでしょう。

divider_4

もう一つの構成として、ディジタルコンパレータを使用する回路が考えられます。上記は 74HC4040 によるリプルカウンタの出力を 74LS688 によるコンパレータで比較して、一致でカウンタにリセットをかけています。リセットは非同期なので、結果として出力周波数は 1/N となります。
コンパレータが比較的高価で、配線数も多くなるのでこの方式はあまり採用されませんが、今回は手持ち部品の都合上、この回路をベースに設計します。

square_1

そういうわけで、矩形波生成ブロックは上図のような回路になりました。AY-3-8910 には 3 系統の矩形波ブロックが存在するので、上記回路を3つ作ることになります。