源码在 src/main/scala 文件夹下。
文件(夹) | 备注 |
---|---|
Top.scala | 顶层模块 |
core/ | CPU 核心部分 |
Core.scala | CPU 核心部分的顶层模块(主要是连线) |
Decoder.scala | ID 模块,从指令解码出各种控制线的值(有点像 control) |
Memory.scala | 内存部分,包括翻译 MMIO 地址 |
ALU.scala | ALU 模块 |
Comparator.scala | 比较(大于小于等)模块,RISC-V 需要 |
RegisterFile.scala | 寄存器表 |
board/ | 硬件 IO 部分(把 CPU 的内存操作翻译到板子需要的 IO 信号,反之亦然) |
Board.scala | IO 部分的顶层模块(主要也是连线) |
display/ | VGA 显示 |
Console.scala | VGA 核心部分,从缓冲区读取字符并渲染出来 |
VGA.scala | VGA 屏幕参数和 Timing 部分 |
Color.scala | 16 色调色板 |
UART.scala | UART |
Keyboard.scala | 小键盘 |
Tubes.scala | 7 段数码管 |
ip/ | 用 BlackBox 来对接 Vivado 的 IP 核 |
BlockMemory.scala | Block Memory(双端口读写) |
BlockMemoryRom.scala | Block Memory (ROM) |
ClockWizard.scala | Clock Wizard |
misc/ | 一些杂七杂八的模块 |
CrossClockQueue.scala | 用于跨时钟传输数据的循环队列 |
Debounce.scala | 消抖模块 |
RNG.scala | 基于 LFSR 的随机数生成器 |
util/ | 一些杂七杂八的 util 函数(一般与模块无关) |