2011年11月18日の日記の1番目の記事へのコメント
■黒往生修理
PALが期待通りに動かない問題ですが,Max Loaderにあるベクタテスト機能で確認してみたところ,何を入れても出力がLになってしまう状況で,やはり全然真理値表の値が反映されていないようです.真理値表の中身を適当に書き換えてコンパイルし直しても,ChipMaxの読み込み時に表示されるチェックサムは変更前と同じだったりして,そもそも生成されているコンフィギュレーション自体,何も変わっていないっぽい (´・ω・`)
H固定のピンを作って書き込んでみたら,そこに関してはちゃんと反映された (ベクタテストでHになった) ので,やっぱりFIELDとTABLEで作る真理値表にのみ,問題がありそうです.一体何なんだろう・・・と思ってググってみたら,同じような話が出てきました.よくわかんないけど,これは言語仕様のワナ(;´Д`)?
上記リンク先の回答にあるように,信号名の末尾の数字の後ろにさらに「_」をつけて,すべて展開して書いてやったら,ようやく真理値表が反映されるようになりました.よかったよかった・・・.いやしかし,リファレンスマニュアル読んで書いても,これはわからんよな・・・(;´Д`)
で,早速動かしてみたところ,_OE自体はちゃんと出るようになりました.やった!ただし,アドレスが間違っているらしく,画面が化けまくり(笑).ふーむ,この前予想した1本離れた所にあるピンの解釈が間違っているのかなぁ,やっぱ.
眠くて頭が回らないので,手っ取り早くケツイのPALをChipMaxに乗せて,ベクタテストで入力を変えて何が出てくるかを観察してみることにしましょうw.入力を色々と変えて観察してみたところ,例のカスタムチップ上で1本離れたところにあるチップは,どうもこれらのROMのアドレス範囲 (9.5MByte分) にアクセスがあった際に1になる信号らしいということが判明.うーん,25bit目じゃなかったか.というわけで,この観測結果を元に,真理値表を生成するプログラムを修正しました.
いくつかの入力パターンで,きちんと観測した結果と同じ値が出ていることを確認した上で,再度PALに書き込んで,いざ実機へ.今度こそ・・・動け・・・きたー!!!
というわけで,入手してから18日目にしてようやく直りました.いやー,今回は手強かったなぁ・・・.ちなみに,Max Loaderのベクタテストは,結果が合わなかったときに実際の出力を見せてくれるので,今回のケースだと,これを元に入力6bitの全パターン (64パターン) を手で試せば真理値表ができちゃうんですよね(笑).現状,人力なので,入力や書き写しが面倒な上に,間違いが入り込みそうで怖いからやりませんでしたがw
あと,今回はアレについては割と強引 (それでも平然とROMのシールはがしちゃうような海外の連中よりはスマートだと思うけど) にやっちゃいましたが,もう少しうまくやる方法も考えたいですね.まだまだ先になると思いますが・・・.いやしかし,液漏れ起こして基板を壊しまくる劣悪な充電池 + 基板の故障の予兆に気づかせない封印つきのシールドケース + 電池が切れて消えたら起動しなくなるSRAM上のセキュリティ情報と,ゲームは素晴らしいのに,基板の設計が残念すぎるのが何とも言えませんね・・・.
2011年11月18日の日記の1番目の記事へのコメント
[コメントを書く]