简易计算机系统综合设计设计报告
班级姓名学号
一、设计目的
连贯运用《数字逻辑》所学到的知识,熟练掌握EDA工具的使用方法,为学习好后续《计算机原理》课程做铺垫。
二、设计内容
①按给定的数据格式和指令系统,使用EDA工具设计一台用硬连线逻辑控制的简易计算机系统;
②要求灵活运用各方面知识,使得所设计的计算机系统具有较佳的性能;
③对所做设计的性能指标进行分析,整理出设计报告。
三、详细设计
3.1设计的整体架构
控制信号
3.2各模块的具体实现
1.指令计数器(zhiling_PC)
元件:
输入端口:CLK,RESET,EN;
输出端口:PC[3..0];
CLK:时钟信号;
RESET:复位信号;
EN:计数器控制信号,为1的时候加一;
PC[3..0]:地址输出信号;
代码:
波形图:
总共有九条指令,指令计数器从0000到1000;功能:
实现指令地址的输出;
2.存储器(RAM)
元件:
输入端口:PC[3..0],CLK;
输出端口:zhiling[7..0];
CLK:时钟信号;
PC[3..0]:指令地址信号;
zhiling[7..0]:指令输出信号;
代码:
波形图:
功能:
根据输入的地址输出相应的指令;
3.指令译码器(zlymq)
元件:
输入端口:zhiling[7..0];
输出端口:R1[1..0],R2[1..0],M[3..0];zhiling[7..0]:指令信号;
R1:目标寄存器地址;
R2:源寄存器地址;
M[3..0]:指令所代表的操作编号;
代码:
波形图:
功能:
实现指令的操作译码,同时提取出目标寄存器和源寄存器的地址;
4.算术逻辑运算器(ALU)
元件:
输入端口:EN_ALU,a[7..0],b[7..0],M[3..0];
输出端口:c[7..0],z;
EN_ALU:运算器的使能端;
a[7..0]:目标寄存器R1的值;
b[7..0]:源寄存器R2的值;
M[3..0]:指令所代表的操作编号;
c[7..0]:运算结果;
z:运算完成的信号;
代码:
波形图:
功能:
实现算术逻辑运算,输出运算结果;
5.选择器(cpu_counter)
元件:
输入端口:CLK,R1[1..0],R2[1..0];
输出端口:EN_A,EN_B,EN_ALU,R,C,AD[1..0];CLK:时钟信号;
R1[1..0]:目的寄存器地址;
R2[1..0]:源寄存器地址;
EN_A:暂存器A的控制信号;
EN_B:暂存器B的控制信号;
EN_ALU:运算器alu的控制信号;
C:指令计数器的控制信号;
AD[1..0]:寄存器的地址;
R:通用寄存器的可读控制信号;
代码:
波形图:
功能:
控制运算器ALU的运行时间,控制暂存器A,B的数据输入,控制通用寄存器的输出,控制指令计数器的技术,实现时序的统一性;
6.暂存器(jcq)
元件:
输入端口:CLK,RESET,K,s[7..0];
输出端口:Q[7..0];
CLK:时钟信号;
RESET:复位信号;
K:暂存器输入控制端口;
Q[7..0]:数据输出端口;
代码:
波形图:
功能:
实现运算数据的暂时储存;
7.通用寄存器组(tyjcqz)
元件:
输入端口:CLK,RESET,R,W,AD[1..0],WR[7..0];
输出端口:s[7..0];
CLK:时钟信号;
RESET:复位信号;
R:数据读取控制信号;
W:数据写入控制信号;
AD[1..0]:寄存器的地址;
WR[7..0]:写入的数据;s[7..0]:数据输出端口;代码:
波形图:
功能:
实现寄存器ABC,保存ABC中的数据,实现运算结果的保存;
四、系统测试
4.1 测试环境
4.2 测试代码
指令的汇编符号指令的功能指令的二进制编码MOV R1,R2 (R2)→R1 0011 R1 R2 MOV M,R2 (R2)→(C)0011 11 R2 MOV R1,M ((C))→R1 0011 R1 11 ADD R1,R2 (R1)+(R2)→R1 1001 R1 R2 SUB R1,R2 (R1)-(R2)→R1 0110 R1 R2 AND R1,R2 (R1)∧(R2)→R1 1110 R1 R2 NOT R1 /(R1)→R1 0101 R1 XX SHR R1 (R1)逻辑右移一位→R1 1010 R1 00 SHL R1 (R1)逻辑左移一位→R1 1010 R1 11
A:00000111 B:00001000 C:00000011
4.3测试结果
五、总结
刚开始做CPU的时候什么思路都没有,后来经过小组讨论才找到一点思路,决定才寄存器做起,后面经过几天的讨论和努力,我们开始慢慢的理清了思路,开始跟着我们的思路将一个一个的元件写出来,到后面再将其连接成电路图发现波形图不对,后来我们开始一个输出一个输出的加,测试每一个元件在总电路图中的输出,寻找出现的错误,经过了几天的努力我们终于实现了CPU的功能,感觉加深了自己对于各种硬件功能的理解,让自己学到了许多。