CPU 速通系列 0-1:SOPC 模块

背景知识

SOPC(System-On-a-Programmable-Chip)是指可编程芯片上的系统集成。

代码

Path src/cpu/openmips_min_sopc.sv

 1`include "defines.svh"
 2
 3module openmips_min_sopc (
 4
 5    input logic clk,
 6    input logic rst,
 7
 8    //连接指令存储器
 9    output logic                rom_ce,
10    output logic [`InstAddrBus] inst_addr,
11    input  logic [    `InstBus] inst
12
13);
14
15    openmips openmips0 (
16        .clk(clk),
17        .rst(rst),
18
19        .rom_addr_o(inst_addr),
20        .rom_data_i(inst),
21        .rom_ce_o  (rom_ce)
22
23    );
24
25endmodule

解读

实现了 openmips_min_sopc 模块。

设计意图

这个模块的设计目的是将一个名为openmips的子模块集成到一个更高级别的系统级模块openmips_min_sopc中。通过这个模块,可以实现对openmips子模块的控制和数据传输。


具体而言,openmips 子模块是一个基于 MIPS 指令集架构的处理器核心,用于执行指令级的计算任务。而openmips_min_sopc 模块则提供了与该处理器核心的交互接口。

该模块的输入包括时钟信号(clk)和复位信号(rst),这些信号用于控制和同步模块的操作。模块还包括一个输入端口 inst,用于接收指令总线上的指令数据。

模块的输出包括使能信号rom_ce和指令地址总线inst_addr。其中,rom_ce信号用于控制指令存储器(ROM)的使能,而inst_addr信号用于指定当前要读取的指令在 ROM 中的地址。

通过连接到openmips子模块的相应端口,openmips_min_sopc模块可以将输入的指令数据传递给openmips进行处理,并从openmips获取所需的指令地址和 ROM 使能信号。这样,整个系统可以在更高级别上进行控制和集成。

端口

  • clk:输入时钟信号

  • rst:输入复位信号

  • rom_ce:输出片上存储器(ROM)的使能信号

  • inst_addr:输出指令地址总线

  • inst:输入指令总线

在模块内部,使用了一个名为openmips的子模块(是该模块所属的某个层次结构中的其他模块)。这个子模块具有以下端口:

  • clk:输入时钟信号

  • rst:输入复位信号

  • rom_addr_o:输出指令地址总线,连接到inst_addr端口

  • rom_data_i:输入指令总线,连接到inst端口

  • rom_ce_o:输出 ROM 的使能信号,连接到rom_ce端口

设计实现

其实就是很简单的连线,将外部的输入信号(时钟、复位信号、指令总线)连接到openmips子模块的相应端口,并将子模块的输出信号(指令地址总线和 ROM 使能信号)传递到模块的对应输出端口。

参考资料

本文与 AI 合作完成。