_★
やったこと
[WORK]CPU基板デバッグ
日曜日?何ですかソレ?
月月火水木金金ですからなぁ〜
ヤヴァイ、ヤヴァイ、ヤヴァイ、ヤヴァイ、ヤヴァイ、
色んなな意味でヤヴァイ。
CPU基板デバッグ遅れているしぃ、夏祭原稿全然書いてねぇ〜。ヤヴァすぎ。
今日も出社して昨日の割り込みの件の続き。
今回の割り込み回路は複雑なんでつ。
CPU本体へ行く線は4本だけど実際の外部割り込みは20本もある。<多すぎだよ。
これをさばくためには本来なら割り込みrouterをCPLD内に作成せにゃならん訳なのだが、
面倒いしマクロセルに隙間も無いので、同一種類のデヴァイス割り込みを1つにまとめ、
個別の割り込みは別途作成する個別レジスタを参照するという2段構えで行くことにした。
ソフトにはちょいと負担がかかるが...
で、問題は個別レジスタで各ビットのクリア出来んことだった。
正直、この部分は事前にシミュレーションしていなかった。
修正対策で色んな回路を考えたが複雑になってしまうものばかり思いついてしまう。
初心に戻りタイムチャートを書き直して考えたら非常に簡単なロジックが完成。
丁度昼休みになったんで上司とココイチ。メンチカツカレーをおごってもらう。
午後から回路を実装して実験。
最初上手く行かんかったがCPUの気持になって再度タイミングを考えて修正。
割り込み処理ロジック、動作確認含め1時間ぐらいで修正完了。
ついでにWDTの動作確認。<ぜんぜん、ついでぢゃないが
年頭に開発していた製品の回路をほぼそのままCPLDに実装。
が、動かん。実績ある回路で自信があっただけに慌てる。
ロジアナ使ったりデバッグ回路実装したりして信号を確認する。
どうやらcoreロジックは正常のようだけど制御レジスタに値が書けない。
と、良く見たら書込タイミング1クロックズレていた。
それは良いとしても、何故、前回の製品は動いていたのだろう...不思議だ。
つーか、バグだよね。前回の回路(滝汗)
昨日、バスの乱れが無くなったので動作確認していないデヴァイス群を本格的にデバッグ。
が、電源を投入すると今度は何故かデヴァイスがDREQをいきなり出す怪現象発生。
電源投入でいきなりアクティブになるハズが無くレジスタで何やっても止まらん。
試しにDREQを受けているCPLDの内容を消去
*1
して信号線を観察。本来ならCPLDは入力なので何も変化しないハズ。
が、今度はDREQ出ていない。
考えられるのは1つ。本来、入力のハズのピンが出力となっていたということ。
フィッティングログを見ると見事に出力となっている。
しかも、GNDレヴェル。ぎゃーーーーーーーーーーーーーー。
相手はHでCPLDはL。そらぁ見かけ上、アクティブ状態になるわな。
さらに大電流まで流れていたというオチまで付いた。
シミュレーションの時は上手く行っていたがオレのHDLの書き方が悪くて回路合成する時に出力にされてしまったようだ。
速攻で回路を書き直し書込。こんどは入力になり問題も消えた。
やっと本格的にデバッグ開始出来るまでになった。
けど、今度はSDRAMを動かそうとしてレジスタでクロックを操作するが出ない。
ロジックプローブで当るが何やっても出ない。
つーか、SDRAM動かんと先に進まん。
万策尽きた感があったんで試しにCPUに接続されているSDRAMクロックを当ってみた。
すると。おっちも出ていない。
でも、それはおかしい実際に動いているのだから出ていない訳は無い。
ロジックプローブはやめてオシロスコープでCPUのSDRAMクロック当ってみるとクロック出ているぢゃねーかよ。
で、問題のデヴァイスのSDRAMクロックを見る。こっちも出ているぢゃねーかよ。
どうやらロジックプローブだと周波数高すぎで見えなかった模様。
こんなんで数時間悩んでいたオレは馬鹿だ。
いつもよりバスクロックが数段高いこと忘れていた。
もう、疲れたんで2330頃帰還。
*1: 全ピンHi-Z状態となる。つまり何も接続されてない状態となる。