毕业设计(论文)-基于FPGA的MCU设计.docx_第1页
毕业设计(论文)-基于FPGA的MCU设计.docx_第2页
毕业设计(论文)-基于FPGA的MCU设计.docx_第3页
毕业设计(论文)-基于FPGA的MCU设计.docx_第4页
毕业设计(论文)-基于FPGA的MCU设计.docx_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

本 科 毕 业 设 计 第 36 页 共 36 页1 引言11 MCU的发展及应用MCU(Micro Controller Unit)中文名称为微控制单元,又称单片微型计算机(Single Chip Microcomputer)或者单片机,顾名思义就是把全部的计算机系统集成到一块芯片中。微处理器MPU(Micro Processing Unit)就是微型计算机的中央处理器CPU(Central Processing Unit),MCU一般以某一种MPU内核为核心芯片,它采用了超大规模机场电路技术,将中央处理器中的各功能部件集成在同一块芯片上,这也是它和其他计算机的主要区别。它的微处理器包含计算机体系结构中的运算器和控制器,是构成微型计算机的核心部件。随着超大规模集成电路技术的发展和应用,微处理器中所集成的部件越来越多,除运算器、控制器外,还有协处理器、高速缓冲储存器、接口和控制部件等。微处理器自1970年问世以来,在短短几十年的时间里,以极快的速度发展,初期每隔二到三年就要更新一代,现在则不到一年更新一次。1976年9月INTEL公司推出了8084MCU,属于8位MCU,不带串行I/O口,片内RAM、ROM容量也不大,只适用于简单的工业控制和比较简单的数字化仪表。1980年INTEL公司推出了比8084系列功能更为优秀的8位MCU,即8051。1982年MOSTEK公司首先发布了第一个16位MCU68200。1989年MOTOROLA公司推出了准32位MCU 68300。1991年MOTOROLA公司推出了32位MCU MC6833IFC。同年,INTEL公司推出了采用RISC技术设计的16位MCU A80960KA和32位MCU 809600。1992年之后,世界上许多公司都陆续推出了采用RISC技术设计的32位MCU、64位MCU。RISC技术在MCU的设计中发展迅速并且日趋成熟。在国内,4位和8位MCU的设计技术已经成熟,16位和32位MCU也在逐步发展。目前,MCU的发展有两种趋势:一种趋势是向高性能处理器和多位数MCU发展,另一种方向是发展性价比高的快速高效低位数MCU。能代表多位数MCU的是32位MCU,而快速高性能低位数MCU中,应用面最广、发展最快的就是8位MCU。按照MCU的特点及性能,MCU的应用范围包括了,工业测控系统,例如构成各种不太复杂的工业控制系统、自适应控制系统、数据采集系统等, 达到测量与控制的目的。智能仪表的开发,促进仪表向数字化、智能化、多功能化、综合化、柔性化方向发展。机电一体化技术,使传统机械产品结构简化, 控制智能化。智能接口方面,在计算机控制系统, 特别是在较大型的工业测、控系统中。一般情况下,设计者为了提高系统的运行速度,常常应用MCU控制和管理各种智能化接口。在民用智能化产品中,如在家用电器、智能手机、PDA终端、影音设备、ATM机、医疗设备、物联网应用设备等许多产品中, 使用了MCU控制设备, 不仅使产品的价格成本大幅度降低,使用性能相比以前也有了较大改善, 并且获得了良好的使用效果。MCU在现代流行的视频会议中也起到核心领导的作用,通过MCU设备给下面终端设备设置好权限属性就可以组建一个完整的视频会议网络。目前,中国的单片机应用经历了二十余年的发展历程,随着嵌入式系统逐渐深入社会生活各个方面,单片机的发展和应用也有从传统的8位处理器平台向32位高级RISC处理器平台转变的趋势,可是8位和16位机依然难以淘汰。现今市场上流行的典型的8位微处理器,与传统的8位MCU相比,是由VHDL实现的软处理器IP Core,可以在各种FPGA上实现,设计灵活方便。因此,这些MCU将在基于可编程逻辑的应用领域中发挥积极的作用。由于其具有较高的处理性能和较少的资源占用,故具有更加广泛的应用前景。12 MCU的特点MCU相对于其他设备有很多优点。在系统集成度方面,相比早期的微型计算机,MCU设备的集成度高,由于电子技术,特别是大规模集成电路技术的发展,系统所需的基本模块已经可以集成在一个芯片上,并且功能大为增强。现在的MCU器件一般采用把处理器、存储器以及I/O接口等部件集成在一个芯片上。因为MCU器件的内部已经集成了上述的进行控制所需的基本功能模块,所以只要连接少数的外部模块,甚至不需要任何外部模块,MCU就可以独立完成控制工作。 在抗干扰性方面,MCU的系统运行可靠,抗干扰能力也相当优秀,因为采用了先进的大规模集成电路的加工工艺,系统的各个部件都集成在一个芯片上,这样由于系统布线都是纳米级的,所以不易受到外部信号的干扰。 现在的MCU设计和生产流程中都相继使用了纳米级的互补金属氧化物半导体(即CMOS)工艺,这种加工工艺制作出的芯片都具有功耗小的特点,应用这种工艺生产出的MCU充分发挥了其低功耗的特点。另外,现在的MCU系统中都设置有看门狗等节电系统,这样软硬件交叉火力,可以使MCU的功耗降至最低。 由于MCU在市场上的广泛普及,许多公司都把目光转向了与其配套的第三方软件开发,这些第三方公司提供的开发软件和工具操作简单,适合初学者和中小型公司以及高校的技术研发。 由于MCU的设计和生产应用了先进的大规模集成电路技术,使其在大量生产时的硬件成本非常低,和其他设备相比,MCU的性能价格比具有相当的优势。13 MCU的分类MCU的种类有很多,根据其设计方法,可以分成通用型和专用型两种。通用型MCU的种类很多,例如大家熟知的AT89C51等,都是具有相类似的通用控制功能。通用型MCU的位数从4位到32位64位都有相应的应用领域。由于4位MCU的性能太低,所以基本已经淡出市场。8位MCU的硬件成本低、便于开发,并且其性能可以满足大多数的控制要求,所以目前8位MCU依然是市场的主流。而16位或者16位以上的MCU处理数据的速度快,性能优秀、可靠,所以这些MCU主要被应用于军事、航天等高科技领域。专用型MCU,是为了某种特定的目的而设计的MCU。其主要的特点是体积相比于通用型MCU更小,功耗更低,可靠性及保密性都有增强。专用型MCU的应用领域主要包括智能仪表,家用电器,智能手机等。现在我国的MCU产业正值发展旺盛时期,更新换代速度非常快,相信在不久的将来,位数更高,运算速度更快,成本更低的新型MCU将会层出不穷。2 FPGA的基本原理21 EDA概述 EDA是电子设计自动化(Electronic Design Automation)的缩写,是以计算计算技术和微电子技术为先导的。它汇集了计算机图形学、拓扑学、逻辑学、为电子工艺与结构学和计算机数学等多种计算机应用学科最新成果的先进技术。在电子设计自动化出现之前,设计人员必须手工完成集成电路的设计、布线等工作,这是因为当时所谓集成电路的复杂程度远不及现在。工业界开始使用几何学方法来制造用于电路光绘(photoplotter)的胶带。到了1970年代中期,开发人应尝试将整个设计过程自动化,而不仅仅满足于自动完成掩膜草图。第一个电路布线、布局工具研发成功。EDA是在20世纪90年代初,从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术是以计算机为工具,设计者在EDA软件平台上用硬件描述语言HDL完成设计文件,然后由计算机自动的完成逻辑编译、化简、分割、综合、优化、布局、布线、仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可靠性,减轻了设计者的劳动强度。利用EDA技术进行电子系统设计,具有如下特点:用软件的方式进行硬件设计、用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的、设计过程中可用有关软件进行各种仿真、系统可现场编程,在线升级、整个系统可集成在一个芯片上,体积小,功耗低,可靠性高。因此,EDA技术是现代电子设计的发展趋势。 EDA开发工具主要包括编辑器、仿真工具、检查/分析工具和优化/综合工具等。其中,编辑器用来对设计输入进行图形或者文本等方面的编辑操作;仿真工具是用来完成设计仿真操作的EDA开发工具,主要包括逻辑仿真工具和时序仿真工具;检查/分析工具用来对设计的逻辑产生可能性、电路的电气特性以及时序关系等进行检查和分析;优化/综合工具用来把一种硬件描述转化为底层描述,在转化的过程中伴随着设计的某种优化。现在,高级的EDA开发工具都是一种集成的开发环境,即集成了上述的所有开发工具,这样就可以用一种集成开发环境来完成所有的设计工作。 现在对EDA的概念或范畴用得很宽。包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。例如在飞机制造过程中,从设计、性能测试及特性分析直到飞行模拟,都可能涉及到EDA技术。本文所指的EDA技术,主要针对电子电路设计、PCB设计和IC设计。今天,EDA技术已经成为了电子设计的重要工具,无论是设计芯片还是设计系统,如果没有EDA工具的支持,都将是难以完成的。EDA工具已经成为了现代电路设计师的重要武器,正在发挥着愈来愈重要的作用。22 FPGA 的结构特点 作为一种可编程逻辑器件,FPGA(Field Programmable Gate Array)即现场可编程门阵列的出现是可编程逻辑器件发展变化的必然结果,它的出现推动着可编程逻辑器件的进一步发展。 FPGA的电路结构基于查找表(Look Up Table,LUT)加寄存器的结构,由若干独立的可编程逻辑模块组成。FPGA的基本结构由可编程逻辑单元、可编程I/O单元和编程连线资源组成,如图2.1。由于这些模块的排列形式和门阵列(Gate Array)形式相似,所以被称为现场可编程门阵列。查找表本质上就是一个RAM。目前FPGA中多使用四输入的LUT,所以每一个LUT可以看成一个有4位地址线的161的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,FPGA开发软件会自动计算逻辑电路的所有可能结果,并把结果事先写入RAM。这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。可编程连线资源可编程逻辑单元可编程I/O单元 图2.1 FPGA的可编程逻辑单元一般由查找表和寄存器构成。查找表结构的核心是2N1位SRAM,用2N1位SRAM存储一个N输入组合逻辑函数的真值表,其输出即为所期望的组合逻辑;可编程逻辑单元的寄存器可以配置为触发器或锁存器。因而,用查找表和寄存器的组合可以实现任意组合逻辑和时序逻辑的设计。 FPGA配置了丰富的连线资源,连线分布于FPGA内部所有单元。这些连线资源根据工艺、长度、宽度和分布位置的不同而被划分为不同的级别,分别是全局性的专用连线资源、长线连线资源,短线连线资源。除上述连线资源外,在基本可编程逻辑单元内部,还有各种各样的连线资源和控制信号线。 FPGA的可编程I/O单元是用来实现可编程逻辑单元与I/O引脚的互连,以及不同电气特性下对输入/输出信号的驱动和匹配。FPGA的可编程I/O单元支持的电气连接有PCI、LVTTL、LVMOS、LVDS、SSTL、CTT、HSTL和LVPECL等。 除了上述构成FPGA基本结构的三种资源以外,随着工艺的进步和应用系统需求的发展,一般在FPGA中还可能包含以下可选资源:存储器资源;数字时钟管理单元;算数运算单元以及一些特殊功能模块。23 FPGA 的设计方法及流程2.3.1 FPGA的设计方法 FPGA的设计方法包括“自顶向下”和“自下向上”。目前大规模FPGA设计一般采用“自顶向下”的设计方法。自顶向下的设计方法,就是设计者先从整体上设计整个系统的功能,然后对整个系统的模块进行划分,把原来电路逻辑复杂的模块划分成功能更单一,电路结构更简单的小型模块。再把这些小型的模块根据设计意图连接起来,达到设计的目的。而且,如果设计者认为划分出来的小模块还没有达到采用可完全独立于芯片厂商及其产品结构的描述语言,在功能级对设计品进行定义,并结合功能仿真技术,以确保设计的正确性,在功能定义完成后,利用逻辑综合技术,把功能描述转化为某一具体结构芯片的网表文件,输出给厂商的布局布线器进行布局布线。布局布线结果还可以反标回同一仿真器,进行包括功能和时序的后验证,以保证布局布线所带来的门延时和线延时不会影响设计的性能。“自顶向下”的设计方法的优越性是显而易见的。首先,由于功能描述可完全独立于芯片结构,在设计的最初阶段,设计师可不受芯片结构的约束,集中精力进行产品设计,进而避免了传统设计方法所带来的重新再设计风险,大大缩短了设计周期。2.3.2 SOPC技术概述随着微电子技术和计算机技术的发展,可编程逻辑器件的复杂度已经能够在单个可编程逻辑器件上实现整个系统,或者说将一个完整产品的功能集成在一个芯片或芯片组上,这就是片上系统SOC(System On Chip)。SOC中可以包括微控制器MCU、数字信号处理器DSP、存储器RAM、ROM、Flash、总线和总线控制器、外围设备接口等,还有其他必要的数模混合电路,甚至传感器等。SOC技术已经成为半导体行业的技术主流,由于它的设计周期长,设计成本高,中小企业和研究所、大专院校难以研究和使用这种系统。由于FPGA技术的不断发展,人们开始关注基于FPGA的可重构SOC系统解决方案设计,这就是SOPC技术。通过SOPC技术,可以很快的将硬件系统,包括微处理器、存储器、外设以及用户逻辑电路等软件设计都放在一个可编程的芯片中,以达到系统的IC设计。这种设计方法具有开发周期短以及系统可修改等优点。2.3.3 FPGA的设计流程FPGA开发采用的是一种高层次设计方法,这是一种“自顶向下”的方法,适应了当今芯片开发的复杂程度提高、上市时间紧迫的特点。这种设计方法首先从系统设计入手,在顶层进行功能方框的划分和结构设计,在方框图一级进行仿真、纠错,并用硬件描述语言对高层次的系统进行描述,在系统一级进行验证。然后用综合优化工具生成具体门电路的网表,其对应的物理实现级可以是印刷电路板或专用集成电路。由于设计的主要仿真和调试过程是在高层次上完成的,这不仅有利于早期发现结构设计上的错误,避免设计工作上的浪费,而且也减少了逻辑功能仿真的工作量,提高了设计的一次成功率。a) 设计输入设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能特定综合器(如Synopsys公司的FPGA Compiler II或FPGA Express)作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点,另外,在Altera公司Quartus软件环境下,可以使用Momory Editor对内部memory进行直接编辑置入数据。常用方式是以HDL语言为主,原理图为辅,进行混合设计以发挥二者各自特色。通常,FPGA厂商软件与第三方软件设有接口,可以把第三方设计文件导入进行处理。如Quartus与Foundation都可以把EDIF网表作为输入网表而直接进行布局布线,布局布线后,可再将生成的相应文件交给第三方进行后续处理。b) 设计综合综合,就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是是说,被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。c) 仿真验证从广义上讲,设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对已实现的设计进行完整测试,模拟实际物理环境下的工作情况。前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延迟、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,它是接近真实器件运行的仿真。d) 设计实现实现可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。通常可分为如下五个步骤。转换:将多个设计文件进行转换并合并到一个设计库文件中。映射:将网表中逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块与输入输出块及其它资源中的过程。布局与布线:布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到FPGA内部的物理位置,通常基于某种先进的算法,如最小分割、模拟退火和一般的受力方向张弛等来完成;布线是指利用自动布线软件使用布线资源选择路径试着完成所有的逻辑连接。因最新的设计实现工具是时序驱动的,即在器件的布局布线期间对整个信号通道执行时序分析,因此可以使用约束条件操作布线软件,完成设计规定的性能要求。在布局布线过程中,可同时提取时序信息形成报靠。时序提取:产生一反标文件,供给后续的时序仿真使用。配置:产生FPGA配置时的需要的位流文件。在实现过程中可以进行选项设置。因其支持增量设计,可以使其重复多次布线,且每次布线利用上一次布线信息以使布线更优或达到设计目标。在实现过程中应设置默认配置的下载形式,以使后续位流下载正常。e)时序分析在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。从某种程序来讲,静态时序分析可以说是整个FPGA设计中最重要的步骤,它允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而且报告中含有其它调试信息,比如每个网络节点的扇出或容性负载等。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各通中性能,识别可靠的踪迹,检测建立和保持时间的配合,时序分析器不要求用户产生输入激励或测试矢量。f)下载验证下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。FPGA设计有两种配置形式:直接由计算机经过专用下载电缆进行配置;由外围配置芯片进行上电时自动配置。因FPGA具有掉电信息丢失的性质,因此可在验证初期使用电缆直接下载位流,如有必要再将烧录配置芯片中。使用电缆下载时有多种直载方式,对于Altera公司的FPGA可以选择JTAG方式或Passive Serial方式。因FPGA大多支持IEEE的JTAG标准,所以使用芯片上的JTAG口是常用下载方式。如图2.2为FPGA的设计流程图。 图2.224 VHDL概述1981年,工作小组在美国国防部组织下正式成立,不久提出一种新的硬件描述语言,即VHDL(VHSIC Hardware Description Language,甚高速集成电路硬件描述语言)提出这一语言的目标只是使电路文本化成为标准,目的是为了使文本描述的电路设计能够为其他人所理解,同时也可以作为一种模型语言并能够通过软件进行仿真。如今,大多数的EDA工具都采用VHDL来作为主要的硬件描述语言,这主要源于VHDL强大的自身功能和特点。下面,来讨论一下VHDL的特点。a) 具有强大的描述能力 VHDL既可描述系统级电路,也可以描述门级电路;既可以采用行为描述、寄存器传输描述,也可以采用三者的混合描述方式;同时它也支持惯性延迟和传输延迟,可以方便的建立电子系统的模型。VHDL强大的描述功能主要来自于强大的语法结构和丰富的数据类型。b) 具有共享和复用的能力 VHDL采用给予库的设计方法。库中可以存放大量预先设计或者以前项目设计中曾经使用过的模块,这样,设计人员在新项目设计的过程中,可以直接复用这些功能模块从而大大减少了工作量,缩短了开发周期。由于VHDL是一种描述、仿真、综合、优化和布线的标准硬件描述语言,因此它可以使电子系统设计成果在各个公司、团体或者设计人员之间进行交流和共享。 c) 具有独立于器件和工艺设计的能力 VHDL允许设计人员生成一个设计并不需要首先选择一个用来实现设计的器件;对于一个相同的设计描述,设计人员实际上可以采用不同的器件结构来实现设计描述的功能。同样,如果设计人员需要对设计进行资源利用和性能方面的优化,这时也不要求设计人员非常熟悉器件的内部结构。 同理,设计人员在进行设计时,往往也不会涉及到与工艺有关的信息。当设计人员对一个设计描述进行完编译、仿真、和综合后,可以通过采用不同的映射工具将设计映射到不同的工艺上去。d)具有良好的可移植能力VHDL的可移植能力体现在:对于同一个设计描述,它可以从一个仿真工具移植到另一个仿真工具进行仿真;可以从一个综合工具移植到另一个综合工具进行综合;可以从一个操作平台移植到另一个操作平台执行。VHDL的可移植性源于它是一种标准化的硬件语言,因此同一个设计描述可以被不同的工具所支持。25 Quatus II概述 Quartus II是Altera公司推出的新一代FPGA/CPLD开发软件,适合于大规模复杂的逻辑电路设计。它是Altera公司推出的第四代可编程逻辑器件集成开发环境。Quartus II为设计者提供了从设计输入到器件编程的所有功能。Quartus II设计软件增加了网络编辑功能,提升了调试能力,解决了潜在的设计延迟,为其他EDA工具提供了方便的接口。Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。Quatus II软件能使用户大幅缩短开发周期,支持绝大部分Altera公司的FPGA/CPLD,有强大的整套设计及调试工具,是目前使用最广泛的Altera设计软件。3 MCU的设计总体思路31 MCU的总体结构设计 本次毕业设计的目的是设计一个功能十分简单的16位MCU。考虑到本次论文要设计的MCU系统并不是完整的单片机系统,只有简单的加减法及简单的逻辑运算,所以将设计的重点放在MPU的设计上,重点考虑数据通路以及控制通路。MCU系统的总体构架如图3.1。 图3.132 MCU的设计工具与流程本次毕业设计是遵循自顶向下的设计方法,使用VHDL硬件编程语言对设计进行编程。整个MCU系统的源码是在Altera公司的QuartusII 11.0集成软件开发平台完成的。时序仿真和功能仿真是在Modelsim仿真工具下完成的。首先,根据MCU系统的总体设计思路,用VHDL硬件描述语言对整个系统的所有功能模块进行设计,然后利用Modelsim仿真工具对设计的各模块进行仿真,并得到符合设计规则的仿真波形图。33 MCU的各模块划分 本次毕业设计的MCU系统主要包括程序计数器模块(PC)、输入模块(MAR)、指令寄存器模块(IR)、控制器模块(CU)、累加器模块(ACC)、加减法及逻辑运算器模块(ALU)和B寄存器模块等。下面将逐个详细介绍设计过程以及各模块的仿真结果。3.3.1 程序计数器模块 图3.2如图3.2为程序计数器模块实现后的实体图。它是一个十六位的计数器,计数范围从0到15。主要功能是记录下每一个要执行的指令地址,并且把该地址传送至MAR寄存器存放。程序计数器的部分主要VHDL语言描述如下。if(Clkevent and Clk=1)thenif C5=1 thentemp:=temp+1;elsif C9=1 thentemp:=In_MBR(7 downto 0);else null;end if;Out_MAR=temp;end if;从上面的程序中可以看出,程序计数器的时钟触发边沿是上升沿,指令的地址可以由以下两种方法形成:一个是顺序执行的情况,另一个是遇到要改变顺序执行程序的情况,例如执行JMP指令后,需要形成新的指令地址。下面就详细说明PC地址是如何建立的。复位后,指令指针为零,即每次MCU重新启动将从ROM的零地址开始读取指令并执行。每条指令执行完需要用两个时钟,这时计数器已被增2,指向下一条指令。如果正执行的指令是跳转语句,这时MCU状态控制器将会输出进位信号,通过C9口进入程序计数器。程序计数器将装入目标地址,而不是增2。如图3.3是Modelsim下程序计数器的仿真波形图。图3.33.3.2 MAR输入模块 图3.4如图3.4为MAR输入模块实现后的实体图。这一模块分为MAR、MBR两部分,一个是接受由输入部分输入到RAM内存的外部程序和数据,另一部分是用来在MCU执行上述所加载的程序时,暂存下一个要执行的指令地址。MAR的部分主要VHDL语言描述如下。beginMBR VHDL语言描述beginif(Clkevent and Clk=1)thenif C2=1 thentemp=In_Memory;elsif C10=1 thentemp=In_ACC;else null;end if;end if;end process;MAR VHDL语言描述beginif Clkevent and Clk=0 thenif In_PC=00000000 thenOut_MEMORY=In_PC;elsif C4=1 then Out_MEMORY=In_MBR(7 downto 0); elsif C8=1 then Out_MEMORY=In_PC; end if;end if; 从上面的两组程序中可以看出,MBR的触发边沿是上升沿,当clk=1时MBR开始接受输入到RAM的数据。C2和C10控制线分别控制数据的来源,当C2为1时MBR接受由RAM传送的数据,当C10为1时,MBR接受由累加器ACC传送的数据。然后把接受的数据传送至下一级寄存器。 MAR的触发边沿是下降沿,当clk=0时,MAR开始暂存下一周期所要执行的指令地址。如果信号线C4为1时,MAR暂存由MBR传送过来的地址数据,如果信号线C8为1或者MCU刚刚清零时,MAR寄存由程序计数器PC传送过来的地址数据。如图3.5是Modelsim下MAR寄存器的仿真波形图。图3.53.3.3 指令寄存器模块(IR) 图3.6 如图3.6为指令寄存器模块实现后的实体图。它属于MCU的控制单元,主要是将存放在RAM中的16位数据,通过数据线后读入指令寄存器,然后把数据一分为二,较低的8位是数据部分,会被送往相关的寄存器,而较高的8位属于指令部分,将会被送至下一级的控制器。指令寄存器的VHDL语言描述主要部分如下。if(Clkevent and Clk=1) thenif(C3=1)thentemp=In_MBR(15 DOWNTO 8);else null;end if;end if;end process;Out_CUAddress_outcase Opecode iswhen 00000000 =Address_outAddress_outcase Flag iswhen 1 =Address_out=01110000;c)地址暂存器CAR 地址暂存器的主要作用就是暂存地址译码器传送出来的地址信号,并且把该信号传送至ROM以及地址译码器中进行寻址。当控制信号C0C1为00时,地址译码器会自动把地址数据加1,以进行下一步寻址操作。地址暂存器的VHDL语言描述主要部分如下。Address=Address_in;Address_out=Address;d)指令译码器CBR 地址译码器的主要作用就是把ROM内储存的信息转换成16个1位的控制信号,并传送至系统的各个部件。指令译码器的VHDL语言描述主要部分如下。C0=Control(0);C1=Control(1);C2=Control(2);C3=Control(3); 从上面的程序可以看出,ROM输出的信号已经是16位的控制信号了,指令译码器的作用只是把16位的数据转换成16个1位的控制信号。3.3.5 累加器ACC 图3.9如图3.9为指令寄存器模块实现后的实体图。累加器是一个16位的缓冲寄存器,它是存放目前MCU执行的实时数据的地方。累加器的VHDL语言描述主要部分如下。beginprocess(In_ALU)begin ACC=In_ALU; end process;Out_ALU=ACC; Out_MBROut_ACCOut_ACCOut_ACCOut_ACC=In_BR+1;从上面的程序可以看出,信号线C15到C12是传输运算指令的信号线。通过这四位控制数据线,可以组合出不同的运算指令。运算器ALU可以根据指令信号的不同完成多种运算。其中包括加减法、逻辑运算、移位运算等共11种的运算。例如,当输入信号线C15到C12的数据为0111时,ALU就会对B寄存器储存的数据进行右移。比如当B寄存器储存的的数据为1100110011001100时,经过ALU的右移移位运算后,输出到累加器ACC的数据变为0110011001100110。可以看出,原来的数据经过处理后最高位被做清零处理并且原数据向右移动了一位。如图3.12是Modelsim下运算器ALU的仿真波形图。图3.123.3.7 B寄存器模块BR图3.13如图3.13为B寄存器模块实现后的实体图。B寄存器是用来配合累加器ACC以及运算器ALU来执行加法或减法的。B寄存器的VHDL语言描述主要部分如下。if Clkevent and Clk=1 then if C6=1 then Out_ALU=In_MBR; 从上面的程序可以看出,B寄存器的作用就是暂存从MBR传送过来的数据,然后把数据传送至ALU进行计算。例如执行A+B指令,首先数值B被加载到B寄存器,然后把存放在累加器ACC中的数值A和B寄存器中储存的数值B同时传送至运算器ALU进行加法运算,最后相加的结果会被再次传送至累加器ACC。如图3.14是Modelsim下B寄存器BR的仿真波形图。图3.143.3.8 ROM以及RAM模块本次毕业设计中的ROM以及RAM模块使用QuartusII的MegaWizard Plug-In Manager中的宏功能模块进行设计。Altera器件提供了一系列宏功能模块供设计者使用,如片上存储器、DSP模块、LVDS驱动器、嵌入式PLL及SERDES和DDIO电路等。这些模块的应用主要是为了提高EDA电路设计的效率和可靠性。设计者只要根据实际电路的设计需要,选择LPM库中的适当模块,为其设定适当的参数,便可以满足自己的设计指标,从而成功地达到优秀电子工程师的设计成果。LPM功能模块内容丰富,每一模块的功能、参数含义、使用方法、硬件描述语言、模块参数设置及调用方法都可以在Quartus II的帮助文档中查到。MegaWizard Plug-In Manager中的宏功能可以帮助用户完成一些复杂系统的设计,并可以方便的对现有的设计文件进行修改。这些宏功能包括LPM、MegaCore和AMPP,本次的设计利用的是MegaWizard Plug-In Manager宏功能中的LPM进行ROM及RAM的设计。a) 建立存储器初值设定文件为了将数据装入ROM中,在加入并设置ROM之前,应该首先建立一个存储器初值设定文件(.mif文件)。建立存储器初值文件的操作如下。在QuartusII集成环境下,执行File-New命令,打开一个新的Memory initialization file 编辑窗口,弹出如图3.15所示的存储器参数设置对话框,在里面输入存储器的字数以及字长。图3.15存储器参数设置结束之后,弹出如图3.16所示的存储器初值设定文件的界面,并把数据加载进存储器初值设定文件中,新建的存储器初值文件中的数据全部为0,可以直接输入每个存储器字的数据,也可以右击文件界面,在弹出的操作快捷菜单中完成数据输入。图3.16b)加入只读存储器ROM元件双击原理图编辑窗口,在弹出的元件选择窗口中选择只读存储器ROM的LPM文件,如图3.17所示。在弹出的如图3.18所示的MegaWizard Plug-In Manager对话框中,选择VHDL作为输出文件的类型,并且将生成的只读存储器名称及保存的文件夹输入相应的地方。图3.17图3.18完成上述操作后,在弹出的MegaWizard Plug-In Manager-LPM_ROMpage3of7(如图3.19)对话框中设置ROM的q输出的属性。图3.19完成上述操作后,单击NEXT按钮,进入ROM参数设置的MegaWizard Plug-In Manager-LPM_ROMpage4of7(如图3.20)。此对话框用于选择ROM的clken。图3.20完成上述操作后,单击NEXT按钮,进入ROM参数设置的MegaWizard Plug-In Manager-LPM_ROMpage5of7(如图3.21)。这个对话框是用来设置ROM的测试和读写方式。图3.21最后进入MegaWizard Plug-In Manager-LPM_ROMpage7of7。这是ROM参数设置的最后一个对话框,它主要用于选择要生成的ROM的输出文件。这样ROM的参数设置完成,单击Finish结束设置。由于本次设计的RAM只有只读功能,所以这个RAM和ROM实际上是相同的。因此,LPM_RAM的设置和LPM_ROM的设置相差无几,所以本文中不再赘余。如图XXX是ROM以及RAM模块的实体图。3.3.9 MCU的总体结构图 如图3.22是MCU的总体结构图。4 MCU的指令系统及指令周期4.1 MCU的指令系统本次毕业设计的MCU的指令共有12个,如表4.1所示。表4.1指令 地址 机器码 LOD 00H 0000 0000ADD 01H 0000 0001SUB 02H 0000 0010AND 03H 0000 0011OR 04H 0000 0100NOT 05H 0000 0101LSF 06H 0000 0110RSF 07H 0000 0111ZEO 08H 0000 1000SAD 09H 0000 1001SSU 10H 0000 1010OPP 11H 0000 1011MCU指令系统决定它能够有那些功能,并针对这些功能添加相应的指令集,直接寻址、寄存器寻址、寄存器间接寻址和变址寻址。根据指令的数量对指令进行编码,指令功能不同占的长度不同,按指令长度可以分为单字指令和双字指令。本次设计的MCU的指令共有12个,分别是0000装载指令、0001加法指令、0010减法指

温馨提示

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

评论

0/150

提交评论