请选择 进入手机版 | 继续访问电脑版

湖南大学数字电路CPU设计

[复制链接]
丶禁飞 发表于 2021-1-1 10:33:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
模子机设计报告:湖南大学CPU设计

工程代码github
一、设计目的

完整、连贯地运用《数字逻辑》所学到的知识,熟练掌握 EDA 工具根本使用方法,为学习好后续《盘算机原理》课程做铺垫。
二、设计内容

任务
① 按照给定的数据通路、数据格式和指令系统,使用 EDA 工具设计一台用硬连线逻辑控制的浅易盘算机;
② 要求机动运用各方面知识,使得所设计的盘算机具有较佳的性能;
③ 对所设计盘算机的性能指标进行分析,整理出设计报告
数据格式与指令系统
本设计的主要目的是希望学生巩固在《数字逻辑》课程中学到的理论知识,并加以机动
运用。因此,要设计的盘算机非常简朴。这台呆板具有寄存器直接寻址和寄存器间接寻址两种寻址方式,除跳转指令为双字节指令外,其它指令均为单字节指令,字长为 8 位。
1、 数据格式

数据字采用 8 位二进制定点补码表现,此中最高位(第 7 位)为符号位,小数点可视为最左或最右,其数值表现范围分别为:-1≤X<+1 或-128≤X<+127。
2、 寻址方式

指令的高 4 位为操纵码,低 4 位分别用 2 位表现目的寄存器和源寄存器的编号,或表现寻址方式。共有 2 种寻址方式。
⑴ 寄存器直接寻址
当 R1 和 R2 均不是“11”时,R1 和 R2 分别表现两个操纵数所在寄存器的地点(寄存器编号),此中 R1 为目的寄存器地点,R2 为源寄存器地点。R1 或 R2 的值 指定的寄存器00 A 寄存器01 B 寄存器10 C 寄存器
⑵ 寄存器间接寻址
当 R1 或 R2 中有一个为“11”时,表现相应操纵数的地点在 C 寄存器中。
3、 指令系统

指令系统有 16 条指令,具体格式见指令系统表。应该指出的是,各条指令的编码形式可以多种多样。为了叙述方便,下面采用汇编符号对指令进行形貌,此中 R1 和 R2 分别表现“目的”和“源”寄存器,M 表现地点在寄存器 C 中的存贮单位。
数据通路及其说明
盘算机的工作过程可以看作是许多差别的数据流和控制流在呆板各部门之间的流数据流所颠末的路径称作呆板的数据通路。数据通路差别,指令执行所颠末的操纵过程就差别,呆板的结构也就不一样。如何设计一个好的数据通路已经超出了本课程的范围,在此我们不予讨论。我们假设所设计的盘算机的数据通路如图所示。
1、 数据传送类指令的执行过程
寄存器之间的传送
MOV R1,R2
要求完成的操纵为(R2)→R1,执行过程为:
由 R2 的编码通过 RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,在 S3~S0 和 M的控制下,经 ALU 送入总线 BUS;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将BUS 上的数据写入通用寄存器 R1。
寄存器到内存的传送
MOV M,R2
要求完成的操纵为(R2)→(C),执行过程为:
由 M 的编码 11 通过 RWBA1、RWBA0 从通用寄存器 B 口读出 C 寄存器中的地点,在MADD=2 的控制下,地点通过选择器到达存储器 RAM 的地点输入端;由 R2 的编码通过RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,在 S3~S0 和 M 的控制下,经 ALU 送入总线 BUS,并在/CS 和 XL 控制下将 BUS 上的数据写入存储器 RAM。
内存到寄存器的传送
MOV R1,M
要求完成的操纵为((C))→R1,执行过程为:
由 M 的编码 11 通过 RAA1、RAA0 从通用寄存器 A 口读出 C 寄存器中的地点,在MADD=1 的控制下,地点通过选择器到达存储器 RAM 的地点输入端,/CS 和 DL 使数据出现在 BUS 上;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。
2、 算术逻辑运算类指令的执行过程
ADD R1,R2
SUB R1,R2
OR R1,R2
这类指令的执行过程为:
由 R2 的编码通过 RAA1、RAA0 从通用寄存器组 A 口读出 R2 的内容,由 R1 的编码通过 RWBA1、RWBA0 从通用寄存器组 B 口读出 R1 的内容,在 S3~S0 和 M 的控制下,经ALU 送入总线 BUS;由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。此中 ADD 和 SUB 指令影响状态位 Cf和 Zf。
3、 移位指令的执行过程
RSR R1
RSL R1
这类指令的执行过程为:
由 R1 的编码通过 RWBA1、RWBA0 从通用寄存器组 B 口读出 R1 的内容,在 S3~S0和 M 的控制下通过 ALU,经移位逻辑循环右移或循环左移后送入总线 BUS;再由/WE 控制和 R1 的编码选择 RWBA1、RWBA0,将 BUS 上的数据写入通用寄存器 R1。但是,尺度的 ALU 模块没有移位功能,需要在该模块出口与总线接口处增加一部门电路以实现相应的移位功能(此问题请同学们自行办理)。
4、 转移类指令的执行过程
JMP add
JZ add
JC add
这类指令为双字节指令,第一字节为指令码,第二字节为转移目的地点。这类指令的执行过程为:在 MADD=0 的控制下,步伐计数器 PC 中的地点通过选择器到达存储器 RAM 的地点输入端,在/CS 和 DL 控制下转移地点从 RAM 中读出并送入 BUS;如果条件满意(IN PC=0)则在 LD PC 允许下将 BUS 上的地点打 PC,否则 PC 加 1 计数。
当数据通路设计好之后,就要进行详细电路设计,这时需要思量其它各种因素,比如进行触发器 Cf和 Zf的设置。
控制器设计
有了指令系统和数据通路之后,就可以进入控制器设计阶段。控制器设计有两种方法,一种是组合逻辑实现方法,另一种是微步伐实现方法。我们采用第一种方法。
1、微控制信号
指令寄存器 IR 吸收到一条呆板指令后,这条指令就被译码执行。指令通过译码产生出的各种控制信号在时钟信号的共同下控制着指令执行的全过程。为此,需要将执行每条指令所需的全部根本微操纵的控制信号罗列出来,进行综合分析、化简,并落实到差别的周期、节奏之中,然后用各种逻辑门电路实现。以下是所用根本控制信号列表。
2、指令周期与工作脉冲设置
指令同期与数据通路结构、指令执行方式有关。指令可以串行执行,也可以并行执行。
本设计采用串行工作方式,即“读取—执行—再读取—再执行……”。串行工作方式虽然工作速度和主机效率都要差一些,但它的控制简朴。因此,本机指令周期可以确定为:
取 一 条 指 执 行 一 条 指 令一 个 指 令 周 期读取指令的时间随所使用的 RAM 的性能而异。执行一条指令所需工作脉冲的个数与宽度要依据控制流和数据流所颠末的路径与各级门的最大延迟而定。比方,本机中写入 RAM和寄存器组的操纵显然不能发生在“执行阶段”的任意时刻,它必须是在运算结果已经产生,并被传送到总线的适当时刻才气“写”,这就需要工作脉冲来控制时序
控制台与控制指令设计
有了数据通路和控制器,还要有输入/输出部门,我们才气将编好的步伐送入系统,看到运算结果。为简朴起见,我们仅思量最简朴的 I/O 部门。虽然是最简朴的,但仍必须有以下几个功能:
① 可以大概启动系统运行;
② 可以大概输入地点和步伐;
③ 可以大概查抄内存的内容;
④ 可以大概终止系统的运行;
⑤ 可以大概对系统进行初始化;
⑥ 可以大概提供某些堕落信息,如溢出等。
1、 命令键设置及实现
为了实现控制台的功能,我们可以设置以下几个命令键:
⑴ START 键:启动系统运行,起始地点由 PC 当前内容确定;
⑵ STOP 键:终止系统运行;
⑶ INA 键:输入地点,将开关上设置的数作为地点送入 PC 中;
⑷ INP 键:输入步伐,将开关上设置的数作为呆板指令代码送入当前 PC 所指定的内存单位中;
⑸ CHP 键:查抄步伐,将当前 PC 所指定的内存单位的内容送显示器显示;
⑹ RESTART 键:系统总复位命令。
还可以设置一些其它命令键。在上面 6 个键中,INA、INP、CHP 不光要启动系统运行,还需要在命令执行完后停机。要注意,这样的命令没有自己的指令格式,需要别的设计编码电路对这些命令进行编码,并将其送入指令寄存器 IR。
2、 输入输出部件
输入输出可以采用二进制、十进制或 ASCII 码。设备有多种多样,如 LCD 显示器及键
盘、打印机等。为简朴起见,本机采用最简朴的二进制开关作为输入部件,发光二极管作为
输出部件。发光二极管所显示的内容要由寄存器生存
三、 详细设计

3.1设计的整体架构
上图便是我设计的cpu的bdf
cpu工程中各个文件
cpu工程中的文件
cpu设计中每个元件的文件夹
3.2各模块的具体实现
(此部门必须有模块的接口设计,功能实现,功能的仿真验证等内容。)
1. PC计数器

Vhdl
Pc计数器一共有五个输入端口,一个输出端口,此中输入端口有一个为时钟信号,剩下2个为控制信号,一个复位信号,最后一个为总线的输入,
功能为当reset复位信号为0时,PC内的数据清0,当inpc为1时 PC=PC+1;当ldpc为1时PC=cin
功能仿真结果
结果分析
当reset为0时,输出为00000000
当reset为1时,ldpc为1时,输出为输入即00001000
当reset为1时 ,inpc为1时,输出并不为输入,而是pc+1即为00001001
2. 选择器

Vhdl
选择器一共五个端口,三个输入端口,一个控制信号端口,一个输出端口
当控制信号madd分别为00 01 10 选择器分别输出a b c三个输入
功能仿真
结果分析
当madd为00时,输出与a口一致,
01与b口一致
10与c口一致
3. RAM

bsf
为根本的LPM_RAM_IO元件可以大概实现读写功能
Ram对应的mif文件
4. IR寄存器

Vhdl
一共有9个端口此中一个数据输入端口,一个复位信号端口,两个控制信号端口,5个输出端口
功能为Reset为0时,IR寄存器中储存的值归0;Reset为1时,当LDIR为1时,输出
功能仿真
当reset为0时无论LDIR所有的输出都为0
当reset为1,LDIR为1时,在适中的上升沿,输出与输入相符
5. 指令译码器

Vhdl
一共有22个端口,此中一个类时钟信号输入端口,5个指令输入端口,16个输出端口
功能:在sm(类时钟信号)的执行周期,根据输入的ir以及剩下的四位输入合成的8位向量,输出对应的16个操纵的执行与否
功能仿真
当输入满意要求的指令后在sm的执行周期,将会有对应的操纵端口输出为1
6. 控制器

Vhdl
一共有16个操纵输入端口,2个判断信号输入端口,1个类时钟sm输入端口,14个控制信号输出端口
功能,根据输入的操纵的执行与否以及cz标志,在sm的执行周期与控制周期发出别的元件的控制信号
功能仿真
所有信号与输入的关系皆与实验要求相符
7. 寄存器组

Vhdl
一共有一个总线数据输入端口,5个控制信号输入端口,一个复位信号输入端口,1个时钟输入端口,以及五个输出端口
功能:可以实现对寄存器组中abc三个寄存器的读与写,而且将abc三个寄存器内容输出
功能仿真
当reset为0时,abc三个寄存器内容皆为00000000
当reset为1,we为0,rwba1,rwba0分别为00 01 10时,在时钟的上升沿,abc三个寄存器的值分别便是输入
We为1后rwba1.rwba0,raa1,raa0分别为0000 0101 1010 AB两个接口分别输出的为abc三个寄存器此前储存的值
8. ALU

Vhdl
一共有两个数据输入端口,5个控制信号输入端口,一个结果输出端口,两个标志位输出端口
功能:根据控制信号,对进入alu的两个数据执行加减或非循环左右移操纵
功能仿真
当FBUS=0时q没有输出
当FBUS=1时
当FLBUS、FRBUS分别为1 0时 q为r1循环左移的结果 为01时 q为r1循环右移结果
当s为1111时q为r2 为1001时q为r1+r2 为0110时q为r1-r2 为0101 q为-r1 为1011时q为r1 or r2
9. CZ暂存器

Vhdl
一共有2个标志输入信号,2个控制信号,2个时钟信号,2个标志输出信号
功能:在执行周期时钟上升沿将cz放出(方便整个cpu的时钟分配的调治)
功能仿真
当sm为1时时钟上升沿cz被放出
10. (模仿)二极管

Vhdl
一共有一个数据输入端口,一个数据输出端口,一个控制信号端口
功能:由于没有硬件,模仿一下输出情况,当ifout为1时输出输入数据
功能仿真
当IFOUT为0时输出为高组态
当IFOUt为1时输出为输入
11. (模仿)开关

Vhdl
一共有两个数据输入端口,一个控制信号输入端口,一个数据输出端口
功能当IFIN为1时输出额外输入的值,为0时输出总线上输入的值(由于开关需要操纵台,所以只能模仿一下)
功能仿真
当IFIN为0时 输出BUSOUT与BUSCIN一致 为1时输出与OCIN一致
12. SM创造器

Vhdl
一共有一个时钟输入信号端一个时钟输出信号端,一个复位信号输入端
功能:将时钟周期增加一倍,频率淘汰一倍,即创造sm
功能仿真
SM乐成变为clk频率的一半
四、 系统测试

4.1 测试情况
QuartusII
4.2 测试代码
(使用你已实现的指令编写一至两个步伐测试以检测模子机的正确性)
此为ram中的设计的指令,按照顺序为
输入abc,mova,movb,movc,ADD,SUB,OR,RSR,RSL,NOT,JMP,NOP,OUT,HALT
4.3 测试结果
由于时钟信号的原因,pc两个值(如0,1)之间正下方对的ram_out即为ram当前值ram(0),cpu执行的时候取址与上一个执行周期有重复部门,即流水。
按照ram中储存的值的顺序,对应操纵表,得出结果皆符合要求

来源:https://blog.csdn.net/banxia_hnu_zjw/article/details/111994090
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )