今天晚上把指令集定了一下,编写了一串机器码测试了一下计算结果,是对的。
先放几个图片,需要做的内容还很多,外设现在只加了ram和rom,后续要丰富起来。
哈佛结构
单流水线,取指、译码、执行:
下图可以看出PC每3个机器周期+1,开始下一条指令的执行:

以下是指令集介绍,共分了4类指令:
1、特殊指令
2、立即数操作指令
3、访存指令
4、跳转指令
所有指令都是24位(有些浪费,大多数指令只需要16位,为了考虑跳转指令方便实现暂时把指令都定为了24位)



下图是MCU顶层视图:


上图为Core的组成,有取指模块、译码模块、执行模块、控制模块(相当于微指令发生器)、寄存器模块(共5个寄存器:PC、ACC、DR、SR、IR),后续要加上debug模块,方便在线下载程序。
以下是一些内部模块综合完成后的RTL视图:







下面是一个计算的例子:


手工编写机器码,写入ROM初始化文件中,下一步开始仿真

仿真结果是正确的 00001101 = 00001010+00000011

从上图可以看出,执行完计算之后,PC的值在3和4之间一直跳动,证明死循环正在执行,实现了程序逻辑。