16位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时,选中实验箱的二进制代码开关。

组成原理课程设计(16位全加器电路的设计与实现)

组成原理课程设计(16位全加器电路的设计与实现)

16位全加器电路的设计与实现学生姓名:杨传福指导老师:王新摘要本课程设计主要利用门电路完成一个16位的全加器电路的设计与实现。

本设计采用逐步求解的方法,即先设计一位全加器,再利用一位全加器设计出四位全加器,最后在四位全加器的基础上设计出16位全加器,并使用VHDL语言编写程序,在MAX-PLUSⅡ仿真平台上进行仿真。

仿真结果表明,本课程设计中设计出的16位全加器能正确完成16位二进制数的加法运算。

关键词全加器;门电路;先行进位Abstract:This curriculum design primarily use the gate circuit to complete a 16-bit full-adder circuit.The design solve this problem with step-by-step approach, namely start designing one full-adder, and then use one full-adder design a four full-adder , the last design the 16-bit full-adder based on the four full-adder,and use VHDL language programming, at MAX-PLUS Ⅱsimulation on simulation platform. The simulation results show that the design of the curriculum design of the 16-bit full-adder to add a 16-bit binary number addition operations.Keywords:Full-adder; Gate circuit; First binary1引言1.1课程设计的背景随着计算机科学技术的发展,人们获得信息的途径更加多样,获取信息的速度更加快捷。

单片机 课程设计报告(完成版)

单片机  课程设计报告(完成版)

单片机课程设计报告
题目:音乐门铃
院系:电气信息工程系专业:通信工程
组长:吴楠学号: 20100606019
组员 1 :刘静静学号: 20100606017
组员 2 :张琳娜学号: 20100606018
组员 3 :李元学号: 20100606020
组员 4 :黄智鑫学号: 20100606049
组员 5 :学号:
组员 6 :学号:
指导教师:李宁
2011年01月06日
电气信息工程系课程设计总结报告
PCB原理图
电气信息工程系
单片机课程设计元器件清单指导教师:李宁课题名称:音乐门铃
参考文献:
[1]徐爱钧.单片机原理实用教程[M].北京:电子工业出版社,2009:267-285.
[2]刘焕平.单片机原理及应用[M].北京:北京邮电大学出版社,2008:246-260.
[3]刘南平.单片机实训与开发教程[M].北京:科学出版社,2008:199-209.
[4]吴金戌.8051单片机实践与应用[M].北京:清华大学出版社,2002:242-253.
[5]刘海成.单片机及应用系统设计原理与实践[M].北京:北京航空航天大学出版社,2009:273-281.
[6]杨振江.单片机应用于实践指导[M].西安:西安电子科技大学出版社,2010:378-380.。

MIPS的指令的CPU(14条指令)logisim仿真软件编写

MIPS的指令的CPU(14条指令)logisim仿真软件编写

MIPS的指令的CPU(14条指令)logisim仿真软件编写⼀、课程设计题⽬基于FPGA(或者Logisim 软件仿真)实验平台,完成16位单周期CPU设计。

⼆、课程设计的⽬的与意义本课程设计综合利⽤计算机组成原理课程所学的理论知识,并结合其单元实验中所积累的计算机部件设计和调试⽅法,设计出⼀台具有⾃定义指令系统的简单计算机系统。

所设计的系统能在基于FPGA(或者Logisim)平台上运⾏⼀段⽤户程序,通过检查程序结果的正确性来判断所设计的计算机系统的正确性。

三、课程设计的内容设计模型机系统的指令系统、总体结构和时序信号。

要求所设计的整机系统能⽀持⾃动和单步运⾏⽅式,能正确地执⾏存放在主存中的⽤户程序,并且对主要的数据流和控制流通过适当⽅式显⽰;验证实验结果。

①该单周期CPU实现的指令如下:(从中⾄少选取10条指令,其余指令可以⾃⼰设计;⾄少要选择1条R-型指令、1条⽴即数运算指令、Load 指令(读)、Store指令(写)、1条分⽀指令和⽆条件转移指令;)表1选取指令及格式指令 15~12 11~10 9~8 7~6 5~3 2~0 指令功能1 or 0 rs rt rd 0 0 $rd = $rs | $rt2 and 0 rs rt rd 0 1 $rd = $rs & $rt3 add 0 rs rt rd 0 2 $rd = $rs + $rt4 sub 0 rs rt rd 0 3 $rd = $rs - $rt5 sllv 0 rs rt rd 0 4 $rd = $rs << $rt 逻辑左6 srlv 0 rs rt rd 0 5 $rd = $rs >> $rt 逻辑右7 srav 0 rs rt rd 0 6 $rd = $rs >> $rt 算术右8 slt 0 rs rt rd 0 7 $rd = ($rs < $rt) ? 1 :010 lui 2 0 rt immediate-u $rt = imm << 811 ori 3 rs rt immediate-u $rt = $rs | imm12 andi 4 rs rt immediate-u $rt = $rs & imm13 addi 5 rs rt immediate-s $rt = $rs + imm14 lw 6 rs rt immediate-s $rt = MEM[$rs + imm]15 sw 7 rs rt immediate-s MEM[$rs+imm] = $rt16 beq 8 rs rt offset-s beq =?17 bne 9 rs rt offset-s bne != ?18 bgt 10 rs rt offset-s bgt >?(有符号⽐较)19 jump 11 jump address jump20 halt 12 0 halt (时钟暂停)②编写⼀段包含所有指令的测试程序,将测试程序的机器语⾔存⼊ROM,运⾏测试程序,并对运⾏结果与理论运算结果对⽐(⽤表格对⽐), 判断每⼀步对错。

微机原理课程设计讲解

微机原理课程设计讲解

微机原理课程设计学院:机电工程学院专业:自动化班级:XXXX学号:XXXX姓名:XX指导教师:XXXXXXXX 完成时间:2015一、课程设计的基本要求•设计8088微处理器最小系统•用8284设计频率恒定的时钟电路•用6264和2764设计存储器(RAM和ROM)电路。

•用ADC0809组成8位温度检测A/D变换接口电路•用DAC0832设计8位D/A变换接口电路驱动直流电机•用8255和8253设计步进电机控制电路•用8255外联LED和键盘显示电路二、设计的基本思路采用8088的最小方式,利用三片74LS373锁存器设计20位地址总线电路,利用一片74LS245收发器形成数据总线电路。

利用8254芯片提供频率恒定的时钟信号,同时具有复位信号和准备好信号发送给8088系统。

运用两片2764和两片6264进行扩展,形成16K的ROM和16K的RAM电路。

系统的定时计数器由一片8253构成,中断系统由8259组成,并行接口电路由8255构成。

AD转换电路由ADC0809及其外围电路构成,由DAC0832及其外围电路构成DA转换电路驱动直流电机。

芯片所需的片选信号均由74LS138译码电路产生。

三、系统的地址分配ROM2764(1):0FC000H~0FDFFFH;ROM2764(2):0FE000H~0FFFFFH;RAM6264(1):00000H~01FFFH;RAM6264(2):02000H~03FFFH;ADC0809:0058H~005FH;DAC0832:0074H;计时器8253:0020H~0023H;并行接口芯片8255:0028H~002BH;键盘地址:0070H~0073H; LED地址:0080H~0083H。

四、具体设计1、8088微处理器最小系统1.1 8088微处理器介绍8088微处理器采用40条引脚的双列直插式封装。

为减少引脚,采用分时复用的地址/数据总线,因而部分引脚具有两种功能。

eda课程设计cpu

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工具使用的综合能力。

计算机组成原理CPU设计实验报告

计算机组成原理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课程设计

单周期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的步骤,包括电路设计、指令集设计、时序控制等。

16位cpu原理

16位cpu原理

16位cpu原理
16位CPU原理主要是指CPU内部的数据总线宽度为16位,一次最多可以处理16位的数据。

CPU中的运算器、寄存器和地址加法器等都与16位数据总线相关联。

在8086CPU中,外部地址总线宽度是20位,通过在CPU 内部使用两个16位地址合成的方法来形成一个20位的物理地址,从而实现CPU内外物理地址位数相等。

CPU访问内存时,由段寄存器提供内存单元的段地址,IP寄存器存放偏移地址,然后将段地址和偏移地址发送至地址加法器,将两个16位地址合成为一个20位的物理地址,并发送给输入输出控制电路,再通过CPU外部地址总线将这个20位的物理地址传递至指定的存储器。

单片机课程设计——篮球计时计分器

单片机课程设计——篮球计时计分器

单片机课程设计报告篮球比赛计时计分器设计2009年6月18日摘要本设计是采用AT89C52单片机为核心设计的一个用于赛场的篮球计时计分器。

本设计采用定时器T0中断计时,显示部分分为计时和计分显示两部分,均采用共阴极LED显示。

计时部分计时范围宽,而且可定时设定与小时、分钟调整;计分部分调整灵活,显示范围宽,足以满足各种规模赛程需要。

两个显示模块均采用动态扫描方式显示。

在本设计中P3口(P3.0——P3.3)是计时计分显示共用的扫描口,P0口是计时数据输出口,P2口是计分数据输出口,计时计分均设有显示缓冲区(40H ——43H计分显示缓冲区,30H——33H计时显示缓冲区)。

本设计共有K1——K5六个设置按键,K1是甲加分建(按一次加一分),K2是乙加分键(按一次加一分),K3是定时切换键(定时设置与计时调时切换),K4是分钟调整键(计时与定时分钟调整),K5是分数位置交换键(交换甲、乙两队比分的位置)。

按键与P1口相接,低电平输入有效.。

报警部分由扬声器组成,当计时时间到时,输出低电平有效,由P1.3口输出脉冲信号驱动扬声器发出声音。

计时定时的原理与定时闹钟相同,为定时设置定时分钟计数单元,通过比较定时与计时的分计数单元判断比赛是否结束是否报警,定时与计时共用一个显示缓冲去,通过K3(定时切换键)进行显示切换,本设计可通过定时显示的秒位判断定时是否有效,如果秒位显示00说明无效(上次用过的定时),显示11说明有效(本次定时)。

定时时间到,扬声器报警,比赛结束,按K3键可停止报警(否则一直报警)。

关键词:单片机篮球计时计分器数码管按键报警器目录1 概述 (3)1.1单片机简介 (3)1.2课程设计的意义 (4)1.3任务与要求 (4)2 系统总体方案与硬件设计 (5)2.1、系统总体方案设计 (5)2.2、硬件系统设计 (5)2.2.1单片机的选择 (5)2.2.2、时钟电路模块 (6)2.2.3、复位电路模块 (7)2.2.4、按键控制模块 (8)2.2.5、数码管显示原理 (8)2.2.6、定时报警模块 (9)3、软件设计 (10)3.1、程序流程图 (10)3.2、程序分析 (11)4 PROTEUS软件仿真 (12)4.1、简介 (12)4.2、仿真过程 (12)5、调试分析 (15)6、课程设计心得体会 (16)参考文献: (16)附1、源程序代码 (17)附2、系统原理图 (24)1 概述1.1单片机简介单片机是指一个集成在一块芯片上的完整计算机系统。

cpu调度课程设计

cpu调度课程设计

cpu调度课程设计一、教学目标本课程的教学目标是让学生掌握CPU调度原理、算法及其在操作系统中的应用。

通过学习,学生应能理解进程调度的重要性,掌握常用的调度算法,如先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、轮转调度(RR)等,并了解调度算法的性能评价指标。

此外,学生还应掌握调度时机、调度策略和调度参数的设置方法,并能运用所学知识分析和解决实际问题。

在技能目标方面,学生应能运用CPU调度原理和算法分析操作系统中的调度问题,提高系统性能。

通过实践环节,学生应掌握调度算法的实现方法,具备一定的编程能力。

在情感态度价值观目标方面,学生应认识进程调度在操作系统中的重要性,了解调度算法的发展历程,培养对计算机科学和操作系统的兴趣。

同时,学生应具备良好的团队协作精神和创新意识,能够在实际项目中运用所学知识解决问题。

二、教学内容本课程的教学内容主要包括以下几个部分:1.CPU调度概述:介绍进程调度的重要性、调度层次和调度时机。

2.常用调度算法:先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、轮转调度(RR)等,分析各种算法的特点、优缺点及适用场景。

3.调度算法性能评价:了解响应时间、等待时间、吞吐量等性能评价指标,掌握调度算法性能分析的方法。

4.调度策略和参数设置:学习调度策略的分类及特点,了解调度参数设置的方法和技巧。

5.调度算法在操作系统中的应用:分析操作系统中调度算法的实现和应用,了解调度算法在实际系统中的作用。

6.实践环节:通过编程实践,让学生掌握调度算法的实现方法,提高实际操作能力。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过讲解CPU调度的基本概念、原理和算法,使学生掌握基本知识。

2.讨论法:学生针对调度算法的问题进行讨论,培养学生的思考能力和团队协作精神。

3.案例分析法:分析实际操作系统中的调度案例,让学生了解调度算法在实际应用中的作用。

计算机原理cpu课程设计

计算机原理cpu课程设计

计算机原理 cpu课程设计一、教学目标本节课的教学目标是让学生了解和掌握计算机CPU的基本原理和组成结构,包括中央处理器(CPU)的功能、架构、工作原理及其在计算机系统中的重要性。

知识目标要求学生能够描述CPU的主要组成部分,如控制单元、算术逻辑单元(ALU)、寄存器等,并理解它们的作用。

技能目标则要求学生能够通过实验或模拟软件,观察和分析CPU的工作过程,提升学生的实际操作能力和问题解决能力。

情感态度价值观目标则是培养学生对计算机科学的好奇心和探索精神,增强学生对技术进步的认同感,同时培养学生的团队合作意识。

二、教学内容本节课的教学内容将围绕CPU的原理与结构展开。

首先,介绍CPU在计算机系统中的核心地位及其重要性。

接着,详细讲解CPU的组成,包括控制单元、ALU、寄存器等关键部件的功能和作用。

然后,通过实例分析CPU的工作流程,即 fetch-decode-execute 循环,让学生理解指令的执行过程。

最后,讨论CPU性能指标,如时钟频率、指令周期、流水线技术等,并介绍多核处理器的基本概念。

三、教学方法为了提高教学效果,将采用多种教学方法相结合的方式进行教学。

首先,采用讲授法向学生介绍CPU的基本概念和原理。

其次,通过案例分析法,分析具体的CPU工作实例,让学生更直观地理解CPU的工作过程。

再次,利用实验法,让学生在实验室中实际操作CPU模拟软件,亲身体验CPU的工作原理。

最后,课堂讨论,鼓励学生提出问题、分享心得,以提高学生的主动性和参与度。

四、教学资源为了支持教学,将准备丰富的教学资源。

主要教材为《计算机组成原理》,辅助教材包括《计算机科学概论》等。

参考书籍将提供更深入的理论知识,如《深入理解计算机系统》。

多媒体资料将包括教学PPT、视频动画等,以形象直观的方式展示CPU的工作原理。

实验设备包括CPU模拟器软件和必要的计算机硬件,供学生进行实验操作,增强实践体验。

五、教学评估为了全面、客观地评估学生的学习成果,将采用多种评估方式。

cpu调度课程设计

cpu调度课程设计

cpu调度课程设计一、课程目标知识目标:1. 让学生理解CPU调度的基本概念、原理及重要性;2. 掌握常见CPU调度算法(如:先来先服务、短作业优先、时间片轮转等)及其特点;3. 了解不同调度算法对系统性能的影响,如:响应时间、吞吐率、CPU利用率等。

技能目标:1. 培养学生运用所学CPU调度算法解决实际问题的能力;2. 提高学生分析、比较和优化调度算法的能力;3. 培养学生通过小组合作、讨论等方式,进行问题探究和解决的能力。

情感态度价值观目标:1. 激发学生对计算机操作系统领域的好奇心和求知欲;2. 培养学生具备良好的团队协作精神,学会尊重他人意见,勇于表达自己的观点;3. 培养学生具备严谨的科学态度,关注技术发展,认识到操作系统在实际应用中的价值。

课程性质:本课程属于计算机操作系统领域,以理论教学为主,实践操作为辅。

学生特点:学生已具备一定的计算机基础知识,对操作系统有初步了解,但对CPU调度算法尚陌生。

教学要求:结合学生特点,通过理论讲解、案例分析、实践操作等教学方法,使学生掌握CPU调度的相关知识,提高解决实际问题的能力。

在教学过程中,注重启发式教学,引导学生主动探究、分析和解决问题。

最终通过课程目标的实现,为学生在操作系统领域的深入学习奠定基础。

二、教学内容1. CPU调度概念与背景:介绍CPU调度的定义、作用和意义,引导学生了解操作系统在多道程序环境下的资源分配与调度问题。

- 教材章节:第一章第三节“CPU调度”2. 常见CPU调度算法:讲解先来先服务、短作业优先、时间片轮转、优先级调度等算法原理及实现。

- 教材章节:第二章“进程调度”3. 调度算法性能分析:分析比较不同调度算法在响应时间、吞吐率、CPU利用率等方面的优缺点。

- 教材章节:第二章“进程调度性能分析”4. 调度算法应用实例:结合实际案例,分析调度算法在操作系统中的应用,如:Linux、Windows等。

- 教材章节:第三章“调度算法应用实例”5. 实践环节:组织学生进行CPU调度算法模拟实验,加深对调度算法的理解和掌握。

eda课程设计cpu设计

eda课程设计cpu设计

eda 课程设计cpu 设计一、教学目标本课程的教学目标是让学生掌握CPU设计的基本原理和方法,了解计算机硬件的基本组成和工作原理,提高学生的科学素养和工程实践能力。

具体来说,知识目标包括:掌握CPU的基本组成和工作原理;了解计算机硬件的层次结构和接口技术;熟悉汇编语言和C语言在硬件描述中的应用。

技能目标包括:能够使用EDA工具进行CPU设计;能够编写简单的汇编语言和C语言程序。

情感态度价值观目标包括:培养学生的科学精神、创新意识和团队合作能力。

二、教学内容本课程的教学内容主要包括CPU设计的基本原理、EDA工具的使用、汇编语言和C语言编程、计算机硬件的层次结构等。

具体安排如下:1.CPU设计的基本原理:介绍CPU的组成、工作原理和性能评价指标,包括数据路径、控制单元、寄存器组、ALU等。

2.EDA工具的使用:介绍常见的EDA工具,如Verilog、VHDL等,以及如何使用这些工具进行CPU设计。

3.汇编语言和C语言编程:介绍汇编语言和C语言的基本语法,以及如何使用这两种语言编写硬件描述程序。

4.计算机硬件的层次结构:介绍计算机硬件的层次结构,包括CPU、内存、外设等,以及它们之间的接口技术。

三、教学方法为了提高教学效果,本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等。

在讲授基本原理和概念时,将结合具体的案例进行讲解,以加深学生对知识的理解。

在实践环节,将学生进行小组讨论和实验,培养学生的动手能力和团队协作精神。

同时,将定期进行课堂提问和作业点评,以了解学生的学习情况,及时调整教学方法和策略。

四、教学资源为了支持教学内容的传授和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,如《数字逻辑与计算机设计》等,为学生提供系统的理论知识。

2.参考书:提供相关的参考书籍,如《计算机组成原理》等,供学生深入学习。

3.多媒体资料:制作课件、教学视频等多媒体资料,丰富教学手段,提高学生的学习兴趣。

计算机组成与系统结构课程设计

计算机组成与系统结构课程设计

学号:计算机组成与系统结构课程设计设计说明书单周期32位CPU的设计起止日期:2014 年1 月13 日至2014 年1 月17 日学生姓名班级11计算机2班成绩指导教师(签字)计算机与信息工程学院2014年1月17日目录1、指令系统设计 ......................................................................................................... 错误!未定义书签。

2、控制部件设计 (4)3、单周期中央处理器cpu设计 (9)4、计算机主机系统设计 (12)5、调试程序编制及主机系统调试 (12)6、心得体会 (16)参考资料 (16)1、指令系统设计R型指令(op=0001)add(func=000001):将rs寄存器中的值和rt寄存器中的值相加,结果存入rd寄存器sub(func=000010):将rs寄存器中的值和rt寄存器中的值相减,结果存入rd寄存器and(func=000011):将rs寄存器中的值和rt寄存器中的值相与,结果存入rd寄存器or(func=000100):将rs寄存器中的值和rt寄存器中的值进行或运算,结果存入rd寄存器I型指令addi(op=1000):将rs寄存器中的值与(补零成32位的)立即数减,结果存入rt寄存器ori(op=0010):将rs寄存器中的值与(补零成32位的)立即数或,结果存入rt寄存器lw(op=0011):将RAM中地址为[rs+立即数]单元的值写入rtsw(op=0100):将rt中的值写入RAM中地址为[rs+立即数]单元beq(op=0101):若rs中的值=rt中的值,则跳转到(原本的下一个地址+立即数)wr(op=0111):把(补零成32位的)立即数写入寄存器rtJ型指令jump(op=0110):直接跳转到目的地址(8位)开始执行指令译码器的作业是对取指令操作中得到的指令进行译码,确定这条指令需要完成的操作。

课程设计电子时钟设计

课程设计电子时钟设计

微机原理及其接口技术课程设计题目: 8086电子时钟设计前言课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力的重要教学环节,它具有动乎、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一种较好方法。

《微机接口技术》是一门应用性、综合性、实践性较强的课程,没有实际的有针对性的设计环节,学生就不能很好的理解和掌握所学的技术知识,更缺乏解决实际问题的能力。

所以通过有针对性的课程设计,使学生学会系统地综合运用所学的理论知识,提高学生在微机应用方面的开发与设计本领,系统的掌握微机硬软件设计方法。

时钟就是一种对时间进行累计的工具,即计时。

计时的本质就是计数,只不过这里的“数”的单位是时间单位,如果把一小片一小片计时单位累计起来,就可获得一段时间。

因此,使用计数器对时钟脉冲进行计数,就是时钟实现的基本原理;再用LED数码管显示出来,并设计出几个按键用于对时钟进行调整,这样,一个完整的时钟就设计完成了。

本次课程设计要求利用8253定时器设计一个具有时、分、秒显示的电子时钟,并定义一个启动键,当按下该键的时候,时钟从当前的设定值(可以在缓冲区中设置)开始走时。

同时,再定义三个按键,分别对时、分、秒进行校正。

目录目录---------------------------------------------------- 21、电子时钟功能介绍------------------------------------- 32、电子时钟系统总体方案设计----------------------------- 42.1方案比较------------------------------------------ 42.2方案选择------------------------------------------ 43、电子时钟的工作原理----------------------------------- 53.1实现时钟计时的基本方法---------------------------- 53.2电子钟的时间显示---------------------------------- 54、硬件设计---------------------------------------------- 64.1硬件设计电路图------------------------------------ 64.1.1主电路模块----------------------------------- 64.1.2 LED显示模块--------------------------------- 64.1.3按键模块------------------------------------- 64.1.4总体电路图----------------------------------- 64.2硬件设计所用芯片介绍------------------------------ 64.2.2 8253芯片的内部结构及引脚-------------------- 84.2.3 8255A芯片的内部结构及引脚------------------- 95、软件设计--------------------------------------------- 105.1电子时钟部分程序流程框图------------------------- 105.1.1主程序流程框图--------------------------------- 105.1.2键扫子程序流程框图----------------------------- 105.1.3中断处理程序流程框图--------------------------- 105.2电子时钟总体程序--------------------------------- 106、总结与体会------------------------------------------- 10参考文献----------------------------------------------- 11附录1-------------------------------------------------- 12附录2-------------------------------------------------- 121、电子时钟功能介绍可调整运行的电子钟具有三种工作状态:"P.”状态、运行状态、调整状态。

硬件课程设计(电子计算器)报告

硬件课程设计(电子计算器)报告

电子计算器的设计主要分为键盘的编码、七段LED 数码管的显示及四则运算法则的编写三部分。

设计中我们用可编程外围接口芯片8255A 连接键盘和七段LED 数码管,用七段LED 数码管显示键盘输入信号及运算结果,利用简单的汇编语言编写相应程序进行四位自然数的有效四则运算。

由于本次实验中,实验箱是HUSYE3-MIT-16/32微机接口实验仪采用模块化、积木式的结构,各实验模块互不影响。

但可通过连线将各实验模块有机组合起来,进行微机外围接口实验。

实验箱中8279已经集成了键盘和LED数码管显示的功能。

因此,本次实验是采用了硬件设计更为简单而功能强大的8279辅助完成实验。

关键词:8279;七段LED 数码管;汇编语言;四则运算目录1选题与需求分析 (1)1.1选题 (1)1.2需求分析 (1)1.2.1课题的功能需求 (1)2总体设计 (2)2.1硬件方案 (2)2.2软件方案 (2)3详细设计 (5)3.1硬件实现 (5)3.2软件实现 (5)4设计结果 (10)5收获与体会 (15)6参考文献 (16)7附录....................................................................................... 错误!未定义书签。

1 选题与需求分析1.1 选题我选的题目是电子计算器。

电子计算器的设计主要分为键盘的编码、七段LED 数码管的显示及四则运算法则的编写三部分。

设计中我们用可编程外围接口芯片8255A 连接键盘和七段LED 数码管,用七段LED 数码管显示键盘输入信号及运算结果,利用简单的汇编语言编写相应程序进行四位自然数的有效四则运算。

由于本次实验中,实验箱是HUSYE3-MIT-16/32微机接口实验仪采用模块化、积木式的结构,各实验模块互不影响。

但可通过连线将各实验模块有机组合起来,进行微机外围接口实验。

实验箱中8279已经集成了键盘和LED数码管显示的功能。

简易cpu设计课程设计

简易cpu设计课程设计

简易cpu设计课程设计一、课程目标知识目标:1. 让学生理解CPU的基本结构及其功能,掌握简易CPU的设计原理。

2. 学会运用数字逻辑设计简易CPU,了解指令集、运算器、控制器等关键部件的作用。

3. 了解计算机组成原理,掌握硬件与软件的相互关系。

技能目标:1. 培养学生运用所学知识设计简易CPU的能力,提高创新实践能力。

2. 能够运用数字逻辑分析和解决简易CPU设计中的问题,提高问题解决能力。

3. 学会使用相关设计软件(如Multisim、Protel等)进行简易CPU的电路设计和仿真。

情感态度价值观目标:1. 培养学生热爱科学、追求真理的精神,激发对计算机科学的兴趣。

2. 增强学生的团队协作意识,培养合作精神,提高沟通与交流能力。

3. 引导学生关注我国计算机科技的发展,培养民族自豪感,树立正确的价值观。

课程性质分析:本课程为电子信息工程、计算机科学与技术等相关专业的一门专业课程,旨在培养学生的硬件设计和系统架构能力。

学生特点分析:学生已具备一定的电子技术、数字逻辑和计算机组成原理基础,具有较强的逻辑思维能力和动手实践能力。

教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力。

2. 突出创新实践,鼓励学生自主探究,培养学生的自主学习能力。

3. 注重过程评价,关注学生的学习进步和个体差异,提高教学质量。

二、教学内容1. 教学大纲:- 简易CPU设计概述:介绍CPU发展历程、简易CPU的概念及其应用。

- CPU基本组成:讲解指令集、运算器、控制器、寄存器等组成部分。

- 数字逻辑设计基础:复习逻辑门、组合逻辑、时序逻辑等基础知识。

- 简易CPU设计原理:分析指令执行过程、控制信号产生、数据通路等。

- 硬件描述语言:介绍VHDL/Verilog等硬件描述语言的基本语法和应用。

- 设计与仿真:运用Multisim、Protel等软件进行简易CPU电路设计和仿真。

- 实践项目:分组进行简易CPU设计,完成指定指令集的处理器设计。

计算机组成原理课程设计3篇

计算机组成原理课程设计3篇

计算机组成原理课程设计第一篇:CPU设计计算机中心处理器(Central Processing Unit, CPU)是计算机的心脏,它负责执行指令,完成计算和控制计算机的所有运算和数据传输。

在计算机组成原理课程设计中,设计一块CPU是非常重要的一步。

CPU的设计与制作需要有一定的基础和经验。

首先,需要了解CPU的工作原理和基本组成,包括寄存器、ALU、控制器和数据通路等。

其次,需要掌握数字逻辑、硬件描述语言和电子工艺制作等知识和技能,以实现CPU的具体功能。

设计一块CPU可分为以下几个步骤:1.确定CPU的整体架构和指令集。

根据需求和实际应用,确定CPU的整体架构和指令集。

可以参考现有的CPU设计,并根据实际情况进行优化和改进。

2.编写CPU的硬件描述语言代码。

使用硬件描述语言(如VHDL)编写CPU的硬件描述语言代码,包括寄存器、ALU、控制器和数据通路等。

3.使用仿真工具进行验证。

使用仿真工具模拟CPU的运行过程,验证硬件描述语言代码的正确性和功能实现。

4.设计和制作PCB电路板。

将CPU的硬件描述语言代码转换为PCB电路板设计,并制作出实际的电路板。

5.测试CPU的性能和功能。

对制作出的CPU进行测试,验证其性能和功能可靠性。

CPU的设计和制作是计算机组成原理课程设计中非常关键的一步,它直接影响到完成整个计算机系统的可靠性和性能。

因此,设计和制作一块优秀的CPU需要耐心和实践经验的积累。

第二篇:存储器设计存储器是计算机系统中重要的组成部分,用于存储数据和程序。

存储器需要具有读、写、删等常见操作,设计一块性能良好和容量适中的存储器是计算机组成原理课程设计的核心内容之一。

存储器的设计和制作需要掌握数字电路设计、电子工艺制作和人机交互等知识和技能。

下面是存储器设计的主要步骤:1.确定存储器的类型和容量。

根据实际需要和使用场景,确定存储器的类型和容量,包括SRAM、DRAM、FLASH等。

2.设计存储器的电路和控制线路。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

石家庄经济学院信息工程学院计算机组成原理课程设计报告题目16位模型计算机的设计姓名学号班号指导老师成绩2011年1月目录1. 课程设计目的 (3)2. 开发工具选择 (3)3. 方案选择 (3)4.指令系统设计 (4)5. 模型机框图设计 (4)6. 指令流程图 (5)7.微指令格式(微程序控制器)设计 (6)8.微程序(微程序控制器)设计 (7)9. VHDL程序代码 (9)10. 调试仿真 (16)11. 课程设计回顾总结 (18)参考文献 (18)1. 课程设计目的(1)、计算机组成原理课程设计的主要任务是让学生通过动脑和动手解决计算机设计中的实际问题。

综合运用所学计算机组成原理知识,在掌握部件单元电路实验的基础上,进一步将其组成系统构造一台基本的模型计算机,掌握整机概念,并设计机器指令系统,编写程序,在所设计的模型计算机上调试运行。

(2)、通过一台模型机的设计过程,明确计算机的控制原理与控制过程,巩固和灵活应用所学的理论知识,掌握计算机组成的一般设计方法,提高学生设计能力和实践操作技能,为从事计算机研制与设计打下基础。

2. 开发工具选择使用QUARTUS 5.0软件编写并调试VHDL程序,然后做功能仿真。

3. 方案选择本次实习的内容为16位模型计算机的设计,单总线,采用微程序控制方式,有四种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址和变址寻址。

微程序控制方式由微指令译码产生。

微程序中一条机器指令往往分成几步执行,将每一步操作所需的若干为命令以代码编写在一条微指令中,若干条微指令组成一段微程序,对应一条机器指令。

然后根据系统的需要,事先编制各段微程序,将它存入一个专用寄存器(即控制存储器)中。

微程序执行过程:如图1所示,为微程序控制基本框:(1)从控存中逐条取出“取指令操作”,执行取指令公共操作。

(2)根据指令的操作码,经过微地址形成部件,得到这条指令的入口地址,并送入微地址寄存器中。

(3)从控存中逐条的取出对应的微指令并执行。

(4)执行完一条机器指令对应的微程序后又回到取指微程序的入口地址,继续第(1)步,以完成取下一条机器指令的公共操作。

图1 微程序控制基本框4.指令系统设计模拟机采用了定长的指令格式,每条指令字长为16位。

采用的寻址方式为直接寻址(00)、寄存器寻址(01)、寄存器间接寻址(10)和变址寻址(11),操作码类型及编码方式如下5. 模型机框图设计模拟机数据通路如图2所示,模型机采用单总线结构,主要包括运部件ALU,以及程序计数器PC、累加器ACC、指令寄存器IR、数据寄存器MDR、地址寄存器MAR和通用寄存器R,M为内存图2:模型机数据通路(1)寄存器的位数:所有的寄存器都均为16位A通用寄存器R0,R1该模拟机有2个通用寄存器,用于提供操作数。

B指令寄存器IR为了提高取指令的速度,将指令从内存中读出,经数据总线直接置入IR。

C数据寄存器MDR、地址寄存器MAR地址寄存器MAR提供访问主存的地址;数据寄存器MDR,把从内存取出的数据暂存于MDR中,在用到该数据进行运算时,再从MDR中取出数据进行运算。

D程序计数器PC用于存放下一条指令的内存地址。

(2)总线宽度:该模拟机只有一条总线,且总线宽度为16位。

(3)ALU位数及运算功能ALU可以实现16位操作数的运算,即ALU的位数为16位。

ALU运算功能为:可以实现简单的加(0001:add)、减(0010:sub)、逻辑与(0011:and1)、或(0100:or1)操作。

(4)微命令的设置(各标识的含义)经过认真分析各信息传送路径,对指令过程基本掌握,并为相应的微命令做了一下设置:6. 指令流程图指令的流程图如图3所示,共有6条指令,每条指令都要经过取指令、分析指令和执行指令3个步骤。

在取指令阶段,8 条指令是一样的,首先程序计数器PC的内容通过总线送入地址寄存器MAR,存储信息,PC+1传送给PC,把读出的内容传送给指令寄存器IR 。

再接下来的操作中,根据不同的指令,执行顺序也不同。

图3 指令流程图7.微指令格式(微程序控制器)设计微指令格式设计如表:8.微程序(微程序控制器)设计根据微处理器的数据通路和指令系统,可得出微程序的流程图如图4所示。

微程序的编码采用直接编码方法,每一个控制信号对应一位,共有28个控制信号,根据微指令格式5448687109图4 微程序流程图根据图4微程序流程图的下地址,可知共有54条微指令,该模拟机微程序的编码如下0=> 00000000000000001010001000000000011=> 00000000000000000000000011000000102=> 00000000000000000101000000000000113=> 00000000000000000000000000001111114=> 00000000000000000000000011000001015=> 00000000100000000001000000000001106=> 00000000010000010000100000000001117=> 00001000000000000000010000000010008=> 00000000000000100010000000000010019=> 000000000000000000000000110000101010=> 000000001000100000010000000000000011=> 000000001000000000000000000000110012=> 000000000000000010100010000000110113=> 000000000000000000000000110000111014=> 000000100000000000010000000000111115=> 000000000001000100001000000001000016=> 000100000000000000000100000001000117=> 000000000000001000100000000001001018=> 000000000000000000000000110001001119=> 000000100000000000010000000001010020=> 000000000000000000000100001001010121=> 000000000000001000001000000001011022=> 000000000000000000000000100000000023=> 000000000000000000000000110001100024=> 000000001000000000010000000001100125=> 000000000100000000001000000001101026=> 000000100000000000000000000001101127=> 000000000000000000000100000101110028=> 000000000000001000001000000001110129=> 000000000010000000000000000000000030=> 000000001000000000000000000001111131=> 000000000100000000100000000010000032=> 000000000000000000000000110010000133=> 000001000000000000010000000010001034=> 100000000000000000000100000010001135=> 000000000000001000001000000010010036=> 000000000000000000000000100000000037=> 000000001000000000000000000010011038=> 000000000100000000001000000010011139=> 000000100000000000000000000010100040=> 010000000000000000000100000010100141=> 000000000000001000001000000010101042=> 000000000010000000000000000000000043=> 000000000000000000000000110010110044=> 000000001000000000010000000010110145=> 001000000000000000000100000010111046=> 000000000000001000000000010010111147=> 000000000000100000000000000000000048=> 000000000000000010100010000000010049=> 000000000100000000001000000000101150=> 000000000001000000100000000001011151=> 000000000001000000001000000001111052=> 000000000001000000001000000010010153=> 00000000000000000010000100001010119. VHDL程序代码--头文件LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE cpu_defs ISTYPE opcode IS (sta, add, sub,and1,or1, shl,jmp, nop);TYPE regcode IS (r0, r1);TYPE xzhcode IS (zh,j,jj,bi);CONSTANT word_w: NA TURAL :=16;CONSTANT op_w: NATURAL :=4;CONSTANT reg_w: NA TURAL :=4;CONSTANT xzh_w: NATURAL :=2;CONSTANT rfillop: STD_LOGIC_VECTOR(op_w-1 downto 0):=(others =>'0');CONSTANT rfillreg: STD_LOGIC_VECTOR(reg_w-1 downto 0):=(others =>'0');CONSTANT rfillxzh: STD_LOGIC_VECTOR(xzh_w-1 downto 0):=(others =>'0');--FUNCTIOn slv2op(slv:IN STD_LOGIC_VECTOR) RETURN opcode;FUNCTION op2slv(op:in opcode) RETURN STD_LOGIC_VECTOR;FUNCTION regslv(reg:in regcode) RETURN STD_LOGIC_VECTOR;FUNCTION xzhslv(xzh:in xzhcode) RETURN STD_LOGIC_VECTOR;END PACKAGE cpu_defs;PACKAGE BODY cpu_defs ISTYPE optable IS ARRAY(opcode) OF STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);TYPE regtable IS ARRAY(regcode) OF STD_LOGIC_VECTOR(reg_w-1 DOWNTO 0);TYPE xzhtable IS ARRAY(xzhcode) OF STD_LOGIC_VECTOR(xzh_w-1 DOWNTO 0);CONSTANT trans_tableop:optable :=("0000", "0001", "0010", "0011", "0100", "0101", "0110","0111");CONSTANT trans_tabler:regtable :=("0000","0001");CONSTANT trans_tablex:xzhtable :=("00","01","10","11");FUNCTION op2slv(op:IN opcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_tableop(op);END FUNCTION op2slv;FUNCTION regslv(reg:in regcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_tabler(reg);END FUNCTION regslv;FUNCTION xzhslv(xzh:in xzhcode) RETURN STD_LOGIC_VECTOR ISBEGINRETURN trans_tablex(xzh);END FUNCTION xzhslv;END PACKAGE BODY cpu_defs;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL,IEEE.NUMERIC_STD.ALL;USE WORK.CPU_DEFS.ALL;ENTITY CPU ISPORT( clock : IN STD_LOGIC;reset : IN STD_LOGIC;mode : IN STD_LOGIC_VECTOR(3 DOWNTO 0);mem_addr : IN UNSIGNED(word_w-op_w-1 DOWNTO 0);output : OUT STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);data_r_out : OUT STD_LOGIC_VECTOR(33 DOWNTO 0);op_out : OUT STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);add_r_out : OUT UNSIGNED(5 DOWNTO 0));END ENTITY;ARCHITECTURE rtl OF CPU ISTYPE mem_array IS ARRAY (0 TO 2**5) OF STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL mem : mem_array;CONSTANT prog : mem_array:=(0=> op2slv(sta) & xzhslv(j) & regslv(r0)& xzhslv(bi)& regslv(r1) ,1=> STD_LOGIC_VECTOR(TO_UNSIGNED(3,word_w)),2=> op2slv(add) & xzhslv(bi)& regslv(r0)& xzhslv(j) & regslv(r1),3=> STD_LOGIC_VECTOR(TO_UNSIGNED(0,word_w)),4=> op2slv(sub) & xzhslv(j) & regslv(r1) & xzhslv(jj)& regslv(r0),5=> op2slv(and1)& xzhslv(jj)& regslv(r1)& xzhslv(j) & regslv(r0),6=> op2slv(or1) & xzhslv(j) & regslv(r1) & xzhslv(j) & regslv(r0),7=> op2slv(shl) & xzhslv(j) & regslv(r0) & xzhslv(zh)& STD_LOGIC_VECTOR(TO_UNSIGNED(10,reg_w)),8=> STD_LOGIC_VECTOR(TO_UNSIGNED(9,word_w)),9=> STD_LOGIC_VECTOR(TO_UNSIGNED(8,word_w)),10=> STD_LOGIC_VECTOR(TO_UNSIGNED(15,word_w)),OTHERS => (OTHERS =>'0'));TYPE microcode_array IS ARRAY (0 TO 53) OF STD_LOGIC_VECTOR(33 DOWNTO 0);CONSTANT code : microcode_array:=(0=> "0000000000000000101000100000000001",1=> "0000000000000000000000001100000010",2=> "0000000000000000010100000000000011",3=> "0000000000000000000000000000111111",4=> "0000000000000000000000001100000101",5=> "0000000010000000000100000000000110",6=> "0000000001000001000010000000000111",7=> "0000100000000000000001000000001000",8=> "0000000000000010001000000000001001",9=> "0000000000000000000000001100001010",10=> "0000000010001000000100000000000000",11=> "0000000010000000000000000000001100",12=> "0000000000000000101000100000001101",13=> "0000000000000000000000001100001110",14=> "0000001000000000000100000000001111",15=> "0000000000010001000010000000010000",16=> "0001000000000000000001000000010001",17=> "0000000000000010001000000000010010",18=> "0000000000000000000000001100010011",19=> "0000001000000000000100000000010100",20=> "0000000000000000000001000010010101",21=> "0000000000000010000010000000010110",22=> "0000000000000000000000001000000000",23=> "0000000000000000000000001100011000",24=> "0000000010000000000100000000011001",25=> "0000000001000000000010000000011010",26=> "0000001000000000000000000000011011",27=> "0000000000000000000001000001011100",28=> "0000000000000010000010000000011101",29=> "0000000000100000000000000000000000",30=> "0000000010000000000000000000011111",31=> "0000000001000000001000000000100000",32=> "0000000000000000000000001100100001",33=> "0000010000000000000100000000100010",34=> "1000000000000000000001000000100011",35=> "0000000000000010000010000000100100",36=> "0000000000000000000000001000000000",37=> "0000000010000000000000000000100110",38=> "0000000001000000000010000000100111",39=> "0000001000000000000000000000101000",40=> "0100000000000000000001000000101001",41=> "0000000000000010000010000000101010",42=> "0000000000100000000000000000000000",43=> "0000000000000000000000001100101100",44=> "0000000010000000000100000000101101",45=> "0010000000000000000001000000101110",46=> "0000000000000010000000000100101111",47=> "0000000000001000000000000000000000",48=> "0000000000000000101000100000000100",49=> "0000000001000000000010000000001011",50=> "0000000000010000001000000000010111",51=> "0000000000010000000010000000011110",52=> "0000000000010000000010000000100101",53=> "0000000000000000001000010000101011");SIGNAL count : UNSIGNED(word_w-op_w-1 DOWNTO 0);SIGNAL op : STD_LOGIC_VECTOR(op_w-1 DOWNTO 0);SIGNAL z_flag : STD_LOGIC;SIGNAL mdr_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL mar_out : UNSIGNED(reg_w-1 DOWNTO 0);SIGNAL IR_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL acc_out : UNSIGNED(word_w-1 DOWNTO 0);SIGNAL sysbus_out : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL cc : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);SIGNAL rr1 : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);BEGINPROCESS(reset,clock)V ARIABLE instr_reg : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0); --IRV ARIABLE acc : UNSIGNED(word_w-1 DOWNTO 0);CONSTANT zero : UNSIGNED(word_w-1 DOWNTO 0):=(OTHERS =>'0');V ARIABLE mdr : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);V ARIABLE r0 : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);V ARIABLE r1 : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);V ARIABLE c : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);V ARIABLE d : UNSIGNED(word_w-1 DOWNTO 0);V ARIABLE mar : UNSIGNED(reg_w-1 DOWNTO 0);V ARIABLE sysbus : STD_LOGIC_VECTOR(word_w-1 DOWNTO 0);V ARIABLE microcode : microcode_array;V ARIABLE add_r : UNSIGNED(5 DOWNTO 0);V ARIABLE data_r : STD_LOGIC_VECTOR(33 DOWNTO 0);V ARIABLE temp : STD_LOGIC_VECTOR(5 DOWNTO 0); BEGINIF reset='0' THENadd_r:=(OTHERS =>'0');count <= (OTHERS =>'0');instr_reg := (OTHERS =>'0');acc := (OTHERS =>'0');mdr := (OTHERS =>'0');mar := (OTHERS =>'0');z_flag <='0';mem <= prog;sysbus :=(OTHERS =>'0');r0 :=x"0005";r1 :=x"0006";c := (OTHERS =>'0');d := (OTHERS =>'0');ELSIF RISING_EDGE(clock) THEN--microprogram controllerdata_r := code(TO_INTEGER(add_r));IF data_r(5 DOWNTO 0)="111111" THEN --判断下地址temp:="11" & op(3 DOWNTO 0);add_r := UNSIGNED(temp);ELSEadd_r := UNSIGNED(data_r(5 DOWNTO 0));END IF;data_r_out <=data_r;add_r_out <= add_r;--PCIF data_r(17)='1' THEN --PC_bus='1'sysbus := rfillop & STD_LOGIC_VECTOR(count);END IF;IF data_r(20)='1' THEN --load_PC='1'count <= UNSIGNED(mdr(word_w-op_w-1 DOWNTO 0));ELSIF data_r(11)='1' THEN --INC_PC='1'count <= count+1;ELSEcount <= count;END IF;--IRIF data_r(16)='1' THEN --load_IRinstr_reg := mdr;END IF;IF data_r(10)='1' THEN --Addr_bus='1'sysbus := rfillop & rfillxzh & rfillreg & rfillxzh & instr_reg(reg_w-1 DOWNTO 0);END IF;op <= instr_reg(word_w-1 DOWNTO word_w-op_w);IR_out <= instr_reg;op_out <=op;--ALUIF data_r(22)='1' THEN --R0_bus='1'sysbus := STD_LOGIC_VECTOR(r0);END IF;IF data_r(21)='1' THEN --load_R0='1'r0:= mdr;END IF;IF data_r(24)='1' THEN --R1_bus='1'sysbus := STD_LOGIC_VECTOR(r1);END IF;IF data_r(23)='1' THEN --load_R1='1'r1:= mdr;END IF;IF data_r(26)='1' THEN --c_bus='1'sysbus := STD_LOGIC_VECTOR(c);END IF;IF data_r(25)='1' THEN --load_c='1'c:= mdr;END IF;IF data_r(28)='1' THEN --d_bus='1'sysbus := STD_LOGIC_VECTOR(d);END IF;IF data_r(27)='1' THEN --load_d='1'd:= UNSIGNED(mdr);END IF;IF data_r(19)='1' THEN --ACC_bus='1'sysbus := STD_LOGIC_VECTOR(acc);END IF;IF data_r(18)='1' THEN --load_ACC='1'acc:=UNSIGNED(sysbus);END IF;IF data_r(14)='1' THEN --MDR_bus='1'sysbus:=mdr;END IF;IF data_r(12)='1' THEN --ALU_ACC='1'IF data_r(6)='1' THEN --ALU_sub='1'acc := UNSIGNED(c)-d;ELSIF data_r(7)='1' THEN --ALU_add='1'acc := UNSIGNED(c)+d;ELSIF data_r(29)='1' THEN --ALU_add_c='1'acc := UNSIGNED(c)+acc;ELSIF data_r(30)='1' THEN --ALU_add_d='1'acc := UNSIGNED(d)+acc;ELSIF data_r(33)='1' THEN --ALU_and='1'acc := UNSIGNED(c) and d;ELSIF data_r(32)='1' THEN --ALU_or='1'acc :=UNSIGNED(c) or d;ELSIF data_r(31)='1' THEN --ALU_srl='1'acc :=UNSIGNED(c(word_w-1-1 DOWNTO 0)) & '0';END IF;END IF;--IF acc=zero THEN--z_flag <='1';--ELSE--z_flag <='0';--END IF;acc_out<=acc;cc<=c;rr1<=r1;--RAMIF data_r(15)='1' THEN --load_MAR='1'mar := UNSIGNED(sysbus(reg_w-1 DOWNTO 0)); ELSIF data_r(13)='1' THEN --load_MDR='1'mdr := sysbus;ELSIF data_r(9)='1' THEN --CS='1'IF data_r(8)='1' THEN --R_NW='1'mdr := mem(TO_INTEGER(mar));ELSEmem(TO_INTEGER(mar))<=mdr;END IF;END IF;mdr_out <= mdr;mar_out <= mar;END IF;sysbus_out <=sysbus;END PROCESS;PROCESS(mode,mem_addr)BEGINoutput <= (OTHERS =>'0');CASE mode isWHEN "0000" =>output<=sysbus_out;WHEN "0001" =>output(word_w-op_w-1 DOWNTO 0)<= STD_LOGIC_VECTOR(count);WHEN "0010" =>output <= STD_LOGIC_VECTOR(acc_out);WHEN "0011" =>output <= IR_out;WHEN "0100" =>output(reg_w-1 DOWNTO 0) <= STD_LOGIC_VECTOR(mar_out);WHEN "0101" =>output <= mdr_out;WHEN "0110" =>output <= mem(TO_INTEGER(mem_addr));WHEN "0111" =>output <= STD_LOGIC_VECTOR(cc);WHEN "1000" =>output <= STD_LOGIC_VECTOR(rr1);WHEN others =>output <= (OTHERS =>'Z');END CASE;END PROCESS;END ARCHITECTURE;10.实验结果、11. 课程设计回顾总结此次课程设计是设计16位模拟机,通过对CPU工作原理的学习,使我对CPU的工作流程有了初步的了解,通过此次课程设计,我综合运用了所学的计算机组成原理理论知识,在理解了各部件工作流程的基础上,进一步理解构造模型计算机的基本原理,在有了大概思路之后,设计出了机器指令系统,并编写出相应的VHDL程序,进行功能仿真。

相关文档
最新文档