2018年02月23日

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

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

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

DiskEmu改良版2

前回、ディスクの表・裏両面にイメージ用メモリとトラックメモリそれぞれを
使用してエミュレートしていると書きましたが、計4トラック分のメモリが必要で
HDLでRAMを想定したコーディングをした場合、自動でRAMに変換される設定に
すると、RAM容量が不足する状態になっていました。これではSignalTapIIも
まともに使えませんのでRAM容量を削減するためにイメージ用を表・裏で共通に
使用するように変更しました。
併せてOPM用レジスタも複数の小容量のブロックRAMに分かれてしまい
効率の悪い使い方になっていたため少し修正しましたが、何か間違えているらしく
音が出なくなってしまっています。
ですが、ディスクエミュレーションは正常に動作するようになったので
ひとまず公開してみます。
release-F68k_DE0CVDEMU.180222.qar
posted by プー at 00:44| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年02月10日

DiskEmu改良版

前回、FDD emulationを従来の.D88フォーマットからオリジナル.DDIフォーマットに
変更しましたが、一般的には.D88が普及していますし、関連ツールも豊富です。
.D88フォーマットの難点はトラックデータからD88フォーマットに変換するのに
NiosIIだと結構負荷になってタイムアウトになってしまう点です。これを
克服すれば.D88フォーマットの方が断然使い勝手も良いので、.D88のトラックイメージを
展開・復元する部分をハードウェアに置き換えました。
ソフトウェアだと数百msかかっていた処理が数十msで完了し、Niosは.D88の
データをSDカード上のファイルシステムに読み書きするのみです。
ただし、トラックデータとD88イメージデータの両方をメモリに確保する
必要があるのでかなりの容量が必要です。現在、表裏の両サイド分の
トラックデータとD88イメージをメモリとして確保しているのですが
そうするとSignalTap用のブロックRAMは殆ど残りません。
イメージ変換は一瞬で終わるので、両面トラック分確保しなくても、片面ずつでも
本来は十分なので、そのうちに変更したいと思います。
release-F68k_DE0CVDEMU.180209.qar
posted by プー at 00:10| Comment(4) | リリース/X68k | 更新情報をチェックする

2018年02月04日

修正版

PC88版で使用していたOPNの動作がうまくいっているので、X68k版のOPMも
本腰を入れて動作するように改造しました。といっても、元はOPNを
タイマだけでもとりあえず動くように、ということで該当部等の
レジスタアドレスだけちょっと変えた中身はOPNという物でしたが。
OPNは3チャネル×4スロットで、本物は1サイクル144クロックで
計算等を行っているようです。(3ch×4slot/ch=計12スロットなので
スロット当たり12クロック)
僕の実装ではOPN回路に突っ込むクロックが速いので、その分サイクル当たりの
クロック数を増やしていました。
OPMの場合は8チャネル×4スロットなので計32スロットありますが、
それを64クロックで1サイクルで動かしているようです。
でも、これではレジスタとして使用している同期RAMや内蔵IPでの
乗算は1クロック消費してしまうため、2クロックではスロットの計算が
困難です。その為、実機は4MHzクロックですが、FPGAでは8倍の32MHzで
駆動することで1スロット最大16クロック、1周期512クロックで動作する
回路としました。あとはスロット当たりの計算式等はOPNと同じです。
LFOやでチューンの類は何も実装していませんが、まぁそれなりに違い音が
出ているのかな?と思います。
また、FDDのエミュレーションが従来はかなりソフトで対応しているため、
シーク中に1トラック毎トラックデータを読み直す(実際には読み終わらないので
飛ばしながらロード)等によって実機よりもトラックデータを読み出すのに
時間がかかり、タイムアウトが発生している状況でしたが、処理の一部を
ハードウェア化すること(+NiosIIの動作クロックアップ)によって
ディスクイメージに対する正常な読み書きができるようになりました。
尚、従来はd88フォーマットを使用していましたが、今回からは
トラック内のデータをギャップやセクタヘッダ含め、ミッシングクロック情報も
含めて全データを保存するようにしたオリジナルフォーマット .ddiに変更しました。
.d88から.ddiに変換する変換ソフトはd88toddi.zipとしてソースをアップロードします。
通常のCプログラムですのでコンパイルして使用してください。(セグメント超えが
必要なデータサイズなのでDOS用C環境では正常動作しないと思います)

最新版FPGAソースは:
release-F68k_DE0CVDEMU.180203.qar
今回、コメントで要求がありましたのでdiskエミュレータ用のNiosIIプログラムのソースも
同梱してあります。
posted by プー at 00:04| Comment(0) | リリース/X68k | 更新情報をチェックする

2018年01月26日

久しぶりの更新です

FPGA版8801で、一応FM音源を内蔵させておりましたが、音は出るがふにゃふにゃな
音になっていました。一応OPNやその上位互換品のデータシート、アプリケーション
ノート等を読みながらコーディングはしていたのですが、記載のないパラメータ、
例えばエンベロープのxxレートの単位やゲイン0倍時の変調量など、勝手に
設定した部分が有ったのでかなり変な音になっていました。
また、名前がFM音源なので、本当に周波数変調を掛けていましたが、データシート
に記載の図を良く見ると周波数変調ではなく位相変調が正そうだという事も分かり、
同じパラメータを設定した時に実機やエミュレータと同じ音になるように聞き比べながら、
何とか近い音が出るように調整を行いました。
まだdetuneやKSには対応していませんが、それなりの音が出るようになったので公開します。

DE0版
DE0-CV版
1chipMSX版はそもそもFM音源回路が収まらないのでタイマのみの実装で変更有りません。
posted by プー at 19:34| Comment(0) | リリース | 更新情報をチェックする

2017年07月13日

真空管アンプの修理

先日真空管アンプの修理をした、とここで書きました。
修理といっても、壊れたわけではありません。実はこのアンプは海外で住んでいた時に
(220V地域)作ったものですが、いつか日本に帰っても使えるように、と100Vでも動作するように
設計してありました。もともとB電源とヒータに別々にトランスを持っており、どちらも1次側は
110V巻線が2本、独立してありました。直列につなぐと220V、並列(又は単独)に繋ぐと
110V(100Vでも大丈夫でしょう)で使えるという物です。最初から巻線を直列・並列の切替が
出来るようにスイッチも付けました。2次側はB電源は220V、ヒータ用は6V×2です。
なのですが、B電源用のトランスが断線してしまいました。(この時には確かに「壊れた」のですが)
購入した店で同じものを求めると、在庫は無く、数百個単位で注文しないと入らない
とのこと。仕方なく、ヒータ用の物はまだ在庫が有ったためヒータ用をもう1個購入し、
2次側にヒータ用の2次側を繋げ、110V×2→6V×2→220Vと元の220Vを本来の1次側から
得るように接続し直して対応しました。この時に、もともと+Bの整流出力は250V程度だったのが
この修理により220V程度まで低下してしまいましたが、一応動作しているようでした。

この状態で日本に持って帰ってきましたが、日本の商用電源は100Vで、110Vよりも
1割低いため、整流出力も200V程度までしか得られなくなってしまいました。

アンプの構成はパワーがEL84(6BQ5)のP-Pで初段は2SK30、直結の全段差動、更に2SK30差動の
プリ段になっています。EL84は当然B電源を使用し、プリの電源はヒータ電源を
整流したDC+10V(三端子7810)です。で、パワー初段の差動アンプはB電源を抵抗で
電圧降下させたものを電源としているのですが、差動アンプなので定電流駆動
しており、抵抗で200V程度電圧降下させ、50V程度の電源で中点25V程度で動作させる
設計だったようです。(作った時には手書き回路図を作ったと思うが。。。)
で、トランス変更で+Bが220V程度まで下がった時もまだ動作点がギリギリ
範囲内に入っていたようですが、200Vでは完全に下回ってしまい、
差動増幅用2SK30が全く動けない状態になっていました。

従い、今回の修理内容は、パワー初段を電源電圧に依存する+Bからでなく、
プリと同じ10Vから駆動するように変更しました。また、電圧が低いので
ドレイン抵抗を従来の12kΩから2.7kΩに大幅に下げました。定電流が
差動合わせて4mAですので動作点は5V程度になるはずですが、合わせて
ゲインは大幅に落ちます。これによってアンプ全体での裸のゲインが
低下する為、NFB量が低下し、ダンピングファクターはかなり悪化
していると思われます(音もそんな感じの音です)が、NFBの
抵抗を付け直すのも面倒ですし、とりあえず四畳半にも満たない書斎の
アンプなのでこのままとしました。
posted by プー at 01:21| Comment(0) | 雑記 | 更新情報をチェックする

2017年07月11日

更新滞っていますが

オーディオセレクタ、DiSEqCコントローラと、どちらも中途半端な状態で
更新が滞っております。
実は新築で家を建てており、どちらもこの家で使う為に開発してきたもの
です。
先日やっと家が完成し、オーディオセレクタは何とか居場所を確保
出来たところです。(スピーカを天井に埋め込み)
まだまだ荷物が片付かない状況なので当面、これ以上は手が付かないと
思います。
(ただ、何もしていないかというとそうでもなく、真空管アンプの音が
何故か出なくなったりしていたのでその修理位は新居でしています。)
posted by プー at 20:23| Comment(0) | 日記 | 更新情報をチェックする

2017年04月26日

DiSEqCコントローラ その後

FPGAを使ってH-Hマウントの制御を行うコントローラを設計しています。
H-Hマウントには同軸ケーブルに、電源重畳でコマンドを送ることで制御しますが
このコマンドがDiSEqCとして規格化されています。続きを読む
posted by プー at 22:20| Comment(0) | 海外衛星放送 | 更新情報をチェックする