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 合作完成。