Z80GalCompactの制作(その5)AMラジオで音楽演奏 [Z80]
twitter の タイムラインでマイコンから発生する電波を利用してラジオから音楽を流す動画を見かけました。
学生時代に Z80 マイコンを作り同様なことをやってみたことがありますが、直ぐに1ビットのデジタル出力を使って演奏する方式に移行して二重奏等をやって遊んでいました。
余りにも懐かし過ぎるので最近開発した Z80 マイコン(Z80GalCompact)を使ってラジオ演奏をやってみました。
基本はループ処理の周期によってシングルトーンの音を生成するのですが、最初は綺麗な音が中々出ませんでした。色々やってみると AMラジオ側の受信周波数によって聞こえ方が結構違うことに気が付き、良く聞こえる受信周波数にするとそれなりの音が出るようになりました。
また、演奏音をなるべく綺麗にするために
トーンジェネレータ処理のループ部が合計で 108 ステートとなり、クロック 20MHz の情報と合わせて音程パラメータを計算した結果が下表になります。
Loop times のカラムがシングルトーンを生成するためのループ回数(=音程パラメータ)で上記のように 1 バイト処理なので Hex カラムが 2 桁以下のデータ部分が使用できる音階になります。
楽曲としては著作権が消滅しているドイツ民謡で広くなじみのある「かえるの合唱」のデータを使用しました。ネット上にあるこのページ等を参照させて頂きました。
更に今回は無謀にもラジオを用いた自動演奏による二重奏にチャレンジしてみました。アセンブラで組んだソースが下記になります。
流石に完全な二重奏とまではいきませんが「かえるの合唱」の輪唱がそれなりに聞こえるようになりました^^
★追記 2022/7/28
twitter に投稿した動画付きのメッセージを貼っておきます。
★追記 2022/08/15
twitterにアップした動画はラジオのパネルに天井の照明が写り込んで見辛かったので動画を取り直して説明コメントも付けてYoutubeにアップしました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
学生時代に Z80 マイコンを作り同様なことをやってみたことがありますが、直ぐに1ビットのデジタル出力を使って演奏する方式に移行して二重奏等をやって遊んでいました。
余りにも懐かし過ぎるので最近開発した Z80 マイコン(Z80GalCompact)を使ってラジオ演奏をやってみました。
基本はループ処理の周期によってシングルトーンの音を生成するのですが、最初は綺麗な音が中々出ませんでした。色々やってみると AMラジオ側の受信周波数によって聞こえ方が結構違うことに気が付き、良く聞こえる受信周波数にするとそれなりの音が出るようになりました。
また、演奏音をなるべく綺麗にするために
- 雑音低減のために演奏中はタイマ割込みを禁止する
- 頻繁に通る分岐処理部分では両方の処理のステート数を合わせる
- 音程と長さは1バイト処理にしてトーンジェネレータ以外の処理時間を短くする
トーンジェネレータ処理のループ部が合計で 108 ステートとなり、クロック 20MHz の情報と合わせて音程パラメータを計算した結果が下表になります。
Loop times のカラムがシングルトーンを生成するためのループ回数(=音程パラメータ)で上記のように 1 バイト処理なので Hex カラムが 2 桁以下のデータ部分が使用できる音階になります。
音階パラメータ表 |
|
楽曲としては著作権が消滅しているドイツ民謡で広くなじみのある「かえるの合唱」のデータを使用しました。ネット上にあるこのページ等を参照させて頂きました。
更に今回は無謀にもラジオを用いた自動演奏による二重奏にチャレンジしてみました。アセンブラで組んだソースが下記になります。
ラジオ演奏 カエルの合唱(Z80 アセンブラ) |
|
流石に完全な二重奏とまではいきませんが「かえるの合唱」の輪唱がそれなりに聞こえるようになりました^^
★追記 2022/7/28
twitter に投稿した動画付きのメッセージを貼っておきます。
TLで見かけたマイコンから放出される電波を使ったAMラジオでの自動演奏
— skyriver (@wcinp) July 28, 2022
あまりにも懐かしいので自作マイコンでやってみました^^https://t.co/8o6ULhEON7#Z80GalCompact #RetoroComputing https://t.co/OVoB5bILt4 pic.twitter.com/eKjVIggJJ1
★追記 2022/08/15
twitterにアップした動画はラジオのパネルに天井の照明が写り込んで見辛かったので動画を取り直して説明コメントも付けてYoutubeにアップしました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
TL866II Plus用VPP:21V/25V対応アダプタの製作(その5)プリント基板完成 [その他]
前回の記事で書いた回路更新したプリント基板を 7/3 23時に ELLOCROW さんに製造依頼して 7/11 の午前中に届きました。
下の写真が出来上がったプリント基板のトップ面です。今回 ZIF ソケットのフットプリントを修正して幅を狭くしていますが、少し狭すぎました^^;
でも足を少し曲げると入るので問題ありません。
下の写真がボトム面です。左上の "C4" のシルクのCが見えなくなっていますね^^;
上記のように軽微な問題が2点あったものの機能上は問題無いと思います。
表面実装部品を実装後のボトム面が下の写真です。今までは SOP パッケージは半田ごてで半田付けしていましたが、今回は他の部品と同様にクリーム半田を使ってヒートガンで半田付けしてみました。クリーム半田の方が速く綺麗にできました。
ボトム面の部品を実装後にトップ面の表面実装部品(と言っても USB コネクタと LED 及び電流制限抵抗)の半田付けを行いました。今回は上記の SOP IC と同様に USB コネクタもクリーム半田で半田付けしてみました。ピン間隔が狭いのでピン毎にクリーム半田を塗ることはできませんでしたがヒートガンを当てると綺麗に分かれて半田付けできました(今までは半田ごてと吸取り線を使って半田付けしていました)。
残りはリード部品と ZIF ソケット及びピンヘッダの半田付けなので楽です。注意点として ZIF ソケットの半田付けの前にロムライタとの接続用のピンヘッダを半田付けする必要があります。また ZIF ソケット直下のピンヘッダは ZIF ソケットと干渉しないようにトップ面からの出っ張ったピンの部分をニッパーでカット後に半田付けしました。
ZIF ソケットは前述のようにフットプリントの幅が少し狭いのでピンを内側に曲げてから半田付けしています。
部品実装が完了したトップ面とボトム面の写真を貼っておきます。
VppConverter が完成したので 手持ちの UV-EPROM を使って動作確認を行いました。結果は 2716/2732/2764 の3種類の UV-EPROM への書込みが成功しました。
今回作成した VppConverter は外部から供給された 5V 電源を昇圧して Vpp 用の 21V/25V を生成していて内部回路のグランドは 外部電源である USB のグランドと同電位ですが、ロムライタ(TL866II Plus、以降 TL866II と記す)側のグランド(ロムライタ側の USB のグランドと同電位)と電位が異なります。
従ってロムライタを接続したパソコンのUSBから VppConverter に給電しないよう注意する必要があります。モバイルバッテリからの給電が安全です。
以降に確認結果の詳細を記録しておきます。
以上が書込み試験時の波形等の記録です。
最後に 2732 書込み時の写真を貼っておきます。2732 問題をハードで対応しているのでジャンパ接続不要でスッキリですね^^
★追記 2022/07/16
手持ちのUV-EPROM を使って今回開発した VppConverter での書込み試験を行った結果をメモしておきます。
書込み試験でのデータは GAMEインタープリタ(0000H~0CB4H)を用いました。
★2022/07/17 NEC D2764D を追加
※ST M2732A は 2732の書込み問題の記事の最後の方に追記で 2732 問題が発生している状態でも書き込めるということを書きましたが、大きなデータを書込むと 0800H のアドレスの読込みデータが不一致になりました。
VppConverter を使って書込みを行うと 0000H で書き込みデータ( 0C3H )が 0FFH に読めるというエラーが発生しました。
この ROM 自体が壊れている可能性があります。
★追記 2022/09/02
需要があるか否かは不明ですが試験的に完成品を BOOTH で販売することにしました。
検査時間等も入れると組立は結構時間が掛かるもんですね。でも表面実装部品は取付けた状態にしないと敬遠されそうだし、部品を部分的に実装した状態では検査し辛いし、悩ましいですね。
★追記 2022/09/09
最近は基板の製造を ELECROW さんに依頼していますが、ELECROW さんでは現在 5 枚の基板製造を 1 ドルで行うキャンペーン中です。送料も Yun EXPRESS(8-11 Business Days) で $7.33 だったので、円安なのに従来よりも安く上がりました^^
この ELECROW さんのリンクから新規登録すると 500 points ($5) が貰えるそうです。初オーダー時にこちらにもキックバックがあります。
★追記 2022/09/21
数個ですが BOOTH へ出品したところ、直ぐに完売してしまいました^^
部品実装、洗浄、検査等に時間が掛かって余り乗る気ではなかったのですが、欲しい人がいるのであれば、増産(と言っても個人レベルでは数個単位^^;)すべく、追加の PCB 製造を JLCPCB さんへ初めて依頼しました。
格安の送料(SHIPPING CHARGE: ¥143.60)で、かつ製造もかなり速くていい感じです。
★追記 2022/09/27
JLCPCB さんの送料が格安なのは良かったのですが、shipping されてからはスローモーションです。毎日トラッキングを確認するのが日課になってしまった・・
★追記 2022/09/29
18:05 現在において上記の状況から進展無し(同じ内容の行が追加されたorz)・・・もしかして AliExpress での買い物並に時間が掛かる? orz
★追記 2022/10/01
漸く届きました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
下の写真が出来上がったプリント基板のトップ面です。今回 ZIF ソケットのフットプリントを修正して幅を狭くしていますが、少し狭すぎました^^;
でも足を少し曲げると入るので問題ありません。
VppConverter プリント基板(トップ面) |
|
下の写真がボトム面です。左上の "C4" のシルクのCが見えなくなっていますね^^;
VppConverter プリント基板(ボトム面) |
|
上記のように軽微な問題が2点あったものの機能上は問題無いと思います。
表面実装部品を実装後のボトム面が下の写真です。今までは SOP パッケージは半田ごてで半田付けしていましたが、今回は他の部品と同様にクリーム半田を使ってヒートガンで半田付けしてみました。クリーム半田の方が速く綺麗にできました。
表目実装部品実装後(ボトム面) |
|
ボトム面の部品を実装後にトップ面の表面実装部品(と言っても USB コネクタと LED 及び電流制限抵抗)の半田付けを行いました。今回は上記の SOP IC と同様に USB コネクタもクリーム半田で半田付けしてみました。ピン間隔が狭いのでピン毎にクリーム半田を塗ることはできませんでしたがヒートガンを当てると綺麗に分かれて半田付けできました(今までは半田ごてと吸取り線を使って半田付けしていました)。
表目実装部品実装後(トップ面) |
|
残りはリード部品と ZIF ソケット及びピンヘッダの半田付けなので楽です。注意点として ZIF ソケットの半田付けの前にロムライタとの接続用のピンヘッダを半田付けする必要があります。また ZIF ソケット直下のピンヘッダは ZIF ソケットと干渉しないようにトップ面からの出っ張ったピンの部分をニッパーでカット後に半田付けしました。
ZIF ソケットは前述のようにフットプリントの幅が少し狭いのでピンを内側に曲げてから半田付けしています。
部品実装が完了したトップ面とボトム面の写真を貼っておきます。
部品実装後(トップ面) |
|
部品実装後(ボトム面) |
|
VppConverter が完成したので 手持ちの UV-EPROM を使って動作確認を行いました。結果は 2716/2732/2764 の3種類の UV-EPROM への書込みが成功しました。
今回作成した VppConverter は外部から供給された 5V 電源を昇圧して Vpp 用の 21V/25V を生成していて内部回路のグランドは 外部電源である USB のグランドと同電位ですが、ロムライタ(TL866II Plus、以降 TL866II と記す)側のグランド(ロムライタ側の USB のグランドと同電位)と電位が異なります。
従ってロムライタを接続したパソコンのUSBから VppConverter に給電しないよう注意する必要があります。モバイルバッテリからの給電が安全です。
以降に確認結果の詳細を記録しておきます。
- NEC製 uPD2716D (Vpp:25V)
TL866II のデバイス一覧には無いのでデバイスとして INTEL M2716 を選択した状態で試験しました。
VppConverterによる Vpp の変化を確認するために、最初に UV-EPROM を TL866II に直接つないだ状態での書込み時の波形を確認しました(下図)。
下図で ch1(黄色)が Vpp で ch2(水色)がCE/ です。TL866II に直付けなので Vpp が18V になっていて書込みは失敗します。
2716 ダイレクト接続時の波形
次に VppConverter を使って書き込んだ際の波形が下図になります。Vpp は想定通りほぼ 25V になっています。
2716 書込み時の波形( VppConverter 使用時)
書込み後の TL866II の画面が下図で、書込み後のベリファイも成功しています。
VppConverter 使用時の書込み後の画面表示
- NEC製 uPD2732D (Vpp:21V)
TL866II のデバイス一覧に無いのでインテルの 2732A を選択して確認しました。
2732 問題(書き込み時に CE/ が High のまま)はソフトウェアの問題なのですがソフトウェアがすぐに対応しそうにないことからハード対応するということを前回の記事で書きました。
VppConverter 経由で 2732 を接続し、書込み動作を行った際の波形が下図になります。ch1(黄色)が Vpp で ch2(水色)が CE/ です。Vpp は想定通り 21V になっていますし、 CE/ も髭は発生していますが想定通りに Vpp が High の時に low になっています。
2732 書込み時の波形( VppConverter 使用時)
書込み後の TL866II 画面が下図になります。書込みは成功していますね。
2732 書込み後の画面
- 富士通製 MBM2764 (Vpp:21V)
富士通製 MBM2764 は TL866II のデバイス一覧にありました。デバイス選択後の TL866II 画面が下図になります。
MBM2764 の Vpp はデータシートでは 21V ですが、TL866II では 12V に設定されています。このように TL866II は UV-EPROM のパラメータ設定が間違えている場合があるので注意が必要です。
MBM2764 選択後の画面
VppConverter では TL866II からの Vpp が 18V の場合、内部で昇圧した Vpp に切り換えているので Vpp を 18V に手動で設定し直して書込み試験を行いました。書込み時の波形が下図になります。ch1(黄色)が Vpp で ch2(水色)が PGM/ です。
MBM2764 の書込み時の波形
書込み後の TL866II の画面が下図になります。ベリファイも通り、書込みは成功しています。
MBM2764 の書込み後の画面表示
以上が書込み試験時の波形等の記録です。
最後に 2732 書込み時の写真を貼っておきます。2732 問題をハードで対応しているのでジャンパ接続不要でスッキリですね^^
2732 書込み時の様子 |
|
★追記 2022/07/16
手持ちのUV-EPROM を使って今回開発した VppConverter での書込み試験を行った結果をメモしておきます。
書込み試験でのデータは GAMEインタープリタ(0000H~0CB4H)を用いました。
No. | Maker | Type | Vpp | Result |
---|---|---|---|---|
1 | NEC | D2716D | 25V | OK |
2 | FUJITSU | MB8516 | 25V | OK |
3 | SSS | M2716F1 | 25V | OK |
4 | NEC | D2732D | 21V | OK |
5 | MITSUBISHI | M5L2732K | 25V | OK |
6 | FUJITSU | MBM2732A | 21V | OK |
7 | NEC | D2764D | 21V | OK |
8 | NEC | D27C64 | 21V | OK |
9 | FUJITSU | MBM2764 | 21V | OK |
★2022/07/17 NEC D2764D を追加
※ST M2732A は 2732の書込み問題の記事の最後の方に追記で 2732 問題が発生している状態でも書き込めるということを書きましたが、大きなデータを書込むと 0800H のアドレスの読込みデータが不一致になりました。
VppConverter を使って書込みを行うと 0000H で書き込みデータ( 0C3H )が 0FFH に読めるというエラーが発生しました。
この ROM 自体が壊れている可能性があります。
★追記 2022/09/02
需要があるか否かは不明ですが試験的に完成品を BOOTH で販売することにしました。
検査時間等も入れると組立は結構時間が掛かるもんですね。でも表面実装部品は取付けた状態にしないと敬遠されそうだし、部品を部分的に実装した状態では検査し辛いし、悩ましいですね。
★追記 2022/09/09
最近は基板の製造を ELECROW さんに依頼していますが、ELECROW さんでは現在 5 枚の基板製造を 1 ドルで行うキャンペーン中です。送料も Yun EXPRESS(8-11 Business Days) で $7.33 だったので、円安なのに従来よりも安く上がりました^^
この ELECROW さんのリンクから新規登録すると 500 points ($5) が貰えるそうです。初オーダー時にこちらにもキックバックがあります。
★追記 2022/09/21
数個ですが BOOTH へ出品したところ、直ぐに完売してしまいました^^
部品実装、洗浄、検査等に時間が掛かって余り乗る気ではなかったのですが、欲しい人がいるのであれば、増産(と言っても個人レベルでは数個単位^^;)すべく、追加の PCB 製造を JLCPCB さんへ初めて依頼しました。
格安の送料(SHIPPING CHARGE: ¥143.60)で、かつ製造もかなり速くていい感じです。
JLCPCB さんへの初めてのプリント基板製造依頼 |
|
★追記 2022/09/27
JLCPCB さんの送料が格安なのは良かったのですが、shipping されてからはスローモーションです。毎日トラッキングを確認するのが日課になってしまった・・
JLCPCB さんの格安送料で待ちぼうけ |
|
★追記 2022/09/29
18:05 現在において上記の状況から進展無し(同じ内容の行が追加されたorz)・・・もしかして AliExpress での買い物並に時間が掛かる? orz
JLCPCB さんの格安送料で待ちぼうけ2 |
|
★追記 2022/10/01
漸く届きました。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
TL866II Plus用VPP:21V/25V対応アダプタの製作(その4)回路更新 [その他]
前回の記事で書いたように TL866II Plus(以降、TL866IIと記す)で 2732 を書き込む際に発生する問題は Vpp 電圧が 18V 以下の 2732 でも発生する問題であり、現状の対策は CE/( 18 番ピン)を強制的にグランド( 12 番ピン)に接続する方法しかないようです。また、この問題に対してソフトウェアがすぐには対応しない可能性もあるので今回作成する VppConverter( eBay で同種の基板が VppAdaptorと言う名称で販売されていたので名称を変更)でハード的に対応することにしました。
上記の既存の対策は TL866II からの CE/ をグランド接続し TL866II 側の負荷が大きくなりあまり宜しくない(そもそも 2732 を焼く時だけジャンパー接続するのは面倒)ので下図のように Vpp でオンするトランジスタの出力とダイオードORを取って 2732 の CE/ として供給するようにします。このトランジスタは 2732 の場合のみオンになるので追加の操作は必要ありません。
6/23 に Elecrow さんに製造依頼した基板が本日( 7/3 )に届きました。過去の経験から Elecrow さんでは小さめの基板は10枚作ってくれるようで、今回も予想通り 5 枚の発注で予備分も含めて 12 枚届きました^^
しかし、次の問題があったため、上記の 2732 対応も追加して改版することにした次第です。
改版した全体の回路図が下図になります。
グランドベタ化前のパターンが下図です。前回よりもサイズを少し小さくしました。
グランドベタ化後のトップとボトムのパターン図も貼っておきます。
トップ面とボトム面の3D表示が下図になります。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
上記の既存の対策は TL866II からの CE/ をグランド接続し TL866II 側の負荷が大きくなりあまり宜しくない(そもそも 2732 を焼く時だけジャンパー接続するのは面倒)ので下図のように Vpp でオンするトランジスタの出力とダイオードORを取って 2732 の CE/ として供給するようにします。このトランジスタは 2732 の場合のみオンになるので追加の操作は必要ありません。
2732 問題対応の追加回路 |
|
6/23 に Elecrow さんに製造依頼した基板が本日( 7/3 )に届きました。過去の経験から Elecrow さんでは小さめの基板は10枚作ってくれるようで、今回も予想通り 5 枚の発注で予備分も含めて 12 枚届きました^^
しかし、次の問題があったため、上記の 2732 対応も追加して改版することにした次第です。
- ROM ソケットの幅
2764 のフットプリントをネットからダウンロードし使用したが、ソケット無しの直付けを想定したもののようで幅が広すぎたので修正した
- ROM ソケットのピン穴サイズ
ZIF ソケットの足は横幅が大きく入らなかったので 30 Thou(穴径)/ 45 Thou(外径)のピン穴を 40 Thou / 54 Thou に変更した
改版した全体の回路図が下図になります。
VppConverter 回路図( Ver 0.02 ) |
|
グランドベタ化前のパターンが下図です。前回よりもサイズを少し小さくしました。
VppConverter パターン図(グランドベタ化前) |
|
グランドベタ化後のトップとボトムのパターン図も貼っておきます。
VppConverter パターン図(トップ面) |
|
VppConverter パターン図(ボトム面) |
|
トップ面とボトム面の3D表示が下図になります。
VppConverter 3D表示(トップ面) |
|
VppConverter 3D表示(ボトム面) |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]