数字电路实验(五)——CPU综合设计(1)

数字电路课程最后的大综合实验——CPU设计实验是我最得意的实验,我当初做了整整一个月,前前后后写出了六个版本的CPU,从最开始的能够实现基础功能的硬性CPU和最后的可以进行时序的高级CPU,连实验报告我都写了不下十个版本,这也是为什么我能在这个实验中拿到满分的成绩。
这里,我就简单的开一个头,分析一下这个大综合实验应该如何思考,思路如何,如何进行系统的设计以及时间线的划分。后面会将资源发送到****上进行下载,各位同好可以自行选择。

事不宜迟,正片开始

一、设计目的

完整、连贯地运用《数字逻辑》所学到的知识,熟练掌握 EDA 工具基本使用方法

二、设计内容

① 按照给定的数据通路、数据格式和指令系统,使用 EDA 工具设计一台用硬连线逻辑控制的简易计算机;
② 要求灵活运用各方面知识,使得所设计的计算机具有较佳的性能;
③ 对所设计计算机的性能指标进行分析,整理出设计报告

1.我们在设计如何完成指令的前提条件下,需要对单周期CPU的周期进行理解,也就是在clock脉冲信号的基础上,如何安排数据流通是非常必要的。本实验对指令由取到执行实型串行操作,指令周期为“读取–执行–再读取–再执行”。
数字电路实验(五)——CPU综合设计(1)
其中整个指令周期为两个clock,这里控制在第一个整个clock上执行且仅仅执行读取指令的操作,即使在下一个clock周期到来之前,也不进行其他操作,而在第二个周期时对指令进行操作,通过控制台(或者译码器)来实现各个元件的控制,像打开阀门一样控制数据流通。
2.在确定好指令周期后,根据实验指导书给出的内容所设计的单周期CPU数据通路模型如下图所示:
数字电路实验(五)——CPU综合设计(1)
数字电路实验(五)——CPU综合设计(1)
3.设计指令表如下:
数字电路实验(五)——CPU综合设计(1)

三、详细设计

数字电路实验(五)——CPU综合设计(1)

3.1设计的整体架构
可以看出共有13个元件,除了实验中要求的PC,SM,ALU,LJYW,MADD,RAM,IR,JCQ之外,还有其他的5个用作信息存储的小寄存器。由于我自己附加要求实现in,out信号,所以设计了处理LED_IN和LED_OUT的指令部分,因为我写的比较早,就实现了,不知道可不可以加分。
上述clock是输入信号,led_in是输入信号,其他所有的信号均为输出信号,用来检测是否运行正确。所有的输出均为各个模块的模拟输出。注意寄存器的初值已经在编写的时候输入到了寄存器中,在后续的演示中不需要人为输入。
在检测的时候主要观察ir信号(指令信号),sm信号(总使能信号),led_out信号(led输出信号),c信号(加有进位,或减有借位,或移位移到C的是1,则C标志位1,否则为0。除这3类指令外,其它不影响C标志),z信号(加,减,或和取反指令执行后如果结果为0则Z标志为1,否则为0。除这些指令外,其它指令不影响Z标志),jcqa,jcqb,jcqc,jcqd信号(寄存器组中的存储值)
运行的时候分为取值周期和执行周期:
1)取值周期:
在sm=0的时候,该时钟周期为取值周期,该周期的上升沿执行PC+1操作和RAM的取指令操作和IR的存储指令操作。
2)执行周期:
在sm=1的时候,该时钟周期为执行周期,该周期的为0的时候执行SM的译码操作,ALU的算术运算操作和LJYW的移位操作,以及MADD的选择操作,如有需要还要再进一次RAM的取值操作(在跳转指令的时候),该周期的为1的时候执行PC的写入操作,RAM的写入操作和JCQ的写入操作。
注意,由于我使用了分时间段设计,所以已经人为的固定了每个时间段执行什么操作,所以程序比较有序,但同时也比较固定,时钟信号在每个模块都有体现。