EDA课程设计简易cpu设计_第1页
EDA课程设计简易cpu设计_第2页
EDA课程设计简易cpu设计_第3页
EDA课程设计简易cpu设计_第4页
EDA课程设计简易cpu设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

PAGEII EDA技术课程设计任务书班级:姓名:学号:设计题目:简易CPU系统一、设计目的进一步巩固理论知识,培养所学理论知识在实际中的应用能力;掌握EDA设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养VHDL编程、书写技术报告的能力。为以后进行工程实际问题的研究打下设计基础。二、设计任务用VHDL设计一个4位CPU。要求具备CPU的基本组成:运算器、控制器和寄存器;可以实现两个操作数的五种基本算术运算:加法运算、带进位的加法运算、减法运算、带借位的减法运算和乘法运算;四种逻辑运算:与运算、或运算、非运算、异或运算;以及程序跳转的功能。对设计电路进行波形仿真、定时分析,下载电路实现CPU的预定功能,同时给出设计电路占用芯片资源的基本情况。三、设计要求(1)通过对相应文献的收集、分析以及总结,给出相应课题的背景、意义及现状研究分析。(2)通过课题设计,掌握计算机组成原理的分析方法和设计方法。(3)学习按要求编写课程设计报告书,能正确阐述设计和实验结果。(4)学生应抱着严谨认真的态度积极认真查阅相应文献以及实现,给出分析、设计。四、设计时间安排查找相关资料(1天)、设计并绘制系统原理图(2天)、编写VHDL程序(2天)、调试(2天)、编写设计报告(2天)和答辩(1天)。五、主要参考文献[1]江国强编著.EDA技术与实用(第三版).北京:电子工业出版社,2011.[2]曹昕燕,周凤臣.EDA技术实验与课程设计.北京:清华大学出版社,2006.5[3]阎石主编.数字电子技术基础.北京:高等教育出版社,2003.指导教师签字:年月日农业工程学院课程设计说明书简易cup系统摘要EDA(electronicdesignautomation)技术是现代电子工程领域的一门新兴的电子设计技术。它大大缩短了集成电路的设计周期,提高了生产效率。VHDL(VeryHighSpeedIntegratedCircuit(VHSIC)HardwareDescriptionLanguage)作为IEEE标准所规范的硬件描述语言,目前正在电子系统设计领域获得广泛应用。QuartusII是Altera公司最新推出的EDA开发工具。QuartusII支持VHDL和Verilog硬件描述语言(HDL)的设计输入、基于图形的设计输入方式。QuartusII软件可以将设计、综合、布局和布线以及系统验证全部都整合到一个无缝的环境中。本论文主要研究的是借助Altera公司的QuartusII4.0软件开发工具,采用VHDL硬件描述语言作为输入方式,采用分层次,分模块的设计方法,对CPU的各个模块进行了描述,综合和仿真。该4位微处理器取代了手工插线的实验方法,采用EDA技术设计并在实验台上对设计进行了验证,并最终将处理器下载到实验台上,为硬件教学实验改革提供了一个新的尝试。在各个功能模块的实现中主要使用了自顶向上的设计方法。先实现寄存器,再实现寄存器组,最后将各个器件和模块之间互连,得到顶层设计图。关键词:4位微处理器;QuartusII;VHDL;CPU系统

目录16201第一章绪论 1320§1.1概述 122505§1.2设计目的和意义 116562§1.3系统的开发环境 214516§1.3.1EDA技术简介 23977§1.3.2VHDL语言简介 33244§1.3.3QUARTUSII简介 45581第二章总体设计 610369§2.1微处理器技术 65903§2.2CPU的结构 61175§2.2.1算术逻辑单元ALU 618646§2.2.2寄存器组RS 627718§2.2.3控制单元 711611§2.2.4总线 713341§2.3指令系统的设计 77496§2.4数据通路的设计 95926§2.5微命令设计 916472第三章微处理器各个模块的设计与实现 107051§3.1指令寄存器IR的设计 1029704§3.2程序计数器PC的设计 128449§3.3算术逻辑单元ALU模块的设计 1322712§3.4内存储器RAM模块的设计 144065§3.5控制器SEQUENCER模块的设计 1516619第四章设计结论 225608参考文献 23PAGE26第一章绪论§1.1概述EDA是电子设计自动化(ElectronicDesignAutomation)缩写,是90年代初从CAD(计算机辅助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和CAE(计算机辅助工程)的概念发展而来的。EDA技术是以计算机为工具,根据硬件描述语言HDL(HardwareDescriptionlanguage)完成的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯片的适配编译和编程下载等工作。硬件描述语言HDL是相对于一般的计算机软件语言。HDL语言使用与设计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用HDL程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器将此程序编程能控制FPGA和CPLD内部结构,并实现相应逻辑功能的门级或更底层的结构网表文件或下载文件。目前,就FPGA/CPLD开发来说,比较常用和流行的HDL主要有ABEL-HDL、AHDL、Verilog和VHDL。VHDL语言是美国国防部在1981年提出的,并于1987年成为IEEE1076标准。VHDL语言成为世界标准后,很快在世界各地得到了广泛的应用,这为电子设计自动化的普及和推广奠定了坚实的基础。1995年中国国家技术监督局制定的《CAD通用技术规范》推荐使用VHDL语言作为我国电子设计自动化硬件描述语言的国家标准。§1.2设计目的和意义当前是知识经济时代,更是知识爆炸的时代。特别是信息技术产业,更是日新月异。而相比之下,教学实验的改革则显得相形见绌,许多学习内容都大大落后于时代的要求,教学实验对于培养学生的动手能力、实践能力有着非常重要的作用,但教学实验大大滞后于实际中应用的技术也进一个不争的事实。特是别是在计算机科学与技术方面,新技术层出不穷,更要求计算机教学实验与时俱进。为了提高学生的实践能力,提高学生的动手能力,计算机组成原理教学改革势在必行。本次设计的内容就是要利用EDA开发工具,设计一个新的组成原理实验,来取代现行的组成原理实验。使进一步巩固理论知识,培养所学理论知识在实际中的应用能力;掌握EDA设计的一般方法;熟悉一种EDA软件,掌握一般EDA系统的调试方法;利用EDA软件设计一个电子技术综合问题,培养VHDL编程、书写技术报告的能力。为以后进行工程实际问题的研究打下设计基础。§1.3系统的开发环境§1.3.1EDA技术简介EDA(ElectronicsDesignAutomation)即电子设计自动化。EDA技术是一种以计算机为基本工作平台,利用计算机图形学,拓扑逻辑学,计算数学以及人工智能学等多种计算机应用学科的最新成果而开发的技术,是一种帮助电子设计工程师从事电子元件产品和系统设计的综合技术。本次毕业设计的FPGA平台也是EDA电子设计自动化的一种。§1.3.2VHDL语言简介VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage。自IEEE公布了VHDL的标准之后,各EDA开发公司相继推出了自己的EDA设计环境,或宣布自己的设计工具可以和EDA接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准硬件描述语言。1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本。现在VHDL和Verilog作为IEEE的工业标准硬件描述,描述以得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机程序设计语言。VHDL的程序结构特点是将一项工程设计为实体(可以是一个元件,一个电路模块或一个系统),分成外部(或称可视部分)和内部(或称不可视部分)。在一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个模块。这种将实体设计分成为内外部分是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的:(1)VHDL语言功能强大,设计方式多样。(2)VHDL语言具有强大的硬件描述能力。(3)VHDL语言具有很强的移植性。(4)VHDL语言的设计描述与具体的器件无关。(5)VHDL语言易于实现IP设计的共享和复用。§1.3.3QUARTUSII简介QuartusII软件支持VHDL和Verilog的设计输入、基于图形的设计输入方式以及集成的系统级设计工具。QuartusII软件可以将设计、综合、布局、布线以及系统验证全部都整合到一个无缝的环境中,其中还包括第三方EDA工具的借口。QuartusII的主要设计特性如下:1.基于模块的设计方法提高工作效率。2.更快集成IP。3.在设计的早期对I/O引脚进行分配和验证。4.存储器编译器使存储器的设计更为高效。5.支持CPLD、FPGA和基于HardCopy的ASIC。6.使用全新的命令行和脚本功能自动化设计流程。7.高级教程帮助深入了解QuartusII的功能特性。

第二章总体设计§2.1微处理器技术中央处理器(CPU)是驱动计算机技术和产业发展的火车头,CPU和操作系统的配合又组成了计算机系统的平台。中国是一个信息化大国,但不是一个信息化强国。中国在信息技术的基础方面还很薄弱,其中发展和加强CPU的设计和制造技术是信息技术和科技界与教育界的一项重要任务。当然CPU设计本身是很复杂的,目前先进的CPU芯片上的晶体管数已经达到数亿个;先进的CPU还有很多复杂技术,如多发射,乱序执行,多线程,向量与标量部件的混合以及多样的执行预测技术等;现在的CPU还在向多核心芯片发展。芯片上具有10亿个晶体管的CPU已经离我们不远。此外,CPU的自检测设计技术也很复杂,高级CPU套片(CHIPSET)的复杂程度一点也不亚于CPU中央处理器简称CPU(CentralProcessingUnit),它是计算机系统的核心,主要包括运算器和控制器两个部件。§2.2CPU的结构§2.2.1算术逻辑单元ALUALU是运算器的核心。它是以全加器为基础,辅之以移位寄存器及相应控制逻辑组合而成的电路,在控制信号的作用下可完成加、减、乘、除四则运算和各种逻辑运算。就像刚才提到的,这里就相当于工厂中的生产线,负责运算数据。§2.2.2寄存器组RSRS实质上是CPU中暂时存放数据的地方,里面保存着那些等待处理的数据,或已经处理过的数据,CPU访问寄存器所用的时间要比访问内存的时间短。采用寄存器,可以减少CPU访问内存的次数,从而提高了CPU的工作速度。但因为受到芯片面积和集成度所限,寄存器组的容量不可能很大。寄存器组可分为专用寄存器和通用寄存器。专用寄存器的作用是固定的,分别寄存相应的数据。而通用寄存器用途广泛并可由程序员规定其用途。通用寄存器的数目因微处理器而异。§2.2.3控制单元正如工厂的物流分配部门,控制单元是整个CPU的指挥控制中心,由指令寄存器IR(InstructionRegister)、指令译码器ID(InstructionDecoder)和操作控制器0C(OperationController)三个部件组成,对协调整个电脑有序工作极为重要。它根据用户预先编好的程序,依次从存储器中取出各条指令,放在指令寄存器IR中,通过指令译码(分析)确定应该进行什么操作,然后通过操作控制器OC,按确定的时序,向相应的部件发出微操作控制信号。操作控制器OC中主要包括节拍脉冲发生器、控制矩阵、时钟脉冲发生器、复位电路和启停电路等控制逻辑。§2.2.4总线就像工厂中各部位之间的联系渠道,总线实际上是一组导线,是各种公共信号线的集合,用于作为电脑中所有各组成部分传输信息共同使用的“公路”。直接和CPU相连的总线可称为局部总线。其中包括:数据总线DB(DataBus)、地址总线AB(AddressBus)、控制总线CB(ControlBus)。其中,数据总线用来传输数据信息;地址总线用于传送CPU发出的地址信息;控制总线用来传送控制信号、时序信号和状态信息等。§2.3指令系统的设计计算机的操作基本上可归结为信息传送。所以在逻辑结构上,关键在于如何实现数据信息的传送,即数据的通路结构。在现代计算机中,普遍采用总线结构。总线是一组能为多个部件共享的公共信息传送通路,可以分时的接收与发送各个部件的信息。总线可以分为4种:(1)CPU内部总线。(2)部件内总线。(3)系统总线。(4)外总线。在本毕业设计中,也采用了总线结构。计算机的基本功能是进行各种运算,包括算术运算与逻辑运算。计算机的工作,基本上体现为执行指令,一台计算机所能执行的全部指令,称为该机的系统或称为指令集合。指令系统是程序员编制程序的基础,虽然现在已经广泛应用各种程序设计编程,但需要通过解释或编译转换为机器可以识别与执行的指令序列。指令系统表明一台计算机具有哪些功能,因而在很大程度上决定着如何使用计算机。CPU的基本任务是解释执行指令代码,所以指令系统又在很大程度上决定着计算机如何工作,它是硬件逻辑设计的基础,与CPU的总体结构及整机设计思想密切相关。指令系统是CPU的硬件与软件的分界面,是设计和利用CPU的出发点。本处理器字长为4位。指令系统如下:Load指令:用来将数据从内存中读到CPU的寄存器中。Add指令:做一次加法运算。Sub指令:做一次减法运算。Store指令:存储指令,将数据存入RAM中。Jmp指令:无条件转移指令。Load_far指令:将内存中的数据读入到CPU中。由于本处理是用来做组成原理实验的,在实现上与原来的实验保持了基本的一致。并且增加了一种寻址方式。对于CPU指令的设计来讲,主要考虑的指令的字长,地址结构与寻址方式。由于受处理器字长的限制,设计的指令为固定的字长,并且每条指令占用两个字,第一个机器字为操作码(OPCODE),后一个指令字为操作数(OPRAND)。微处理器的总体结构与数据通路如图所示:图2-1处理器的数据通路结构§2.4数据通路的设计在上几节中,给出了微处理器的通路结构和模块的划分,在数据通路结构确定之后,下面将给出它们之间通过总线传送的路径。指令的执行基本上可以归结为信息的传送,即控制流和数据流两大信息流。控制流表现为指令信息的传送,及由此产生微命令序列。指令信息与数据信息读取,以依赖于地址信息。弄清各类信息的传送路径,有助于从逻辑结构的角度了解指令是如何执行的,以及需要为此发出那些微命令。(1)指令信息的传送:RAM系统总线IR(2)地址信息传送:PC系统总线MARADDR系统总线MARRAMMDR系统总线ADDREG(3)数据信息传送:RAMMDR系统总线ACCACC+MDRACCACC-MDRACCACC数据总线MDRRAM§2.5微命令设计在全面分析了各类信息的传送路径以后,对指令如何执行就有了进一步的了解,并为时序的安排和相应的微命令的设置打下了基础。在本微处理器的设计中,设置了以下微命令:微处理器的控制信号:ACC_bus用ACC的内容驱动总线,三态输出Load_ACC将总线上的数据放入ACC中PC_bus用PC的内容驱动总线Load_IR将总线内容装入IRLoad_MAR将总线内容装入MARMDR_bus用MDR的内容驱动总线Load_MDR将总线上的数据装入MDRALU_ACC将ALU的结果送ACCINC_PCPC+1->PCAddr_bus用ADDREG的内容来驱动总线Load_Addr用总线的内容来装载ADDREGCS片选,用MAR设置存储器地址R_NW读取,不可写ALU_add做加法运算ALU_sub做减法运算在确定了微指令和数据的传送路径之后,就可以根据指令的功能需要选择上述微命令中的有关部分,形成微操作命令序列,实现指令功能。

第三章微处理器各个模块的设计与实现§3.1指令寄存器IR的设计IR是用来保存从内存中取来的指令,IR基本上是一个带有使能控制端的寄存器,在时钟的上升沿对输入的数据进行锁存。总线连接到IR的输入端,其输出连到控制器输入端。对于总线数据,使用IEEE的库来进行描述。具体名称为IEEE.STD_LOIC_1164.ALL,可以用它来定义位或位向量。由以上的介绍,给出了接口信号与描述的方法,也就不难用VHDL语言来实现。在QuartusII4.0中可以新建一个工程,名字为IR,新建一个VHDL文件名字也为IR,在其中用VHDL来描述该寄存器。在QuartusII4.0

中,它支持层次化的设计。在编译并综合后,综合后得到其RTL视图。图3-1RTL视图图3-2IR的波形文件§3.2程序计数器PC的设计程序计数器是一个有复位端的、可以装入计数初值的通用计数器。由于机器的字长为4位,因而它的计数范围从0到15。也就是说它的寻址能力只有16个单元。因而存储器的大小为16个机器字。当然,这样做的最大的优点是可以简化设计,缺点是在很多地方要受寻址能力和存储能力的约束。改进的方向是增加指令字长,比如8位,16位,32位等和改进处理器的体系结构。VHDL语言来描述电路,必须要包含相应的库文件。本模块的设计中除了包含最基本的ieee.std_logic库外,还必须包含ieee.numeric_std和ieee.unsigned库。在这两个库中定义了无符号数的加法。调用这两个库以实现PC<-PC+1的运算。图3-3程序计数器的设计§3.3算术逻辑单元ALU模块的设计ALU是算术逻辑单元,中规模集成器件如74LS181就是一个典型的ALU。ALU是用来完成算术逻辑运算的。对于组合逻辑实现来讲,最基本的单元是全加器。而对于FPGA实现的器件来讲,实现一个运算器变得非常的简单,只要用一个运算符并在头文件中包含相应的库及可。逻辑综合工具会自动的生成对应的运算单元。这样设计出来的模块就有很强的移植性,可以在不同的硬件上进行实现,而且易于修改。不足是可能综合的结果在资源和面积功耗方面不满中要求。比如对于4位全加器,是采用并行进位链还是采用串行进位链在用硬件是实现进是必须要考虑的。但对于FPGA则可将这个工作交给综合工具去做,用户只要指定要求就可以了。图3-4PC的RTL视图§3.4内存储器RAM模块的设计 存储器是计算机系统的五大部件之一。在处理器的构造中,一般只在片内集成小容量、高速的Cache比如80386、486、pentium等,RAM独立于处理器之外。在本毕业设计中,充分利用FPGA的可配置性,在FPGA上集成了一小块片内RAM。并在复位的时候利用FPGA的可配置性引入了一小段程序。这样就避开了程序的初始引入问题,也就避开了中断等复杂的问题。为了不拘泥于一个具体的片内RAM,用寄存器堆来实现一个16个字的RAM。RAM与外界的接口是MDR和MAR。其中MAR有来保存地址,MDR用来保存数据。RAM与外界的接口比较复杂,对时序的要求较强。其接口如下定义:Load_MAR:用总线上的数据装载MAR。送地址。Load_MDR:将总线上的数据送到MDR。MDR_bus:用MDR的内容来驱动总线。也就是读出数据。CS:RAM选中信号,使能控制信号。R_NW:对RAM的读控制信号。图3-5RAM的仿真波形图图3-6RAM的RTL图§3.5控制器SEQUENCER模块的设计Sequencer是处理器的核心模块,是整个设计的重点也是整个设计的难点。在前面的小节中,已经将各个模块的功能与接口做了比较详细的说明。如何将各个模块合理的组织起来,使处理器可以正确的运行,进而得到结果是控制器的任务。微操作命令是最基本的控制命令,如开门关门等电平型命令,多路选择定时脉冲等。控制器的任务是决定在什么时刻、根据什么条件、发什么命令。做什么事。因此,产生微命令的基本依据是时间(如周期节拍、脉冲等时序信号)、指令代码(如操作在码、寻址方式、寄存器号等)、状态(如CPU的内部状态字、控制设备要考虑的外部状态)、外部请求(如控制请求、外部中断请求、DMA请求)等。这些信息称为逻辑变量,经组合逻辑产生的微操作命令序列,或形成相应的微程序地址,通过微程序中的微指令直接产生微操作命令序列。按照微命令的形成方法,控制器可以分为组合逻辑控制器和微程序控制器两种。由于在FPGA中实现组合逻辑控制是比较简单的,而且硬连逻辑有着速度上的优势。因此在本本设计中,采用了组合逻辑控制器。在处理器中,由于其速度高,一般采用同步时序逻辑,因而在本设计中也采用了同步时序。在大规模集成电路的设计中,使用状态机来进行设计是电子工程师经常采用的手段。VHDL语言支持有限状态机的描述。一个控制器可以将它的每一条命令分成若干个状态,这些状态中有许多是相同的,这样就利于采用状态机来进行实现。关键源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX5ISPORT(

R0_B,R1_B,R2_B,R3_B,ALU_B:INSTD_LOGIC;

R0_IN,R1_IN,R2_IN,R3_IN,ALU_IN:INSTD_LOGIC_VECTOR(7DOWNTO0);

MUX5OUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);ENDMUX5;ARCHITECTUREAOFMUX5ISBEGIN

PROCESS(ALU_B,R3_B,R2_B,R1_B,R0_B)

BEGIN

IF(ALU_B='1'ANDR3_B='1'ANDR2_B='1'ANDR1_B='1'ANDR0_B='0')THEN

MUX5OUT<=R0_IN;

ELSIF(ALU_B='1'ANDR3_B='1'ANDR2_B='1'ANDR1_B='0'ANDR0_B='1')THEN

MUX5OUT<=R1_IN;

ELSIF(ALU_B='1'ANDR3_B='1'ANDR2_B='0'ANDR1_B='1'ANDR0_B='1')THEN

MUX5OUT<=R2_IN;

ELSIF(ALU_B='1'ANDR3_B='0'ANDR2_B='1'ANDR1_B='1'ANDR0_B='1')THEN

MUX5OUT<=R3_IN;

ELSIF(ALU_B='0'ANDR3_B='1'ANDR2_B='1'ANDR1_B='1'ANDR0_B='1')THEN

MUX5OUT<=ALU_IN;

ELSEMUX5OUT<=ALU_IN;

ENDIF;

ENDPROCESS;ENDA;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYMUX3ISPORT(

SW_B,CS:INSTD_LOGIC;

FEN2_IN,MUX2_2IN,SW_IN:INSTD_LOGIC_VECTOR(7DOWNTO0);

MUX3OUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0)

);ENDMUX3;ARCHITECTUREAOFMUX3ISBEGINPROCESS(SW_B,CS)

BEGIN

IF(SW_B='0'ANDCS='1')THEN

MUX3OUT<=SW_IN;

ELSIF(SW_B='1'ANDCS='0')THEN

MUX3OUT<=MUX2_2IN;

ELSIF(SW_B='0'ANDCS='0')THEN

MUX3OUT<=FEN2_IN;

ELSE

MUX3OUT<="11101110";

ENDIF;

ENDPROCESS;ENDA;图3-7部分波形图部分程序清单:1ALU子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYALUISPORT(

AC,DR:INSTD_LOGIC_VECTOR(7DOWNTO0);

S1,S0:INSTD_LOGIC;

BCDOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);

CY,ZI:

OUTSTD_LOGIC

);ENDALU;ARCHITECTUREAOFALUISSIGNALAA,BB,TEMP:STD_LOGIC_VECTOR(8DOWNTO0);BEGIN

PROCESS(S1,S0)

BEGIN

IF(S1='0'ANDS0='0')THEN

BCDOUT<=AC+DR;

AA<='0'&AC;

BB<='0'&DR;

TEMP<=AA+BB;

CY<=TEMP(8);

IF(TEMP="100000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSIF(S1='0'ANDS0='1')THEN

BCDOUT<=AC-DR;

AA<='0'&AC;

BB<='0'&DR;

TEMP<=AA-BB;

CY<=TEMP(8);

IF(TEMP="000000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSIF(S1='1'ANDS0='0')THEN

AA<='0'&AC;

TEMP<=AA+1;

BCDOUT<=TEMP(7DOWNTO0);

CY<=TEMP(8);

IF(TEMP="100000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSIF(S1='1'ANDS0='1')THEN

AA<='0'&AC;

TEMP<=AA-1;

BCDOUT<=TEMP(7DOWNTO0);

CY<=TEMP(8);

IF(TEMP="000000000")THEN

ZI<='1';

ELSE

ZI<='0';

ENDIF;

ELSE

BCDOUT<="00000000";

CY<='0';

ZI<='0';

ENDIF;

ENDPROCESS;ENDA;2,ROM子模块LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYROM16ISPORT(

ROMOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0);

ADDR:INSTD_LOGIC_VECTOR(7DOWNTO0);

RE,CS_I:INSTD_LOGIC);ENDROM16;ARCHITECTUREAOFROM16ISBEGIN

PROCESS(RE,CS_I)

BEGIN

IF(RE='0'ANDCS_I='0')THEN

CASEADDRIS

WHEN"00000000"=>ROMOUT<="10010000";

--MOV

0AH

R0

WHEN"00000001"=>ROMOUT<="00001010";

WHEN"00000010"=>ROMOUT<="10010001";

--MOV

00H

R1

WHEN"00000011"=>ROMOUT<="00000000";

WHEN"00000100"=>ROMOUT<="10000010";

--L1:

IN1

R2

WHEN"00000101"=>ROMOUT<="10101001";

--MOV1

R2

[R1]

WHEN"00000110"=>ROMOUT<="11110001";

--INC

R1

WHEN"00000111"=>ROMOUT<="11010100";

--CMP

R1

RO

WHEN"00001000"=>ROMOUT<="01110000";

--JB

L1

WHEN"00001001"=>ROMOUT<="00000100";

WHEN"00001010"=>ROMOUT<="10010000";

--MOV

09H

R0

WHEN"00001011"=>ROMOUT<="00001001";

WHEN"00001100"=>ROMOUT<="10010001";

--MOV

00H

R1

WHEN"00001101"=>ROMOUT<="00000000";

WHEN"00001110"=>ROMOUT<="10110110";

--L2:

MOV2

[R1]

R2

WHEN"00001111"=>ROMOUT<="11110001";

--INC

R1

WHEN"00010000"=>ROMOUT<="11010001";

--CMP

R0

R1

WHEN"00010001"=>ROMOUT<="01110000";

--JB

L4

WHEN"00010010"=>ROMOUT<="00011111";

WHEN"00010011"=>ROMOUT<="10110111";

--MOV2

[R1]

R3

WHEN"00010100"=>ROMOUT<="11011110";

--CMP

R3

R2

WHEN"00010101"=>ROMOUT<="01110000";

--JB

L3

WHEN"00010110"=>ROMOUT<="00011001";

WHEN"00010111"=>ROMOUT<="01100000";

--JMP

L2

WHEN"00011000"=>ROMOUT<="00001110";

WHEN"00011001"=>ROMOUT<="10101001";

--L3:

MOV1

R2

[R1]

WHEN"00011010"=>ROMOUT<="11100001";

--DEC

R1

WHEN"00011011"=>ROMOUT<="10101101";

--MOV1

R3

[R1]

WHEN"00011100"=>ROMOUT<="11110001";

--INC

R1

WHEN"00011101"=>ROMOUT<="01100000";

--JMP

L2

WHEN"00011110"=>ROMOUT<="00001110";

WHEN"00011111"=>ROMOUT<="11100000";

--L4:DEC

R0

WHEN"00100000"=>ROMOUT<="10010001";

--MOV

00H

R1

WHEN"00100001"=>

温馨提示

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

评论

0/150

提交评论