chisel搭个cpu(一) RV32I介绍\/chisel基础语法\/fetch实现\/tester验证
实现 fetch 功能需要内存和处理器核心,通过一个顶层文件连接两者。内存实现包含输入输出端口,实现从输入地址读取指令。内存实现采用纯组合逻辑,深度为 16384、宽度为 8 位的 RAM。输入地址通过处理器的程序计数器(PC)获取,读取指令并输出。内存加载来自 fetch.hex 文件的内容,通过 loadMemoryFromFile ...
chisel搭个cpu(二) SW功能(实现译码\/执行\/访存)
现在,我们专注于SW功能的实现,它涉及前四级流水线。SW功能的核心是将rs1的内容与12位立即数相加,然后将结果作为地址,rs2的内容作为数据写入内存。为此,需要增加一个读写数据端口,并利用上一章的fetch部分。在chisel代码中,我们定义了SW指令,并按照decode步骤处理。在EXE阶段,将rs1数据和指令中的...
chisel搭个cpu(四) 验证SW\/LW指令
首先,我们设定测试目标:当pc_reg的值为0时,从内存(mem)读取LW指令,将地址12的32位数值23333333写入regfile的第5行。根据risvc指令的特性,很容易确定hex文件的前四行应如下所示:mem的第0-3行:指令头信息第4行:pc_reg的初始值第5行:mem的读取地址(12)第6行:读取的32位数据(23333333)...