博客简介
本篇博客是实验设计:《模型机CPU设计》整套实验报告内容之一,包括构架,分部件和性能分析三个大的模块,每个模块又细分为小的部分,历时1.5周完成。最后实验验收的分为满分。现在将其分享出来,希望能给后续的实验同学一个参考,少走不必要的弯路,设计出性能更优的CPU。
资源下载
设计CPU时,一路做了有三个版本,链接如下:
- CPU1.0版本是第一代版本,由于刚开始设计,没有做性能的优化,此版本的优点是布局间隙大,线路较为清晰,如果你刚开始设计,那么这个版本可以更好地让你迅速设计出一个CPU CPU1.0版本压缩包下载
- CPU2.0版本是第二代版本,也是我验收的版本,这个版本对版本一做了布局和时序性能的优化,性能达到了作者当时的巅峰CPU2.0版本压缩包下载
- CPU3.0版本是第三代版本,对第2代版本做了更深层次的优化,解决了RAM不稳定的问题CPU3.0版本压缩包下载
- 这篇博客是整个实验的一部分,全套内容请参考:逻辑与计算机设计基础CPU实验
寄存器组:
(1) 部件功能:
寄存器具有快速读写的功能特点,而通用寄存器组则是实现的对三块寄存器的读写操作,根据控制信号对A,B,C寄存器实现读写,并将数据传送给ALU函数发生器
(2) 接口设计:
输入:
WE使能信号,0有效为写入,1为提供通道
Clk:时钟信号
RA[1…0]控制信号,控制数据从A口读出
WA[1…0]控制信号,控制数据从B口读出
I[7…0]数据输入
输出:
A0[7…0]从A口的数据输出
B0[7…0]从B口的数据输出
aa[7…0],bb[7…0],cc[7…0]向外界展示数据输出
RTL视图
(3) 功能实现:
无论WE为何值,都由RA,WA来判断输出
如果RA=“00”A=a,如果RA=“01”,A=b,否则A=c
如果WA=“00”B=a,如果WA=“01”,B=b,否则B=c
当WE=0,执行写入
当时钟信号为下降沿:
如果WA=“00”a<=I, 如果WA=“01”,b<=I,否则c<=I
VHDL设计:
(4)功能仿真验证:
仿真结果:
时钟为18.2ns: 处于时钟下降沿,WE=0,WA=01,对寄存器c进行写入,输出c=00000100,B0=00000100,A0=00000000
时钟为19.2ns: 处于时钟下降沿,WE=0,WA=11,对寄存器c进行写入,输出c=00000110,B0=00000110,A0=00000110
时钟为20.2ns: 处于时钟下降沿,WE=1,WA=00,RA=00,读取a寄存器,A0=00000000,B=00000000
时钟为20.7ns: WE=1,WA=00,RA=01,A读取b寄存器,读取a寄存器A0=00000010,B=00000000
结论:仿真结果符合功能要求,设计成功