计算机组成原理课程设计报告优秀.doc

上传人:doc321 文档编号:14921807 上传时间:2022-02-24 格式:DOC 页数:20 大小:2.82MB
返回 下载 相关 举报
计算机组成原理课程设计报告优秀.doc_第1页
第1页 / 共20页
计算机组成原理课程设计报告优秀.doc_第2页
第2页 / 共20页
计算机组成原理课程设计报告优秀.doc_第3页
第3页 / 共20页
计算机组成原理课程设计报告优秀.doc_第4页
第4页 / 共20页
计算机组成原理课程设计报告优秀.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《计算机组成原理课程设计报告优秀.doc》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计报告优秀.doc(20页珍藏版)》请在三一文库上搜索。

1、计算机组成原理课程设计指导教师: 学生班级: 学生姓名: 学 号: 班内序号: 课设日期:2012/12/172012/12/2817 / 20文档可自由编辑打印目 录1、 设计目的12、 设计要求13、 设计方案14、 较详细的设计过程25、 编程与调试程序方法的介绍146、 结果及分析147、 收获、体会及建议15一、设计目的 1. 主要掌握微程序控制结构计算机的设计方法,通过对机器指令和相对应微程序的设计,加深对微程序控制器的理解,加深对微程序设计特点的了解,加深对计算机各部件的理解以及对整机结构的理解。 2掌握几种寻址方式的控制执行过程。 3了解多累加器计算机的特点。 4熟悉VHDL语

2、言的编程。2、 设计要求1运算器采用单累加器多寄存器结构2指令系统:16条以上指令,有I/O指令,外部设备统一编址。3内存寻址范围1K以上字节寻址方式: 寄存器直接寻址 寄存器间接寻址 直接寻址 立即数寻址4可执行从键盘上输入的十进制两位数与两位数加法程序并打印输入的数据及结果或实现两数相加通过数码管显示结果。三、设计方案1首先设计整机逻辑框图,并分析各主要部件中所使用的关键器件,彻底理解主要芯片的工作原理。根据设计要求,对实验仪硬件模块进行逻辑剪辑组合,便可设计出该实验计算机的整机逻辑框图。为利于调试,应在逻辑框图上表明各器件的控制信号及必要的输出信号。 2指令系统和指令执行流程设计 指令系

3、统需确定实验计算机的指令系统具体由哪里指令组成,包括哪几种类型指令,指令操作数有哪几种寻址方式,以及指令编码等。 指令执行流程 应根据实验计算机整机逻辑图来设计指令系统中每条指令的执行流程。 一条指令从内存取出到执行完,需要若干个机器周期(节拍)。任何指令的第一个机器周期都是“取指令周期”,或称为公操作周期。而一条指令共需几个机器周期取决于指令在机内实现的复杂程度。 3微操作控制信号和微程序设计 微操作控制信号及其实现方法综合实验计算机指令系统各指令执行流程中所涉及到的微操作控制信号,统计总共需要多少个微控制信号,每个信号的有效性,决定这些信号中哪些由软件(微指令)直接产生,哪些需用硬件实现。

4、 设计微指令格式,微指令由32位组成,设计出每位微操作的定义。 确定微程序控制方式设计任务包括设计各微程序入口地址的形成方法和控存的顺序控制(即下地址形成)方法。 编写各指令的微程序,根据指令流程和微指令格式仔细地逐条填写微指令各码位。为减少填写错误,可边把本条微指令用到的微码(微操作控制信号)按预定的有效性填入,检查无误后,再对本条微指令用不到的微码(微操作控制信号)填入与预定的有效性相反的代码,核对无误后,最后将这32位微码缩写成8位十六进制微指令。4设计接线表要仔细设计接线表,因为它是组装计算机的依据。 为了避免遗漏,应按模块逐个归纳整理,明确各模块中器件各控制信号的处理方法。 对于模块

5、中不用的器件,也应有所处理。4、 较详细的设计过程1 先熟悉课程设计任务。2 熟练掌握VHDL语言。3 实现基本门电路。4 用VHDL描述计算机各部件。1 存储器的VHDL描述 a.存储器的硬件描述图 b.存储器实验过程与信号 首先利用开关S0S7设置一个8位的数据,用于写入内存时使用。 第二步,利用开关S8、S9的组合生成一个4个字节的内存,内存地址如下:地址S9S8000101210311第三步,当S10=0 AND S11=1时,发出写内存信号,将开关S0S7设置的8位数据写入由开关S8、S9的组合指定的内存地址单元。第四步,当S10=1 AND S11=0时,发出读内存信号,将由开关S

6、8、S9的组合指定的内存地址单元中的数据读出,由发光二极管L9L12显示。 c.存储器的VHDL描述Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;use IEEE.std_logic_arith.all; entity busv1 is Port ( CI: buffer std_logic_vector(19 downto 0); CO: in std_logic_vector(11 downto 0) );end busv1;architecture busv1_behav of busv1

7、 issignal mux:std_logic_vector(1 downto 0);signal WR,RD:std_logic;beginmux = CO(9 downto 8);RD = CO(11);WR = CO(10);CI( 11 downto 0 ) TMP1 := CO(7 downto 0);-写入地址0号 when 01 = TMP2 := CO(7 downto 0);-写入地址1号 when 10 = TMP3 := CO(7 downto 0);-写入地址2号 when others = TMP4 := CO(7 downto 0);-写入地址3号 end case

8、; elsif (WR=1 and RD=0) then -读内存 case mux is when 00 = CI(19 downto 12) CI(19 downto 12) CI(19 downto 12) CI(19 downto 12)= TMP4;-读地址3号 end case;end if;end process; end busv1_behav;2 寄存器的VHDL描述 a.寄存器的硬件描述图 b.计算机部件实验之寄存器的VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use

9、 IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive components.-library UNISIM;-use UNISIM.VComponents.all;entity jicunqi isport( CI: inout std_logic_vector(12 downto 0); CO: in std_logic_vector(14 downto 0);end j

10、icunqi;architecture Behavioral of jicunqi issignal RS:std_logic_vector(2 downto 0);signal R0,R1,R2,R3,R4,R5,R6,R7:std_logic_vector(7 downto 0);signal WRE,RDE,U244AOE,U244BOE:std_logic;signal U244A,U244B:std_logic_vector(7 downto 0);signal DBB,DBX:std_logic_vector(7 downto 0);constant bz:std_logic_ve

11、ctor:=ZZZZZZZZ;Function sizeIt(a:std_logic;len:integer)return std_logic_vector isvariable rep:std_logic_vector(len-1 downto 0);begin for i in reprange loop rep(i):=a;end loop; return rep;end sizeIt; begin-Define three-state ports U244A = CO(7 downto 0);DBX= (SizeIt(U244AOE,8) and U244A) or (SizeIt(U

12、244BOE,8) and U244B);CI(7 downto 0) = DBX when (U244AOE or U244BOE)=1) else bz; DBB = CI(7 downto 0); RS R0R1R2R3R4R5R6R7 U244B U244B U244B U244B U244B U244B U244B U244B = R7; end case;end if;end process; U244BOE = CO(14);U244AOE = CO(13);WRE = CO(11);RDE = CO(12);CI(12 downto 8) = CO(12 downto 8);e

13、nd Behavioral;3 运算器的VHDL描述a.运算器的硬件描述图 b.运算器实验过程与信号首先利用开关S0S7设置一个8位的数据,寄存在74LS244A,使开关S13(U244AOE)为低电平,使寄存在74LS244中的数据向总线输出。L13反映S13的状态。在总线上的数据可以通过L0L7看到。第二步,把总线上的数据送入74LS377保存,当S14为低电平(U377EN=0)并且S15有一个脉冲信号时从它输出送ALU的A端。第三步,利用开关S0S7设置一个8位的数据,寄存在74LS244A,使开关S13(U244AOE)为低电平,使寄存在74LS244中的数据向总线输出。L13反映S

14、13的状态。在总线上的数据可以通过L0L7看到。第四步,当S16、S17都为1时,控制74LS373从总线接收数据,寄存。当当S16为1、S17为0时,控制74LS373中的数据送ALU的B端。第五步,利用S8S10的组合在8种计算中选择一个进行计算,选择表如下:(L8L10反映S8S10的状态,CIN由开关S11确定,L11反映S11的值)。FFS10S9S8FA + CIN000FA - CIN001FA or FB010FA and FB011FA + FB + CIN100FA - FB - CIN101FA * FB110FA xor FB111计算结束后,运算结果F送74LS244

15、B,L15反映向高位的进位COUT。第六步,当S12为0时(L12反映S11的值),将74LS244B中的值送总线,一次运算结束。 c.计算机部件实验之运算器的VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;- Uncomment the following lines to use the declarations that are- provided for instantiating Xilinx primitive co

16、mponents.-library UNISIM;-use UNISIM.VComponents.all;entity yunsuan isport( -DB:inout std_logic_vector(7 downto 0); CI: inout std_logic_vector(15 downto 0); CO: in std_logic_vector(17 downto 0);end yunsuan;architecture Behavioral of yunsuan issignal U377Q:std_logic_vector(7 downto 0);signal U373Q,U2

17、44A,U244B:std_logic_vector(7 downto 0);signal DBB,DBX:std_logic_vector(7 downto 0);signal U377CLK,U377EN,U373GT,U373OE,U244AOE,U244BOE: std_logic;signal FA,FB,FF:std_logic_vector(8 downto 0);signal S:std_logic_vector(2 downto 0);signal CIN,COUT:std_logic;constant bz:std_logic_vector:=ZZZZZZZZ; - siz

18、eIt replicates a value to an array of specific length. Function sizeIt(a: std_Logic; len: integer) return std_logic_vector is variable rep: std_logic_vector( len-1 downto 0); begin for i in reprange loop rep(i) := a; end loop; return rep; end sizeIt;begin-Define 74377 process (U377CLK) begin if (U37

19、7CLKevent and U377CLK=0) then if (U377EN=0) then U377Q = DBB; end if; end if; end process;-Define 74373 U373Q = DBB when (U373GT=1and U373OE=0) else (11111111 and U373Q); -define the ALU FA= 0&U377Q; FB= 0&U373Q; FF= FA + CIN when S =000 else FA - CIN when S =001 elseFA or FB when S =010 elseFA and

20、FB when S =011 elseFA + FB + CIN when S =100 elseFA - FB - CIN when S =101 else FA * FB when S =110 elseFA xor FB when S =111; COUT=FF(8);U244B = FF(7 downto 0); -Define three-state ports U244A = CO(7 downto 0);DBX= (SizeIt(U244AOE,8) and U244A) or (SizeIt(U244BOE,8) and U244B);CI(7 downto 0) = DBX

21、when (U244AOE or U244BOE)=1) else bz; DBB = CI(7 downto 0);-CI(7 downto 0) is the BUSCIN = CO(11);U244BOE = CO(12);U244AOE = CO(13);U377EN= CO(14);U377CLK= not CO(15) or U377EN;U373OE= CO(16);U373GT= CO(17);S(2 downto 0) = CO(10 downto 8);CI(14 downto 8) = CO(14 downto 8);CI(15) CLKG,O = CLKX);-Defi

22、ne RAM TADR(8)= 0;TADR(7)= 0;TADR(6) = 0;TADR(5 downto 0) = CO(22 downto 17);TCLK= CLKX; logic0 MWR, EN=MEN,RST=logic0,CLK=TCLK, ADDR=TADR,DI=DBB(7 downto 0),DO=DBY(7 downto 0); -Define 74377 process (U377CLK) begin if (U377CLKevent and U377CLK=0) then if (U377EN=0) then U377Q = DBB; end if; end if;

23、 end process;-Define 74374 process (U374CLK) begin if (U374CLKevent and U374CLK=0) then U374Q = DBB; end if; end process;-Define 74373 U373Q = DBB when (U373GT=1) else (11111111 and U373Q); -U373Q = (SizeIt(U373GT,8) and DBB) or (SizeIt(not U373GT,8) and U373Q);-Define three-state ports U244B = CO(7

24、 downto 0);DBX= (SizeIt(U374OE,8) and U374Q) or (SizeIt(U373OE,8) and U373Q)or (SizeIt(U244OE,8) and U244B) or (SizeIt(MOE,8) and DBY);CI(7 downto 0) = DBX when (U374OE or U373OE or U244OE or MOE)=1) else bz;DBB = CI(7 downto 0);-CI(7 downto 0) is the BUS-Display 74377CI(15 downto 8) = U377Q;-Contro

25、l signalsMOE = CO(23); MWR= CO(16);MEN= CO(15);U377EN= CO(14);U244OE= CO(13);U373OE= CO(12);U373GT= CO(11);U374CLK= not CO(10) or CLK;U374OE= CO(9);U377CLK= not CO(8) or U377EN;-Display control signals-CI(24 downto 16) = CO(16 downto 8);CI(23 downto 16) = DBY(7 downto 0);CI(24) = CO(8);-Connect all

26、unused pinsIOR = 1;IOW= 1;CRD= 1;CWR= 1;MCLK =CLK;CTRL2 = 1;CTRL3 = 1;CTRL4 = 1;CTRL1 = 1;AB = DB;CI(31 downto 29) = MUX;CI(28) = RESET;CI(27) = PRIX;CI(26) = KRIX;CI(25) = RUN or CO(31) or CO(30) or CO(29) or CO(28) or CO(27) or CO(26) or CO(25) or CO(24);end busv1_behav;5 电路设计6 程序设计1) 应用程序设计概述1 本次

27、课程设计使用的指令文件(CPU8B.DEF)2 目标代码生成2) 应用程序实现(编辑,汇编)1 找到桌面上的图标,, 启动 。2 加载指令定义文件CPU8B.DEF。3 检查加载的指令定义文件CPU8B.DEF。4 汇编生成目标文件。7 系统调试1) 电路生成和下载。2) 应用程序目标码和微程序目标码下载。3) 调试。1 打开界面后,设置串行口参数。2 选择工具栏”系统”按钮设置试验模式。3 设置完毕后,先不加载文件,点击”确定”,会依此出现下面5个窗口。4 再次选择工具栏”系统”按钮设置试验模式,加载三个文件。下图是加载显示配置文件。5 加载程序目标文件。6 等待程序和微程序目标码下载完毕。

28、7 执行程序,在微机上执行或是在实验仪器上执行。8 运行结束,看到结果后,复位,否则不能再次运行。5、 编程与调试程序方法的介绍要将所设计机器指令对应的微程序装入到控制存储器中,还要将调试程序(汇编程序)装入到内部存储器中。各有两种装入方法,一种是通过实验箱键盘输入,另一种是通过编程下载实现。在调试过程中,往往会发现设计中的问题,需要修改设计,再根据修改后的设计进行调试,直到完全成功为止。调试成功后,整理出最后的设计文件。6、 结果及分析1 电路下载后的执行效果(1)S0=1,S1=12 电路下载后的执行效果(2)S0=0,S1=1S0=1,S1=0S0=0,S1=07、 收获、体会及建议通过

29、本次的课程设计,我的收获很多!我领悟到只有将所学知识真正应用到实际操作中,才能更好地掌握,才能不断发现自已存在的问题,从而不断进步!课程设计不仅巩固我的理论知识,将理论和实践结合起来,锻炼了我的动手能力,也让我认识到自己的不足之处,争取以后能克服这些缺点,更进一步提高自己各个方面的能力! 虽然这只是一次的简单的课程设计,可是平心而论,也耗费了不少的心血,这就让我不得不佩服专门从事这方面的技术前辈,才意识到要想在此方面有所成就需要克服的困难太多了。要有足够的耐心和毅力,不怕失败,一次次的调试直到成功为止。遇到不懂得及时查资料,并记录。没有不能弄懂的事情,只有不想去弄懂的人,只要努力了就有收获。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。非常感谢各位老师给与我们各方面的帮助!谢谢各位老师!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1