东北被大学秦皇岛分校组成原理课程设计_第1页
东北被大学秦皇岛分校组成原理课程设计_第2页
东北被大学秦皇岛分校组成原理课程设计_第3页
东北被大学秦皇岛分校组成原理课程设计_第4页
东北被大学秦皇岛分校组成原理课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北大学秦皇岛分校计算机与通信工程学院计算机组成原理课程设计专业名称班级学号学生姓名指导教师设计时间

课程设计任务书专业:计算机科学与技术学号:学生姓名(签名):设计题目:指令系统及地址寄存器设计设计实验条件综合楼硬件:PC机软件:XilinxISEModelSim汇编语言:VHDL设计任务及要求指令:18、28、31、54号指令主存地址寄存器MAR只读存储器8×8ROM要求:总线结构:单总线,数据总线位数8位、地址总线8位;存储器:内存容量64K*8bit控制器:用硬连线控制器实现26位微操作控制信号运算器:单累加器,实现加、减等8种操作外设:——输入:用开关输入二进制量——输出:7段数码管和LED显示指令系统规模:64条指令,7种类型,5种寻址方式三、课程设计内容1、指令系统设计:本次课程设计要设计的指令是第18、28、31、54号指令,要清楚各条指令的功能、指令类型、寻址方式等内容,本次设计用到的指令的相关内容如表1所示表1本次要设计的指令指令编号助记符指令类型功能18SUBCA,@R?算术运算指令从累加器A中减去间址寄存器的值,减进位28ORA,#II逻辑运算指令累加器A“或”立即数II31MOVA,MM逻辑运算指令将存储器MM地址的值送到累加器A中54RLA逻辑运算指令累加器A左移2、模型机硬件设计:主存地址寄存器MARMAR是主存和CPU之间的接口,可以接收由程序计数器(PC)的指令地址或来自运算器的操作数的地址,以确定要访问的单元。3、逻辑电路设计:只读存储器8×8ROM只读存储器是一种只能读取资料的内存。即使断电,已存的信息也不会丢失。【系统设计】模型机逻辑框图(整机逻辑框图、芯片引脚及CPU逻辑框图如下图1、图2、图3所示)图1整机逻辑框图图2芯片引脚图3CPU逻辑框图指令系统设计指令类型及寻址方式见表1微操作控制信号1、XRD:外部设备读信号,当给出了外设的地址后,输出此信号,从指外设读数据。2、EMWR:程序存储器EM写信号。3、EMRD:程序存储器EM读信号。4、PCOE:将程序计数器PC的值送到地址总线ABUS上(MAR)。5、EMEN:将程序存储器EM与数据总线DBUS接通,由EMWR和EMRD决定是将DBUS数据写到EM中,还是从EM读出数据送到DBUS。6、IREN:将程序存储器EM读出的数据打入指令寄存器IR。7、EINT:中断返回时清除中断响应和中断请求标志,便于下次中断。8、ELP:PC打入允许,与指令寄存器IR3、IR2位结合,控制程序跳转。9、FSTC:进位置1,CY=110、FCLC:进位置0,CY=011、MAREN:将地址总线ABUS上的地址打入地址寄存器MAR。12、MAROE:将地址寄存器MAR的值送到地址总线ABUS上。13、OUTEN:将数据总线DBUS上数据送到输出端口寄存器OUT里。14、STEN:将数据总线DBUS上数据存入堆栈寄存器ST中。15、RRD:读寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。16、RWR:写寄存器组R0-R3,寄存器R?的选择由指令的最低两位决定。17、CN:决定运算器是否带进位移位,CN=1带进位,CN=0不带进位。18、FEN:将标志位存入ALU内部的标志寄存器。19、WEN:将数据总线DBUS的值打入工作寄存器W中。20、AEN:将数据总线DBUS的值打入累加器A中。21-23:X2~X0:X2、X1、X0三位组合来译码选择将数据送到DBUS上的寄存器。24-26:S2~S0:S2、S1、S0三位组合决定ALU做何种运算。指令执行流程指令执行流程如表2所示:表2指令的执行流程编号指令指令功能操作码节拍数微操作控制信号18SUBCA,@R?从累加器A中减去寄存器R?的值,带进位010001XXT5R?→MARRRD,MAREN,T4EM→WEMEN,EMRD,WENT3A-W-cin→AAEN,S=10128ORA,#II累加器A“或”立即数II011011XXT5PC→MARPCOE,MARENT4EM→WPC→PC+1EMEN,EMRD,WENT3WORA→DBUS→AS2S0,AEN31MOVA,EM将存储器EM地址中的值送入A中011110XXT7PC→MARPC→PC+1PCOE,MARENT6EM→DBUS→WEMEN,EMRD,WENT5W→MARWARENT4EM→WEMEN,AEN,WENT3W→AAEN54RLA累加器A左移110101XXT4L→WWENT3W→AAEN以流程图表示如下:SUBCA@RORA#MOVAEML→WPC→MAREM→WL→WPC→MAREM→WPC→PC+1R?→MARW→MARW→AW→MARW→AEM→WPC→PC+1EM→WEM→AA-W-cin→EM→AA-W-cin→AWORA→DBUS→A图4指令的执行流程图【系统实现】1、模型机实现(主存地址寄存器MAR的实现)(1)逻辑电路的图形符号表示、功能主存地址寄存器MAR电路图形符号如图5所示:图5主存地址寄存器MAR电路图形符号表示主存地址寄存器MAR的功能如表3(其中cp作为时钟,pcoe,maren,pcadr,dadr是输入端,marout是输出端,pcoe=1表示将程序计数器PC地址输入到寄存器MAR中,maren=1表示将数据总线中的地址输入到寄存器MAR中,当pcoe=0,maren=0,寄存器输出0000):表3主存地址寄存器MAR的功能表输入端输出端PcoeMarenPcadrDadrMarout101010101001010101101010100010101010010101010000000001101010100101010101010101(2)指令所涉及的微操作控制信号PCOE:将程序计数器PC的值送到主存地址寄存器MAR上。MAREN:将数据总线DBUS的值送到主存地址寄存器MAR上。(3)系统实现libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;_LOGIC_UNSIGNED.ALL;----Uncommentthefollowinglibrarydeclarationifinstantiating----anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entitymar1isPort(cp:inSTD_LOGIC;pcoe:inSTD_LOGIC; maren:inSTD_LOGIC; pcadr:inSTD_LOGIC_VECTOR(7DOWNTO0); dadr:inSTD_LOGIC_VECTOR(7DOWNTO0); marout:outSTD_LOGIC_VECTOR(7DOWNTO0));endmar1;architectureBehavioralofmar1issignalmout:STD_LOGIC_VECTOR(7DOWNTO0);beginprocess(pcoe,maren,pcadr,dadr)isbeginif(pcoe='0'andmaren='0')thenmout<="00000000";elseif(pcoe='1')thenmout<=pcadr;elseif(maren='1')thenmout<=dadr;endif;endif;endif;endprocess;marout<=mout;endBehavioral;2.逻辑电路设计(只读存储器8×8ROM)(1)逻辑电路的图形符号表示、功能图6只读存储器的图形符号表示Oe_bar是只读存储器的读使能,address(2:0)是3位地址线,data_out(7:0)是8位数据输出线。Oe——bar是低电平有效,当oe是0,能读,是1,不能读。(2)指令所涉及的微操作控制信号表4ROM端口说明端口宽度方向说明Oe_bar1输入控制引脚Address(2:0)3输入从处理器来的地址data_out(7:0)8输出输出到ROM的地址信号表5只读存储器功能表控制信号输出端Oe_barAddressData_out0000100000110001101001010010110000100011010010010Other00000000(3)系统实现entityrom1isport(oe_bar:instd_logic; address:instd_logic_vector(2downto0); data_out:outstd_logic_vector(7downto0));endrom1;architectureBehavioralofrom1isbeginread:process(oe_bar,address)begin ifoe_bar='0'thencaseaddressis when"000"=>data_out<=x"83"; when"001"=>data_out<=x"a5"; when"010"=>data_out<=x"c2"; when"011"=>data_out<=x"49"; whenothers=>data_out<=x"00"; endcase;elsedata_out<=(others=>'Z');endif; endprocess;endBehavioral;【系统测试】(一)、模型机实现(主存地址寄存器MAR的实现)功能仿真仿真时用到的输入波形如图7所示:图7仿真时用到的输入波形图仿真得到的波形如图8所示:图8主存地址寄存器MAR仿真结果波形图结果分析:从图8中可以看出主存地址寄存器MAR的各个输入端的在每一时刻得到的输出都与表3主存地址寄存器的功能表中期待的输出一致,所以程序主存地址寄存器MAR的设计是正确的。2、RTL级逻辑电路主存地址寄存器MAR的RTL级电路图如图9所示:图9主存地址寄存器MARRTL级电路图(二)硬件测试(只读存储器8×8ROM)1、功能仿真只读存储器8*8ROM仿真用到的输入波形图如图10所示:图10只读存储器8*8ROM仿真用到的输入波形图仿真得到的结果波形如图11所示:图11仿真得到的结果波形图结果分析:对照得到的结果波形图与表5只读存储器的功能表显示的结果相同,所以设计是正确的2、RTL级逻辑电路只读存储器的RTL级逻辑电路如图12所示:图12只读存储器的RTL级逻辑电路图【总结】本次课设遇到很多问题,首先是软件的使用,由于是第一次接触软件,软件的好多功能和用法都不清楚,好多选项都不了解。不过经过查找资料以及问同学终于学会的熟练运用。接着是那个波形图的形成,好几次运行之后都是红线,显示错误,结果退出来再运行一次就正确了,也不知道怎么回事,还有一次是不知道怎么弄出波形图了,找了半天原因发现忘记在原程序再建立一个新的源。在做只读寄存器的时候一点想法都没有,不知道该怎么设计,然后就去图书馆去借书,查看,最后学会了只读寄存器的设计。【心得体会】课设的一开始,首先是学习软件的使用,去了解他的功能和用法,由于是新软件,好多功能都不了解,自己就去百度,看老师给的资料,同学讲解,终于学会了XilinxISEModelSim的基础的使用,能用他们做出RTL图和波形图。感觉还是很开心的。接着就到了最困难的时候,课程题目的设计,到了设计这里,又一个难点出现了,一个全新的语音VHDL。以前一点都没有了解过,这次是从零开始,去图书馆借阅书籍,去网上百度,了解了他的一些用法,发现一些语句的大概意思和自己学过的语言还有相似之处,发现c语言果然是基础,学会它再学其他语言就没有那么困难了。然后就进去到了正题,课程的设计,老师给的课题都是书本的知识,但是是书本知识的延伸和扩展。光靠看课本是不好做出来的,然后我就去图书馆借阅书籍,上网查看资料,使自己学到的知道更具体全面和深入。这次课设让我对主存地址寄存器有了更深入的认识和了解,对他的运行机制和线路有了认识。本次课设不仅考验了我们的自学能力以及对新知识、新事物的认识和学习,也锻炼了我们查阅资料和战胜困难的能力,对我们所学的课本的知识也有了加深和深入。通过本次课设,我学会了两个新的软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论