お世話になっております。
カイロスです。
DMAを使用時の外部バスの占有対策についてお聞きしたくご質問させていただきました。
DMAの外部バスの占有対策として以下を実施しました。
・リカバリサイクルのサイクル数を増やす。
→5サイクル
・CSのウエイトと、CS、RD、WRのアサートウエイトのサイクル数を増やす。
→CSウエイト:2サイクル。CS、RD、WRのアサートウエイト:1サイクル。
上記で、ある程度不安定な動作が収まったのですが、
他に対策できることとか、上記設定の際に気を付けることなどありましたら、お教えいただきたいです。
※DMA転送は、1µS間隔で計10000万回行います。
以上、よろしくお願い致します。
カイロスさん、こんにちは。NoMaYです。投稿されたタイトルだけ読むと、外部バスを使用するDMA転送が頻繁すぎて、それ以外の通常アクセスに支障を来たしている(例えば外部バスからのプログラムフェッチや外部バスに対する通常のデータリードライトの為の帯域が減ってしまって処理が遅くなってしまった)、といった話かと思ったのですが、対策された内容を読むと、DMA転送のトータルのサイクル数を増やすことになることをされていて、これですと状況はむしろ悪化する筈だと思うのです。(というか、DMA転送に限らず外部バスアクセス全般でトータルのサイクル数を増やして速度を低下させてしまうことになる、というところですね。)ですので、確認なのですが、そもそもどういった不安定な動作だったのですか?そして、それが「DMAによる外部バス占有」によるものだと推測された根拠はどういったものだったのですか?ひょっとして、外部バス動作速度が速すぎて、回路屋さん/基板屋さんが設計されたボードではタイミング不足や信号の暴れなどにより、外部メモリに書けない/読めないといった話だったりしませんか?