CPU课程设计报告
计算机组成原理_课程设计任务书

课程设计课程名称:计算机组成原理设计题目:一个非常简单的CPU的设计学院:信息工程与自动化专业:计算机科学与技术年级: 08级 1班学生姓名:张桥指导教师:李凌宇日期: 2010-9-9教务处制课程设计任务书信息工程与自动化学院计算机专业 08 1 年级学生姓名:张桥课程设计题目:一个简单的CPU的设计课程设计主要内容:设计一台完整的计算机。
首先要确定该计算机的功能和用途。
在设计中根据功能和用途确定指令系统,定义数据通路,设计每条指令的执行流程,要求利用微程序进行设计,每人至少要求4条CPU指令,可以自己选择;在设计中要求画出指令系统的格式并说明各位的意义;要求画出数据通路并定义微操作信号;要求画出微程序流程图。
设计指导教师(签字):教学基层组织负责人(签字):年月日一台模型计算机的设计一、教学目的、任务与实验设备融会贯通本课程各章节的内容,通过知识的综合运用,加深对计算机系统各模块的工作原理及相互联系的认识,加深计算机工作中“时间—空间”概念的理解,从而清晰地建立计算机的整机概念。
二、数据格式和指令系统本模型机是一个8位定点二进制计算机,具有四个通用寄存器:R 0~R 3,能执行11条指令,主存容量为256KB 。
1. 数据格式数据按规定采用定点补码表示法,字长为8位,其中最高位(第7位)为符号位,小数点位置定在符号位后面,其格式如下:数值相对于十进制数的表示范围为:-1≤X ≤1―2―72. 指令格式及功能由于本模型机机器字只有8位二进制长度,故使用单字长指令和双字长指令。
⑴ LDR Ri ,D格式 7 4 3 2 1 0功能:Ri ←M (D )(2) STR Ri ,D格式功能:M (D )←(Ri )(3) ADD Ri ,Rj格式 功能:Ri ←(Ri )+ (Rj )(4) SUB Ri ,Rj格式 7 4 3 2 1 0功能:Ri ←(Ri )- (Rj )(5) AND Ri ,Rj格式功能:Ri ←(Ri)∧(Rj)(6)OR Ri,Rj格式功能:Ri ←(Ri)∨(Rj)(7)MUL Ri,Rj格式7 4 3 2 1 0功能:Ri ←(Ri)×(Rj)(8)转移指令格式7 4 3 2 1 0功能:条件码00 无条件转移PC ←D01 有进位转移PC ←D10结果为0转移PC ←D11结果为负转移PC ←D⑼IN R i,M j格式其中M j为设备地址,可以指定四种外围设备,当M j=01时,选中实验箱的二进制代码开关。
计算机组成原理课程设计--用硬件描述语言设计CPU

用硬件描述语言设计CPU摘要本次设计完全用verilog硬件描述语言编写微处理器的各个部件,在顶层文件里将各个部件连接起来,形成一个简单的微处理器,加上一些外围模块来实现一些功能。
本次设计在合理性与实用性上没有考虑。
只为了达到技术指标,从原理上完成一个简单的cpu设计。
关键字:verilog,微处理器,CPU设计1Design CPU In Hardware Description LanguageAbstractThe design completely microprocessor verilog hardware description language in all parts, the top file in the various components connected together to form a simple microprocessor, plus some peripheral modules to achieve some functionality. The design does not have a reasonable and practical considerations. Only to achieve technical indicators, from the principles of the cpu to complete a simplecpu design.Key Words:verilog, microprocessor, CPU design目录2第1章设计任务和技术指标 (5)第2章简单介绍 (6)2.1微处理器硬件系统及原理 (6)2.1.1内部组成 (6)2.1.2外围模块 (8)2.2处理器指令系统及功能 (8)第3章各模块的设计及实现 (9)3.1时钟发生器的设计及实现 (9)3.2程序计数器的设计及实现 (12)3.3指令寄存器的设计及实现 (13)3.4运算器的设计及实现 (14)3.5累加器的设计及实现 (16)3.6地址选择器的设计及实现 (17)3.7数据选择器的设计及实现 (17)3.8控制器的设计及实现 (18)3.9 ROM的设计及实现 (25)3.10 RAM的设计及实现 (26)第4章CPU的测试 (27)4.1乘法测试 (29)4.2除法测试 (29)4.3减1测试 (29)4.4加、减1测试 (30)4.5测试结果 (30)第5章总结 (33)第6章参考文献 (34)3第1章设计任务和技术指标运用在“数字电路与逻辑设计”课程中学过的基本理论知识,设计并用可编程逻辑器件实现一个简单的八位操作数的微处理器。
eda课程设计cpu

eda课程设计cpu一、教学目标本课程旨在让学生了解和掌握EDA课程设计CPU的相关知识。
通过本课程的学习,学生将能够:1.知识目标:•理解CPU的基本构成和原理;•掌握EDA工具的使用方法;•了解CPU设计的流程和步骤。
2.技能目标:•能够使用EDA工具进行CPU设计;•能够根据需求分析,设计出符合要求的CPU;•能够对设计的CPU进行仿真和测试。
3.情感态度价值观目标:•培养学生对计算机科学的兴趣和热情;•培养学生解决问题的能力和创新精神;•培养学生团队协作和沟通的能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.CPU的基本构成和原理;2.EDA工具的使用方法;3.CPU设计的流程和步骤;4.CPU设计的实例讲解和分析。
具体的教学内容安排如下:第一周:CPU的基本构成和原理;第二周:EDA工具的使用方法;第三周:CPU设计的流程和步骤;第四周:CPU设计的实例讲解和分析。
三、教学方法为了更好地实现教学目标,我们将采用以下教学方法:1.讲授法:用于讲解CPU的基本构成和原理,以及EDA工具的使用方法;2.案例分析法:通过分析具体的CPU设计实例,使学生更好地理解和掌握设计流程和步骤;3.实验法:让学生亲自动手进行CPU设计,提高学生的实践能力。
四、教学资源为了支持教学内容的实施,我们将准备以下教学资源:1.教材:CPU设计与EDA工具的使用相关教材;2.多媒体资料:包括PPT、视频教程等;3.实验设备:计算机、EDA工具软件等。
通过以上教学资源的使用,我们将尽力提高学生的学习体验,帮助学生更好地掌握EDA课程设计CPU的知识。
五、教学评估为了全面、客观地评估学生在EDA课程设计CPU方面的学习成果,我们将采取以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估其对知识的掌握和运用能力;2.作业:布置与课程内容相关的设计项目和练习题,评估学生的理解和应用能力;3.考试:设置期末考试,涵盖理论知识及实践操作,评估学生对CPU设计与EDA工具使用的综合能力。
plc课程设计cpu226

plc课程设计cpu226一、教学目标本节课的教学目标是让学生掌握CPU226 PLC的基本原理和应用,具备使用CPU226进行编程和调试的能力。
具体分为以下三个部分:1.知识目标:学生需要了解CPU226 PLC的结构、工作原理和编程环境。
2.技能目标:学生能够使用CPU226 PLC进行简单的逻辑控制编程和调试。
3.情感态度价值观目标:培养学生对自动化技术的兴趣和认识,提高学生解决实际问题的能力。
二、教学内容本节课的教学内容主要包括以下几个部分:1.CPU226 PLC的结构和工作原理:介绍CPU226 PLC的硬件组成、接线方式和功能模块。
2.CPU226 PLC的编程环境:讲解CPU226 PLC的编程软件安装、使用方法和编程语言。
3.逻辑控制编程:通过实例教授CPU226 PLC的基本指令、功能指令和编程技巧。
4.编程调试:讲解如何使用编程软件进行程序调试和故障排查。
三、教学方法为了提高教学效果,本节课将采用以下几种教学方法:1.讲授法:讲解CPU226 PLC的基本原理、编程环境和编程方法。
2.案例分析法:通过实际案例让学生了解CPU226 PLC在工业中的应用和编程技巧。
3.实验法:安排课后实验,让学生动手操作CPU226 PLC,巩固所学知识。
4.讨论法:鼓励学生课堂上提问、发表见解,提高学生的参与度和积极性。
四、教学资源为了保证教学质量,本节课将充分利用以下教学资源:1.教材:选用权威、实用的CPU226 PLC教材,为学生提供系统、全面的学习资料。
2.参考书:推荐学生阅读相关参考书籍,丰富学生的知识体系。
3.多媒体资料:制作课件、教学视频等多媒体资料,提高课堂教学的趣味性和生动性。
4.实验设备:为学生提供CPU226 PLC实验设备,便于学生动手实践和验证所学知识。
五、教学评估本节课的评估方式包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答等情况,占总评的30%。
单片机课程设计

单片机课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和结构,理解其工作流程。
2. 使学生了解并熟练运用单片机的编程语言,如C语言或汇编语言。
3. 帮助学生掌握单片机外围电路的设计与搭建,使其能独立完成简单的电路系统。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高创新思维和动手实践能力。
2. 培养学生具备查阅资料、分析问题、设计方案、调试程序等综合技能。
情感态度价值观目标:1. 培养学生对单片机课程的兴趣,激发学习热情,形成自主学习、合作学习的良好习惯。
2. 培养学生具备团队协作精神,学会与他人分享、交流、合作,提高沟通能力。
3. 培养学生关注科技发展,了解单片机在现实生活中的应用,增强社会责任感和创新意识。
课程性质分析:本课程为单片机课程设计,旨在让学生在掌握理论知识的基础上,通过实际操作,提高解决实际问题的能力。
学生特点分析:学生已具备一定的电子技术基础和编程能力,对单片机有一定了解,但实践经验不足,需要通过本课程加强实践操作和综合运用。
教学要求:1. 理论与实践相结合,注重培养学生的动手能力。
2. 引导学生主动思考,发现问题,解决问题。
3. 创设实际情境,提高学生的学习兴趣和参与度。
4. 注重培养学生的团队协作能力和沟通能力。
二、教学内容1. 单片机原理及结构:介绍单片机的组成、工作原理,重点讲解CPU、存储器、输入输出接口等部分。
参考教材章节:第一章 单片机概述2. 单片机编程语言:学习C语言和汇编语言的基础知识,掌握编程技巧,能独立编写简单的单片机程序。
参考教材章节:第二章 单片机编程语言3. 单片机外围电路设计:讲解并实践常用外围电路的设计与搭建,如LED 灯、蜂鸣器、数码管等。
参考教材章节:第三章 单片机外围电路设计4. 单片机程序下载与调试:学习使用编程器、仿真器等工具,掌握程序下载、调试方法。
参考教材章节:第四章 单片机程序下载与调试5. 实践项目:设计并实现几个实际项目,如温度控制器、智能小车、智能家居系统等,锻炼学生解决实际问题的能力。
计算机组成原理CPU设计实验报告

计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。
单周期cpu课程设计

单周期cpu课程设计一、课程目标知识目标:1. 学生能理解单周期CPU的工作原理,掌握其内部结构及功能。
2. 学生能描述单周期CPU的指令执行过程,包括取指、译码、执行、访存、写回等阶段。
3. 学生能解释单周期CPU中时钟、指令和数据的关系,并分析其性能特点。
技能目标:1. 学生能运用所学知识,设计并实现一个简单的单周期CPU。
2. 学生能运用仿真软件对单周期CPU进行功能仿真,验证其正确性。
3. 学生能通过课程学习,培养自己的逻辑思维和问题解决能力。
情感态度价值观目标:1. 学生能对计算机硬件及CPU产生兴趣,激发学习热情。
2. 学生能认识到CPU在计算机系统中的核心地位,增强对计算机科学的尊重和热爱。
3. 学生能在团队协作中发挥积极作用,培养合作精神和沟通能力。
课程性质:本课程为计算机科学与技术专业核心课程,旨在让学生了解CPU的基本原理,掌握单周期CPU的设计方法。
学生特点:学生已经具备一定的数字逻辑电路基础,具有一定的编程能力和逻辑思维能力。
教学要求:结合学生特点,注重理论与实践相结合,引导学生通过课程学习,达到课程目标所规定的知识、技能和情感态度价值观要求。
在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养其独立思考和解决问题的能力。
通过课程目标的分解,确保教学设计和评估的针对性和有效性。
二、教学内容1. 单周期CPU概述:介绍CPU的发展历程,单周期CPU的概念及其在计算机系统中的作用。
教材章节:第1章 计算机系统概述2. 单周期CPU内部结构:讲解CPU的内部组成部分,包括控制单元、算术逻辑单元(ALU)、寄存器组、程序计数器等。
教材章节:第2章 CPU内部结构3. 指令集与指令执行过程:分析指令集的设计,讲解单周期CPU指令执行过程中各阶段的任务和实现方法。
教材章节:第3章 指令集与指令执行4. 时序控制与性能分析:探讨时钟、指令和数据的关系,分析单周期CPU的性能特点。
教材章节:第4章 时序控制与性能分析5. 单周期CPU设计方法:介绍设计单周期CPU的步骤,包括电路设计、指令集设计、时序控制等。
操作系统课程设计报告

实践课设计报告课程名称操作系统课程设计模拟设计内存管理中的地址题目转换(动态分区、页式十进制)学院班级学号姓名指导教师年月日课程设计任务书学生姓名:专业班级:指导教师:工作单位:题目: 模拟设计内存管理中的地址转换(动态分区、页式十进制)初始条件:1.预备内容:阅读操作系统的内存管理章节内容,理解动态分区、页式、段式和段页式存储管理的思想及相应的分配主存的过程。
2.实践准备:掌握一种计算机高级语言的使用。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.下列内部存储器管理中地址转换,在完成指定存储管理技术中的地址转换基础上还可以选择其它内部存储器管理中的地址转换进行模拟设计并实现:⑴动态分区方案,用最先适用算法对作业实施内存分配,然后把作业地址空间的某一逻辑地址转换成相应的物理地址。
能够处理以下的情形:输入某一逻辑地址,程序能判断地址的合法性,如果合法,计算并输出相应的物理地址。
如果不能计算出相应的物理地址,说明原因。
⑵页式存储管理中逻辑地址到物理地址的转换(十进制)。
能够处理以下的情形:输入某一十进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十进制表示。
⑶页式存储管理中逻辑地址到物理地址的转换(八进制)。
能够处理以下的情形:输入某一八进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用八进制表示。
⑷页式存储管理中逻辑地址到物理地址的转换(十六进制)。
能够处理以下的情形:输入某一十六进制逻辑地址,能检查地址的合法性,如果合法进行转换,否则显示“地址非法”;物理地址用十六进制表示。
⑸段式存储管理中逻辑地址到物理地址的转换。
能够处理以下的情形:指定内存的大小,进程的个数,每个进程的段数及段大小;能检查地址的合法性,如果合法进行转换,否则显示地址非法的原因。
⑹段页式存储管理中逻辑地址到物理地址的转换。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程片上计算机系统题目 CPU模型机设计班级专业学生学号指导教师2014年7 月 3 日目录:1.课程设计的目的及要求 (3)2.处理器的设计思想和设计内容 (3)3.设计处理器的结构和实现方法 (3)4.模型机的指令系统 (4)5.处理器的状态跳转操作过程 (4)6. CPU的Verilog代码 (7)7. 模型机在Quartus II环境下的应用 (19)8. 仿真波形 (19)9. 课程设计的总结 (21)一.课程设计的目的及要求:(一)目的:1.掌握RISC CPU与内存数据交换的方法。
2.学会指令格式的设计与用汇编语言编写简易程序。
3.能够使用VHDL硬件描述语言在QuartusⅡ软件环境下完成CPU模型机的设计。
(二)要求:1.以《计算机组成与设计》书中123页的简化模型为基础更改其指令系统,形成设计者的CPU,2.在Quartus II环境下与主存连接,调试程序,观察指令的执行是否达到设计构想。
二.处理器的设计思想和设计内容:处理器的字长为16b;包括四种指令格式,格式1、格式2、格式3的指令字长度为8b,格式4的指令字长度为16b;处理器内部的状态机包括七个状态。
(一)关于修改后的CPU:一共设计25条指令,主要包括空操作指令、中断指令、加法指令、减法指令、加法指令、四种逻辑运算指令、比较、算术移位操作指令、逻辑移位操作指令、加减1指令、加减2指令、数据传输指令、转移类指令、读写指令、特权指令等等。
(二)关于RAM:地址线设置成8bits,主存空间为4096words。
三.设计处理器的结构和实现方法:(指令格式)格式1:寄存器寻址方式15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OP Rx Ry 空白格式2:寄存器变址寻址方式OP Ry 空白格式3:立即数寻址方式15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OP I 空白格式4:无操作数寻址方式15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OP 空白空白格式5:直接寻址方式15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0OP Addr内存(2的12次方)四.模型机的指令系统CPU的指令集:操作码OP IR(15..1 2) 指令格式指令的助记指令的内容符0000 4 Idle 无操作 PC=PC+1 0001 3 Load Data R0←I 立即数操作PC=PC+1 0010 1 Move Rx Ry Rx ←(Ry) PC=PC+1 0011 1 Add Rx Ry Rx ←(Rx)+(Ry) PC=PC+1 0100 1 Sub Rx Ry Rx ←(Rx)-(Ry) PC=PC+1 0101 1 Mul Rx Ry Rx ←(Rx)*(Ry) PC=PC+10110 2 IR(11.10)00 AND Rx Ry01 OR Rx Ry10 XOR Rx Ry11 NOT RxRx ←(Rx) AND (Ry) PC=PC+1Rx ←(Rx) OR (Ry) PC=PC+1Rx←(Rx)XOR(Ry) PC=PC+1Rx←NOT (Rx) PC=PC+10111 1 COM Rx Ry Rx >Ry Rx< Ry Rx== Ry PC=PC+11000 2 IR(11.10)00 arr Rx Ry01 arl Rx Ry10 lgr Rx Ry11 lgl Rx Ry算术右移PC=PC+1算术左移PC=PC+1逻辑右移PC=PC+1逻辑左移PC=PC+11001 1 IR(11.10)00 Rx+101 Rx-110 Rx+211 Rx-2PC=PC+11010 1 Swap Rx Ry A←(Ry) Ry←(Rx) Rx←(A)PC=PC+11011 5 Jmp Addr PC←Addr PC=PC+11100 5 Jz Addr If (R0)=0 then PC←Addr else PC=PC+11101 5 Read Addr R0←(Addr) PC=PC+11110 5 Write Addr Addr←(R0) PC=PC+1 1111 4 Stop 无操作 PC保持不变五.处理器的状态跳转操作过程:模型机每一状态下的操作及状态跳转当前状态执行操作次态与读下一条指令的有关的操作St_0 取指令IR(15..0)←M_data_in(15..0)St_1Write-Read←’0’ PC=PC+1St_1 IF OP=Load THENR0←IR(11..8)||”000000000000”MAR←PCIF(OP=Stop)THEN St_1ELSESt_2END IFIF OP=Move THEN Rx ←(Ry) IF OP=sh THEN Rx ←(Rx)移位运算IF OP=Add THEN A←(Ry) IF OP=Sub THEN A←(Ry) IF OP=Mul THEN A←(Ry) IF OP=Log THEN A←(Ry) AND、OR、NOT、XORIF OP=Math THEN A←(Ry) +1 -1 +2 -2运算IF OP=Swap THEN A←(Ry) IF OP=Stop THEN NULLIF OP=Idle THEN NULLIF OP=Jmp THEN NULLIF OP=Jz THEN NULLIF OP=Read THEN NULLIF OP=Write THEN NULLSt_2 IF OP= Load OR OP=Move OR OP=shOR OP=IdleTHEN NULL St_0Write-Read←’0’IF OP= Add THEN Rx ←(Rx)+AIF OP= Sub THEN Rx ←(Rx)-AIF OP=AND THEN Rx ←(Rx)AND AIF OP= NOT THEN Rx ←(Rx)NOTAIF OP= XOR THEN Rx ←(Rx)XOR AIF OP= NOT THEN Rx ←not(Rx)IF OP= math THEN Rx ←(Rx)+-1.2IF OP= Swap THEN Ry←(Rx) St_3Write-Read←’0’IF OP= Jmp or Jz THENNULLIF OP=Read or Write THENMAR←IR(11..0)St_3 IF OP=Swap THEN Rx←(A) St_0Write-Read←’0’IF OP=Read or Write or Jmp or Jz THENIR(7..0)←M_data_in St_4MAR←PCWrite-Read←’0’St_4 IF OP=(Read)THENMAR←IR(11..0)St_5Write-Read←’0’IF OP=(Write) THENMAR←IR(11..0)MDR←(R0)IF OP=(Jmp) THENPC←IR(11..0) MAR←IR(11..0)IF OP= (Jz) IF (R0)= 0 THENPC←IR(11..0) MAR←IR(11..0)ELSE MAR←(PC)IF OP=(Jmp) THENPC←IR(11..0) MAR←IR(11..0)IF OP= (Jz) IF (R0)= 0 THENPC←IR(11..0) MAR←IR(11..0)ELSE MAR←(PC)St_5 IF OP=(Jmp)or OP= (Jz)St_0 MAR←(PC)Write-Read←’0’IF OP=(Read)St_6 MAR←(PC)Write-Read←’0’IF OP=(Write)St_6 MAR←(PC)Write-Read←’1’St_6 IF OP=(Read)THEN R0←M_data_in St_0Write-Read←’0’六.六、CPU的Verilog HDL代码:module cpu(reset, clock, Write_Read, M_address, M_data_in, M_data_out, overflow); input reset;input clock;output Write_Read;output [11:0] M_address;input [7:0] M_data_in;output [7:0] M_data_out;output overflow;reg overflow;reg [15:0] IR;reg [7:0] MDR;reg [11:0] MAR;reg [2:0] status;parameteridle =4'b0000,load =4'b0001,move =4'b0010,addp =4'b0011,subp =4'b0100,mulp =4'b0101,logp =4'b0110,comp =4'b0111,sh =4'b1000,meth1 =4'b1001,swap =4'b1010,jmp =4'b1011,jz =4'b1100,read =4'b1101,write =4'b1110,stop =4'b1111;always @(negedge reset or posedge clock ) begin: status_changeif (reset == 1'b0)status <= 0;elsecase (status)0 :status <= 1;1 :if (IR[15:12] == stop)status <= 1;elsestatus <= 2;2 :case (IR[15:12])swap, jmp, jz, read, write : status <= 3;default :status <= 0;endcase3 :if (IR[15:12] == swap)status <= 0;elsestatus <= 4;4 :status <= 5;5 :case (IR[15:12])read :status <= 6;default :status <= 0;endcasedefault :status <= 0;endcase//endalways @(negedge reset or negedge clock) begin: seqreg [11:0] PC;reg [7:0] R0;reg [7:0] R1;reg [7:0] R2;reg [7:0] R3;reg [7:0] A;reg [8:0] temp;reg [15:0] temp2;if (reset == 1'b0)beginIR <= {16{1'b0}};PC = {12{1'b0}};R0 = {8{1'b0}};R1 = {8{1'b0}};R2 = {8{1'b0}};R3 = {8{1'b0}};A = {8{1'b0}};MAR <= {12{1'b0}};MDR <= {8{1'b0}};endelsebeginoverflow <= 1'b0;case (status)0 :beginIR <= {M_data_in, 8'b00000000}; PC = PC + 1'b1;end1 :beginif (IR[15:12] != stop)MAR <= PC;case (IR[15:12])load :R0 = {4'b0000, IR[11:8]}; move :case (IR[11:8])4'b0001 :R0 = R1;4'b0010 :R0 = R2;4'b0011 :R0 = R3;4'b0100 :R1 = R0;4'b0110 :R1 = R2;4'b0111 :R1 = R3;4'b1000 :R2 = R0;4'b1001 :R2 = R1;4'b1011 :R2 = R3;4'b1100 :R3 = R0;4'b1101 :R3 = R1;4'b1110 :R3 = R2;default :;endcasesh :case (IR[11:10])2'b00 :case (IR[9:8])2'b00 :R0 = {R0[7], R0[7:1]}; 2'b01 :R1 = {R1[7], R1[7:1]}; 2'b10 :R2 = {R2[7], R2[7:1]}; default :R3 = {R3[7], R3[7:1]}; endcase2'b01 :case (IR[9:8])2'b00 :R0 = {R0[6:0], R0[0]}; 2'b01 :R1 = {R0[6:0], R1[0]}; 2'b10 :R2 = {R0[6:0], R2[0]}; default :R3 = {R0[6:0], R3[0]}; endcase2'b10 :case (IR[9:8])2'b00 :R0 = {1'b0, R0[7:1]}; 2'b01 :R1 = {1'b0, R1[7:1]}; 2'b10 :R2 = {1'b0, R2[7:1]}; default :R3 = {1'b0, R3[7:1]}; endcasedefault :case (IR[9:8])2'b00 :R0 = {R0[6:0], 1'b0}; 2'b01 :R1 = {R1[6:0], 1'b0};2'b10 :R2 = {R2[6:0], 1'b0};default :R3 = {R3[6:0], 1'b0};endcaseendcaseaddp, subp, meth1, mulp, logp, comp, swap :case (IR[9:8])2'b00 :A = R0;2'b01 :A = R1;2'b10 :A = R2;default :A = R3;endcasedefault :;endcaseend2 :case (IR[15:12])addp :case (IR[11:10])2'b00 :begintemp = ({R0[7], R0[7:0]}) + ({A[7], A[7:0]}); R0 = temp[7:0];overflow <= temp[8] ^ temp[7];end2'b01 :begintemp = ({R1[7], R1[7:0]}) + ({A[7], A[7:0]}); R1 = temp[7:0];overflow <= temp[8] ^ temp[7];end2'b10 :begintemp = ({R2[7], R2[7:0]}) + ({A[7], A[7:0]}); R2 = temp[7:0];overflow <= temp[8] ^ temp[7];enddefault :begintemp = ({R3[7], R3[7:0]}) + ({A[7], A[7:0]});R3 = temp[7:0];overflow <= temp[8] ^ temp[7];endendcasesubp :case (IR[11:10])2'b00 :begintemp = ({R0[7], R0[7:0]}) + (~({A[7], A[7:0]})) + 1'b1;R0 = temp[7:0];overflow <= temp[8] ^ temp[7];end2'b01 :begintemp = ({R1[7], R1[7:0]}) + (~({A[7], A[7:0]})) + 1'b1;R1 = temp[7:0];overflow <= temp[8] ^ temp[7];end2'b10 :begintemp = ({R2[7], R2[7:0]}) + (~({A[7], A[7:0]})) + 1'b1;R2 = temp[7:0];overflow <= temp[8] ^ temp[7];enddefault :begintemp = ({R3[7], R3[7:0]}) + (~({A[7], A[7:0]})) + 1'b1;R3 = temp[7:0];overflow <= temp[8] ^ temp[7];endendcasemeth1 :case (IR[11:10])2'b00 :case (IR[9:8])2'b00 :R0 = R0 + 1'b1;2'b01 :R1 = R1 + 1'b1; 2'b10 :R2 = R2 + 1'b1; default :R3 = R3 + 1'b1; endcase2'b01 :case (IR[9:8])2'b00 :R0 = R0 - 1'b1; 2'b01 :R1 = R1 - 1'b1; 2'b10 :R2 = R2 - 1'b1; default :R3 = R3 - 1'b1; endcase2'b10 :case (IR[9:8])2'b00 :R0 = R0 + 2'b10; 2'b01 :R1 = R1 + 2'b10; 2'b10 :R2 = R2 + 2'b10; default :R3 = R3 + 2'b10; endcasedefault :case (IR[9:8])2'b00 :R0 = R0 - 2'b10; 2'b01 :R1 = R1 - 2'b10; 2'b10 :R2 = R2 - 2'b10; default :R3 = R3 - 2'b10; endcaseendcasemulp :case (IR[11:10])2'b00 :begintemp2 = R0 * A; R0 = temp2[7:0]; R1 = temp2[15:8]; end2'b01 :begintemp2 = R1 * A; R0 = temp2[7:0]; R1 = temp2[15:8]; end2'b10 :begintemp2 = R2 * A; R2 = temp2[7:0]; R3 = temp2[15:8]; enddefault :begintemp2 = R3 * A; R2 = temp2[7:0]; R3 = temp2[15:8]; endendcaselogp :case (IR[11:10])2'b00 :case (IR[9:8])2'b00 :R0 = R0 & A; 2'b01 :R0 = R0 & A; 2'b10 :R1 = R1 & R0; 2'b11 :R1 = R1 & R1; endcase2'b01 :case (IR[9:8])2'b00 :R0 = R0 | A; 2'b01 :R0 = R0 | A; 2'b10 :R1 = R1 | R0;2'b11 :R1 = R1 | R1; endcase2'b10 :case (IR[9:8])2'b00 :R0 = R0 ^ A; 2'b01 :R0 = R0 ^ A; 2'b10 :R1 = R1 ^ R0; 2'b11 :R1 = R1 ^ R1; endcasedefault :case (IR[9:8])2'b00 :R0 = (~A);2'b01 :R0 = (~A);2'b10 :R1 = (~R0);2'b11 :R1 = (~R1);endcaseendcasecomp :case (IR[11:10])2'b00 :if (R0 > A)R0 = 8'b00000001; else if (R0 < A)R0 = 8'b10000001; elseR0 = 8'b00000000; 2'b01 :if (R1 > A)R1 = 8'b00000001; else if (R1 < A)R1 = 8'b10000001; elseR1 = 8'b00000000; 2'b10 :if (R2 > A)R2 = 8'b00000001; else if (R2 < A)R2 = 8'b10000001; elseR2 = 8'b00000000; 2'b11 :if (R3 > A)R3 = 8'b00000001; else if (R3 < A)R3 = 8'b10000001; elseR3 = 8'b00000000; endcaseswap :case (IR[11:8])4'b0100 :R0 = R1;4'b1000 :R0 = R2;4'b1100 :R0 = R3;4'b0001 :R1 = R0;4'b1001 :R1 = R2;4'b1101 :R1 = R3;4'b0010 :R2 = R0;4'b0110 :R2 = R1;4'b1110 :R2 = R3;4'b0111 :R3 = R1;4'b1011 :R3 = R2;4'b0011 :R3 = R0;default :;endcasedefault :;endcase3 :case (IR[15:12])swap :case (IR[11:10])2'b00 :R0 = A;2'b01 :R1 = A;2'b10 :R2 = A;default :R3 = A;endcasejmp, jz, read, write :beginIR[7:0] <= M_data_in; PC = PC + 1'b1;enddefault :;endcase4 :case (IR[15:12])jmp :beginPC = IR[11:0];MAR <= IR[11:0];endjz :if (R0 == 8'b00000000) beginPC = IR[11:0];MAR <= IR[11:0];endelseMAR <= PC;read :MAR <= IR[11:0];write :beginMAR <= IR[11:0];MDR <= R0;enddefault :;endcase5 :MAR <= PC;6 :case (IR[15:12])read :R0 = M_data_in;default :;endcaseendcaseendendassign M_address = MAR;assign M_data_out = MDR;assign Write_Read = (reset == 1'b1 & status == 5 & IR[15:12] == write) ? 1'b1 : 1'b0;endmodule七、模型机在Quartus II环境下的应用:步骤:4.建立工程:工程名cpu5.编写cpu的Verilog HDL代码,将其添加到工程6.生成cpu的符号图7.建立内存数据的mif文件8.生成16bits的ram9.建立computer的block进行编译10.对computer进行功能模拟11.分析仿真波形七.仿真波形:1)cpu的编译报告2)mif文件3)computer(由cpu和ram组成)的连接图:4)功能模拟的波段(有的是实验室的9.0). .。