2019年01月12日

ADPCM修正

前回の修正でも、無関係部分の修正を少し加えると変な音になる、という問題があり、
ADPCMとOPMのミキシング前に同期化させてみたり、ミキシングとDACの前で同期化させてみたりしましたが、
どうもADPCM回路への入力がおかしいということに気づきました。
「音」回路とプロセッサ周り、画像周り、FDC周り、ディスクエミュレータ周りでそれぞれ別のクロックを
使用していますが、ADPCM回路でプロセッサクロックでの制御信号を音クロックで動作するADPCM回路に受け渡す部分で
タイミングに問題があったようです。あと、ADPCMからDMAへのリクエストもたまに失敗するようです。
プロセッサ側クロックでラッチするレジスタを間に1段入れることで正常に受け渡しができるようになりました。
複数のクロックが絡むと検証が難しいです。
release-F68k_DE0CVDEMU.190112.qar
posted by プー at 20:06| Comment(0) | 日記 | 更新情報をチェックする

2019年01月09日

ADPCM等修正版

新年あけましておめでとうございます。2019年もよろしくお願いいたします。

さて、以前からADPCMの音が抜けたような音になっているという感想があり、
ADPCMの再生を少し見直しました。
内容としてはADPCMの更新期間内に内挿(補間)を入れています。
また、DMA CH2でデータ転送中にADPCMの転送要求が来る、ということも想定されるため
従来は優先順位は転送開始時にしか参照していませんでしたが、バイト・ワード単位での
タイミングで優先順位の参照をするように更新しました。
release-F68k_DE0CVDEMU.190108.qar
posted by プー at 08:10| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年12月27日

HDMI(仮)対応

DE0-CVにはVGAコネクタが付いており、特にデジタル出力は無くても画面はきれいに
映るのですが、X68000は65536色(各色5bit+輝度1bit)に対し、DE0,DE0-CVは各色
4bitしかDACを持っていないので4096色しか表示できません。
なので少しでも現物に近い表示が出来るよう、各色のLSBをドット毎・ラスタ毎に
点滅動作させることで見た目で1bit増やしていましたが(最高輝度の"1111"に
点滅動作を入れてもそれ以上明るくはできないので31段階×3色=29791色)、
コントラスト制御等もできない為、DACによるディスプレイ制御ではなく
HDMI(コネクタはHDMIコネクタを使いましたが音声は入らない為、実態はDVI)での
デジタル画像出力に対応させました。
release-F68k_DE0CVDEMU.181227.qar
一応、RGB輝度からHDMIのtmdsに変換する部分は8b/10b、2b/10bだけでなく
4b/10bおよびガードバンドにも対応させてはいますが、音声パケット構造の詳細が
分からないのでただのDVI信号です。
tmds変換にはこちらを参考にさせてもらっています。
(8b/10b部分はまんま、VHDLに書き直させて頂いています)
posted by プー at 20:08| Comment(0) | 日記 | 更新情報をチェックする

2018年12月13日

DAC修正版(X68k)

と、いうわけでX68kの音声用DACも変更しました。
release-F68k_DE0CVDEMU.181212.qar
posted by プー at 00:20| Comment(3) | リリース/X68k | 更新情報をチェックする

DAC修正版

PC88、久しぶりの修正です。
とはいっても、PC88だけでなくX68共通部分の修正なのでX68も更新です。

音声再生用のDACがあまり音が良くなかったのですが、XilinxのApplicationNoteに
良いΔΣDACのRTLがあったので参考に、VHDL化しました(オリジナルはVerilog)
DE0バージョン:release-de0.181213.qar
DE0-CVバージョン:release-de0cv.181213.qar
DE0-CV ディスクエミュレートバージョン:release-F68k_DE0CVDEMU.181212.qar
posted by プー at 00:18| Comment(0) | リリース | 更新情報をチェックする

2018年11月03日

CD-4ディモジュレータ改良版

CD-4の30kHzで変調されている差分側信号にはノイズ低減の為にANRS(≒dolby B)が
掛けられています。
今までANRSの復調回路は入れていませんでしたが高音が少し耳につくので
入れてみました。
音量レベルに応じ、高音のゲインを調整するのですが、高音だけ取り出し、
音量レベルに応じて元の音から引いて減衰させています。

併せて、ノイズ等をキャリアとして認識し、復調をしてしまわないように
一定期間連続してキャリアを検出しないと復調を行わないようにしましたので
レコードの始まり前と終ったあとの無変調部分当でのノイズ発生を抑制しています。
release.181103.zip
posted by プー at 20:28| Comment(0) | オーディオ関連 | 更新情報をチェックする

2018年11月02日

次のネタ

CD-4ディモジュレータソフトもそれなりに動作するようになりましたし、
次のネタを考えています。
CD-4ディモジュレータは10年以上前から作りたいと思っており、今回の
ソフトウェアバージョンの前に30kHzのFM復調をコンパレータで1bit検出し
周期から求める方法で過去に作ったことが有りますが30kHz信号のみ通過する
アナログフィルタの再現性やFM復調の分解能荒さから、それに回路図らしい
回路図も書かずに製造したため特に公開もしていません。

ソフトウェアバージョンでは24bitサウンドカードを用いることで復調部分でも
それなりの分解能が確保できている筈であり、ソフトウェアのみなので公開も容易だ、
ということでみなさんに使ってもらえたらな、と思っています。

ところで、レコードを再生するのにわざわざPCを、それも本来は
イコライザを介して接続するべきプレーヤ出力を直接PCの音源に接続するのも
感覚的に気持ち悪い?し面倒で場所も必要なので、
このソフトウェアをハードウェア化して通常のイコライザ程度のサイズにして
しまえば使い勝手が良くなるのかな?と検討しています。
実はこのディモジュレータの構想の前にパソコンではなくこれを用いて
ディモジュレータを作ろうと思っていたのですが、
何せ出力が2chしかないので4ch出力するためにCODECをもう1個乗せれば。。。と
回路図とにらめっこまでしましたが、I2SバスをGPIOに引き出していない。。。等から
諦めていました。
そんな中、今までFPGAで色々やってきたし、最近は安いFPGAボード
出ているようなので、ADCやDACを外付けしてハードウェアでやっても
小さくて高音質なディモジュレータができるかな、と思っています。
但し、僕自身は(軽い近眼なこともあって)QFPパッケージのADC,DACを裸眼で
基板実装することに何ら抵抗はありませんが、CD-4レコードをリアルタイムで
味わった方々には実装がちょっときついかな。。。

で、CD-4ディモジュレータはFM復調をデジタル処理で行いますがFMラジオも当然FM復調です。
実はディモジュレータの復調部分はFPGA FMチューナ記事をかなり
参考にさせてもらっており、搬送波周波数の直交信号と変調信号を掛け合わせて
逆三角関数で復調するという方法はそのままです。
実はこれにも興味があり、僕も作ってみたいな、だけど受信可能周波数帯域が
狭いみたいだし。。。と思っていました。周波数帯域に関してはアナログ
フロントエンドのフィルタ部分をバリキャップで可変にしてバイアス電圧を
FPGAからコントロールすればワイドバンド化できる気がします。
使用しているADCも14bit/80MHzサンプリングの高スペック品を使用していますが、
アナログ帯域を狭めてしまえば(アナログフィルタで同調させてしまえば)
サンプリング周波数は20MHzもあれば十分に実用できると思います。
(但しADCのアナログ帯域はFM周波数を満足する必要はあります)
FPGA、DACはディモジュレータ、FMチューナで共用できるので一緒に入れてしまう
ことも考えていますが、公開した時に両方の機能が必要な人がどれだけいるか。。。
FMチューナでは周波数表示等で液晶ディスプレイが必要になるでしょうが
ディモジュレータでは必須ではない。。。等、まぁ不要な部品は実装しないで
ください、でも良いのでしょうが。
ということで、次はFPGA CD-4ディモジュレータ/FMチューナーでしょうか。

posted by プー at 09:32| Comment(0) | 雑記 | 更新情報をチェックする

2018年09月17日

DMA修正版

皆様から色々ご指摘いただき、DMAの動作異常に関して一部修正しました。
release-F68k_DE0CVDEMU.180917.qar

ご指摘いただいた皆様、ありがとうございました。

具体的には、DMA転送の8b,16b動作時アドレスの変化の仕方に間違いがありました。
(レジスタの解釈の仕方を間違えていました)
続きを読む
posted by プー at 01:36| Comment(2) | 日記 | 更新情報をチェックする