最小ループプログラムが動作したのでハード的にはもうOKと思い、シリアル制御を含むすこしサイズの大きい
プログラムをコーディングしたところ、どうも動きが安定しません。
シリアルからインクリメントデータを吐き出すループを実行させると途中で止まったり、数回に1回は
全く動作しないこともあります。
メモリアクセスに問題が無いかタイミングを見直してみました。
現状実装されているメモリです
0000h-07FFFhに割付。
これを2個使い16bit32kWORDとしています
RAMはNECのuPD434016で16bit幅256kWORDあるのでそのうち32kWORDをプログラムメモリ空間
8000h-FFFFhに32kWORDをデータメモリ空間8000h-FFFFhに割付けています
DSPは非常に高速なメモリを要求します。
TMS320C25を40MHzで駆動したときのメモリ読出しタイミングですがアドレス確定後、/STRBの立下りから
約30ns以内にメモリのデータが確定している必要があります
ROMのほうですが、アクセスタイム90ns品のもっとも高速な/OE制御でも35nsたたないとデータが
確定しません。
実力からいえばぎりぎりセーフなのかもしれませんが危ないですね
さらに接写した写真を見てから気付いたのですが片方のROMが120ns品になっています・・・・
これではますますダメです
一方、RAMのほうは非常に高速です。
最悪値のアドレス制御でもアクセスタイム15nsを保証していますからDSPの要求に充分間に合います。
しかもワード幅なので1個で済みますが全容量の4分の1しか使ってないのがちょっともったいない。
いままでこのROMのタイミングでまがりなりにも動いていたのが不思議ですが
まずはROMアクセスにウェイトを挿入しなければなりません