基于FPGA的16位单周期CPU设计

基于FPGA的16位单周期CPU设计

一、实验过程

1、ALU程序设计;

image.png

数据通路调用这个模块,根据得到的控制信号对输入数据进行处理,处理功能有:addu,add等。

2、寄存器组设计;

image.png

由多个寄存器构成,用于存储各个数据结果。

3、PC程序设计;

image.png

给出程序指令的地址,使得程序能够通过地址顺序执行。

4、下地址部件设计;

image.png

地址逻辑转移器通过各个信号和指令中的操作码,判断下一条指令的地址,并能给出程序执行的下一条指令的地址。

5、指令译码器设计

image.png

根据OP与FUNC(R型指令)共同输出最终执行指令。

6、立即数扩展器设计

image.png

立即数扩展部件主要分为有符号扩展和无符号扩展,用于将8位立即数扩展为16位数据。扩展方式根据指令集中立即数是否有符号来判断,有符号扩展主要针对beq,bne,bgt,addi等指令,其余指令中的立即数采用无符号扩展。

7、实验主电路的设计

image.png

二、实验结果与分析

1、实验结果和分析(采样表格形式)

(1)数据存储器地址及内容

image.png

(2)程序清单以及功能说明

image.png

(3)运行结果对比和结果判断

image.png

2、错误或异常现象分析

现象:在ROM中指令无法正常跳转

分析:问题主要出现在PC与ROM的连接方式错误,以及在观察现象时软件显示没有进行正确设置。

资料下载