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) | 海外衛星放送 | 更新情報をチェックする

2017年03月28日

DiSEqCコントローラ

すごく久しぶりの更新になってしまいました。
二人目の子供も生まれ、いろいろと忙しい日々が続いております。

さて、通信衛星(静止衛星)は赤道上空に並んで配置されており、H-Hマウントと
呼ばれる一軸の回転装置を使っていろんな衛星の方向を向けることができます。
続きを読む
posted by プー at 22:49| Comment(0) | 海外衛星放送 | 更新情報をチェックする

2016年12月18日

秋月赤外線リモコン

開発中(ほぼ完了)のオーディオセレクタで、秋月の赤外線リモコンを使っているのですが、
どうもこいつは買ったときから調子がよくありませんでした。
一緒に受光ユニットも購入しましたが、コードっぽい波形ではなく、一発のパルスが出るだけです。
電池を付けたり外したりすると動くようになったので使い始めましたが、少し時間を置くと
また正常な出力が出なくなります。
まぁ、そういう物なのか、または外れでも引いたかと思ってはいましたが、秋月電子に
寄る機会がったのでもう一枚購入したところ、まったく同じ現象でした。
折角2枚あるので片方分解し、基板を見たところ本来チップコンデンサを実装
すると思われるランドに100uFのアルミ電解が実装されています。送信ICのパスコンのようです。
おそらく電源系に問題があることが分かっていて何かの対策をしたのだろうということが
予測できましたので、とりあえずアナログテスタでスイッチを押したときの
このコンデンサの電圧を測定したところ、一瞬電圧が低下しています。
LEDは(ダイオードは大体みなそうですが)順方向電圧で定電圧特性を持っていますので
点灯させるときに低インピーダンスを加えると過電流が流れるのですが、みたとこ
LEDのアノードは電源+に、カソードはICに直接入っており、おそらくこのICは
オープンコレクタで駆動し、電流制限等していないため電池の電圧がLEDの順方向電圧に
引っ張られ、電圧が降下しICの動作が異常になっていると予測されます。
使用しているのはボタンのリチウム電池ですが、リチウム電池は電流を流さない
状態で保持すると内部抵抗値が上昇するボルテージディレイ現象があります。
これは電流を流してやると絶縁膜が破壊され、内部抵抗が低い状態に復活するのですが
そのため、長時間店頭で保管されている間や使わない間に内部抵抗が上がり、
LED点灯時にICの動作に必要な電圧が得られなくなることが原因ではないかと予想
されます。
であれば、電源電圧が低下するほどLEDに電流を流さなければいいので
LEDに直列に電流制限抵抗を入れれば良いはずです。
本来どのくらい流す設計なのかわかりませんが、手持ちで10Ωの抵抗が
あったので、この抵抗であればLEDの順方向が1.4V程度だとすると160mA程度
流れる計算になるのでこの抵抗をLEDに直列に入れてみました。
remocon.jpg
入れて数日経過を見ていますが、特に今のところ今までのような不具合は
発生していないようです。
(アルミ電解と並列にタンタル電解も入れてみましたがこれは効果なしでした)

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

2016年12月11日

TOWNS

先日,opencoresopencoresを眺めていたら、最近は(結構前からかもしれないが)
ia32互換のprotect modeを持ったcoreもラインナップされているようです。
これはちょっと、触ってみないと、と思って
・ao486
・v586
を触って見たところ、DE0-CVで使用しているFPGAでフィッティングしたら
ao486はほぼいっぱい、v586はまだ結構余裕のありそうな容量でした。
v586であれば、もしかしたらTOWNSも実現できるかもしれません。
Zet/98が挫折し続けた状態なのですが、これはその特徴であるGDCの動きがどうにも
よく分からないため、半ばやる気が失せております。TOWNSはもともと個人向けに
ゲームその他に特化したアーキテクチャで設計されていますので、GDCのような
ベクトル描画等、凝った回路は入っていないようです。(FM-RはPC-98と同じ路線
だったと思うですが、そちらには入っているのでしょうか。)
TOWNSのテクニカルデータブックを中古で見掛けたので立ち読みした感覚では
そんな感じがしました。
問題は、TOWNSの特徴であるCD-ROMです。接続方法としては手っ取り早いのは
USB-CDROMの接続ですが、これをハードウェア単体で内蔵ドライブとの変換を
しようとすると結構大変な異になるでしょう。だとすると、変換用にNios2を
入れましょうか。それにUSBホストのIPを入れて、ついでにFDDもUSB-FDDが
使えるようになると便利だと思います。
あと、TOWNSは富士通なのでFDCが富士通系のFDCだそうで、これは触ったことが
有りません。USB化するのであればどっちにしろ最初からの対応になるので
関係ないかもしれませんが、コマンド一つ一つ動作を調べる必要が有ります。
posted by プー at 10:28| Comment(0) | 雑記 | 更新情報をチェックする