EDA课程设计报告书 简易cpu设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
执行结束后不会改变通用寄存器组的值。通用寄存器组的两个读出端口,一个是目的寄存器读出端口,一个是源寄存器读出端口,从这两个端口读出的内容供执行部分exe_unit和存储器部分memory_unit使用。通用寄存器组内还有两个标志位:z_out和c_out,在t3的下降沿根据指令执行的结果改变或者不改变它们的值。这两个标志位的值送执行部分exe_unit使用。
寄存器模块芯片图
寄存器模块
2.取指令部分
在本程序设计中,取指部分完成4项工作:
⑴产生时钟信号t1、t2和t3,供CPU各部分使用;
⑵在复位信号reset为低时将pc复位为0,在一条指令执行结束之后,根据指令执行的结果在t3的下降沿改变pc的值;
⑶将从存储器读出的指令的第一个字在t2的上升沿送至指令寄存器IR中;
⑷计算pc+1的值pc_inc,为双字指令取第二个指令字做准备
取指令部分
3.指令译码部分
在本程序设计中,指令译码部分的功能是:根据指令寄存器IR的值产生实验CPU所需要的各种控制信号和其它信号,其信号作用如下:
SR:源寄存器号(编址)。
DR:目的寄存器号(编址)。
op_code: 控制ALU进行8种运算操作的3位编码。
zj_instruct:为1表示本条指令是条“JNZ ADR”指令。
cj_instruct:为1表示本条指令是条“JNC ADR”指令。
lj_instruct:为1表示本条指令是条“JMP ADR”指令。
DRWr:为1表示在t3的下降沿将本条指令的执行结果写入目的寄存器。
Mem_Write:为1表示本条指令有存储器写操作,存储器的地址是源寄存器的内容。
DW_intruct:为1表示本条指令是双字指令。
change_z:为1表示本条指令可能改变Z(结果为0)标志。
change_c:为1表示本条指令可能改变C(进位)标志。
sel_memdata:为1表示本条指令写入目的寄存器的值来自读存储器。
r_sjmp_addr:计算条件转移指令转移地址所需要的16位相对地址。它是由条件转移指令中的8位相对地址经过符号扩展生成的。
指令译码部分
4.存储模块
存储模块是cpu与外部存取器的接口部分。向外部的存储器送出16为存储地址总线Mem_addr、
16为双向数据总线ob、读写信号wr。当wr 为1时,外部存储器作为读存储器信号处理;当wr信号为0时,外部存储器作为写存储器信号处理。
存储模块
5.执行部分
执行部分完成下列任务:
(1)8种逻辑运算:加、加1、减、减1、与、或、非和数据传送,将运算结果存放在result中。根据运算结果产生位标志。
(2)产生存储器读写所需要的存储器地址Mem_ADDR.
(3)产生条件转移指令所需要的转移标志。
执行部分的河西传统上属于运算器,是运算器的核心。
执行部分
六、16位简易cpu设计总体框图