Takaです。
今日はNiosII関連について。
さて、唐突にFlashメモリを使ってみたくなりました。
というのも、NiosのCPUをOnchipメモリからSDRAMに載せかえた為、
新しくバッファメモリを調達しなければならなくなったのです。
今まではCPUをOnchip、バッファメモリをSDRAMにそれぞれ割り当てていました。
実際に載せかえてから気がついたのですが、CPU用に割り当てたメモリって容量一杯に領域を確保するんですね。
CPU載せた余りの部分をバッファメモリとして再利用出来ないかなー、と思っていたのですが。
完全に素人考えでした。反省。
そんな訳で、バッファメモリの新しいお家を探してあげなければなりません。
諸事情の為、Onchipは別のメモリに使用する予定です。よって他をあたります。
候補としては、DE2-115に実装されている外部メモリ、FlashメモリとSRAMのどちらか。
とりあえず、今回はFlashメモリに挑戦してみることにしました。
作業内容
今回はSOPCを使用しましたが、Qsysでも作業内容は同じだと思います。
1. SOPCを開いて以下の2つのコンポーネントを追加
(A) Avalon-MM Tristate Bridge (/Bridges/Memory-Mapped)
(B) Flash Memory Interface(CFI) (/Memories and Memory Controllers/External Memory Interfaces/Flash Interfaces)
2. (A)、(B)のコンポーネントの設定
3. (A)、(B)のそれぞれの配線を以下のように設定
.clk … システムクロック(100MHz)
.avalon_slave … (CPU).data_master
.tristate_master … (Flash Memory Interface).s1
(B) Flash Memory Interface(CFI)
.clk … システムクロック(100MHz)
.s1 … (Avalon-MM Tristate Bridge).tristate_master
後はFlashメモリのベースアドレスを適切な値に設定すれば完成。
と、思いきや。何だか不穏なエラーメッセージがウインドウ下部のダイアログに残っています。
何のこっちゃ。
ざっと流し読みしたところ、何だか配線のデータ幅の不一致が原因らしいです。
しかし、Flashメモリの方はともかく、Tristateブリッジの方にはそんな設定項目は一切見当たりません。
Alteraフォーラムから個人ブログまでくまなく探しましたが、このような問題の報告は見当たりませんでした。
QuartusやNiosの主要なエラーなら、Google先生が必ずAlteraフォーラムのポストを引っ張ってくる筈。
(正直それもどうかと思いますけどね)
Alteraの公式リファレンス等も小一時間漁ってみましたが、結局有力な情報はゼロ。
もう詰んだかと思いましたが、意外な方法で解決しました。
4. F5でシステムの更新を実行
こういう無慈悲なブービートラップを各所に仕掛けてあるからNiosソフトウェア群は信用なりません。
ほんとに。
これでNiosシステム上の構築は完了です。
後はQuartusでピンアサインを済ませてコンパイルするだけです。
5. ピンアサインの設定
ここで出力電圧をデフォルトの2.5Vから3.3Vに変更するのを忘れずに。
6. コンパイル
7. 実証実験
しかし、全く意図した値を得られませんでした。
これはおかしいと思い、デバッガにて該当するアドレスの値を確認してみました。
すると、CFIにアクセスはしてましたが、書き込みが通っていませんでした。
あれこれ試行錯誤を繰り返しましたが、ここでギブアップ。
CFIをバッファメモリとして使用するのは一旦中断することにしました。
感想
次はSRAMを試してみようと思います。