将陆续上传新书《自己动手写CPU》,今天是第44篇。
这几天事情多,好久没更新了
9.3.4 修改OpenMIPS顶层模块
由于部分模块增加了接口,所以需要修改顶层模块OpenMIPS,以将新的接口连接起来。同时,从图9-19可知,MEM模块增加了几个对数据存储器的接口,而这几个接口连接到OpenMIPS外部,所以OpenMIPS模块的接口也要做修改,新增接口如表9-6所示,修改后的OpenMIPS处理器接口图如图9-23所示,大家可以与图4-6做一对比。
要修改OpenMIPS模块,将表9-6中的数据存储器接口与MEM模块的对应接口连接在一起,主要修改如下。完整代码请参考本书附带光盘Code\Chapter9_1目录下的openmips.v文件。
module openmips(
input wire clk,
input wire rst,
input wire[`RegBus] rom_data_i,
output wire[`RegBus] rom_addr_o,
// 新增接口,连接数据存储器RAM
input wire[`RegBus] ram_data_i,
output wire[`RegBus] ram_addr_o,
output wire[`RegBus] ram_data_o,
output wire ram_we_o,
output wire[3:0] ram_sel_o,
output wire ram_ce_o
);
......
// 主要修改MEM模块的例化语句,
// 目的是将表9-6中的数据存储器接口与MEM模块的对应接口连接在一起
mem mem0(
......
// 来自数据存储器的信息
.mem_data_i(ram_data_i),
......
// 送到数据存储器的信息
.mem_addr_o(ram_addr_o),
.mem_we_o(ram_we_o),
.mem_sel_o(ram_sel_o),
.mem_data_o(ram_data_o),
.mem_ce_o(ram_ce_o)
);
......
endmodule
下一步将修改最小SOPC,以验证加载存储指令是否实现正确。