毕业设计(论文)-基于FPGA和VHDL实现的8位通用运算部件(全套源程序) .doc_第1页
毕业设计(论文)-基于FPGA和VHDL实现的8位通用运算部件(全套源程序) .doc_第2页
毕业设计(论文)-基于FPGA和VHDL实现的8位通用运算部件(全套源程序) .doc_第3页
毕业设计(论文)-基于FPGA和VHDL实现的8位通用运算部件(全套源程序) .doc_第4页
毕业设计(论文)-基于FPGA和VHDL实现的8位通用运算部件(全套源程序) .doc_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

湘潭大学毕业设计说明书题 目: 基于fpga和vhdl实现的8位通用运算部件学 院: 信息工程学院 专 业: 计算机科学与技术 学 号: 姓 名: 指导教师: 完成日期: 2012年5月 毕业论文(设计)任务书论文(设计)题目: 基于fpga和vhdl实现的8位通用运算器 学号: 姓名: 专业: 计算机科学与技术指导教师: 系主任: 一、主要内容及基本要求 主要内容: 利用quartus ii 9.0编写vhdl程序,在fpga开发板实现一个8位可进行加减算术运算和与,或,非,异或等逻辑运算的通用运算器,并开发对此运算器进行测试的按键输入模块,完成对运算器的综合测试。 基本要求: 1.设计并实现alu。alu能完成对数据的基本操作,包括算术和逻辑运算,并输出相应的标志信号。 2.设计相应的指令格式,用于控制数据传送,存储,算术逻辑运算,移 位,输出功能。 3设计按键和显示模块,用于对8位通用运算器进行测试。 二、重点研究的问题 1.深刻体会fpga开发流程和vhdl与一般过程语言编程的差异,实际解决在编程中遇到的问题。 2.掌握8位通用运算器的模块构建,对单元电路进行电路波形仿真测试和综合测试。 3.开发一个按键输入模块,对8位通用运算部件进行测试。 3、 进度安排序号各阶段完成的内容 完成时间1学习vhdl和fpga基本知识2011.12.12-2012.1.82熟悉开发平台、开题报告、制订设计方案2012.1.9-2012.4.13编写程序、下载调试2012.4.2-2012.4.194完善数据通路设计、综合测试2012.4.20-2012.4.255毕业设计说明书初稿2012.4.26-2012.5.36修改,写出第二稿2012.5.4-2012.5.177答辩2012.5.26四、应收集的资料及主要参考文献1潘松,黄继业. eda技术实用教程. 北京:科学出版社,2010.11 2kenneth l.short. vhdl大学实用教程. 乔庐峰,尹延辉,李永成,牛燚坤译. 北京:电子工业出版社,2011.9 3clive max maxfield. fpga设计指南. 杜生海,刑闻译. 北京:人民邮电出版社,2007.12 4王诚,刘东卫,宋佳兴. 计算机组成与设计 北京:清华大学出版社,2004.7 5吴厚航. 深入浅出玩转fpga 北京:北京航空航天大学出版社,2009.1 6黄智伟,邓月明,王彦. arm嵌入式系统设计基础教程 北京:北京航空航天大学出版社,2008.8 湘 潭 大 学毕业论文(设计)评阅表学号 2008550914 姓名 专业 计算机科学与技术 毕业论文(设计)题目: 基于fpga和vhdl实现的8位通用运算部件 评价项目评 价 内 容选题1.是否符合培养目标,体现学科、专业特点和教学计划的基本要求,达到综合训练的目的;2.难度、份量是否适当;3.是否与生产、科研、社会等实际相结合。能力1.是否有查阅文献、综合归纳资料的能力;2.是否有综合运用知识的能力;3.是否具备研究方案的设计能力、研究方法和手段的运用能力;4.是否具备一定的外文与计算机应用能力;5.工科是否有经济分析能力。论文(设计)质量1.立论是否正确,论述是否充分,结构是否严谨合理;实验是否正确,设计、计算、分析处理是否科学;技术用语是否准确,符号是否统一,图表图纸是否完备、整洁、正确,引文是否规范;2.文字是否通顺,有无观点提炼,综合概括能力如何;3.有无理论价值或实际应用价值,有无创新之处。综合评 价该同学所选毕业设计课题任务是具有一定实用性要求的局部开发任务,基本符合计算机科学与技术专业本科生培养目标的要求,能够较好地训练学生计算机软硬件方面的综合素质,难度尚可。该同学在完成毕业设计课题任务的过程中积极努力工作,表现出具有一定的综合运用知识的能力,理解、把握问题、理解问题分析与总体设计结论等方面的能力和独立完成局部开发工作的能力。毕业设计所形成的“毕业设计说明书”结构较合理、内容较充实、文字较通顺、形式较规范,篇幅基本上达到了规定要求。综上所述,该同学的毕业设计已基本达到了预期的目标要求,同意参加答辩。 评阅人: 2012年 月 日 湘 潭 大 学 毕业论文(设计)鉴定意见 学号: 2008550914 姓名: 专业: 计算机科学与技术 毕业论文(设计说明书) 54 页 图 表 27 张论文(设计)题目: 基于fpga和vhdl实现的8位通用运算部件 内容提要:本文的主要内容是介绍了在fpga/cpld开发板上开发一个8位通用运算部件的全过程,包括软硬件平台的简要介绍,通用运算部件的概要设计,详细设计及其测试等。本设计说明书分为七部分,总共54页。其中,图表27张。下面,简单介绍各部分内容:第一部分是绪论,介绍了现代计算机应用系统及其设计流程和本文的结构。第二部分介绍了应用于开发这种数字系统的可编程逻辑器件fpga/cpld的基本特性。 第三部分介绍了开发这种数字系统的的软件工具quartus ii 9.0和本设计的硬件开发环境。 第四部分为8位通用运算器设计的内部框图和设计的模块及用于测试的按键模块的设计。 第五部分为8位通用运算器基本模块和按键基本模块的详细设计。 第六部分给出了8位通用运算器可执行的基本运算指令及其测试。 第七部分是结束语,参考文献,致谢和附录。指导教师评语该同学所选课题任务难度一般,基本符合计算机科学与技术专业本科生培养目标的要求。在完成毕业设计任务的过程中基本上能够较准确地把握问题,独立地完成了相应的设计任务。所形成的“毕业设计说明书”结构较合理、内容较充实、语言较流畅、形式较规范,篇幅基本达到了规定要求,内容所含图表基本符合规范要求。综合而论,该同学具有一定的分析问题、解决问题的能力。建议评定该同学的毕业设计成绩为“及格”。指导教师: 年 月 日答辩简要情况及评语答辩小组组长: 年 月 日答辩委员会意见答辩委员会主任: 年 月 日目 录摘要1abstract2第1章 绪论31.1 现代计算机应用系统31.2 现代计算机应用系统开发的一般流程41.3 本文的结构4第2章 cpld/fpga基本特性62.1 cpld简介62.1.1 可编程逻辑阵列(lab)72.1.2 可编程i/o单元(ioc)72.1.3 可编程内部连线(pia)72.2 fpga简介8第3章 软硬件开发环境103.1 基本设计流程103.2 硬件开发环境12第4章 8位通用运算器设计方案144.1 总体结构图144.2 8位通用运算器模块144.2.1 指令格式的设计144.2.2 运算器对外接口154.2.3 8位通用运算器内部结构图164.3 按键测试模块174.4 数码显示模块18第5章 基本模块设计195.1 alu输入选择器的设计195.2 alu算术逻辑运算单元的设计205.3 寄存器组ram的设计225.4 寄存器qreg的设计235.5 输出选择器设计245.6 键盘测试模块255.6.1 4乘4按键255.6.2 指令和数据生成模块26第6章 测试296.1 单元测试296.2 基本指令和综合测试30第7章 结束语33参考文献34致谢35附 录36ii基于fpga和vhdl实现的8位通用运算部件摘要:本文介绍了在现代eda技术支持下、基于cpld/fpga和vhdl开发的一个8位通用运算部件,系统讨论了其设计实现以及在基于cpld/fpga的gw48gp硬件开发测试环境中构建与测试所涉及的系列问题、方法与技术。在现代计算机科学技术水平下,开发计算机应用系统的途径之一就是利用现代eda技术和超大规模的可编程器件cpld/fpga技术的最新成就,开发一个“片上系统”/“片上可编程系统”、制作定制/半定制的专用集成电路来实现其系统目标。本文所介绍的就是在这种指导思想下完成的一个简单的、局部性的、探索性的实例。文中对现代eda技术、cpld/fpga器件及其与现代计算机应用系统开发间的关联作了基础性的讨论,对通过这种方式制作一个8位通用运算部件的完整过程作了全面、系统的介绍。在制作此8位通用运算部件时,应用了广为流行的、标准化的vhdl作为硬件描述语言。关键词:可编程逻辑器件;vhdl;片上系统;片上可编程系统全套设计原程序代码,联系153893706the realization of 8-bit alu based on fpga & vhdlabstract:in this paper, the development of an 8 bit universal computing component was introduced based on cpld/fpga and vhdl with the support of modern eda technology. the design and a series of concerning questions, methods and technologies based on cpld/fpga gw48gp hardware development to build and test was discussed systematically.in the moderncomputerscience and technology,one of the waysofthe development of computerapplication systemsis using thelatest achievementsof modern eda technologyand ultra-large-scaleprogrammable devicescpld/fpga technology todevelopsystem on a chip/system on a programmable chip and producing custom/semi-customasicto achieve itssystem goals. described in this paper isa simple,localized, and exploratory instance in thisguiding ideology.the paper discussed theassociationbetweenmodern eda technology, the cpld/fpga devices,andmodern computerapplication systemsdevelopment briefly and made a comprehensive and systematic introduction of the completeprocessofdesigningan 8-bituniversalcomputing unit in this way. widelypopular,thestandardization ofvhdlasahardware description language is used in the throughout the design process.keywords: programmable logic device; vhdl; system on a chip; system on a programmable chip第1章 绪论1.1 现代计算机应用系统在现代,完整的计算机技术包含三个相对独立的部分:硬件技术、软件技术和计算机应用技术。其中的“计算机应用技术”主要是指应用现代计算机硬件技术和软件技术已取得的成就去解决人们生产、生活中的各种实践问题,即人们通常所论的“计算机应用系统开发”。所谓“计算机应用系统”,也称为“基于计算机的系统”或“以计算机为基础的系统”。它通常包含:计算机硬件、计算机软件、信号测量装置及将相应测量信号转化为计算机硬件可识别信号的装置、控制与信号执行装置(它们将计算机硬件输出转化为系统所操作的设备的有效行为)。在现代,实现一个“计算机应用系统”的典型途径有两种:1. 基于一个确定的计算机系统来构建。这个作为基础的计算机系统通常被称作待构建的计算机应用系统的“运行平台”。基于确定的“运行平台”,扩展其软硬件设施和必要的其它配套装置,即可得到所需的目标计算机应用系统。2. 基于现代超大规模的可编程器件和现代eda技术,开发一个“片上系统”/“片上可编程系统”,用一个“定制”/“半定制”的专用集成电路来实现目标计算机应用系统。通过第一种途径(也是传统的途径)来实现计算机应用系统,其关键的工作是开发面向应用目标的扩展软件应用软件。目前在大型数据处理系统等应用领域通常采用这种方式。在这种方式下,通常计算机应用系统的工作环境很好、人们要求系统呈现出极大的灵活性以便适应其系统环境的变化、系统需要扩展的硬件设施通常都是可通过采购来获得的、构建系统所需的其它配套装置种类较少且易于通过采购等方式获得。由此形成的系统的知识产权主要是所开发的应用软件的著作权。通过第二种途径来实现计算机应用系统,其关键性的工作是在现代eda技术的支持下在相应可编程器件中构建相应系统的硬件(这既包括通常意义上的计算机硬件,也包括扩展的其它数字电路)。目前在设备控制、过程控制、自动测量、数字信号处理、嵌入式系统应用等众多应用领域通常采用这种方式。在这种方式下,系统的软件部分的规模通常不大,人们通常是在配套的开发平台上与硬件开发同步地开发其软件设施并在交付前将其植入可编程芯片、完成联机测试并制作一体化的定制电路(在现代,eda技术的发展已使得制作单个专用集成电路的费用降到了人们普遍可接受的水平)交付。由于构建的计算机应用系统是单片式的、个性化的,故形成的系统的知识产权是完整的计算机应用系统产品。在eda技术、可编程芯片技术高速发展的形势下,人们已开始尝试将大型信息系统通过上述第二种途径来构建并获得了较理想的结果。由此有人预言,计算机技术今后的发展将进入一个基于可编程器件来构建计算机系统的新时代。1.2 现代计算机应用系统开发的一般流程当一个计算机应用系统采用上述第二种途径来实现时,相应的系统开发过程可概述为:1. 进行目标系统的系统分析,确定对目标计算机应用系统的总体要求,确定目标系统的系统环境及其相互关联;2. 确定满足系统目标要求的硬件、软件的总体特性以及两者间的相互关联;3. 并行地完成系统软硬件的开发(包括独立的系统测试在内);4. 实现系统软硬件在cpld/fpga中的系统集成,在相关系统设施(目前已有易得到的相应设施)的支持下完成目标系统的系统测试;5. 将目标系统制作为“专用集成电路”或“可编程的专用集成电路”交付。在这种计算机应用系统开发模式下,系统硬件部分的开发过程可概述为:1. 进行问题的系统分析,明确系统的目标要求;2. 确定系统的总体结构和系统开发方案;3. 在相应eda软件与硬件测试环境的支持下完成各相关部件的开发(这包括:形成部件的确定eda描述、在eda编辑工具的支持下将设计描述 原理图/用指定“硬件描述语言”编写的设计描述程序 输入eda系统、进行部件的时序分析与仿真处理、进行cpld/fpga芯片的引脚适配与重编译、下载eda系统产生的目标文件到基于cpld/fpga的硬件测试环境、应用相应硬件测试环境对设计进行测试,经过这一系列的处理,即可得到相应部件的设计实现);4. 在现代eda技术下,由此开发的部件可如软件中的“模块”那样简单地被引用以构成更复杂的硬件的设计资源;5. 如开发部件那样完成硬件的设计和基于cpld/fpga器件的实现。1.3 本文的结构第2章简要地介绍了cpld/fpga的基本知识,目的是阐明这种可编程逻辑器件的基本结构和特点。第3章为软件开发环境quartus ii 9.0的基本知识和康芯电子有限公司的计算机组成原理试验箱的介绍。试验箱包括altera公司的cyclone fpga器件和外围按键,显示模块,可用于验证设计的正确性。第4章为8位通用运算器和按键测试模块的总体结构设计。主要讨论了运算器的整体架构,及其用于测试的按键模块的接口设计。第5章为基本模块的设计。该章描述了8位通用运算器各单元模块的设计和按键模块各单元模块的设计。第6章 是对8位通用运算器的测试。它综合了单元模块的测试和综合测试,并给出了该8位通用运算器能实现的指令的指令表。第7章 为结束语。该章对毕业设计过程做了总结,对设计的不足之处做了说明,并表达了对毕业设计的体会。第2章 cpld/fpga基本特性可编程逻辑器件pld(programmable logic device)是20世纪70年代发展起来的一种新的集成器件。pld是大规模集成电路技术发展的产物,是一种半定制的集成电路,结合eda技术可以快速方便地构建数字系统。本章主要阐述几类常用的大规模可编程逻辑器件的结构和工作原理。2.1 cpld简介现在的pld以大规模,超大规模集成电路工艺制造的cpld,fpga为主。前面曾提到多种pld器件在实用中已被淘汰,大致原因如下:(1)阵列规模较小,资源不够用于数字系统。当设计较大的数字逻辑时,需要多片器件,性能,成本及设计周期都会受到影响。(2) 片内寄存器资源不足,且寄存器的结构限制较多(如有的器件要求时钟共用),难以构成丰富的时序电路。i/o不够灵活,如三态控制等,限制了片内资源的利用率。(3) 编程不便,需要专用的编程工具,对于使用熔丝型的简单pld更是不便。上述原因导致了,简单pld退出了历史舞台,取而代之的是cpld和fpga。cpld由可编程逻辑的功能块围绕一个可编程互连矩阵构成。由固定长度的金属线实现逻辑单元之间的互连,并增加了i/o控制模块的数量和功能。可以把cpld的基本结构看成由可编程逻辑阵列(lab)、可编程i/o控制模块和可编程内部连线(pia)等三部分组成。图2-1 cpld内部结构2.1.1 可编程逻辑阵列(lab)可编程逻辑阵列由若干个可编程逻辑宏单元(logic macro cell,lmc)组成, lmc内部主要包括与阵列、或阵列、可编程触发器和多路选择器等电路,能独立地配置为时序或组合工作方式。(1) 乘积项共享结构在cpld的宏单元中,如果输出表达式的与项较多,对应的或门输入端不够用时,可以借助可编程开关将同一单元(或其他单元)中的其他或门与之联合起来使用,或者在每个宏单元中提供未使用的乘积项给其他宏单元使用。(2)多触发器结构早期可编程器件的每个输出宏单元(olmc)只有一个触发器,而cpld的宏单元内通常含两个或两个以上的触发器,其中只有一个触发器与输出端相连,其余触发器的输出不与输出端相连,但可以通过相应的缓冲电路反馈到与阵列,从而与其他触发器一起构成较复杂的时序电路。这些不与输出端相连的内部触发器就称为“隐埋”触发器。这种结构可以不增加引脚数目,而增加其内部资源。(3) 异步时钟早期可编程器件只能实现同步时序电路,在cpld器件中各触发器的时钟可以异步工作,有些器件中触发器的时钟还可以通过数据选择器或时钟网络进行选择。此外,olmc内触发器的异步清零和异步置位也可以用乘积项进行控制,因而使用更加灵活。2.1.2 可编程i/o单元(ioc)cpld的i/o单元(input/output cell,ioc),是内部信号到i/o引脚的接口部分。根据器件和功能的不同,各种器件的结构也不相同。由于阵列型器件通常只有少数几个专用输入端,大部分端口均为i/o端,而且系统的输入信号通常需要锁存。因此i/o常作为一个独立单元来处理。2.1.3 可编程内部连线(pia)可编程内部连线的作用是在各逻辑宏单元之间以及逻辑宏单元和i/o单元之间提供互连网络。各逻辑宏单元通过可编程连线阵列接收来自输入端的信号,并将宏单元的信号送目的地。这种互连机制有很大的灵活性,它允许在不影响引脚分配的情况下改变内部的设计。2.2 fpga简介除cpld外,fpga是大规模可编程逻辑器件的另一大类pld器件。fpga(现场可编程门阵列)采用另一种可编程逻辑形成方式,即可编程的查找表lut(look up table)结构。lut是可编程的最小逻辑单元。图2.-2 fpga查找表单元图2-3 fpga查找表内部结构一个n输入查找表 (lut,look up table)可以实现n个输入变量的任何逻辑功能,如 n输入“与”、 n输入“异或”等。输入多于n个的函数、方程必须分开用几个查找表(lut)实现。图2-4查找表“与”逻辑n个输入的逻辑函数需要2的n次方的容量的sram来实现,一般输入多于n个的逻辑函数,其查找表采用多个逻辑块级连的方式。n个输入的逻辑函数需要2的n次方的容量的sram来实现,一般输入多于n个的逻辑函数,其查找表采用多个逻辑块级连的方式。图2-5 查找表的级联方式查找表中的数就是sram阵列中所存逻辑函数的真值,查找表的输入就是sram的地址输入。用lut实现逻辑函数的过程:将逻辑函数的真值表事先存储在lut的存储单元中,当逻辑函数的输入变量取不同组态时,相应组态的二进制取值构成sram的地址,选中相应地址对应的sram单元,也就得到了输入变量组合对应的逻辑值。第3章 软硬件开发环境在eda工具的设计环境中,有多种途径来完成目标系统的表达和输入,如hdl的文本输入方式,原理图输入方式,状态图输入方式,以及混合输入方式等。相比之下,hdl文本输入方式最基本,最直接。本章将讨论基于quartus ii 9.0的vhdl文本输入设计流程,包括设计输入,综合,适配,仿真测试和编程下载等重要方法。硬件平台选取的是杭州康芯电子有限公司的现代计算机组成原理实验系统。3.1 基本设计流程quartus ii 是altera公司继max+plus ii之后开发的一种针对其公司生产的系列cpld/pgfa器件的综合性开发软件,它的版本不断升级,从4.0版到10.0版,这里介绍的是quartus ii 9.0版,该软件有如下几个显著的特点:1、quartus ii 的优点该软件界面友好,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的eda工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计流程。quartus ii可以在xp、linux以及unix上使用,除了可以使用tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。2、quartus ii对器件的支持quartus ii支持altera公司的max 3000a系列、max 7000系列、max 9000系列、acex 1k系列、apex 20k系列、apex ii系列、flex 6000系列、flex 10k系列,支持max7000/max3000等乘积项器件。支持max ii cpld系列、cyclone系列、cyclone ii、stratix ii系列、stratix gx系列等。支持ip核,包含lpm/megafunction宏功能模块库,用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。此外,quartus ii 通过和dsp builder工具与matlab/simulink相结合,可以方便地实现各种dsp应用系统;支持altera的片上可编程系统(sopc)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。3、quartus ii对第三方eda工具的支持对第三方eda工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放eda工具。altera的quartus ii可编程逻辑软件属于第四代pld开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于internet的协作设计。quartus平台与cadence、exemplarlogic、 mentorgraphics、synopsys和synplicity等eda供应商的开发工具相兼容。改进了软件的logiclock模块设计功能,增添了fastfit编译选项,推进了网络编辑性能,而且提升了调试能力。用quartus ii软件进行数字系统开发的流程如图3-1所示,包括以下步骤。图 3-1 quartus ii设计开发流程(1)设计输入:包括原理图输入、hdl文本输入、edif网表输入、波形输入等几种方式。(2)编译:先根据设计要求设定编译方式和编译策略,如器件的选择、逻辑综合方式的选择等;然后根据设定的参数和策略对设计项目进行网表提取、逻辑综合、器件适配,并产生报告文件、延时信息文件及编程文件,供分析、仿真和编程使用。(3)仿真与定时分析:仿真和定时分析均属于设计校验,其作用是测试设计的逻辑功能和延时特性。仿真包括功能仿真和时序仿真。定时分析器可通过三种不同的分析模式分别对传播延时、时序逻辑性能和建立/保持时间进行分析。(4)编程与验证:用得到的编程文件通过编程电缆配置pld,加入实际激励,进行在线测试。在设计过程中,如果出现错误,则需重新回到设计输入阶段,改正错误或调整电路后重新测试。图3-2 qurartus ii 9.0开发环境3.2 硬件开发环境 本系统硬件开发环境选择的是杭州康芯电子有限公司的现代计算机组成原理实验系统。除按键模块和gwa1c6a型适配板外,本设计所用到的实验系统主要模块如图3-3。图3-3 现代计算机组成原理实验系统gwa1c6a适配板包含fpga芯片。该芯片是altera公司生产的cyclone系列芯片,型号为ep1c12q240c8,有240个引脚。在设计8位通用运算器使用到的实验系统包括输入指令和数据的4乘4键盘,gwa1c6a型适配板(未插ram/flash板和高速dac/dac板),用于显示指令和数据流动的全部的数码管,显示运算结果标志的led灯,时序控制的按键等。除此之外,硬件平台还要用到用于下载程序的下载器usb blaster。第4章 8位通用运算器设计方案本章对8位通用运算器将描绘出其系统框图,并对其各功能部件及其作用进行具体介绍。此外,本章还描述了用于测试运算器的按键测试模块。4.1 总体结构图图4-1 总体结构图本设计的结构框图如图4-1所示。主要包括按键模块,8位通用运算器模块,数码显示模块,及用于控制输入的输入控制信号。8位通用运算器模块接受来自按键的指令信号和数据信号,内部包括算术逻辑alu,通用寄存器组,q寄存器,alu输入多路选择,输出选择器等5个模块。按键模块接收16进制输入信号,并在输入控制信号的控制下,完成指令输入和数据输入。数码显示模块共8个数码显示器,前4个数码显示管用于显示输入的指令,中间两个数码管用于显示输入的数据,最后两个数码管显示输出数据结果,另外还有4个指示灯,在做算术运算时,其中1个表示结果为零标志,1个表示结果为负标志,1个表示溢出信号,1个表示进位信号。4.2 8位通用运算器模块本节先介绍8位通用运算器的指令,然后给出8位通用运算器的对外接口,最后给出8位通用运算器内部结构框图。4.2.1 指令格式的设计这里所指的指令是控制器所发出的一系列信号的集合。此8位通用运算器的指令包含寄存器r1地址(ir2,0),寄存器r2的地址(ir5,3),低位进位c,数据来源选择(ir9-7),功能选择(ir12-10),输出选择(ir15-13)。表4-1 指令格式的设计1514131211109876543210输出选择i8-i6功能选择i5-i3数据选择i2-i0c寄存器r2寄存器r1其中c表示进位输入4.2.2 运算器对外接口图4-2 8位通用运算器对外接口图4-2是8位通用运算器的对外接口图,对其说明如下:clk-时钟信号输入aaddr2.0-第一操作数寄存器地址输入baddr2.0-第二操作数寄存器地址输入d7.0-8位数据输入i8.0-9位指令输入cin-进位输入y7.0-8位结果输出feq0-零标志输出f7-负标志输出c8-进位标志输出ovr-溢出标志输出4.2.3 8位通用运算器内部结构图图4-3 8位通用运算器内部结构图从图上可以看出r寄存器数据来源有寄存器组,d寄存器;s寄存器数据来源有寄存器组,q寄存器;数据来源由指令i2-i0控制,而alu执行的运算由i5-i3控制,alu的输出由i8-i6控制;指令i8-i0,进位信号cin,寄存器地址baddr,aaddr及d数据都来自键盘输入。图4-4是寄存器组输出结构图,地址由译码器进行译码,通过脉冲控制门将寄存器组的内容输出到r,s寄存器。寄存器写入也是以类似的方式将运算结果传送回相关寄存器。图4-4 寄存器输出图4-5寄存器写入4.3 按键测试模块由于对8位通用运算器的测试要求,所以,除了8位通用运算器之外还特别设计了键盘模块和显示模块。按键测试模块分为按键模块及指令和数据生成模块。按键模块完成对按键信号的检测和编码。指令和数据生成模块在计数器的控制下,完成将键值通过移位的方式输出为16位指令信号和8位数据信号。图4-6 按键测试模块视图4.4 数码显示模块图4-7 数码显示模块前4个数码管显示的是指令码,第5,6个数码管显示的是输入数据,最后两个数码管显示运算结果。4个指示灯依次为运算结果为零标志,运算结果为负标志,溢出标志,进位标志。第5章 基本模块设计本设计为一个基于vhdl语言的9位简单指令,微处理器的设计流程,包括微处理器的alu操作数选择、alu功能选择、ram输入输出及移位操作,最后用顶层设计进行元件例化。通过编译、仿真检查程序,最后在fpga芯片上实现下载。5.1 alu输入选择器的设计指令的编码方式如表5-1: 表5-1 alu输入选择 指令码输入选择i2i1i0rs000aq001ab0100q0110b1000a101da110dq111d0其中,alu输入选择,可以对alu中运算的操作数进行选择,即r和s,选择信号a、b、d、q、0到alu。alu输入选择器是由微处理器指令中的源操作数所控制的两个多路选择器构成的。输出信号r在a、d和0之间选择,s信号在a、b、q和0之间选择。其vhdl源程序如下:-端口声明entity alumux isport(d,q,a,b:in unsigned(7 downto 0);aluin_ctrl:in std_logic_vector(2 downto 0);-输入选择控制信号i2-i0r,s:buffer unsigned(7 downto 0);-r,s寄存器end alumux;architecture behavioral of alumux isbeginwith aluin_ctrl select-r寄存器数据来源选择r=a when 000|001,00000000 when 010|011|100,d when others;with aluin_ctrl select-s寄存器数据来源选择s=q when 000|010|110,b when 001|011,a when 100|101,00000000 when others;end behavioral;5.2 alu算术逻辑运算单元的设计 alu算术运算逻辑单元,可以对两个8位操作数执行3种算术运算和5中逻辑运算。输入信号为8位r信号,8位s信号以及进位信号cin,输出信号为f3.0、运算结果为零标志,负标志,进位输出信号c8、和溢出标志ovr。alu的输出信号f7.0还反馈到寄存器和存储器。 表5-2 alu功能选择指令码alu单元选择i5i4i3000r+s001s-r010r-s011r or s100r and s101not r110r xor s111not(r xor s)alu算术逻辑运算单元的主要功能是根据指令码的要求。其vhdl源程序如下:entity alu isport(clk:in std_logic;-时钟信号r,s:in unsigned(7 downto 0);-r,s端输入信号alu_ctrl:in std_logic_vector(2 downto 0);-功能选择信号cin:in std_logic;-低位进位输入f:buffer unsigned(7 downto 0);-结果输出feq0:buffer std_logic;-运算结果为零输出f7:buffer std_logic;-负标志输出c8:buffer std_logic;-进位输出ovr:buffer std_logic);-溢出输出end alu;architecture behavioral of alu issignal tr,ts,tf:unsigned(8 downto 0);signal feq0_t,f7_t,c8_t,ovr_t:std_logic;begintr=

温馨提示

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

评论

0/150

提交评论