PLL クロック逓倍回路

ディジタル回路のクロックは重要ですが、ちょうどいい水晶発振子がなかったりするときなど、クロック N 逓倍器があると便利な場合があります。
最近は 21.48MHz (3.58MHz x6) の水晶がなく、某所で中国製の水晶発振子を購入したらぜんぜん違う周波数で(基本波から違う)困ったことがあります。
PLL を組めば N 逓倍できますが、いまさら VCO + MC4044 という組み合わせの回路は設計が面倒です。

CY2308


最近 Cypress の CY2308 (+IDT23S08) という石をたくさん手に入れました。
これはもともとクロック分配の用途に作られた IC ですが、PLL を内蔵しており、フィードバック端子が外部に出ているので、ディバイダを外付けすれば手軽なクロック逓倍回路に使えそうです。
ただし出力周波数は10-133MHz と規定がありますが、入力周波数の規定がありません。
私が使用する周波数帯はだいたい 1-30MHz なので、この用途で使えるかどうかは基準周波数と発振周波数の下限(PLL 特性で決まる)にかかってきます。

テスト回路

 
というわけでテスト回路を組んでみました。
使用したのは CY2308SC-2 なので CLK と CLK/2 が出力されます。
CY2308 の CLK/2 または CLK 出力を 74ALS161 の 1/N 分周器で分周して FBK 端子に戻しています。
FBK のデューティは 50% でなくてもいいようです。

基準周波数は TC40H000 で発振させた 3.58MHz で、その 1/2 と 1/4 も選択できるようにしています。
したがって、出力周波数は fout = (3.58 / M) x N (x 2) MHz となります。
この回路の最大周波数は分周器に依存しますが、CO – /LD 間に使った TC40H000 の伝達遅れが大きく、これをたとえば 74AS04 などにすれば CLKOUT = 80MHz 以上出せるはずです。

波形

fREF = 3.58 MHz、N=3 の CLK 出力は上図で、CH1 が CLKOUT 信号の波形を示しています(以下同じ)。この程度の REF 入力なら問題ないようです。

fREF = 1.79 MHz, N=6 の CLK 出力が上図で、fREF = 1.79 MHz はまだ大丈夫そうです。
fREF = 0.9MHz にすると CLK 出力が不安定になりました。(画像保存失敗)
よく使う 4MHz とか 6MHz のクロックなら、REF 入力にしても問題なさそうに見えます。

fREF = 1.79 MHz でどこまで出力周波数を下げられるかやってみます。

N=3 つまり fout = 5.37MHz はまだ安定しています。

N=2 つまり fout=3.58MHz では出力周波数が不安定になりました。
5.37 MHz で OK とはいえ、温度変化を考えるとやはり出力周波数はできるだけ 10MHz 以上に設定するべきでしょう。

 

とりあえず最初にほしかった 21.48MHz が簡単に作れるようになったので満足です。

DSP-444 の I2C テスト その2

ある程度実用的になったので DSP-444 ラジオの I2C テストの回路図とソースコードを公開します。

I2C で操作しているのは
・受信周波数の取得
・FM/AM/SW、受信バンドの選択
・音声出力の位相(デフォルトがLR反転なので、イヤホンで聞くためには設定が必要)
の3点です。

現時点でI2C での選局の方法はわかりません(対応するレジスタを設定しても変化なし)ので、ダイヤルによる設定としています。
適合するバリコンつまみを持っていないので、可変抵抗で選局するよう改造しています。
ここまで改造するならもう別のモジュールを使った方がいいような気もします。

表示器には hp の HPDL-1414 を使っています。この表示器はアルファベットも表示できるので、放送局のコールサインでも表示できるようにしようと思っています。
写真のように FM 補完放送も受信できます。


回路図

ソースコード (gcc)

 

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 は図のような回路により使用できます。