博客简介
本篇博客是实验设计:《模型机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提供:
但是RAM存在着不稳定的问题,会出现读取操作不是由下降沿控制而只受到控制信号控制的问题,所以这个时候我们用VHDL设计一个稳定器来稳定RAM的读取操作:
Stabilizer稳定器设计:
(1) 部件功能:
稳定器用来配合RAM使用,处理因为RAM输出的数据不稳定问题。
(2) 接口设计:
输入:
EN:使能信号,1有效
Clk:时钟信号
I[7…0]:数据输入,由RAM提供数据的输入
输出:
Bus[7…0]数据输出,连接到总线Bus
RTL视图
(3) 功能实现:
当EN有效为1时:
如果clk=1,那么将输入加载到输出,否则输出保存值
如果使能为0:
输出高阻态,来隔绝总线,防止总线冲突
VHDL设计:
(4)功能仿真验证:
仿真结果:
时钟为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;
结论:仿真结果符合功能要求,设计成功