SRAM : RMWV6416Aで同時に複数アドレスに値が書き込まれてしまう

RN72Nにて
RMWV6416Aシリーズの(4M word * 16bit)のSRAMを使用してます。
SRAMを使用するのは初めてです。

以下の問題が発生しており、原因と解決方法が分からないため
この問題に心当たりがあれば、教えていただければ幸いです。

CS7にSRAMを接続して、アドレス出力はA0~A22に設定。
SRAMのアドレス0x0100 0000に0001を書き込み実行し、成功します。
ここからが問題で上記実行で、
アドレス0x0104 0000にも0001が書き込まれます。
さらにアドレス0x0108 0000にも0001が書き込まれます。
さらにアドレス0x01C0 0000にも0001が書き込まれ、
0x0100 0000から0x40000の倍数のアドレスに0001が書き込まれ、
この規則が続いて0x01FC 0000まで0001が書き込まれます。

アドレス0x0103 FFF0に1111を書き込み実行し成功します。
この実行においても、アドレス0x0107 FFF0に1111が書き込まれます。
以降、0x0103 FFFFから0x40000の倍数で同時に書き込まれてしまいます。

書き込む値は特に関係なく、
同時にSRAMの0x40000の倍数のアドレスに規則的に書かれてしまいます。

また、0x0104 0000に0001を書き込むと同様に
0x0100 0000から0x40000の倍数で0001が同時に書き込まれます。

書き込まれる値はe2studioでデバックし、メモリの画面で確認しています。

この現象を解決したく、原因と解決方法にもし心当たりがあれば教えてください。
よろしくお願いいたします。

  • メモリへの読み書きの失敗の原因として考えられるのは
    ・回路自体の間違え
    ・隣接のアドレス信号がショートしている(実装の問題)
    ・アドレス信号がオープンしている(実装の問題)
    ・ソフトウェアの間違え(外部バスコントローラの初期化間違え)

    ボードは自分たちで設計・制作したものですよね?まずはSRAMのアドレスピンの信号がソフトウェアでSRAMの指定した読み書き先パターンになっているかロジアナやオシロスコープで確認するのがいいと思います。SRAMパッケージがFBGAだった時、回路にミスがないならX線検査でボールがちゃんとパッドについているか確認するのが先かな。ボールがパッドに対して浮いてるような場合があったりします。なお問題が半田不良のため起こっている場合、テストパッドがあっても、それを用いての信号確認はあまり意味をなしません。


    内容的に一回の書き込みした後に0x40000の倍数の場所を確認した時に倍数のものが全て書き換わっているように見えているだけと思います。アドレス信号が正しく出力されてなくて0x40000の倍数で読み書きしている先は0x40000の倍数のどこかの一つで、アドレス信号が正しく伝わってないのかなと思います。

  • メッセージありがとうございます。

    ボードは自作です。ご指示のとおり確認してみようと思います。

    進展がありましたら、メッセージします。

  • 型式からするにFBGAですよね?回路に問題なく、X線検査装置にすぐにアクセスできないようでしたら例えば動作中に基板にSRAMを押さえ付けてやると症状が変わるならまずはんだ不良です。もし複数製造しているなら別個体でも起こるかを確認するといいかなと思います。全部が全部半田不良とは流石にないと思います。

  • ご質問にお答えしていませんでした。マイコンとSRAMともにPINがあるのものを使っております。

  • わわいです

    どっかのアドレス線がアドレス出力にならずに固定されてます

    あるあるなのが、アドレス線がGNDやらVccとショートしてる、とか、初期化でスカこいてきちんとアドレス出力になってないとか。

    まずはテスター持ってきて、きちんとアドレス出力と接続されてるか、他のピン、パターンとショートしていないかをチェック、オシロを持ってきて、そのアドレスラインにきちんとアドレス値が出力されてるかチェックですね

  • 16ビットバスなら、A0は使わないで、A1から、A22を、SRAMのA0から、A21に接続していると思いますが、どうでしょうか?

    又、LB、UB、BYTE 端子はどのように接続していますか?

    ※できれば、ハードウェアーの結線図と、バスの設定プログラムを張り付けて下さい。

  • メッセージを頂きありがとうございました。

    解決しました。

    原因は

    A20,A21,A22の端子の接続ミスで、

    外部バス制御レジスタ0(RX72NマニュアルPage 954)の使用方法において

    私どもの設計で、A16-A23の接続をPC0,PC1,P71,P72,P74,PC5,PC6,PC7にしなければならないところを

       A16:PC0

       A17:PC1

       A18:P71

       A19:P72

       A20: 誤P94,正P74

       A21:誤P95,正PC5

       A22:誤P96,正PC6

    のように設計していました。

    オシロスコープを用いてA20、A21、A22から信号が出てないことが分かり、気づいた次第です。

    お知恵を頂き、ありがとうございました。