1、课程设计题目16位简易 CPU设计姓名学号班级班级专业指导教师李骊课程设计目的1 利用已知的计算机组成原理知识,以及对计算机系统结构的初步学习,设计一个包括指指令系统、运算器、控制器和寄存器组的简易16位cpu 。2 熟练掌握vhdl硬件描述语言,对cpu的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完成的cpu 体系结构。3 学会利用先进的硬件设计工具软件Quartus II 对程序进行仿真和调试。课程设计环境Quartus 5.0 软件课程设计任务和要求编写源程序并对程序进行仿真。课程设计工作进度计划序号起止日期工 作 内 容08年5月25日5月28日翻阅书籍查找相关的程序
2、5月29日6月5日编写程序6月6日6月10日调试程序6月11日6月15日对程序进行仿真,得出仿真结果课程设计内容描述: 16位简易 CPU的设计一、设计目的:1 利用已知的计算机组成原理知识,以及对计算机系统结构的初步学习,设计一个包括指指令系统、运算器、控制器和寄存器组的简易16位cpu 。2 熟练掌握vhdl硬件描述语言,对cpu的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完成的cpu 体系结构。3 学会利用先进的硬件设计工具软件Quartus II 对程序进行仿真和调试。二、设计方案:设计总体试验cpu 由5部分组成:取指部分insru_etch、指令译码部分decod
3、er_unit、执行部分exe _unit、存储部分memory_unit和通用寄存器组fegfile。运用vhdl硬件描述语言在硬件设计工具软件Quartus II环境下进行设计编写,然后使用程序包exe_cpu_components将各个部分作为设计实体使用。最后将各部分组合连接为顶层文件exe_cpu。三、指令系统设计cpu首先要设计指令系统。由于实验cpu采用16位字长,指令系统只有15条指令,所以16位系统比8位简单的多。故本设计采用16位cpu设计方案。1. 指令系统的格式ADD DR,SR指令编码:0000 DR SR0000 0111 功能:DR DR +SR ,影响C和 Z标
4、志。 PC PC+1。 INC DR指令编码:0001 DR SR0000 0111 功能:DR DR +1 ,影响C和 Z标志。 PC PC+1。SUB DR,SR指令编码:0010 DR SR0000 0111 功能:DR DR - SR ,影响C和 Z标志。 PC PC+1。DEC DR指令编码:0011 DR SR0000 0111 功能:DR DR- 1 ,影响C和 Z标志。 PC PC+1。AND DR,SR指令编码:0100 DR SR0000 0011 功能:DR DR and SR ,影响Z标志。 PC PC+1。OR DR,SR指令编码:0101 DR SR0000 001
5、1 功能:DR DR and SR ,影响Z标志。 PC PC+1。NOT DR 指令编码:0110 DR SR0000 0011 功能:DR not DR,影响Z标志。 PC PC+1。MOV DR,SR指令编码:0111 DR SR0000 0001 功能:DR SR ,不影响C和 Z标志。 PC PC+1。JMP ADR指令编码:1000 00000000 0000 ADR 功能:PCADRJNC ADR指令编码:1001 0000ADR 1 功能:如果C=0,则PCADR;如果C=1,则PCPC+1;JNZ ADR指令编码:1010 0000ADR 1 功能:如果Z=0,则PCADR;
6、如果Z=1,则PCPC+1;MVRD DR,DATA指令编码:1100 00000000 0000 DATA 功能:DRDATA。PCPC+2。LDR DR,SR指令编码:1101 DR SR0000 0001 功能:DRSR 。PCPC+1。STR SR,DR指令编码:1110 DR SR0000 0000 功能:DRSR 。PCPC+1。NOP指令编码:1111 00000000 0001 功能: PCPC+1。指令系统设计说明: 本设计使用的指令系统基本满功能上的需求,除了PUSH、POP、CALL、和RET等少数指令没有包括外,基本上是齐全的。包括了运算指令、转移指令和储存指令三类,。
7、编码说明 R15 R14 R13 R12 R11 R10 R9 R8 R7 R6 R5 R4 R3 R2 R1 R0 IR15 为0 时运算指令IR15、 IR14 为10时为转移指令;IR15、 IR14 为11时为储存指令;算数逻辑指令的IR14IR12 对应运算器ALU的三位运算操作码。当IR0 =1时,本指令中有对DR的写操作。当IR1 =1时,本指令影响标志为C。当IR2=1时,本指令影响标志为Z。五、各模块设计及功能介绍1.寄存器模块在本程序设计中,通用寄存器组内包含4个16位寄存器。这是一个具有1个写入端口、2个读出端口的通用寄存器组。写入端口将指令执行后得到得目的寄存器的值在t
8、3得下降沿写入目的寄存器中。只有具有些目的寄存器功能的指令执行结束时才写目的寄存器。有些指令,如JMP指令等执行结束后不会改变通用寄存器组的值。通用寄存器组的两个读出端口,一个是目的寄存器读出端口,一个是源寄存器读出端口,从这两个端口读出的内容供执行部分exe_unit和存储器部分memory_unit使用。通用寄存器组内还有两个标志位:z_out和c_out,在t3的下降沿根据指令执行的结果改变或者不改变它们的值。这两个标志位的值送执行部分exe_unit使用。 寄存器模块芯片图 寄存器模块2. 取指令部分在本程序设计中,取指部分完成4项工作:产生时钟信号t1、t2和t3,供CPU各部分使用
9、;在复位信号reset为低时将pc复位为0,在一条指令执行结束之后,根据指令执行的结果在t3的下降沿改变pc的值;将从存储器读出的指令的第一个字在t2的上升沿送至指令寄存器IR中;计算pc+1的值pc_inc,为双字指令取第二个指令字做准备 取指令部分3. 指令译码部分 在本程序设计中,指令译码部分的功能是:根据指令寄存器IR的值产生实验CPU所需要的各种控制信号和其它信号,其信号作用如下: SR:源寄存器号(编址)。 DR:目的寄存器号(编址)。 op_code: 控制ALU进行种运算操作的位编码。 zj_instruct:为表示本条指令是条“JNZ ADR”指令。 cj_instruct:
10、为表示本条指令是条“JNC ADR”指令。 lj_instruct:为表示本条指令是条“JMP ADR”指令。 DRWr:为表示在的下降沿将本条指令的执行结果写入目的寄存器。 Mem_Write:为表示本条指令有存储器写操作,存储器的地址是源寄存器的内容。 DW_intruct:为表示本条指令是双字指令。 change_z:为表示本条指令可能改变(结果为)标志。 change_c:为表示本条指令可能改变(进位)标志。 sel_memdata:为表示本条指令写入目的寄存器的值来自读存储器。 r_sjmp_addr:计算条件转移指令转移地址所需要的位相对地址。它是由条件转移指令中的 位相对地址经过
11、符号扩展生成的。 指令译码部分4. 存储模块存储模块是cpu与外部存取器的接口部分。向外部的存储器送出16为存储地址总线Mem_addr、16为双向数据总线ob、读写信号wr。当wr 为1时,外部存储器作为读存储器信号处理;当wr信号为0时,外部存储器作为写存储器信号处理。 存储模块5. 执行部分执行部分完成下列任务:(1)8种逻辑运算:加、加1、减、减1、与、或、非和数据传送,将运算结果存放在result中。根据运算结果产生位标志。(2)产生存储器读写所需要的存储器地址Mem_ADDR.(3)产生条件转移指令所需要的转移标志。 执行部分的河西传统上属于运算器,是运算器的核心。 执行部分六、1
12、6位简易cpu设计总体框图七、实验仿真示例总结:1设计成果:(1) 初步实现了简易cpu的各个功能模块。实现了个个模块的连接组合。(2) 通过实践设计更加深入的了解了计算机组成原理的相关知识。真正的做到了通过实践加深知识的掌握和学习。(3) 通过设计过程,较熟练的掌握了vhdl硬件描述语言,对cpu的各个功能模块进行代码编写,并学会将各个功能部分组织连接成一个完成的cpu 体系结构。2、 小结: 此次课程设计我小组同学齐心合力认真完成了自己的设计部分,初步体显了合作的设计方法和思路。大家同时获得了收益,加强了对知识的掌握。但是由于此次设计是基于开放式cpu设计教材的,所以有很多地方还欠缺深入理
13、解,并且由于设计指导是基于原教材实验箱进行的所以缺少cpu的存储部分,所以我小组同学决定在下一步设计中自行设计添加相应的ram模块,实现cpu的完善。 在此次的课程设计中我郑重向老师表示感谢,正是由于老师的推荐和指导,我小组同学才能接触到这个cpu设计课题,也正是老师的指导和提供的辅导材料才使得我们的设计可以正常进行,克服突破了其中遇到的技术和知识难点。这种开放式课程设计的模式不仅给我们提供了更广阔的选择模式,还给我们提供了挑战自我的机会。3、参考文献 VHDL实用教程 电子科技大学出版社EDA 实用技术 人民邮电出版社 开放式实验cpu设计 清华大学出版社成绩评定项 目权重成绩1、设计过程中学习态度等方面0.12、课程设计质量与答辩0.53、设计报告书写规范程度0.24、平时成绩(含考勤)0.2总 成 绩
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100