项目基于ArmV7的架构进行设计
- veriloator
- cocotb-test
- 其他python包
本地配置环境可以参照本地环境配置
build.py中只需改变顶层模块名称 async_test_tb中书写函数,在@cocotb.test()后为执行代码
docker run -it --name cson zhywyt/cson:latest /bin/bash
cd /root/workspace/
git clone git@github.com:Dion6850/CSON.git
cd CSON/test
./build
- 桶形移位寄存器 ✅
- 多功能ALU ✅
- 通用寄存器堆 ✅
- 程序状态寄存器堆 ❌
- 存储器 ❌ (在后续实验中通过一个简单的memory.v模块实现)
- ARM汇编器和模拟器 ❌
- 取指令数据通路 ✅
- 数据处理指令的CPU ✅
- 状态寄存器访问指令 ❌
- 分支跳转指令 ✅
- 单数据访存指令 ✅
- 块数据访存指令 ❌
项目已经移除了所有的工程文件,保留了复现需要的代码文件,如果需要获取项目文件请查看197a6650d9e3e3914a0311f4b4e61b86eeaa298d
版本和以前的版本。所有工程代码可以在src/Board
找到。
验证文件在verify中。且从取指令数据通路实验开始不再使用python进行nhn仿真验证,而是使用用波形图进行验证。
logging模块的debug等级的信息不会输出在命令行,请使用info以上等级的日志信息
FPGA在线平台地址:http://fpga.hdu.edu.cn/co/
这个问题在commite8c65c6
被修复了,由于这个问题导致了我们的CPU实验出现一些问题,所以我们最终选择与教材保持一致。下面只是问题的记录。
在文件 ALU.v 中38行(cf9172959b1d878a9d949853ac9b30329e173787)
#切换到问题版本
git checkout cf9172959b1d878a9d949853ac9b30329e173787
我们的C进位并没有像教材那样取反,助教说这个位置其实是有争议的,所以在板机出现C与教材不符的情况请不要在意。保持内部统一就可以了。