博客简介

本篇博客是实验设计:《模型机CPU设计》整套实验报告内容之一,包括构架,分部件和性能分析三个大的模块,每个模块又细分为小的部分,历时1.5周完成。最后实验验收的分为满分。现在将其分享出来,希望能给后续的实验同学一个参考,少走不必要的弯路,设计出性能更优的CPU。

资源下载

设计CPU时,一路做了有三个版本,链接如下:

  • CPU1.0版本是第一代版本,由于刚开始设计,没有做性能的优化,此版本的优点是布局间隙大,线路较为清晰,如果你刚开始设计,那么这个版本可以更好地让你迅速设计出一个CPU CPU1.0版本压缩包下载
  • CPU2.0版本是第二代版本,也是我验收的版本,这个版本对版本一做了布局和时序性能的优化,性能达到了作者当时的巅峰CPU2.0版本压缩包下载
  • CPU3.0版本是第三代版本,对第2代版本做了更深层次的优化,解决了RAM不稳定的问题CPU3.0版本压缩包下载

RAM和稳定器

1 RAM可以根据quartus直接生成LPM_RAM_IO,实现读外接文件mif的读写

RAM接口和功能由quartus提供:

不同大模型运行对应的gpu需求 模型cpu_加载

不同大模型运行对应的gpu需求 模型cpu_数据_02


但是RAM存在着不稳定的问题,会出现读取操作不是由下降沿控制而只受到控制信号控制的问题,所以这个时候我们用VHDL设计一个稳定器来稳定RAM的读取操作:

Stabilizer稳定器设计:

(1) 部件功能:

稳定器用来配合RAM使用,处理因为RAM输出的数据不稳定问题。

(2) 接口设计:

不同大模型运行对应的gpu需求 模型cpu_压缩包_03


输入:

EN:使能信号,1有效

Clk:时钟信号

I[7…0]:数据输入,由RAM提供数据的输入

输出:

Bus[7…0]数据输出,连接到总线Bus

RTL视图

不同大模型运行对应的gpu需求 模型cpu_数据_04

(3) 功能实现:

当EN有效为1时:

如果clk=1,那么将输入加载到输出,否则输出保存值

如果使能为0:

输出高阻态,来隔绝总线,防止总线冲突

VHDL设计:

不同大模型运行对应的gpu需求 模型cpu_数据_05

(4)功能仿真验证:

不同大模型运行对应的gpu需求 模型cpu_数据_06

仿真结果:

时钟为2.5ns: 使能EN=1,clk=1,输入X=00000001,将输入加载到输出,BU=00000001;
时钟为3.5ns: 使能EN=1,clk=1,输入X=00000001,将输入加载到输出,BU=00000001;
时钟为1.0ns: 使能EN=1,clk=0,输入X=00000001,将寄存器保存的值输出,BU=00000000;
时钟为5.0ns: 使能EN=0,clk=0,输入X=00000001,输出高阻,BU=ZZZZZZZZ;
时钟为5.5ns: 使能EN=0,clk=1,输入X=00000000,输出高阻,BU=ZZZZZZZZ;

结论:仿真结果符合功能要求,设计成功