第一篇:西南交通大学计算机组成原理课程设计报告
《计算机组成实验 C》
课程设计
适用专业:电子信息类专业
专 班 学 姓
业:软件工程 级:软件一班 号: 名:某某某
指导教师:陈红梅
实验学期:2014-2015 第 1 学期
西 南 交 通 大 学
信息科学与技术学院 目录
简化计算机系统的设计.......................................................................................................................2
一、实验目的...............................................................................................................................2 二.、实验内容...............................................................................................................................2 三.、预习要求...............................................................................................................................2
四、实验报告...............................................................................................................................2 1.BLOCK图...........................................................................................................................3 2.程序设计(纸质的版本我用手抄)...........................................................................4 3.仿真波形图.................................................................................................................11
4、仿真中遇到的问题:...................................................................................................14
五、实验感想............................................................................................................................15
简化计算机系统的设计
一、实验目的
通过学习简单的指令系统及其各指令的操作流程,用 VHDL 语言实现简单 的处理器模块,并通过调用存储器模块,将处理器模块和存储器模块连接形成简化的计 算机系统。
二.、实验内容
1.用 VHDL 语言实现简单的处理器模块。2.调用存储器模块设计 64×8 的存储器模块。
3.将简单的处理器模块和存储器模块连接形成简单的计算机系统。4.将指令序列存入存储器,然后分析指令执行流程。
三.、预习要求
1、学习简单指令集。
2、学习各指令的操作流程。
四、实验报告
1.BLOCK图
2.程序设计(纸质的版本我用手抄)
CPU的设计: LIBRARY ieee;USE ieee.std_logic_1164.ALL;
PACKAGE mypack IS CONSTANT idle : std_logic_vector(3 DOWNTO 0):=“0000”;CONSTANT load : std_logic_vector(3 DOWNTO 0):=“0001”;CONSTANT move : std_logic_vector(3 DOWNTO 0):=“0010”;CONSTANT addx : std_logic_vector(3 DOWNTO 0):=“0011”;CONSTANT subp : std_logic_vector(3 DOWNTO 0):=“0100”;CONSTANT andp : std_logic_vector(3 DOWNTO 0):=“0101”;CONSTANT orp : std_logic_vector(3 DOWNTO 0):=“0110”;CONSTANT xorp : std_logic_vector(3 DOWNTO 0):=“0111”;CONSTANT shrp : std_logic_vector(3 DOWNTO 0):=“1000”;CONSTANT shlp : std_logic_vector(3 DOWNTO 0):=“1001”;CONSTANT swap : std_logic_vector(3 DOWNTO 0):=“1010”;CONSTANT jmp : std_logic_vector(3 DOWNTO 0):=“1011”;CONSTANT jz : std_logic_vector(3 DOWNTO 0):=“1100”;CONSTANT read : std_logic_vector(3 DOWNTO 0):=“1101”;CONSTANT write : std_logic_vector(3 DOWNTO 0):=“1110”;CONSTANT stop : std_logic_vector(3 DOWNTO 0):=“1111”;END mypack;
LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;USE WORK.mypack.ALL;
------------------------cpu实体声明--ENTITY cpu IS PORT(reset : IN std_logic;--清零信号低有效
clock : IN std_logic;--时钟信号
Write_Read: OUT std_logic;--读写信号,'1'为写 M_address: OUT std_logic_vector(11 DOWNTO 0);--地址线 M_data_in: IN std_logic_vector(7 DOWNTO 0);--数据输入线 M_data_out: OUT std_logic_vector(7 DOWNTO 0);--数据输出线
overflow: OUT std_logic);
--溢出标志 END cpu;
------------------------cpuRTL级行为描述-
ARCHITECTURE RTL of cpu IS
SIGNAL IR: std_logic_vector(15 DOWNTO 0);--指令寄存器 SIGNAL MDR: std_logic_vector(7 DOWNTO 0);--数据寄存器 SIGNAL MAR: std_logic_vector(11 DOWNTO 0);--地址寄存器 SIGNAL status: integer RANGE 0 TO 6;--状态寄存器 BEGIN status_change: PROCESS(reset, clock, status)BEGIN IF reset = '0' THEN status <= 0;ELSIF clock'EVENT AND clock = '0' THEN
CASE status IS WHEN 0 =>
status <= 1;WHEN 1 => IF IR(15 DOWNTO 12)= Stop THEN
status <= 1;ELSE
status <= 2;END IF;WHEN 2 => CASE IR(15 DOWNTO 12)IS
WHEN Read|Write|Jmp|Jz|Swap =>
status <= 3;
WHEN OTHERS =>
status <= 0;
END CASE;WHEN 3 => IF IR(15 DOWNTO 12)= Swap THEN
status <= 0;ELSE
status <= 4;END IF;WHEN 4 => status <= 5;WHEN 5 => CASE IR(15 DOWNTO 12)IS
WHEN Read|Write =>
status <= 6;
WHEN OTHERS =>
status <= 0;
END CASE;WHEN OTHERS => status <= 0;END CASE;
ELSE
NULL;END IF;END PROCESS status_change;
seq: PROCESS(reset,clock)
VARIABLE PC:std_logic_vector(11 DOWNTO 0);--程序计数器
VARIABLE R0,R1,R2,R3: std_logic_vector(7 DOWNTO 0);--通用寄存器
VARIABLE A: std_logic_vector(7 DOWNTO 0);--临时寄存器
VARIABLE temp: std_logic_vector(8 DOWNTO 0);--临时变量 BEGIN IF(reset='0')THEN
--清零
IR <=(OTHERS=>'0');PC :=(OTHERS=>'0');R0 :=(OTHERS=>'0');R1 :=(OTHERS=>'0');R2 :=(OTHERS=>'0');R3 :=(OTHERS=>'0');A :=(OTHERS=>'0');MAR <=(OTHERS=>'0');MDR <=(OTHERS=>'0');ELSIF(clock'event AND clock='1')THEN overflow <= '0';CASE status IS
WHEN 0=>--状态0 IR <= M_data_in & “00000000”;
--取指令
PC := PC+1;
--程序计数器加1
WHEN 1=>--状态1 IF(IR(15 DOWNTO 12)/= stop)THEN MAR <= PC;
END IF;
CASE IR(15 DOWNTO 12)IS WHEN load => R0:= “0000” & IR(11 DOWNTO 8);WHEN shlp|shrp => CASE IR(11 DOWNTO 10)IS
--Rx to A WHEN “00”=> A:= R0;WHEN “01”=> A:= R1;WHEN “10”=> A:= R2;WHEN OTHERS => A:= R3;END CASE;WHEN Move|addx|subp|andp|orp|xorp|Swap=> CASE IR(9 DOWNTO 8)IS
--Ry to A WHEN “00”=> A:=R0;WHEN “01”=> A:=R1;WHEN “10”=> A:=R2;WHEN OTHERS=> A:=R3;END CASE;WHEN OTHERS => NULL;END CASE;
WHEN 2=>--状态2
CASE IR(15 DOWNTO 12)IS WHEN addx =>--Rx:= Rx + A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> temp :=(R0(7)& R0(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R0:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “01”=> temp :=(R1(7)& R1(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R1:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “10”=> temp :=(R2(7)& R2(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R2:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN OTHERS=> temp :=(R3(7)& R3(7 DOWNTO 0))+(A(7)& A(7 DOWNTO 0));
R3:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);END CASE;WHEN subp =>--Rx:= Rx-A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> temp :=(R0(7)& R0(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R0:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “01”=> temp :=(R1(7)& R1(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R1:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);WHEN “10”=> temp :=(R2(7)& R2(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R2:=temp(7 DOWNTO 0);
overflow <= temp(8)xor temp(7);WHEN OTHERS=> temp :=(R3(7)& R3(7 DOWNTO 0))+ NOT(A(7)& A(7 DOWNTO 0))+ 1;
R3:=temp(7 DOWNTO 0);
overflow <= temp(8)XOR temp(7);END CASE;WHEN move => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= A;WHEN “01”=> R1:= A;WHEN “10”=> R2:= A;WHEN OTHERS=> R3:= A;END CASE;
WHEN shrp => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= '0' & A(7 DOWNTO 1);WHEN “01”=> R1:= '0' & A(7 DOWNTO 1);WHEN “10”=> R2:= '0' & A(7 DOWNTO 1);WHEN OTHERS=> R3:= '0' & A(7 DOWNTO 1);END CASE;WHEN shlp => CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:= A(6 DOWNTO 0)& '0';WHEN “01”=> R1:= A(6 DOWNTO 0)& '0';WHEN “10”=> R2:= A(6 DOWNTO 0)& '0';WHEN OTHERS=> R3:= A(6 DOWNTO 0)& '0';END CASE;WHEN andp =>--Rx:= Rx AND A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 AND A;WHEN “01”=> R1:=R1 AND A;WHEN “10”=> R2:=R2 AND A;WHEN OTHERS=> R3:=R3 AND A;END CASE;WHEN orp =>--Rx:= Rx OR A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 OR A;WHEN “01”=> R1:=R1 OR A;WHEN “10”=> R2:=R2 OR A;WHEN OTHERS=> R3:=R3 OR A;END CASE;WHEN xorp =>--Rx:= Rx XOR A;CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=R0 XOR A;WHEN “01”=> R1:=R1 XOR A;WHEN “10”=> R2:=R2 XOR A;WHEN OTHERS=> R3:=R3 XOR A;END CASE;WHEN Swap =>--Swap: Rx to Ry;CASE IR(11 DOWNTO 8)IS WHEN “0100”=> R0:=R1;WHEN “1000”=> R0:=R2;WHEN “1100”=> R0:=R3;WHEN “0001”=> R1:=R0;WHEN “1001”=> R1:=R2;WHEN “1101”=> R1:=R3;WHEN “0010”=> R2:=R0;WHEN “0110”=> R2:=R1;WHEN “1110”=> R2:=R3;WHEN “0111”=> R3:=R1;WHEN “1011”=> R3:=R2;WHEN “0011”=> R3:=R0;
WHEN OTHERS=> NULL;END CASE;WHEN OTHERS => NULL;END CASE;
WHEN 3=>--状态3 CASE IR(15 DOWNTO 12)IS WHEN Swap=>--Swap: A to Rx CASE IR(11 DOWNTO 10)IS WHEN “00”=> R0:=A;WHEN “01”=> R1:=A;WHEN “10”=> R2:=A;WHEN OTHERS=> R3:=A;END CASE;WHEN jmp|Jz|Read|Write => IR(7 DOWNTO 0)<= M_data_in;PC := PC+1;
WHEN OTHERS => NULL;END CASE;
WHEN 4=>--CASE IR(15 DOWNTO 12)IS WHEN jmp =>
条件转移指令
PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);
WHEN Jz =>--令
IF(R0=“00000000”)then PC := IR(11 DOWNTO 0);MAR <= IR(11 DOWNTO 0);else MAR <= PC;END IF;
WHEN Read => MAR <= IR(11 DOWNTO 0);WHEN Write => MAR <= IR(11 DOWNTO 0);MDR <= R0;WHEN OTHERS => NULL;END CASE;
WHEN 5 =>--MAR <= PC;WHEN 6 =>--
CASE IR(15 DOWNTO 12)IS WHEN Read => R0 := M_data_in;
WHEN OTHERS=> NULL;END CASE;
取双字节指令的后半部分状态4
--无条件转移指状态5 状态6--
END CASE;END IF;END process seq;
comb: PROCESS(reset, status)BEGIN IF(reset = '1' AND status = 5 AND IR(15 DOWNTO 12)= Write)THEN
Write_Read <= '1';
ELSE Write_Read <= '0';END IF;END PROCESS comb;M_address <= MAR;M_data_out <= MDR;END RTL;
3.仿真波形图
3.1总体的仿真波形图
1、我们可以看到CPU有6种工作模式,并且在不同的工作模式下实现了不同的功能。
2、我们的仿真波形上的M_q输出的波形为,000、15、24、D0、1F......与我们cpu_mem.Mif文件中所输入的指令一一对应。
3、我们看到PC随着时钟信号的改变在自加1。并且不断的从内存文件中依次读出相应的指令,将其执行。
4、我们看到R0的值在变化,依次为00、05、39、43、9、0A、3B、18、43、00,和所给的实例程序的情况完全吻合。同理也可以看出R1、R2、R3均为正确结果
5、我们可以看到地址寄存器也随着时钟信号在自加1,说明我们的PC和地址寄存器是共同协调工作的,随着PC加1地址也随之加1.6、在数据寄存器在CPU执行第7、8两条指令后其值也是随之改变为了R0中的值,与我们的预期相同。
3.2仿真波形的分析
变化: 我们可以看到执行完上面的的七条指令后R0、R1中的值发生了变化,而R2、R3中的值依然为00 没有发生变化。
分析:第一条指令:由于我们程序中设定为00010101即为load指令,转化为十六进制即为第一条指令15H,而我们在CPU中约定load指令为Read 01F R0<-(01F),即为将立即数5送给R0寄存器,所以当我们执行15H这条指令后CPU会将05送给R0寄存器,我们也可以从波形上看到,当执行完成15H指令后R0中的值变成了05;
第二条指令:同样的我们将24H设定为Move R1,R0 R1<-(R0)是一条转移指令,把R0中的值送给R1,从波形图上可看出 执行完成24H后 R1中的值变成了05,与我们的预期相符。
第三、四指令:我们将 D0H、1FH设定为 Read 01F,即R0<-(01)F 将1F中的值送给R0,操作完后R0的值就为我们在1F单元中存储的39 的数据值了。从波形图上我们也能看出吻合。
第五条指令:我们将94H设定为 Shl R1 即将R1中的值左移一位,操作完成后R1的值变成了0A,与波形的情况也吻合。第六条指令:我们将31H设定为 Add R0,R1 R0<-(R0)+(R1)操作完成后R0的值为R0和R1的和,很明显的看出我们仿真波形上的值是正确的。
第七、八两条指令:我们将E0H和1EH设定为 Write 01E 01E<-(R0)我们执行完成后01E单元的值在RAM中显示为43,与实际相符。
第九条指令:我们将41H设定为 SUB R0,R1 R0<-(R0-R1)指令,即为减法指令,我们预测执行完41H后R0的值为39,波形图显示正确。
第十条指令:我们将A1H设定为 Awap R0,R1(R0)(R1)指令,即为交换指令,我们预期R0=0A R1=39,从波形上看出我们执行了 A1H后与我们的R0、R1值与预期结果相同。
第十一条指令:61H 设定为 OR R0,R1 R0<-(R0)AND(RI)执行完城后R0=3B 与波形图相同。
第十二条指令:84H设定为Shr RI R1<-(RI)右移执行完成后R1应为1C 与波形图结果相同指令正确。
第十三条指令:51H设定为AND R0,R1 执行相与操作,预计R0中为18,波形图上当执行到这条指令后R0中结果确实为38,指令运行正确。
第十四条指令:28H设定为Move R2,R0 转移指令,将R0的值送给R2,预计R2中的值将为18,从波形图上看出R2值当运行到28H的时候确实为18,我们的指令运行正确。
第十五条指令:2DH设定为Move R3,R1 转移指令 将R1中的值送给R3,我们预期R3中的值将会为1C,但执行完成后我们从波形图上看出R3的值为1CH,指令运行正确。
第十六条指令:7BH设定为XOR R2,R3 将R2和R3异或 我们预期 R3中的之将会变为1CH,从波形图上看到我们运行完成7BH后R3 的值为1CH,指令运行正确。
第十七、十八条指令:D0H、1EH设定为Read 01E R0<-(01E)将01E地址中的值送给R0寄存器,我们预期R0中的值将会为 43,从波形图上可以看出当运行到此处的时候R0的值变成了43,指令运行正确。
第十九、二十条指令:C0H、19H 设定为:JZ019,若(R0)=0转移至019,否则执行下一条指令,我们分析R0中的值并不为0,故不会跳转,我们从波形上也可以看出,R0、R1、R2、R3中的值并没有发生任何变化
第二十一、二十二条指令:1DH、D0H设定为Read 01D R0<-(01D),即将01D地址中的值取出送给R0,预期R0中的值将为0,从波形图上也可以看出,执行到此处R0的值变成了0。
第二十三、二十四条指令:B0H、13H设定为: JMP 013指令 无条件跳转至013H地址,而013H 为JZ 019 指令 同时这是的R0寄存器中的值为0,满足了跳转条件,此时程序将跳转到019H地质处执行,即是我们的低二十五条指令,为停止指令,程序停止。
第二十五条指令:F0H 设定为Stop 指令,执行到此处程序停止。
此后的指令均为数据存储的指令,在这里我就不一一进行介绍了,详情可以查看下图这个32字节的RAM内情表。
4、仿真中遇到的问题:
仿真过程中的一些问题首先是PC、R0、R1、R2、R3里面的值的顺序需要将其颠倒。
仿真后还有一个问题是R0、R1、R2、R3的值显示不正确,R0只显示了到了05 后面的值就都不正确了,调试了半天,我发现波形显示M_q在上升沿变化后,与之相连的M_data_in竟然不变,最后经过各种搜索后解决了此问题,原来lpm为输出多做了一次寄存,也就是两个脉冲才会读出MAR的值。与PC的变化不衔接,整整快了两个脉冲。所以把图上红圈处的勾去掉就行了。
五、实验感想
经过此次实验
我对CPU的工作原理有了很深刻的认识,发现了其中蕴藏着巨大的乐趣,我完全的搞懂了此次试验的原理,再次基础上,我还能结合此次实验去理解微机接口,计算机组成原理等课程,通过此次实验,我能熟练的使用VHDL来编写大型的程序代码,对于一个学软件的人来说,我的编程能力又上了一个台阶。
除此之外,我学习到了很多底层的东西,让我对计算机的工作原理有了更深刻的理解,让我在此后的编程中将受益无穷。
可能老师您会看到我这个课程设计的很多拷贝,反正是我做的就是我做的,别人参考也好拷贝也好,我都觉得无所谓,重要的是我能学习到东西,这也让我学习到了很多做人的道理,你说同学问你要课程设计,我能不给么,但是作为同学我只能啰嗦一句,你只能参考啊,不要完全照搬。单是有些人他就要完全照搬你的图和分析,自己也不提出自己的看法和见解,这总是让我很心寒,特别是那些学习成绩还不错的。我真是想不通问什么要人家好心给你的报告参考,你反过来要坑人家,就这样的人品,学习好又能咋样呢,都是转空子的人,以后也不会得到大家的认可。
第二篇:计算机组成原理课程设计
《计算机组成原理》课程设计
任务书
中原工学院计算机学院 2007年6月
前言
“计算机组成原理”是大学本科计算机相关专业的一门核心专业基础课程,必修,在先导课和后继课之间起着承上启下的作用。主要讲授单处理机系统的组成和工作原理,包括运算器、存储器、控制器和输入输出系统,其中控制器的设计是课程的重点和难点。为了让学生能融会贯通各知识点,增强对计算机系统各模块协同工作的认识,充分理解数据通路,掌握控制器的设计技术,课程设计一般也侧重于控制器的设计。考虑到学生的基础和现有实验环境,本次课程设计的题目是“微程序控制器的设计与实现”。通过该课程设计,希望学生在理论与实践相结合的基础上,加深对计算机整机概念,进一步理解计算机的内部结构和时空关系,进一步理解和掌握微程序控制器的设计思想和具体方法、步骤,从而提高自行设计、调试和分析问题的能力。课程设计题目
微程序控制器的设计与实现
目的
巩固和深刻理解“计算机组成原理”课程所讲解的原理,加深对计算机各模块协同工作的认识
掌握微程序设计的思想和具体流程、操作方法。 培养学生独立工作和创新思维的能力,取得设计与调试的实践经验。
尝试利用编程实现微程序指令的识别和解释的工作流程
内容
按照要求设计一指令系统,该指令系统能够实现数据传送,进行加、减运算和无条件转移,具有累加器寻址、寄存器寻址、寄存器间接寻址、存储器直接寻址、立即数寻址等五种寻址方式。
具体要求
仔细复习所学过的理论知识,掌握微程序设计的思想,并根据掌握的理论写出要设计的指令系统的微程序流程。指令系统至少要包括六条指令,具有上述功能和寻址方式。 根据微操作流程及给定的微指令格式写出相应的微程序 将所设计的微程序在虚拟环境中运行调试程序,并给出测试思路和具体程序段
尝试用C或者Java语言实现所设计的指令系统的加载、识别和解释功能。 撰写课程设计报告。
设计环境
伟福COP2000型计算机组成原理实验仪,微机,相关虚拟软件。
VC开发环境或者Java开发环境。
课程设计时间
1.5周
课程设计报告要求 完成设计任务后,在课程设计的最后阶段,需要总结全部设计工作,写出完整,规范的设计报告,在指定的时间内提交指导教师.课程设计报告要求有完整的格式,包括封面,目录,正文等,具体如下:
一、封面
包括:课程设计题目,姓名,学号,班级,指导教师,完成日期.二、目录
正文前必须要有目录.三、正文 正文包括的内容有: ⑴ 设计任务与要求;⑵ 设计方案(包括设计思路,采用的微指令格式,每条指令的指令流程及其微程序清单)(3)调试过程(包括实验步骤,出现的问题,解决的方法(4)小结(在整个课程设计过程中的总结和体会)(5)参考资料
成绩评定
课程设计的考核结果按优秀,良好,中等,及格和不及格来评价.对设计任务理解透彻,能够全面,正确,独立地完成设计内容所规定的任务,得出设计结果,并按时提交准确,完整,规范的设计报告,可评为优秀;按照设计任务要求能够顺利地完成任务,得出结果,按时提交较完整的,符合要求的设计报告,可评定为良好;按照设计要求完成了软件的编程与调试,基本完成了任务要求,提交符合要求的设计报告,可评为中等;基本完成设计目标,但不够完善,可能有若干小的缺陷,在帮助下能够完成任务要求,提交设计报告,可评为及格;不能完成指定的要求和任务,未提交设计报告的,评为不及格.参考资料 1.“计算机组成原理课程设计任务书” 2.“计算机组成原理” 课堂教材
第三篇:计算机组成原理课程设计范文
计算机组成原理课程设计指导材料
一. 课程设计目的
课程设计教学目的:通过本课程设计,学生可熟悉典型计算机的基本结构、基本组成和基本功能,掌握计算机主要组成部件工作原理的基本分析与设计方法,加深对理论课知识内容的理解。
二. 设计题目
题目1.内存扩充与连接 1.设计目的:
2.主要任务:
3.设计要求:
4.图表
画图时请按以下给出的原件图画 图1-1 8086芯片引脚图 图1-2内存芯片逻辑图
图1-3 译码器与门电路逻辑图 题目2.模型机组成设计
1.目的:通过对一个简单模型机的设计与实现,对计算机的基本组成、部件的设计、部件间的连接以及微指令执行的过程。
2.基本要求:画出模型机的设计图并举例描述利用该模型机进行加法运算时,各个功能部件的工作情况。
题目3.算数逻辑运算 1.目的:
(1).了解运算器 的组成结构。(2).掌握运算器的工作原理。(3).学习运算器的设计方法。
(4).掌握简单运算器的数据传 送通路。
(5).验证运算功能发生器74LS181 的组 合功能。
2.设计原理:
设计中所用的运算器数据通路图如下图。图中所示的是由两片74LS181 芯片以并/串 形式构成的8 位字长的运算器。右方为低4 位运算芯片,左方为高4 位运算芯片。低位芯片 的进位输出端Cn+4 与高位芯片的进位输入端Cn 相连,使低4 位运算产生的进位送进高4 位运算中。低位芯片的进位输入端Cn 可与外来进位相连,高位芯片的进位输出引至外部。两个芯片的控制端S0~S3 和M 各自相连,其控制电平按表。为进行双操作数运算,运算器的两个数据输入端分别由两个数据暂存器DR1、DR2(用锁存器74LS273 实现)来锁存数据。要将内总线上的数据锁存到DR1 或DR2 中,则锁存器74LS273 的控制端LDDR1 或LDDR2 须为高电平。当T4 脉冲来到的时候,总线上的数据就被锁存进DR1 或DR2 中了。为控制运算器向内总线上输出运算结果,在其输出端连接了一个三态门(用74LS245 实现)。若要将运算结果输出到总线上,则要将三态门74LS245 的控制端ALU-B 置低电平。否则输出高阻态。
3.根据设计原理描述进行原码加减运算及逻辑运算的程序流程 4.填写下表
三. 课程设计报告格式
1.报告组成及装订顺序:封面、目录、引言、正文、结论、参考文献、心得体会。2.书写格式要求:见学院课程设计报告要求
四. 其它要求
1.报告提交时间:截止12月31日
2.报告提交形式:以班级为单位提交电子版和打印版
第四篇:计算机组成原理课程设计任务书
《计算机组成原理》
课程设计任务书
一、设计任务:
1、基本模型机设计与实现;
2、在基本模型机设计的基础上设计一台复杂模型机。
二、功能指标和设计要求:
利用所学过的理论知识,特别是微程序设计的思想,设计基于微程序控制器的模型计算机,包括设计相应的硬件平台、机器指令系统和微指令等。设计环境为TD-CMA计算机组成原理教学实验箱、微机,联机软件等。同时设计好基于模型机的测试验证程序,并在设计好的硬件平台上调试通过,以验证所设计的模型机功能的可行性与可靠性。在设计完成的前提下,撰写出符合要求的课程设计说明书并通过设计答辩。
1.基本模型机设计与实现
设计一台简单模型机,在具备基本必要的硬件平台的基础上,进一步要求其机器指令系统至少要包括五条不同类型指令:如一条输入指令(假设助记符为IN),一条加法指令(假设助记符为ADD),一条输出指令(假设助记符为OUT)、一条无条件转移指令(假设助记符为JMP)和一条停机指令(假设助记符为HLT);在设计好的模型机基础上,设计一个进行两个数求和运算的测试验证程序,用以验证模型机功能的可行性与可靠性。
2.在任务1的基础上,增加机器指令系统的功能,设计具有不少于10条机器指令的复杂指令系统模型机,包含算术逻辑指令、访问内存指令、控制转移指令、输入输出指令、停机指令等。数据的寻址方式要包括直接、间接、变址和相对寻址等多种寻址方式。利用设计的复杂模型机实现两个数的减法运算并判断差得正负,差为正数则输出A,差为负数则输出B,差为零则输出C。在设计好的模型机基础上,进一步设计一个测试验证程序,验证模型机功能的可行性与可靠性。
3、基本模型机和复杂模型机的CPU数据字长为8位,采用定点补码表示。指令字长为8的整数倍。微指令字长为24位。
三、设计步骤:
1、确定设计目标 进行全面深入的模型机设计需求分析,确定所设计计算机的功能和用途。
2、总体结构、数据通路设计及硬件实现
总体结构设计包括确定模型机应具有的基本功能部件(如运算器、控制器以及基本的寄存器等等)以及它们之间的数据通路。
硬件实现基于现有的基本实验箱平台,根据所设计模型机选择必要的元器件,并通过接插件(各种连线等)进行器件连接,组成所设计的模型机硬件系统(物理机)。综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,数据通路不同,执行指令所需要的逻辑操作就不同,计算机的结构也就不一样。在此基础上,在后面的微指令设计阶段,就可以依据数据通路关系确定模型机工作过程中的所有微操作,并进一步确定微指令格式中的相应微命令。
3、确定指令系统(机器指令系统)
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式。确定相对应指令所包含的微操作。
4、机器指令转化为微程序执行的相关设计
过程2、3完成后,就可以根据机器指令系统进行指令周期分析,确定出每条机器指令的CPU周期数。对于微程序控制的计算机,进一步确定出每个CPU周期内的微操作(明确哪些微操作可以安排在同一CPU周期中,哪些微操作则不能)。设计出每条机器指令的方框图形式的指令周期流程图。
5、微指令代码化
依据指令周期流程图以及指定的微指令格式,将设计出程序格式中的各字段(操作控制字段、P测试字段、直接微地址字段)相应的二进制代码(即对应的微命令编码)。
6、设计微指令的相关微地址
根据后续微地址的形成方法(直接微地址或P测试转移后重新形成),确定每条微指令的相关后续微地址。确定好微命令在控存中的存放地址,并将所有微命令写入到控存的相应存储单元中。
7、组装、调试
7.1、在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。首先调试每条微指令功能,再调试每条机器指令功能。
连接所有模块,用单步微指令方式执行机器指令的微程序流程图,当全部微程序流程图检查完后,若运行结果正确,则在内存中装入一段机器指令,进行其他的运行方式等功能调试及执行指令的正确性验证。
7.2、当所有功能模块都调试正常后,进入总调试。根据设计好的模型机,进一步设计一个功能测试验证程序,运行程序并验证所涉及的模型机功能是否可行和可靠。
四、课程设计报告要求:
课程设计报告要求打印,其中的数据通路框图、微程序流程图、实验接线图用VISIO等绘图工具软件绘制或用铅笔工工整整绘制,要求图文清晰,报告内容包括:
(1)封面
(包括:题目、所在系、班级、学号、指导教师及时间等项)(2)任务书(3)目录
(目录要层次清晰,要给出标题及页次,目录的最后一项是无序号的“参考文献”)。(4)正文
正文应按目录中编排的章节依次撰写,要求论述清楚,文字简练通顺,插图清晰,书写整洁。“设计”不同于实验,要充分体现出“设计”的思想,不能写成实验报告的形式。文中图、表及公式应规范地绘制和书写。正文是实践设计报告的主体,具体由以下几部分组成:
1)课程设计题目;
2)课程设计使用的相关软硬件资源;
3)设计的具体方法和步骤(包括确定所设计计算机的功能和用途、总体结构与数据通路与硬件设计、指令系统、设计指令执行流程、确定微程序地址、微指令代码化、组装、调试、测试验证程序与功能验证情况。)
4)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法等);(5)附录
附录1:数据通路图 附录2:微程序流程图
附录3:实验接线图
附录4:实验程序及微程序 附录5:参考文献(资料)
五、设计工作量:
(1)作品:设计的最终作品包括硬件和软件两个部分,要求硬件实现正确,能够演示并达到设计指标的要求。每个学生(或小组)在作品完成后,要经指导教师检查,同意拆除后方可拆卸。(2)论文:严格按上述课程设计说明书的要求撰写和装订。每个学生一份。
六、成绩评定标准:
课程设计的成绩分为:优秀、良好、中等、及格、不及格五个等级。
优秀:完成复杂模型机的设计与实现,指令系统完备有更新扩充。调试成功。文档规范齐全。
良好:完成模型机的设计与实现,指令系统指令种类丰富有一定的更新。调试成功。文档规范齐全。
中等:完成基本模型机的设计与实现,在老师指导下对指令系统有更新。调试成功。文档规范齐全。
及格:完成基本模型机的设计与实现。调试成功。文档规范齐全。不及格:没有课程设计报告,无故缺勤,不能完成调试者不及格。
七、工作计划:
时间:18周周1~周5 讲授:2课时
设计及调试:26课时 设计报告编8课时 答辩:4课时
八、参考资料:
1、《计算机组成原理》教材,陈智勇主编;
2、《CMA组成原理与系统结实验指导书》
第五篇:计算机组成原理课程设计指导书
长 沙 学
院
课程设计指导书
系(部)
计算机科学与技术
专
业
计算机科学与技术
2010年12 月 10 日
课程名称:计算机组成原理 课程编号:7020130610 主 笔 人:钟旭 主 审 人:
一、课程设计的目的
通过该课程设计的学习,总结计算机组成原理课程的学习内容,利用TDN-CM+教学实验系统提供的软硬件操作平台掌握层次化设计方法、运用计算机原理知识,设计并实现一台完整的计算机,从而巩固课堂知识、深化学习内容、完成教学大纲要求,学好计算机科学与技术专业的专业基础课。
二、课程设计的题目 1.基本模型机设计与实现;
2.带移位运算的模型机的设计与实现; 3.复杂模型机的设计与实现。
三、设计内容(主要技术关键的分析、解决思路和方案比较等)
利用所学过的理论知识,特别是微程序设计的思想,写出要设计的指令系统的微程序。设计环境为TDN-CM+计算机组成原理教学实验系统,微机,虚拟软件。将所设计的微程序在此环境中进行调试,并给出测试思路和具体程序段。最后撰写出符合要求的课程设计说明书、完成答辩。1.基本模型机设计与实现
指令系统至少要包括六条不同类型指令:如一条输入指令,一条减法指令,一条加法指令,一条存数指令,一条输出指令和一条无条件转移指令。2.带移位运算的模型机的设计与实现
在基本模型机的基础上增加左、右循环和左、右带进位循环四条指令
3.设计不少于10条指令的指令系统。其中,包含算术逻辑指令,访问内存指令,程序控制指令,输入输出指令,停机指令。重点是要包括直接、间接、变址和相对寻址等多种寻址方式。
以上数据字长为8位,采用定点补码表示。指令字长为8的整数倍。微指令字长为24位。
四、设计步骤
1、确定设计目标
确定所设计计算机的功能和用途。
2、确定指令系统
确定数据的表示格式、位数、指令的编码、类型、需要设计哪些指令及使用的寻址方式。
3、总体结构与数据通路
总体结构设计包括确定各部件设置以及它们之间的数据通路结构。在此基础上,就可以拟出各种信息传输路径,以及实现这些传输所需要的微命令。综合考虑计算机的速率、性能价格比、可靠性等要求,设计合理的数据通路结构,确定采用何种方案的内总线及外总线。数据通路不同,执行指令所需要的操作就不同,计算机的结构也就不一样。
4、设计指令执行流程
数据通路确定后,就可以设计指令系统中每条指令所需要的机器周期数。对于微程序控制的计算机,根据总线结构,需考虑哪些微操作可以安排在同一条微指令中,哪些微操作不能安排在同一条微指令中。
5、确定微程序地址
根据后续微地址的形成方法,确定每个微程序地址及分支转移地址。
6、微指令代码化
根据微指令格式,将微程序流程中的所有微指令代码化,转化成相应的二进制代码写入到控制存储器中的相应单元中。
7、组装、调试
在总调试前,先按功能模块进行组装和分调,因为只有各功能模块工作正常后,才能保证整机的正常运行。
当所有功能模块都调试正常后,进入总调试。连接所有模块,用单步微指令方式执行机器指令的微程序流程图,当全部微程序流程图检查完后,若运行结果正确,则在内存中装入一段机器指令,进行其他的运行方式等功能调试及执行指令的正确性验证。
五、设计说明书要求
课程设计说明书按学校统一格式撰写和装订。课程设计报告要求打印,其中的数据通路框图、微程序流程图、实验接线图用VISIO等工具软件绘制或用铅笔工工整整绘制。
(1)封面(包括:题目、所在系、班级、学号、指导教师及时间等项,可到教务处网页上下载)(2)任务书(3)目录
目录要层次清晰,要给出标题及页次,目录的最后一项是无序号的“参考文献”。(4)正文
正文应按目录中编排的章节依次撰写,要求计算正确,论述清楚,文字简练通顺,插图清晰,书写整洁。文中图、表及公式应规范地绘制和书写。
正文是实践设计报告的主体,具体由以下几部分组成:
1)课程设计题目;
2)课程设计使用的实验设备;
3)课程设计步骤(包括确定所设计计算机的功能和用途、指令系统、总体结构与数据通路、设计指令执行流程、确定微程序地址、微指令代码化、组装、调试。)
4)课程设计总结(包括自己的收获与体会;遇到的问题和解决的方法等);
(5)附录
附录1:数据通路图 附录2:微程序流程图 附录3:实验接线图 附录4:实验程序及微程序
附录5:参考文献(资料)(格式规范参照长沙学院毕业设计(论文)撰写规范)
六、设计进度安排 时间:
15、16周 讲授:2课时 答疑及设计:26课时 上机调试:8课时 答辩:6课时
七、考核标准
课程设计的成绩分为:优秀:、良好、中等、及格、不及格五个等级。
优秀:完成复杂模型机的设计与实现,指令系统完备有更新扩充。调试成功。文档规范齐全。良好:完成模型机的设计与实现,指令系统指令种类丰富有一定的更新。调试成功。文档规范齐全。中等:完成基本模型机的设计与实现,在老师指导下对指令系统有更新。调试成功。文档规范齐全。及格:完成基本模型机的设计与实现。调试成功。文档规范齐全。不及格:没有课程设计报告,无故缺勤,不能完成调试者不及格。