Vhdl 如何将指令和数据组织到微博客MCS中?

Vhdl 如何将指令和数据组织到微博客MCS中?,vhdl,xilinx,xilinx-ise,microblaze,Vhdl,Xilinx,Xilinx Ise,Microblaze,我实际上是在研究我在FPGA中实现的MicroBlaze微控制器系统。但我想了解这个MCU是如何工作的。让我们来考虑这个框图: 我们可以看到,处理器通过2条32位总线连接到一个BRAM模块中。其中一条是ILMB(指令本地内存总线),另一条是DLMB(数据本地内存总线)。我们可以看到,两者都连接到BRAM模块的不同端口。所以我的问题是:在哈佛体系结构中,程序指令和随机存取存储器不应该分开?当我们使用Xilinx IP核心生成器生成系统时,我们输入的内存大小是程序指令的大小,RAM还是两者的大小

我实际上是在研究我在FPGA中实现的MicroBlaze微控制器系统。但我想了解这个MCU是如何工作的。让我们来考虑这个框图:

我们可以看到,处理器通过2条32位总线连接到一个BRAM模块中。其中一条是ILMB(指令本地内存总线),另一条是DLMB(数据本地内存总线)。我们可以看到,两者都连接到BRAM模块的不同端口。所以我的问题是:在哈佛体系结构中,程序指令和随机存取存储器不应该分开?当我们使用Xilinx IP核心生成器生成系统时,我们输入的内存大小是程序指令的大小,RAM还是两者的大小

我搜索了xparameters.h头文件中的define,找到了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

指令和数据都在同一个地址引用,这一事实使我感到困惑。有人能告诉我哪里错了吗?

在这种情况下,ILMB和DLMB总线共享相同的物理内存空间。这同样适用于内存大小参数。默认情况下,Mircoblaze系统配置为具有共享的数据和指令内存空间

但事实上,有两条独立的总线允许您配置系统,使数据和指令驻留在完全不同的地址空间(或物理设备)中。例如,ILMB可以配置为在ROM内存上寻址,数据可以访问RAM内存的完全不同的硬件块


Microblaze是高度可配置的CPU,单独的内存总线是在极少数情况下需要配置的配置点之一。大多数情况下,它们共享BRAM内存的相同地址空间。

在这种情况下,ILMB和DLMB总线共享相同的物理内存空间。这同样适用于内存大小参数。默认情况下,Mircoblaze系统配置为具有共享的数据和指令内存空间

但事实上,有两条独立的总线允许您配置系统,使数据和指令驻留在完全不同的地址空间(或物理设备)中。例如,ILMB可以配置为在ROM内存上寻址,数据可以访问RAM内存的完全不同的硬件块


Microblaze是高度可配置的CPU,单独的内存总线是在极少数情况下需要配置的配置点之一。大多数情况下,它们共享BRAM内存的相同地址空间。

我认为这是一个值得思考的问题。StackOverflow更多的是关于代码和错误。我认为这是一个值得思考的问题。StackOverflow更多的是关于代码和错误。