1、简单微处理器的设计摘要:本课程设计采用 EDA 技术设计简单微处理器。系统设计采用自顶向下的设计方法。它由数的输入,数的比较,数的交换和结果输出四部分组成。系统实现采用硬件描述语言 VHDL 把系统电路按模块化方式进行设计,然后进行编程、时序仿真并分析。系统结构简单,使用方便,功能齐全,精度高,具有一定的应用价值。关键词:处理器;输入;比较;交换目录1 引 言 .11.1 课题设计的背景、目的 .11.2 课程设计的内容 12 EDA、VHDL 简介 32.1 EDA 简介 .32.2 VHDL 简介 3VHDL 语言的特点 .3VHDL 的设计流程 .43 简单微处理器的设计过程 53.1
2、设计规划 .53.2 各模块设计及相应程序 .54 系统仿真 91.数的输入. 92 数的比较。 .93 交换两个数。 104 结果输出(从小到大). .10结束语 .11致 谢 12参考文献 .13附 录 14李江江 简单微处理器的设计 第 1 页 共 25 页 -1-1 引 言随着社会的发展,科学技术也在不断的进步。特别是计算机产业,可以说是日新月异,而处理器,作为计算机中的一个重要部分,其性能从很大程度上决定了计算机的性能。本设计介绍的简单微处理器,要求具有以下验证程序所要求的功能:输入包含10个整数(无符号数)的数组M,按从小到大的顺序输出这10个数。1.1课题设计的背景、目的微处理器
3、技术的发展是与微电子技术即大规模集成电路技术的发展分不开的。微电子技术以每 18 个月集成度提高一倍的速度迅速发展。20 世纪 80 年代初,主要是 16位微处理器 8086/8088。1985 年推出了 80386 微处理器,完成了 16 位体系结构向 32 位体系结构的转变。1989 年 80486 出现了。80486 的设计目标是提高指令执行速度和支持多处理器系统。80486 在芯片内部增加一个 8KB 的高速缓冲存储器(cache),还增加了相当于 80387 的浮点部件(FPU),在基本指令的实现上,采用硬布线逻辑而不是微程序技术。1993 年 3 月,Intel 公司推出了第一代“
4、 奔腾 ”微处理器(Pentium),微处理器技术发展进入了一个新的阶段。到目前为止, “奔腾”已有四代产品。 “奔腾”的设计思想是把如何提高微处理器内部指令执行的并行性作为主导。指令执行的并行性越好,微处理器的性能就越高。本次设计的目的就是了解并掌握 VHDL 硬件描述语言的设计方法和思想,通过学习的 VHDL 语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识,学习VHDL 基本单元电路的综合设计应用。通过对实用电子称的设计,巩固和综合运用所学课程,理论联系实际,提高 IC 设计能力,提高分析、解决计算机技术实际问题的独立工作能力。通过课程设计深入理解 VHDL 语言的精髓,达到课
5、程设计的目标。1.2 课程设计的内容本设计主要介绍的设计一台简单微处理器,要求具有以下验证程序所要求的功能:输入包含 10 个整数(无符号数)的数组 M,按从小到大的顺序输出这 10 个数。( 1 )程序开始及输入 10 个数据。( 2 )数的比较。李江江 简单微处理器的设计 第 2 页 共 25 页 -2-( 3 )交换两个数。( 4 )结果输出(从小到大) 。2 EDA、VHDL 简介2.1 EDA 简介EDA 是 Electronic Design Automation(电子设计自动化)的缩写,EDA 技术是 20 世纪 90年代初以来迅速发展起来的现代电子工程领域的一门新技术。它可以编
6、程逻辑器件(PLD)为载体,以计算机为工作平台,以 EDA 工具软件为开发环境,以硬件描述语言(HDL )作为电子系统功能描述方式,以电子系统设计为应用方向的电子产品自动化设计过程。2.2VHDL 简介VHDL 的英文全名是 Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于 1982 年。1987 年底,VHDL 被 IEEE 和美国国防部确认为标准硬件描述语言 。自 IEEE 公布了 VHDL 的标准版本,IEEE-1076(简称 87 版)之后,各 EDA 公司相继推出了自己的 VHDL 设计环境,或宣布
7、自己的设计工具可以和 VHDL 接口。此后VHDL 在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993 年,IEEE 对 VHDL 进行了修订,从更高的抽象层次和系统描述能力上扩展 VHDL 的内容,公布了新版本的 VHDL,即 IEEE 标准的 1076-1993 版本, (简称 93 版) 。现在,VHDL 和 Verilog 作为 IEEE 的工业标准硬件描述语言,又得到众多 EDA 公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL 于 Verilog 语言将承担起大部分的数字系统设计任务。2.3VHDL 语言的
8、特点VHDL 的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是 VHDL 系统设计的基本点。应用 VHDL 进行工程设计的优点是多方面的。李江江 简单微处理器的设计 第 3 页 共 25 页 -3-(1)与其他的硬件描述语言相比,VHDL 具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器
9、件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL 丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL 语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用 VHDL 完成的一个确定的设计,可以利用 EDA 工具进行逻辑综合和优化,并自动的把 VHDL 描述设计转变成门级网表。(5)VHDL 对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件
10、是什么,而进行独立的设计。2.4VHDL 的设计流程它主要包括以下几个步骤:1.设计规范的定义这个有点象系统的设计的总体规划,就是要明确这个系统有哪些设计要求,和你要想到达的目标。2.采用 VHDL 进行设计描述这部分包括设计规划和程序的编写。设计规划主要包括设计方式的选择及是否进行模块划分。设计方式一般包括直接设计,自顶向下和自底向下设计,这个和其他软件语言差不多。最重要还是模块划分,这个和设计者的设计水平有很大关系。 完成规划设计后,就可以编写个模块的 VHDL 程序了,最后将各模块的 VHDL 程序综合起来就完成了整个设计的 VHDL 描述.3.VHDL 程序仿真这个过程和其他软件语言没
11、什么区别。4.综合、优化和布局布线综合指的是将设计描述转化成底层电路的表示形式,其结果是一个网表或者是一组逻辑方程;优化,这个主要是为了提高程序的执行效率及减少资源的利用;布局布线,指的是将逻辑关系转化成电路连接的方式。5.后仿真。李江江 简单微处理器的设计 第 4 页 共 25 页 -4-这个与 VHDL 程序仿真不同,这个不仅是对逻辑方面的验证,还要进行时序功能验证。6.器件编程3 简单微处理器的设计过程3.1 设计规划计算器通过简单的数字键盘输入操作数,其中所键入的数据将被暂存在移位寄存器中,然后根据运算符执行产生不同的操作结果,所获得的运算结果再通过译码电路转移到七段显示器输出。整个微
12、处理器的工作原理图如图 3.11 所示。图 3.1 微处理器的工作原理图3.2 各模块设计及相应程序本系统设计了 10 条指令:IN1(输入到目的寄存器),MOV(将一个数送入目的寄存器),MOV1(将源寄存器中的数据存储到目的寄存器所指向的地址单元),MOV2(将源寄存器所指向的地址单元中的数送入目的寄存器), OUT1(输出),CMP(将目的寄存器和源寄存器所指向的地址单元中的数据进行比较),DEC(将目的寄存器中的数据自减一),INC(将目的寄存器中的数据自加一),JMP(无条件跳转),JB(小于跳转),下表列出了每条指令的格式、汇编符号和指令功能。李江江 简单微处理器的设计 第 5 页
13、 共 25 页 -5-表 3.2 指令系统格式表助记符号 指令格式 功 能IN1 Rd 1 0 0 0 Rd (SW)-RdMOV im Rd 1 0 0 1 Rdim(im)RdMOV1 Rs Rd 1 0 1 0 Rs Rd (Rs)-RdMOV2 Rs Rd 1 0 1 1 Rs Rd (Rs)RdOUT1 Rd 1 1 0 0 Rs (Rs)LEDCMP Rs Rd 1 1 0 1 Rs Rd (Rs)-(Rd),锁存 CY 和 ZIDEC Rd 1 1 1 0 Rd (Rd)-1RdINC Rd 1 1 1 1 Rd (Rd)+1RdJMP addr0 1 1 0 addraddr-
14、PCJB addr0 1 1 1 addr若小于,则 addr-PC关键程序数的选择模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX5 ISPORT(R0_B,R1_B,R2_B,R3_B,ALU_B:IN STD_LOGIC;R0_IN,R1_IN,R2_IN,R3_IN,ALU_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MUX5OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX5;ARCHITECTURE A OF MUX5 ISBEGINPROCESS(ALU_B,
15、R3_B,R2_B,R1_B,R0_B)BEGIN李江江 简单微处理器的设计 第 6 页 共 25 页 -6-IF(ALU_B=1 AND R3_B=1 AND R2_B=1 AND R1_B=1 AND R0_B=0) THENMUX5OUTR2 则跳转到交换,否则顺序执行。李江江 简单微处理器的设计 第 9 页 共 25 页 -9-图 4.2 数的比较4.3 交换两个数。如图 4.3,由于 R3 种的数 25 大于 R2 中的数 15,则进行交换。使 R2 每次存入最大的值后,R3 继续读入 R1 地址的值继续进行比较。图 4.3 交换两个数4.4 结果输出图 4.4 中的 R0 控制循环
16、, R1 与用自增, R2 用于输出寄存器.结果从 QD 输出。图中刚好从最小的数 06 开始输出。李江江 简单微处理器的设计 第 10 页 共 25 页 -10-图 4.4 结果输出李江江 简单微处理器的设计 第 11 页 共 25 页 -11-结束语我在老师的细心指导和同学们的耐心帮助之下成功完成了本次实验,并能得到预期的实验结果。在这段时间内,我努力学习了计算机系统结构,VHDL 等相关的各项知识,也查阅不少资料,并能够将课堂上所学的知识运用于实际的设计中,能够很好的进行理论联系实际进行开发。通过解决这次设计和设计中遇到的问题,也积累了一定的经验。对以后从事集成电路设计工作会有一定的帮助
17、。在应用 VHDL 的过程中让我真正领会到了其并行运行与其他软件(C 语言)顺序执行的差别及其在电路设计上的优越性。李江江 简单微处理器的设计 第 12 页 共 25 页 -12-致 谢本课程设计在选题和设计过程中得到了肖晓丽老师的悉心指导,肖老师多次询问课程设计进程,并多次指导我对课程设计进行修改,帮助我完善了该课程设计。在此对肖老师表示衷心的感谢。还要感谢寝室的同学们,谢谢你们对我技术和精神上的帮助,谢谢你们。李江江 简单微处理器的设计 第 13 页 共 25 页 -13-参考文献1 黄仁欣.EDA 技术实用教程.北京:清华大学出版社,20062 黄志鹏,付丽琴.可编程逻辑器件开发技术 M
18、AX+pius.北京:国防工业出版社,20053潘松.VHDL 实用教程M.成都:电子科技大学出版社,20004 谭会生.EDA 技术基础.长沙:湖南大学出版社,20045 杨刚,龙海燕.现代电子技术VHDL 与数字系统设计.北京.电子工业出版社,2004 李江江 简单微处理器的设计 第 14 页 共 25 页 -14-附 录程序清单:1 ALU 子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU ISPORT(AC
19、, DR: IN STD_LOGIC_VECTOR(7 DOWNTO 0);S1, S0: IN STD_LOGIC;BCDOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);CY,ZI: OUT STD_LOGIC);END ALU;ARCHITECTURE A OF ALU ISSIGNAL AA,BB,TEMP: STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINPROCESS(S1,S0) BEGINIF(S1=0 AND S0=0) THENBCDOUT PCELSEQOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOU
20、T ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMOUT ROMO
21、UT ROMOUT ROMOUT NULL;END CASE;END IF;END PROCESS;END A;6.RAM 子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY RAM ISPORT(WR,CS:IN STD_LOGIC;DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ADDR:IN STD_LOGIC_VEC
22、TOR(7 DOWNTO 0);END RAMARCHITECTURE A OF RAM ISTYPE MEMORY IS ARRAY(0 TO 31) OF STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(CS,WR)VARIABLE MEM: MEMORY;BEGIN李江江 简单微处理器的设计 第 22 页 共 25 页 -22-IF (CS=0) THEN IF (WR=0) THENMEM(CONV_INTEGER(ADDR(4 DOWNTO 0):=DIN;ELSIF(WR=1) THENDOUT = MEM(CONV_INTEGER(ADDR(4
23、 DOWNTO 0);END IF;END IF;END PROCESS;END A;7 选择对 ROM 或者 RAM 进行操作的二选一选择器子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX2_2 ISPORT(R_R:IN STD_LOGIC;ROM_IN,RAM_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MUX2_2OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX2_2;ARCHITECTURE A OF MUX2_2 ISBEGINPROCESS(R_R,ROM
24、_IN,RAM_IN)BEGINIF(R_R=0)THENMUX2_2OUT=ROM_IN;ELSEMUX2_2OUT=RAM_IN;END IF;END PROCESS;END A;李江江 简单微处理器的设计 第 23 页 共 25 页 -23-8.五选一选择器子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX5 ISPORT(R0_B,R1_B,R2_B,R3_B,ALU_B:IN STD_LOGIC;R0_IN,R1_IN,R2_IN,R3_IN,ALU_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MUX
25、5OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END MUX5;ARCHITECTURE A OF MUX5 ISBEGINPROCESS(ALU_B,R3_B,R2_B,R1_B,R0_B)BEGINIF(ALU_B=1 AND R3_B=1 AND R2_B=1 AND R1_B=1 AND R0_B=0) THENMUX5OUT=R0_IN;ELSIF(ALU_B=1 AND R3_B=1 AND R2_B=1 AND R1_B=0 AND R0_B=1) THENMUX5OUT=R1_IN;ELSIF(ALU_B=1 AND R3_B=1 AND R2_B
26、=0 AND R1_B=1 AND R0_B=1) THENMUX5OUT=R2_IN;ELSIF(ALU_B=1 AND R3_B=0 AND R2_B=1 AND R1_B=1 AND R0_B=1) THENMUX5OUT=R3_IN;ELSIF(ALU_B=0 AND R3_B=1 AND R2_B=1 AND R1_B=1 AND R0_B=1) THENMUX5OUT=ALU_IN;ELSE MUX5OUT=ALU_IN;END IF;END PROCESS;END A;9.一分二分配器子模块源程序LIBRARY IEEE;李江江 简单微处理器的设计 第 24 页 共 25 页 -
27、24-USE IEEE.STD_LOGIC_1164.ALL;ENTITY FEN2 ISPORT(MUX5_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);LED_B,WR: IN STD_LOGIC;OUT_MUX3,OUT_PUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END FEN2;ARCHITECTURE A OF FEN2 ISBEGINPROCESS(LED_B)BEGINIF(LED_B=0 AND WR=0) THEN OUT_PUT=MUX5_IN;OUT_MUX3=“00000000“;ELSE OUT_MUX3=MUX
28、5_IN; END IF;END PROCESS;END A;10.三选一选择器子模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY MUX3 ISPORT(SW_B,CS:IN STD_LOGIC;FEN2_IN,MUX2_2IN,SW_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MUX3OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)李江江 简单微处理器的设计 第 25 页 共 25 页 -25-);END MUX3;ARCHITECTURE A OF MUX3 ISBEGINPROCESS(SW_B,CS)BEGINIF(SW_B=0 AND CS=1) THENMUX3OUT=SW_IN;ELSIF(SW_B=1 AND CS=0) THENMUX3OUT=MUX2_2IN;ELSIF(SW_B=0 AND CS=0) THENMUX3OUT=FEN2_IN;ELSEMUX3OUT=“11101110“;END IF;END PROCESS;END A;