2018年06月30日

CD-4デモジュレータ続き

もうちょっと、何をしているのか書いてみます。
まずは変調信号を取り出すためにFIRフィルタで30±10kHzを取り出します。
その信号に、30kHzのsin,cos信号を乗算します。あとは乗算結果をarc tan2すれば位相情報として取り出せるのですが、
ノイズが大きく計算誤差が大きいため、sin,cosを乗算した結果に対しDC〜15kHzの
FIR ローパスフィルタでノイズを除去し、その後arc tan2で角度に変換します。
FM変調は角度の変化が信号レベルですのでサンプリング毎の角度の変化量が
電圧レベルになりますので前回の計算結果から今回の計算結果を引き算し、
位相の回転(360°超え)補正を行い、再度可聴帯域パスフィルタをFIRで行うと
30kHzでFM変調された信号の復調が完了します。
posted by プー at 11:53| Comment(0) | オーディオ関連 | 更新情報をチェックする

CD-4デモジュレータ

最近の若い人達はレコード自体を聞いた事が無い、という人も多いと思います。
そういう僕自身もCD世代で最初にレコードを買ったのは最初にCDを買ったのより後、という
世代なのですが、レコード全盛期時代、70年代には一時期、4チャンネルブームがあり、
レコードでもいくつかの方式で4チャンネル録音の規格が出来ています。

その中でもマトリックス方式という、分離度を犠牲に普通のステレオと同じ左右の壁面に
4つの音を位相操作で入れ込む方式と、前後の差分を可聴帯域外に変調して録音する事で
理論的に完全分離を可能とするディスクリート方式の大きく分けて2種類の方法がありました。

この後者、ディスクリート方式で唯一、ある程度の普及ができたのが、日本ビクターの開発した
CD-4方式で、左右チャンネルの前後の差分信号を30kHzでFM変調し、左右チャンネルの前後の
和信号をベースバンドにその上に変調信号を重畳する形でレコードにカッティングしています。
通常のレコードプレーヤーで再生すると、30kHzは普通の人の耳には聞こえないため前後が
混ざった左右の音として聞こえるため、通常のステレオとコンパチビリティのあるディスクリート方式
4チャンネルという意味でCD-4と名づけられています。

再生するときには30kHzで変調した信号をある程度正確に再生する必要があるため
45kHz程度まで再生可能な専用のレコード針・低針圧カートリッジ・低容量シールド線等を
用いたレコードプレーヤで再生し、デモジュレータという装置で30kHzのFM(PM)復調、
ベースバンド信号とのマトリクスで前後の分離を行います。
このデモジュレータという装置が無ければ4チャンネルとして再生はできないのですが、
たまにまだ中古ショップやネットオークション等でも出品されています。
ですがそれほど入手性の良い状態では無いですし、70年代前半のものですので
いつ壊れてもおかしくないと思います。ですので、作ってしまおうという訳です。

実は今から数年前に、EPLDとアナログアンプ・フィルタ・コンパレータを用いて30kHz信号を
取り出し、パルス化し、カウンタで周期を測定する方法で復調する方式のデモジュレータを
作ったことがあります。今でもちゃんと動きます。
ですが、30kHz付近の変調信号を取り出すのにLCを用いたアナログフィルタを用いており、
ちょうど良い周波数に合わせるのは部品の入手の点から困難であること、またカウンタでの
復調であるためクロック周波数にもよるが分解能を稼げない=Dレンジが狭くなるという問題があり、
またPCに最初から内蔵される標準音源も最近の物はHD化され、96kHz,24bit等、
CD-4の復調には耐え得るサンプリング周波数・分解能(イコライザを通すと高域がカットされて
しまうためイコライザアンプは通せず、カートリッジの信号(数mVレンジ)を直接入力することが
容易な方法であるため、高い分解能が必要)が誰でも準備できる状態であるため、これらの
HD対応音源内蔵のPCを用いてCD-4システムのデモジュレータをソフトウェアで
作ってしまおうと考えています。

実はすでに30kHzの復調部分まですでに完成しており、前-後の差分信号をwavファイルとして
生成するプログラムは完成しています。あとはベースバンドの信号と足し算・引き算するだけ
なのですが、どのくらいの比率で計算するか(これをセパレーション調整といい、
針やカートリッジ交換時に行う必要が当時からありました)を調整すればいいのですが、
なにせCUIベースのプログラムであり、スライドバーでリアルタイムでの調整等の手段が
使えないのと、マルチチャンネルwavファイルの作成方法が今一わからない、本当は音源から
直接データを受けて変換し、直接音源から再生したいがDirectSoundを使う?
もっとよく分からないのでファイルでのやり取りをしている等のまだ未完成部分の多い
状況になっています。
posted by プー at 02:19| Comment(0) | 日記 | 更新情報をチェックする

2018年04月29日

Midi。。。

先日レトロエクスプレスで購入したゲーム「CELIA」が動作しない原因を一生懸命
調べているのですが、一部わかってきました。
一つはDMAの回路に一部間違いがあり、16bit転送が正常にできていないようでした。
この部分は修正したのですが、次はEAFA09番地に一生懸命読みに行くのを繰り返す
永久ループに入っているようです。
アドレスマップでは、このアドレスは純正のMIDI I/Fのようです。ですので、
MIDI I/Fは無いよ、というのをドライバが認識してくれればいいのですが、どうやら
X68000ではデバイスが在るか無いかはアクセスしたときにバスエラー?が
発生するかしないかで判別しているのではないかと想像します。
使用しているMPUコアのtg68は割り込み等の例外処理が実機と異なる動作を
することが分かっており、そもそもバスエラーが存在しません。ACKを返さないと延々
待ち続けてしまいます。バスエラーはベクタ番号02ですので代わりにベクタ番号02の割り込み
をかけても、割り込みとバスエラーではスタックに積む内容が異なるため正常には動作しません。
(IOCSからブートするときにメモリ容量確認か何かでユーザメモリ最終番地にアクセスするようなのですが
この時にもバスエラーを使用するため、この部分を回避するためにSRAMの初期値に細工をしています)

代用案として、MIDI I/Fを仮に作ってしまうと思います。YM3802が乗っているだけみたいなので
データシートも落とせたし、なんとかなるかな。
posted by プー at 09:56| Comment(7) | 日記 | 更新情報をチェックする

2018年04月28日

キーボード関連修正

ディスクエミュレータのキーボードがディスクアクセス等で飛ぶ問題がありましたので修正しました。
release-F68k_DE0CVDEMU.180428.qar
従来はGPIOを介してエミュレータに繋げていましたが、FIFO介してに変更しています。
posted by プー at 07:24| Comment(3) | リリース/X68k | 更新情報をチェックする

2018年04月25日

レトロエクスプレスに行ってきました

FPGAでX1のクローン等を開発されているX1 Centerのすーぱーたーぼ様に紹介いただいて
レトロエクスプレスに行ってきました。もちろん来場者としてです。
実はFPGA版のX68kを展示したいという事前相談を受けており、どうぞ使ってください、ということで快諾したのですが、
折角展示されるのなら見てみたい、ということで(遥々バスで数時間掛けて)東京まで行ってきました。
折角東京まで行くのなら、ということで秋葉原にも寄ってきたのですが。

P_20180422_141539_vHDR_Auto.jpg
もう入って正面の席に展示されておりました。実機を模擬したケースを作られ、その中で動作させているとのこと。
隣には同じく実機を模擬した箱に入ったX1 centerさんのFPGA版X1が動作しております。
ちなみに通常はHuman68kが動作していましたが、お願いしたらグラディウスを起動してくれました。
僕自身はX68k実機を持ち合わせていないので、公開されているHuman68k、SX-Window、Ko-Windowとフリー公開されている
いくつかのゲームしか動作させていなかったのですが、グラディウスも何とか怪しくも動作しているようです。ただし、グラフィックス画面の
処理でおかしな部分があるらしく、背景は異常だったようです。

そんな中、別のブースでX68k用の、珍しく3.5" FDDで販売されているゲームがあったので、せっかくなので動作確認用もかねて
一つ購入してみました。
P_20180425_215957_vHDR_Auto.jpg
CELIAというアクションパズルゲームだそうです。だそうです、というのも動作確認用に購入しましたが、案の定、正常には起動しない
ようです。Z-Musicというドライバ?の読み込みで失敗するようです。ちょうどデバグ用の良い機材として使わせてもらおうと思います。
posted by プー at 22:37| Comment(0) | 日記 | 更新情報をチェックする

2018年03月04日

ADPCM対応

先日、OPMには対応しましたが、ADPCMが未実装だったので
ADPCMも実装しました。
ADPCM実装の中で、DMA(CHAINモード)の処理に間違いがあったので
DMA関連も見直しをしています。
ADPCMとOPMを同時に再生させると飽和して歪んでしまうので
OPMの音量調整をしていますが、果たして実機ではどの程度の
音量バランスなんだろう。。。
実機はどちらもDAC出力の後をアナログ合成しているので
どのような設計でも可能なハズですが。
release-F68k_DE0CVDEMU.180304.qar
posted by プー at 09:24| Comment(8) | リリース/X68k | 更新情報をチェックする

2018年02月24日

OPMバグFIX

FDDエミュレーションによるブロックRAMの使用量増加に伴いブロックRAMの使用量を
減らすため、OPMレジスタのアクセス方法を変更していましたがバグがあり正常に
動作していませんでした。
バグFIXを行い、とりあえず音が出るようになりましたのでアップします。release-F68k_DE0CVDEMU.180224.qar
posted by プー at 23:16| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年02月23日

PC88もDiskエミュレーションです

X68kでディスクエミュレーションが大体正常に動作するようになりました。
もともとディスクエミュレーション部分はFDD,HDD等のドライブをエミュレーション
する設計で記述しましたので機種依存にはなっていません。最初からPC88でも
エミュレーションできるように設計しています。
ですのでPC88にもディスクエミュレーションを内蔵させました。
release-de0cvdemu.180222.qar
ディスクエミュレーション部分はRTL、NIOSのバイナリ共に共通です。
.qarを展開するとそれぞれのディレクトリに展開されると思いますが
開発している側ではディスクエミュレーションという一つのディレクトリに
なっていますので、展開した後で共通化できると思います。

最近はフロッピーディスクの入手性がどんどん悪くなってきています。
ですのでエミュレーションによって少しでもディスクの使用数を減らせるように、
という意図で作っています。
posted by プー at 00:54| Comment(0) | リリース | 更新情報をチェックする