私は実際に、FPGA に実装した MicroBlaze マイクロ コントローラー システムについて調べています。しかし、この MCU がどのように機能しているかを理解したいと思います。このブロック図を考えてみましょう:
プロセッサが 32 ビットの 2 つのバスを介して BRAM モジュールに接続されていることがわかります。これらのバスの 1 つは ILMB (命令ローカル メモリ バス) で、もう 1 つは DLMB (データ ローカル メモリ バス) です。両方が BRAM モジュールの異なるポートに接続されていることがわかります。そこで私の質問があります: ハーバード アーキテクチャでは、プログラム命令とランダム アクセス メモリを分離することは想定されていませんか? ザイリンクス IP コア ジェネレーターを使用してシステムを生成する場合、配置するメモリ サイズは、プログラム命令、RAM、またはその両方のサイズですか?
xparameters.h ヘッダー ファイルの定義を検索して、ILMB と DLMB のメモリ内のアドレスを見つけたところ、両方が同じアドレス範囲であることがわかりました。
#define XPAR_DLMB_CNTLR_BASEADDR 0x00000000
#define XPAR_DLMB_CNTLR_HIGHADDR 0x00003FFF
#define XPAR_ILMB_CNTLR_BASEADDR 0x00000000
#define XPAR_ILMB_CNTLR_HIGHADDR 0x00003FFF
命令とデータの両方が同じアドレスで参照されているという事実は、私を混乱させました。誰かが私が間違っている場所を教えてもらえますか?