2016年10月06日

オーディオセレクタ説明です

どのような物を開発中か、説明します。
P_20161003_211348.jpg
まずはフロントパネルです。液晶とタクトスイッチが付いています。
P_20161003_211331.jpg
内部はこんな感じです。写真上から、RCA入出力基板×2(左右)、その上にAM/FMチューナー、
左中段が電源(+5V常時、+5V、-5V)と電源リレー基板、右に行って出力アナログスイッチ基板(各PIC12f1822×2)、
下段左が±5V用トランス、液晶およびメインコントローラ(PIC16F1939)、リモコン及びスイッチ
入力基板(PIC16F1827)です。

アナログスイッチ基板は感光基板です。3枚重なっていますが1枚目だけサラウンド用
回路と汎用蛇の目パターンが準備してあるので一回り大きいです。
それ以外の基板は全て蛇の目ユニバーサル基板です。
各基板を50pinのフラットケーブルで繋いでいますがこのケーブルには全オーディオ信号と
5Vバックアップ、±5V主電源、I2C信号が載っています。電源-メインコントローラ-リモコン基板を
繋ぐ10pinフラットケーブルは5Vバックアップ、リモコン割り込み信号、リレーON/OFFが載っていて
両ケーブルのI2Cラインは繋がっており、メイン基板のPICがマスターでアナログ切替からリレー制御まで
I2Cで制御しています。
posted by プー at 00:47| Comment(0) | 雑記 | 更新情報をチェックする

2016年10月03日

新プロジェクト

少し前の記事にも書いたのですが、最近感光基板を何枚も焼いて新しいおもちゃを
作り始めました。
FPGA/EPLDも使っていなければ、売り物のマイコンを使っちゃったりもしているのですが、
オーディオの切替機を作っています。
実は高校時代に何とか研究っていう授業でZ80とC-MOSの4051を使った切替機を作っているのですが、
それの大幅にバージョンアップした物にしようと考えています。
切替機の機能としては:
・入力数16(内3は内部で生成)
・出力数3(5.1ch相当) 各左右
・入力の内部生成はAM/FMラジオ、サラウンド、超低音LPF
・音量調整ボリューム付
・16入力と3出力の割り当てを記憶可能なソースセレクト
・アンプ電源制御
・リモコン操作
とこんなところでしょうか。真空管アンプを過去に幾つか作ったのですが、
いちいち本体の所に行ってソースを変えたり、音量を調整するというのは
居間で使うには面倒と思い計画しました。

これをマイコン(PIC)で制御していますが、3種8石のPICを使っています。
一つ目はメインマイコン。液晶画面やリモコンからの信号の処理。
二つ目はリモコンの受信と主電源制御
三~八はアナログスイッチ4051の切換え(+内蔵EEPROM)
です。
アナログスイッチ制御は本当は一つの4051に一つの8pinPICで可能だと
思っていたのですが、一ピン入力専用ピンが有るという事を買った後で
知ったため、仕方なく2石で2つの4051を制御していますが
14pinのPICを使えば1石で2つの4051を制御可能でした。(デバグでは実際に
それで行っていました)
posted by プー at 12:47| Comment(0) | 雑記 | 更新情報をチェックする

2016年09月22日

MSX用FDD

うちにはMSXロゴの入ったパソコンが3台あります。
1つ目はPanasonicのMSX2
2つ目はSONYのMSX2+
3つ目は1chip MSXです。
1つ目はいとこのお兄さんからの貰い物、2つ目は中古屋さんでジャンクで、
3つ目は普通に注文して買いました。
1つ目に、カートリッジに刺すタイプのFDDユニットも付けて貰ったのですが、
そのドライブが調子悪く、なかなかゲームがうまく動かない、という問題がありました。
中身のドライブはベルト方式ではなく現在のものと同じDDタイプです。
ですのでベルトの寿命劣化というわけではありません。2つ目のものは内蔵FDDが
ありますが、こちらも正常に動作しません。
どちらのドライブも、蓋を開けて中を見るとAT互換機と同じ形状のドライブが
入っています。当時は知識もなかったのでAT用のものに付け替えれば動くように
なるのではないかと、いろいろと実験してみましたが駄目でした。
結論から言うと、READY信号ではなくDiskChange信号が出ているから、なのですが
当時はまだインターネットからの情報もあまり無く、途方に暮れていました。
ですが、時は流れインターネットから、READY信号をとりあえずディスク検出スイッチ
から引っ張れば大丈夫という知識を得たため、現在は普通に動いています。

なのですが、それだけ苦労をしたためMSX用FDDには思い入れがあり、先日
秋葉原のBEEPさんでAT用と思われるFDDを使用したMSX用外付けFDDユニットが
発売されているのを見てから、うちのFPGA版MSX(1chipと、DE0でも移植されたものを
使ったことがある)のFPGAの中にFDCの機能を入れて、他にも僕みたいに
MSX用FDDゲームはたくさん持っているのにFDDが死んでて遊べない人のために
何とか出来ないか、考えています。
ハードウェアは、PC88やX68kで実績があるuPD765互換IPがそのまま使えると思うので、
あとはデュアルポートRAMを共有メモリのような形にしてFDDユニットとしての
スロットにでも入れて、もう片側はFDCから直接読み書き出来るようにハードで
組めば、そんなに難しくはない気がしますが、MSXの各デバイスはハードの差を
BIOSが吸収すればいいので、デバイス毎に異なるハードウェア構成です。
従い、実機からdisk biosを吸い出しても、それと異なるハードウェア構成の
FPGA版FDCでは動作しないはずです。
CP/Mでは、OSがBIOS/BDOS/CCPの3ブロックに分かれており、ハードの差異はBIOSが
吸収します。CP/Mの場合、ディスク関係はBIOSにはセクタ単位で読み書きできる
プログラムだけハードに合わせて作れば、あとはBDOSがやってくれるようです。
MSX用DISK BIOSが同じようなモジュール構成になっていると簡単なのですが、
MSX用FDDカートリッジには、刺せばDISK BASICが使えるように、FAT読み書きまで
出来るかなりの高機能なプログラムが入っているようです。セクタ読み書きであれば
簡単なプログラムで済みますが、FATに対応させるとなると相当な量のコードを
書かなければならないでしょう。
そうなると、FDDユニット内のfdc biosから機種依存部分ではない共通部分だけ
抜き出して、機種依存部分は一から書き直す、という形が簡単だと思いますが、
そもそもMSXのdisk biosはそのように作られているのでしょうか。
posted by プー at 02:12| Comment(0) | MSXネタ | 更新情報をチェックする

2016年09月03日

MPUコア変更完了、しましたが

MPUコアをtg68からao68000に変更の作業が一段落しました。
動かない原因は、DMA中にもMPUがデータバスを切り離さなかったことと
割り込みとDMAが同時にアクティブになったときにDMA転送のACKが
INTへのACKと認識され、DMA転送のデータがINTベクトルと認識されていた
ということでした。
この部分修正し、Human68kは無事、起動し、SX-WindowもKO Windowも
起動するようになりました。が、予想以上に遅いようです。
tg68を10MHzで動作させたときにはKO WINDOWのEPSの値が800を超えるのですが、
ao68000 20MHzでは400にも満たない数値です。
速度アップも見込んだ変更だったので残念です。

上記、分かった問題のうち、DMA中にMPUがバスを切り離さないのは、
tg68を使ったものでも同じ設計になっていましたので(tg68はASをネゲート後、
一度バスをリードに変えるらしく、そのタイミングでDMA転送に切り替えるため
tg68のクロックイネーブルを切っているのでうまくいっていたと思われる)
気持ちが悪いのでこの部分は修正しようと思います。
posted by プー at 18:23| Comment(0) | X68000 | 更新情報をチェックする

2016年09月02日

MPUコア切換えを行っているのですが

tg68からao68000へのMPUコア切換えを行っているのですが、なかなか何故か
上手くいきません。
バス幅変換も、割り込み関連もそこそこ上手くいっているように見えるのですが、
OSのbootにはまだたどり着けません。
SRAMの設定で内蔵ターミナルが起動する設定にし、bootデバイスを全部
無しにすると、ちゃんと内蔵ターミナルが起動しますが、
HDDやFDDから起動しようとすると毎回違った動作をしています。
違った動作というのは、エラーで止まったり、BOOTセレクタが表示されたり。
BOOTセレクタというのは初めて見ました。
FDD/HDDでエラーが発生し、ROMでは発生しないという事は恐らくDMA関連では
ないかと予想するのですが、DMA関連は特に変更が必要ではなさそうだったので
何も手を加えていませんし、SignalTapIIで見た範囲では、DMAは正常に動作して
いるように見えます。
ただ、FPGAのRAM容量から、そんなに沢山のモニタが出来るわけではないので
軽く見た範囲だけですが。
posted by プー at 15:37| Comment(0) | X68000 | 更新情報をチェックする

2016年08月25日

MPUコアを変えてみようと思います

FPGA版X68k互換機には、MPUコアとしてOpenCoresのtg68を使用していました。
このコアには
・割り込みがオートベクタしかない
・FC出力が無い
・バスエラーが無い
という問題と、
・クロックあたりの処理は早いが、クロック数を上げられない
という特徴が有ります。
この中で、X68kのBIOSではわざとバスエラーを発生させる場所が
有るのですが、この部分が正常動作しない為、現在はSRAMの設定で
この部分を回避しています。
ですが、ソフトによっては同じように処理することが有る可能性が有りますので
他にIPが無いか、探したところ、同じOpenCoresにao68000というIPが有りました。
このIPは
・データバスが32bitで、アドレスバスにA0~A1が無い
という特徴が有ります。それ以外は本物のMC68000と目立った差異が無さそうです。
データバス幅に関しては、ブリッジを作って変換することで16bitバスに変換できそうです。
速度に関しては、同じ処理にtg68よりも2倍くらいのクロック数を要しますが、
クロック数を3倍程度上げられそうですので、1.5倍程度、高速で動かせそうな状況です。
一部割込みでバグが有りましたが(割込み7はNMIの筈だがマスクが掛っている)
tg68よりも使いやすそうでパフォーマンスも高いのでこれに切り替えていこうと
思います。
posted by プー at 21:19| Comment(0) | X68000 | 更新情報をチェックする

2016年08月13日

X68kも更新です

同じPCB用にX68kも更新しましたのでRTLをアップします。
release-F68k_DE0CVDEMU.160813.qar
ディスクエミュレーション用しかまだ修正できてません。
続きを読む
posted by プー at 17:37| Comment(10) | リリース/X68k | 更新情報をチェックする

久しぶりの更新です

FPGA関係としては約1年ぶりの更新でしょうか。
内容に関してはあまり変更は無いのですが、最近感光基板を使った別の趣味で遊んでおり、
DE0-FDD等接続用の中継基板を感光基板化すれば綺麗に簡単に作れるかと思って
中継基板をパターン化してみました。
パターン作成はフリーソフトのPCBEを使わせてもらいました。
IOboard2.pcb
は僕が入手できた部品(ヘッドホン端子、USBコネクタ等)に合わせて設計されているので入手した
部品に合わせて修正してください。
フィルムはサンハヤトのインクジェット用がちょっと高価ですが綺麗に出来上がります。
使用する部品はDE0接続用基板はんだ付けタイプの40pinメスコネクタ、FDD接続用34pinオスコネクタ、
FDD電源供給(I2C出力付き)用にUSB Aコネクタ、抵抗アレイ コモンタイプ1kΩ×8が3個、
ヘッドホン端子基板タイプ(SW無)、D-SUB 9pinオス基板はんだ付け用×2、適当なパスコン×2、
秋月のRTCユニット RTC-8564NB(プルアップ無)、適当なスーパーキャパシタ、ショットキダイオード
それ以外に数本のジャンパー(抵抗の足等)が必要です。

従来のピンアサインは手配線で引きやすいように配置されていましたが、直接コネクタを
DE0に刺すことを考えると引きにくいアサインですのでピンアサインは最初から配置
し直していますので従来のRTLだと互換性がありません。
ピンアサイン変更後のRTLは
release-de0cv.160813.qar
ですのでこちらを使用してください。(まだDE0-CV用しか修正できていません)
中に入っているピンアサイン表は、修正していないので無視してください。そこまでは修正できていません。
ついでに、実家でジョイパッドを発掘しましたので、ジョイパッドに対応させています。2ポートありますが
DE0につなげた時に手前側になる方を使用します。(X68k等では2ポート共使用可能)
posted by プー at 17:31| Comment(2) | リリース | 更新情報をチェックする