忍者ブログ

X68ブログ

 サイト「X68000改造室」http://x68.aikotoba.jp の更新告知やサイト運営、X68の改造にまつわる小ネタを書いていきます。また、コメントを通して、サイトを見ていただいた方との交流の場ともしていきたいと思います。感想や疑問、記事の誤りなど、コメントいただければ、記事に反映していきたいと思います。

   

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

ダウンロードツール不具合解消!

スキャンコンバータの製作は一部物理的な工作はありますが、作業の大半はFPGAのプログラミングです。プログラム開発はFPGAのメーカーが提供するISE(Web版は無料)を利用し、HDL(ハードウェア記述言語)にはVHDLを用いています。工作マニアのアイディア実現にはとても便利なツールで試行錯誤しながらディジタル回路製作を楽しんでいます。

 さて、生成したプログラムファイルは専用ケーブル(DIGILENT HS1)を用いてパソコンからFPGAにダウンロードしています。以下はそのときにISEから呼び出されるツール IMPACT の実行画面です。
 スキャンコンバータの開発を進めて、ある時点から「Program」を指定すると、「ケーブルが他のアプリケーションから利用されています。はずしてやり直してください。」の旨の英文メッセージが出るようになりました。最初はそれの対応に手間取り、やっとソフト上で「ケーブルをはずす」作業を一旦行ってから、「Program」を実行するとダウンロードができることがわかり、ここ1ヶ月は面倒だとは思いながらその手順で作業を進めてきました。

 一昨日、なんとかならないかと、エラーメッセージをキーワードにして検索。同様なメッセージの対応をやりとりしている英語の掲示板にたどりつきました。そこでは、HS2(ケーブルの新しいバージョン)でのプログラミング不具合で、ISEのバージョンアップやそのプラグインソフトを選ぶことが解決策として交わされていました。私の場合はそれまで動いていたわけですので、いまさらバージョンの不具合とかはないだろう(新しいバージョンにアップするのも確かに手だとは思いますが、このソフト、インストール時間が半端でない)と思いながら、だめもとで、ケーブルメーカーのDIGILENTサイトからIMPACTのプラグイン(DLLファイル)をダウンロードし、マニュアルに沿って該当ディレクトリに上書き保存してみました。

 そして、うそのように元通りになりました。

★★★ メインサイトへのリンク 「X68000改造室」★★★




PR

解像度切り替えの自動化

スキャンコンバータの解像度変化への自動対応ができました。
当初の方法とは変えて、入力画像のピクセルクロックでカウンタを走らせ、同期信号間の水平、垂直の最大ピクセル数を調べさせて解像度モード判断を行うようにしたところ、安定して動作するようになりました。

もちろん、手動でも切り替え出来るようにし、例のDINコネクタのロータリーSWで、
 0:自動切替
 1:768X512 モード
 2:512X512 モード
 3:256X512 モード
 4:256X256 モード
 5:(リザーブ)
 6:(リザーブ)
 7:コンバータスルー
の各モードに切り替えできるようになりました。

ただ、やはり、手動・自動にかかわらずモード切替後に画面が真っ黒になることが時たまあります。一応、上記のSWでまた切替を行うと、映るようにはなります。

調べていくと、真っ黒の原因は画像の取り込み側でなく、表示側回路の不具合の様ですが、まだ解消には至っていません。

本日はここまで。

★★★ メインサイトへのリンク 「X68000改造室」★★★




XVI追加改造と小物製作

スキャンコンバータ制御回路のプログラムは解像度自動切り替え対応を除き、ほぼできてきましたので、いよいよFPGA基板の本体への組み込み作業を始めます。

手始めに、XVIメイン基板の追加配線。ディスプレイ制御コネクタから4本、イメージ端子の空きに配線しました。
何の配線かと言いますと、解像度手動切り替え信号をディスプレイ制御コネクタから与えるためのものです。現在はFPGA基板上のジョイスチックボタンから解像度モードを切り替えていますが、基板を本体に組み込むと操作できなくなります。

で、さらに製作したのがこちら。
DINコネクタにDIP形ロータリースイッチを組み込みました。これで、解像度モードを0~7で指定します。

以下は、本体に取り付けたところ。アイディアが浮かんでから実装まで1ヶ月かかりました。


★★★ メインサイトへのリンク 「X68000改造室」★★★




またもやバグ画像!

今度は、楽勝と思っていた解像度256×256の水平同期周波数15kHz版の対応で出てきました。
スペースハリアのゲーム画像がはげしく横ぶれしています。同期ずれではありません。

 解像度256×256では画像を走査するラインが256しかありませんので、それを垂直同期信号に対応したタイミングで取り込むと、メモリ上でも縦256ドット分しかありません。そのままSVGA表示すると画面の上半分の画像となります。画面いっぱいにするには、1ラインごとに二度読みさせればいいので、1ライン取り出したらメモリの読み出しアドレスをメモリのライン先頭に戻すという処理を加えたらこうなりました。

 確かにDDR2の順次読み出しが変則になったわけですので、調整が必要なのだと思います
が、はてさて・・・

 とりあえずの対応で、X68000からの読み込み時点でメモリの1ラインおきに入れるようにして、それを表示させました。以下はその画像で、画面いっぱいにはなりましたが、ライン間に黒の隙間が見えます。

 次に、これをなんとかしようと、今度は奇数ライン読み出し時に表示とともにFPGAのメモリに1ライン分記憶させ、偶数ラインの時にそれを表示させることにしたところ、きれいに表示されました。
 よく考えたら、我が家にはこの解像度モードのソフトがスペースハリアしかありませんし、それももう遊ぶことはないだろうと思いますが、スキャンコンバータの真価発揮はこの画像モードへの対応かとは思いますので、頑張ってみました。

 これで、予定の4種類の画像モードへの対応が完了しました。あとは、これら解像度モードの自動切り替えです。これまでも動作試験をしましたが、なぜかうまくいきません。水平同期周波数の違いで区別させればいいはずなのですが・・・。

★★★ メインサイトへのリンク 「X68000改造室」★★★




不可解・・・

スキャンコンバータ制御ソフト、昨日報告しましたように、あと一歩というところにきていますが、それまでの過程でひとつ解せない現象が出ていましたので、これも備忘録のつもりで書いておきます。

 256X512の取り込み対応で、SVGAの標準ピクセルクロック40MHzの1/3の13.333MHzを第3ピクセルクロックとしてDCMで発生させることにし、水平同期信号のタイミング設定用の各部の数値を標準値の1/3に設定し、プログラム生成。768X512、512X512は正常に取り込み、256X512は絵は流れて同期がとれていない状態とまずはなりました。

 そこで、第3ピクセルクロック用数値を少しいじって(例のように、HDEを1つ減らし、HBPを逆に増やす)、再生成したら、異常事態が発生しました。以下の画像をご覧ください。
 256X512モードならまだしも、関係ないはずの768X512モードで激しいノイズが混入するようになったのです(256X512モードはもちろん流れ画面)。この表示では標準ピクセルクロックで水平同期信号を作っているので、先の数値変更が影響を与える理由が見つかりません。もちろん、数値変更を元に戻すとノイズは消え、正常になります。数値変更は第3クロック信号で作る水平同期信号の、周期を変えず表示期間とバックポーチをわずかに配分調整をしているだけです。謎です(またか ^^;)。

 結局、このままでは埒があかないので、DCMで第3ピクセルクロックを作るのをやめ、DCMで作った第2ピクセルクロック27.273MHzをプログラムで分周して作り出すようにし(以下はそのVHDL文)、



同期信号生成用数値を全て第2ピクセルクロック用の値の半分にしたら、ノイズ発生もなく、256X512モードの表示同期が一発でとれました。

★★★ メインサイトへのリンク 「X68000改造室」★★★




カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

[02/01 ぱち(管理人)]
[01/31 saku39]
[12/27 ぱち(管理人)]
[12/27 saku39]
[01/20 ぱち(管理人)]

プロフィール

HN:
ぱち
性別:
非公開

バーコード

ブログ内検索

P R

Copyright ©  -- X68ブログ --  All Rights Reserved
Design by CriCri / Photo by Geralt / powered by NINJA TOOLS / 忍者ブログ / [PR]