我实际上正在研究我在我的 FPGA 中实现的 MicroBlaze 微控制器系统。但我想了解这个 MCU 是如何工作的。让我们考虑这个框图:
我们可以看到处理器通过 2 条 32 位总线连接到 BRAM 模块中。这些总线之一是 ILMB(指令本地内存总线),另一个是 DLMB(数据本地内存总线)。我们可以看到两者都连接到 BRAM 模块的不同端口。所以我的问题是:在哈佛架构中,程序指令和随机存取存储器不应该分开吗?当我们使用 Xilinx 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
指令和数据都在同一个地址引用的事实让我感到困惑。有人能告诉我哪里错了吗?