基于FPGA的微处理器设计毕业设计_第1页
基于FPGA的微处理器设计毕业设计_第2页
免费预览已结束,剩余46页可下载查看

下载本文档

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

文档简介

1、基于FPGA的微处理器设计毕业设计(论文)设计(论文)题目基于FPGA的微处理器设计摘要ABSTRACTii本文使用结构化编程方法,将微处理器内核按照功能划分为不同的模块,采用 VHD 语言设计每一个模块的内部功能和外围接 口,设计实现了一种基于 FPGA 芯片的微处理器系统。矚慫润厲钐瘗睞枥庑赖。该微处理器主要由控制器、运算器和寄存器组成,具有指令控制、操作控制、时间控制和数据加工等基本功能,可实现四位 操作数的各种运算,其指令长度为16 位定长,采用了直接寻址方式。最后采用 QUARTUSI 对设计进行了仿真测试,结果表明设计 实现了微处理器的主要功能 。聞創沟燴鐺險爱氇谴净。关键字:FP

2、GA 微处理器,VHDLABSTRACTIIIABSTRACTA microprocessor on FPGA is realized by using structuredprogram ming. This microprocessor core is divided into several different fun cti on modules which are desig ned using VHDL.残骛 楼諍锩瀨濟溆塹籟。The microprocessor con sists of con troller, arithmetic unit andregisters. It

3、realizes the instruction control, operation control, timesequenee control and data processing functions. The directaddressing mode is adopted. The various operations for 4bit opera ndcan be achieved. Its in structi on len gth is 16 bit.酽锕极額閉镇桧猪訣锥。The design is simulated by using QUARTUSII, and the r

4、esultsshow that the main functions of a microprocessor are achieved.彈贸摄尔霁毙攬砖卤庑。Key Words:FPGA,CPU,VHDL目录目 录摘 要.II謀荞抟箧飆鐸怼类蒋薔。ABSTRACT. III厦礴恳蹒骈時盡继價骚。第 1 章 绪论.1茕桢广鳓鯡选块网羈泪。1.1 背景.1鹅娅尽損鹌惨歷茏鴛賴。1.2 微处理器的概况.1籟丛妈羥为贍债蛏练淨。1.3 课题研究方法及技术背景 .2預頌圣鉉儐歲龈讶骅籴。1.3.1 研究方法. 2渗釤呛俨匀谔鱉调硯錦。1.3.2 技术背景 . 2铙誅卧泻噦圣骋贶頂廡。1.4 课题工作内容

5、 .3擁締凤袜备訊顎轮烂蔷。第二章微处理器体系结构 .4贓熱俣阃歲匱阊邺镓騷。2.1 CPU 的功能和构成 .4坛搏乡囂忏蒌鍥铃氈淚。2.2 指令系统分析 .5蜡變黲癟報伥铉锚鈰赘。2.2.1 RISC 与总线结构.5買鯛鴯譖昙膚遙闫撷凄。2.2.2 指令系统 . 6綾镝鯛駕櫬鹕踪韦辚糴。2.3 指令时序分析 .8驅踬髏彦浃绥譎饴憂锦。2.3.1 RISC 与流水线 .8猫虿驢绘燈鮒诛髅貺庑。2.3.2 程序计数器与流水线 .9锹籁饗迳琐筆襖鸥娅薔。2.4 CPU 整体结构即设计思想 .9構氽頑黉碩饨荠龈话骛。2.4.1 CPU 的外部引脚规戈 U .9輒峄陽檉簖疖網儂號泶。2.4.2 CPU

6、 的整体框图 . 10尧侧閆繭絳闕绚勵蜆贅。2.4.3 CPU 结构的层次戈 U 分 . 11识饒鎂錕缢灩筧嚌俨淒。第三章 CPU 数据通路设计.12凍鈹鋨劳臘错痫婦胫籴。3.1 程序计数器模块 PC.12恥諤銪灭萦欢煬鞏鹜錦。3.2 程序存储器 PC_RAM.13鯊腎鑰诎漣鉀沩懼統庫。3.3 指令寄存器模块.14硕癘鄴颃诌攆檸攜驤蔹。3.4 时钟发生器模块.15阌擻輳嬪諫迁择植秘騖。3.5 寄存器堆 TRAM.15氬嚕躑竄贸恳彈濾颔澩。3.6 ALU 模块 .16釷鹆資贏車贖孙滅獅赘。第四章 CPU 控制单元的设计.18怂阐譜鯪迳導嘯畫長凉。4.1 控制器 Control 模块.19谚辞調担

7、鈧谄动禪泻類。4.2 有限状态机 FSM 模块. 19嘰觐詿缧铴嗫偽純铪锩。4.2.1 有限状态机 . 19熒绐譏钲鏌觶鷹緇機库。4.2.2 利用的 VHDL 语言进行状态机描述 .20鶼渍螻偉阅劍鲰腎邏蘞。第五章 RISC CPU 勺仿真验证 .21纣忧蔣氳頑莶驅藥悯骛。5.1 各模块的组合 .21颖刍莖峽饽亿顿裊赔泷。5.2 综合 RTL 电路图 . 22濫驂膽閉驟羥闈詔寢賻。5.3 RISCCPU 勺功能仿真验证 . 25銚銻縵哜鳗鸿锓謎諏涼。5.3.1 算术运算类指令验证 .25挤貼綬电麥结鈺贖哓类。5.3.2 逻辑运算类指令验证 .26赔荊紳谘侖驟辽輩袜錈。5.3.3 移位类指令验证

8、. 26塤礙籟馐决穩賽釙冊庫。5.3.4 LD 数据输出指令仿真 .27裊樣祕廬廂颤谚鍘芈蔺。目录5.3.5 ST 运算数据存储仿真 .27仓嫗盤紲嘱珑詁鍬齊驚。目录5.4 总结.28第六章总结和展望. 29参考文献.30绽萬璉轆娛閬蛏鬮绾瀧。骁顾燁鶚巯瀆蕪領鲡赙。瑣钋濺暧惲锟缟馭篩凉。鎦诗涇艳损楼紲鯗餳類。栉缏歐锄棗鈕种鵑瑶锬。致谢.错误!未定义书签。附录.31山东大学威海分校毕业设计(论文)1第 1 章绪论1.1 背景随着数字通信和工业控制领域的高速发展, 超大规模集成电路的集成度和工 艺水平不断提高,要求专用集成电路(ASIC)的功能越来越强,功耗越来越低,生 产周期越来越短,这些都对芯

9、片设计提出了巨大的挑战, 传统的芯片设计方法已 经不能适应复杂的应用需求了,将整个应用电子系统集成在一个芯片中(SOC) ,已成为现代电子系统设计的趋势。简单来说,SOC 是一种将多个独立的 VLSI 设计拼合在一起,来形成某一应用所需的全部功能的集成电路,以其高集成度、低功耗等优点越来越受欢迎。辔烨棟剛殓攬瑤丽阄应。中国的电子信息产业现在增长迅速, 主要集中在移动通信设备、数据通信设 备、计算机及消费产品领域。考虑到我国电子信息市场的特殊性, 即巨大的移动 通信和数字家电市场的核心芯片主要依赖进口的状况。巨大的市场的需求决定了 开发 SOC的必要性,现在数字家电的片上系统研究己经成为研究的热

10、点之一。研究 SOC 的设计方法和验证方法具有很大的现实意义2-3。其中 CPU 是 SOC 的重要组成部分,可以完成简单的数据处理,内存的调度,中断处理等操作。随着百万门 级的FPGA 芯片、功能复杂的 IP 核、可重构的嵌入式处理器核以及各种强大 EDA 的开发工具的迅速发展,使得设计者在 EDA 工具的帮助下完成整个系统从行为算 法级到物理结构级的全部设计,并最终将一个电子系统集成到一片FPGA 中,即SOPC。可见,SOPC 是基于 FPGA 解决方案的 SOC,是 SOC 发展的新阶段。峴扬爛 滾澗辐滠兴渙藺。1.2 微处理器的概况微处理器是计算机系统中非常之重要的核心组成部分,它用

11、来控制计算机的 各种操作过程,通常也被称为 CPU 即中央处理器。随着科学技术的迅速发展, 微处理器的发展也是非常迅速,它的处理能力已经由过去的4 位发展到现在的 64位,运算能力和处理能力大大提高,应用领域也从计算机系统扩展到各个相关领 域,例如通信、航天和工业控制等。通常,微处理器按照处理能力可以划分为4位、8 位、16 位、32 位和 64 位微处理器,它的处理能力是逐步提高的。但是,在 微控制器的发展过程中,8 位机始终是嵌入式低端应用的主要机型4。詩叁撻訥烬忧毀 厉鋨骜。现今市场上流行的典型的 8 位微控制器,可以在各种 FPGA 上实现,设计灵活 方便而且易于进行功能扩展。因此研究

12、 8 位 CPU 内核具有广泛的现实意义,由于其 具有较高的处理性能和较少的资源占用,故具有更加广泛的应用前景。则鯤愜韋瘓賈晖园栋泷。1.3 课题研究方法及技术背景1.3.1 研究方法山东大学威海分校毕业设计(论文)2本课题使用硬件描述语言 VHD 采用自顶向下的设计方法设计一个满足要求 的 8位 CPU 内核及外部接口,使用 EDA 软件 QUARTUSII 软件完成编码、仿真验证。 自顶向下的设计方法就是设计者首先从整体上规划整个系统的功能和性能,然后利用功能分割手段对系统进行划分,分解为规模较小、功能较简单的局部模块, 并确立它们之间的相互关系,将设计由上至下进行层次化和模块化,即分层次

13、、 分模块地对电子系统进行设计和仿真。 不难看出,采用自顶向下的设计方法实际 上就是基于芯片的系统设计方法,这种方法有助于在设计早期发现结构设计中的 错误,提高设计成功率。胀鏝彈奥秘孫戶孪钇賻。1.3.2 技术背景1.硬件描述语言 VHDL如今,大多数的 EDA 工具都采用 VHDL 作为主要的硬件描述语言,这主要 源于VHD 强大的自身功能和特点,下面介绍一下 VHDL 的优点。鳃躋峽祷紉诵帮废掃減。(1) 具有强大的描述能力VHDL 既可以描述系统级电路,也可以描述门电路;既可以采用行为描述、 寄存器描述或者结构描述,可以方便地建立电子系统模型。稟虛嬪赈维哜妝扩踴粜。(2) 具有共享与复用

14、能力VHDL 采用基于库的设计方法,从而大大减少了工作量,缩短了开发周期。(3) 具有独立于器件和工艺设计的能力VHDL 独立于器件的特点可以使设计人员集中精力来进行电子系统的设计 和性能优化,而不需要考虑其他问题。(4) 具有良好的可移植能力。VHDL 的可移植性源于它是一种标准化得硬件语言,因此同一个设计描述 可以被不同的工具所支持。(5) 具有向 ASIC 移植的能力。2.CISC 指令集和 RISC 指令集CISC 是一种为了便于编程和提高内存访问效率的芯片设计体系。早期的计 算机使用汇编语言编程,由于内存速度慢且价格昂贵,使得 CISC 体系得到了用 武之地。它的设计目的是要用最少的

15、机器语言指令来完成所需的计算任务。 后来 功能需求越来越丰富,因此越来越多的复杂指令被加入到指令系统中, 但是还必 须保持着前向的兼容性。内容的不断扩充和兼容性的考虑,导致庞大的 CISC 指 令系统形成了。在20 世纪 90 年代中期之前,大多数的微处理器都采用 CISC 体 系包括 In tel 的 80 x86和 Motorola 的 6sK 系列等。陽簍埡鮭罷規呜旧岿錟。CISC 体系结构几乎没有考虑流水线的因素,使得指令执行起来耗时而且寻 址复杂。 1975 年, IBM 的设计师提出了一种新的体系结构和指令集设计方案,这就是 RISC体系结构。典型的 RISC 处理器具有以下特点:

16、沩氣嘮戇苌鑿鑿槠谔應。(1) 指令功能简单,各指令的复杂度分布均衡,有利于形成流水线;(2)控制电路简单,多采用硬连线方式来实现。因为不需要额外的存取微程序存储器来完成指令的执行,因此可以直接使用硬连线方式来设计;钡嵐縣緱虜荣产涛團蔺。(3)指令定长,指令格式简单,指令编码固定。这样字段固定,使操作码得译码与操作数的存取可以同时执行,使得控制单元的设计简单化;懨俠劑鈍触乐鹇烬觶騮。山东大学威海分校毕业设计(论文)3(4)ALU 指令和访存指令分开,并且访存种类很少。(5)以寄存器对寄存器的运算为主。寄存器对寄存器的运算有助于减少对存 储器的访问次数,提高数据的存取速度7-8。謾饱兗争詣繚鮐癞别

17、濾。1.4 课题工作内容本文一共分为七章。各章节内容安排如下:第一章绪论。第二章微处理器的体系结构。研究了 CPU 的整体设计,指令系统和时序分 析以及流水线的实现。第三章 CPU 数据通路设计。详细介绍了通路模块中的程序计数器、指令寄 存器、程序存储器等的具体设计和功能实现。第四章 CPU 控制单元的设计。详细介绍了控制单元中的控制器和状态机的 设计和功能实现。第五章 CPU 的仿真验证。验证 CPU 的部分功能。第六章总结和展望。山东大学威海分校毕业设计(论文)4第二章微处理器体系结构2.1CPU的功能和构成CPU 是计算机的核心组成部分。计算机进行信息处理可分为以下两个步骤9(1) 将数

18、据和程序(即指令序列)输入到计算机的存储器中;(2) 从第一条指令的地址开始执行该程序,得到所需的结果,结束运行。CPU 的作用是协调和控制计算机的各个部件,并执行程序的指令序列,使 其有条不紊的进行,因此必须具备以下基本功能:呙铉們欤谦鸪饺竞荡赚。取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序, 为此要发出指令的地址及相关的控制信号;分析指令:即指令译码,既对当前所取的指令进行分析,指出它要求什么 操作,并产生相应的操作所需要的控制命令;执行指令:根据分析指令时产生的“操作命令”形成相应的操作控制序列, 通过运算器、存储器及输入输出的执行,实现每条指令的功能,其中包括对运算

19、结果的处理及下条指令地址的形成。莹谐龌蕲賞组靄绉嚴减。将 CPU 的功能进一步细化,可以概括如下。(1) 能对指令进行译码并执行规定动作;(2) 可以进行算术和逻辑运算;(3) 能与存储器和外设交换数据;(4) 提供整个系统所需的控制。尽管各种 CPU 的性能指标和结构细节各不相同, 但它们所能完成的基本功 能相同,简化 CPU 内部结构如图 2-1 所示。CPU内M总线算术和逻辑卑兀算术和逻辑卑兀山东大学威海分校毕业设计(论文)5图 2-1 简化 CPU 内部结构2.2 指令系统分析指令系统结构是微处理器体系结构的一个重要部分,是微处理器设计的基 础。指令格式、寻址方式和指令系统是指令系统结

20、构的重要方面。目前主流CPU指令可以分为 RISC 和 CISC,由上节介绍可知,RISC 微处理器指令系统的指令 种类少而经,寻址方式简单,指令格式固定,所以本次设计采用RISC 指令系统納畴鳗吶鄖禎銣腻鰲锬。2.2.1 RISC 与总线结构早期的计算机一般都采用冯.诺依曼(Von Neuma nn)结构,CISC 架构的微 处理器常采用这种结构。它是在同一个存储空间取指令和数据,采用单地址总线 结构,即程序存储器和数据存储器共用一条地址总线, 限制了工作带宽,使得控 制电路复杂,功耗较大10-11。结构见图 2-2 所示:風撵鲔貓铁频钙蓟纠庙。这种结构有两个明显的缺点:(1) CPU 中控

21、制器和运算器的速度必须与存储器的速度相匹配;(2) 指令和数据的流动都通过同一条总线,使指令和数据的独立性消弱;目前,RISC 架构的微处理器都采用哈佛结构,这种结构具有分离地址总线的两个存储器,其中一个放程序,另一个放数据,其指令和数据空间完全分开, 可以同时访问,且一次读出,简化控制电路,提高数据的吞吐率12。结构如图 2-3 所示。灭暧骇諗鋅猎輛觏馊藹。CPU指令存储器指令存储器 * * 控制器控制器图 2-2 冯.诺依曼结构图山东大学威海分校毕业设计(论文)6运算器运算器 * *- 數据存储器數据存储器山东大学威海分校毕业设计(论文)7图 2-3 哈佛结构图这种结构的优点是:(1)允许

22、数据从程序存储器传递到 SRAM,该功能也允许从程序存储器中读取数据表。这对现代微控制器应用十分重要,因为为了使掉电后数据表不丢失,就要将它放在程序存储器中,RISC 架构很好地解决了这个问题。铹鸝饷飾镡閌赀诨癱骝。(2)读取指令和存储器数据交换可以在多步流水线中同时进行,这在冯诺依曼单地址总线结构中很难实现。攙閿频嵘陣澇諗谴隴泸。基于以上两种体系结构特点的比较,本文设计的微处理器器采用了哈佛结构 的体系结构。首先,哈佛结构的指令总线和数据总线分开,可以使用不同位宽的 指令和数据,还有一个最大好处就是可以预取指令,这样对流水线是很有用的。 其次,该微处理器实现了两级指令流水线, 采用哈佛结构可

23、使流水实现的难度大 为降低,在采用流水线后,能够有效地提高指令的执行速度。再次,该微处理器 采用了硬布线逻辑代替微程序控制的方法,提高了指令的执行速度和效率。趕輾雏纨颗锊讨跃满賺。2.2.2 指令系统本文设计的微控制器采用两级流水线、指令长固定、指令密度适中、控制单 元简单的类似 RISC 指令集,本文自定义指令集,该指令集仅有 20 条指令,寻址 方式简单。每条指令的字长都是 16 位,包含足够的信息:指令操作码,源操作数 地址,目的操作数地址,立即数13-14。夹覡闾辁駁档驀迁锬減。1、指令集表 1 是本文所涉及的 CPU 所有指令的一个集合指令名称指令操作影响标志位周期算术与逻辑类指令A

24、DD R1,R2Add Two RegisterC1SUB R1,R2Sub Two RegisterZ1AND R1,R2And Two RegisterZ1OR R1,R2Or Two RegisterZ1位操作指令LSL R1Logical Shift LeftNone1LSR R1Logical Shift RightNone1数据传送类指令MOV R1,#11Move Between RegisterNone1LD R1Load Immediate from RegisterNone1SD R1Store Result to RegisterNone1山东大学威海分校毕业设计(论文)

25、8停机指令SLEEPSleep(Wait for )NoneAny2、 寻址方式本文指令系统的寻址方式为下面两种直接寻址方式:(1)单一寄存器寻址。操作数在目的寄存器;(2)双寄存器寻址。操作数分别在目的寄存器和源操作寄存器中。3、 指令格式定义正如以前所提到的,RISC 总是有固定长度以便于译码。对设计的微处 理,每个指令都是固定的 16 位长度,其中操作码占用 16 位指令字的高 4 位。所有的指令码都很容易译码。对两个寄存器的指令,d 选择目的寄存器, r 选择源寄存器,4 位可以寻址16 个寄存器,这种指令格式包括 ADD,SU B,AND,OR。视絀镘鸸鲚鐘脑钧欖粝。1514 131

26、211109876543210rrrrdddd对于仅需要一个寄存器的指令,d 用来寻址目标寄存器。这种指令格式 包括 LD,LSL,LSR 指令。1514 131211109876543210dddd对于立即数指令,指令中间 8 位是 8 位常数,其中 H 代表常数的高四位, L 代表常数的低四位,d 用来寻址目的寄存器。这种指令格式包括 MOV, SD。偽澀锟攢鴛擋緬铹鈞錠。1514 131211109876543210LLLLHHHHdddd4、指令编码确定了指令的格式,就可以对指令进行编码,这样指令就有唯一的身 份识别。指令编码结果如表 2 所示。表 2 指令编码指令类型指令机器码ADD

27、00010000r r r rd d d dSUB00100000r r r rd d d dAND00110000r r r rd d d dOR01000000r r r rd d d dLSL010100000000d d d dLSR011000000000d d d dMOV0111LLLLHHHHd d d dST100000000000d d d dLD100100000000d d d dSLEEP1011000000000000山东大学威海分校毕业设计(论文)92.3 指令时序分析2.3.1 RISC 与流水线指令的执行分成两个阶段:取指阶段和执行阶段。在取指阶段,指令机器码

28、 被取到指令寄存器,控制单元通过译码知道这是个什么样的指令,需要执行什緦 徑铫膾龋轿级镗挢廟。么样的操作,需要什么操作数;在执行阶段当前指令以及取指完毕, 上一条指令 被执行。这样按顺序第 1 条指令执行完再取第 2 条指令,第 2 条执行完在取第 3 条指令的顺序执行方式执行一条指令最少需要两个时钟周期,如果执行10 条指令那么就得需要 10 个时钟周期,显然这样指令的执行效率不高。为了解决这个 问题,本次设计中引入了流水线(pipeline)操作。8 位 CPU 采用两级流水线技术, 指令的流水线可以用图 2-4 来简单的示意:騅憑钶銘侥张礫阵轸蔼。- -周期周期1”周期芸,*周期3.k周

29、期丄JX取指取指执行执行取指取指执行执行取指取指执行执行图 2-4 流水线指令执行由图可以看出,尽管每条指令的完成需要两个周期的时间,但是在流水线结 构中,当前指令的取值周期和上一条指令的执行周期在时间上是重叠的, 对于这 种并行操作,从平均角度来看,相当于一个周期内完成一条指令,因此可以大大 提高指令的运行速度15。疠骐錾农剎貯狱颢幗騮。RISC 架构的处理器,每条指令有固定的长度,指令格式只有简单的几种,指令功能不交叉,寻址方式也简单,所以更加有利于实现流水结构。镞锊过润启婭澗骆讕濾。为了降低执行每条指令所需时钟数, 本文也采用两级流水,其功能分别定义 为:第一级,取指;第二级,时钟前半周

30、期控制器译码、发出控制信号,时钟后 半周期进行对寄存器堆 TRA 进行读操作、ALU 计算。这样,很显然也能降低执行 指令所需的时钟数,取指、执行只用了一个时钟。在时钟上升沿PC 产生进入PCRAM 的地址,由于 PCRAM 有反应时间,经过一段很短的时间读出指令,在 下一个时钟上升沿到来时,指令寄存器锁存指令,然后开始对指令进行译码,并 产生操作数、目的存储器/寄存器地址、写信号及各种控制信号。榿贰轲誊壟该槛鲻垲赛。2.3.2 程序计数器与流水线程序计数器(PC)是程序中寻址取得指令的特殊单元。正是靠 PC 的移动,CPU才能一条一条的执行指令。同时,程序计数器也是和流水线密切相关的单元。

31、在程序开始执行前,CPU 将它的起始地址送入 PC,当指令执行时,CPU 将自动 修改 PC 的内容,所以 PC 中的内容总是下一条指令的地址。 由于指令通常是顺序 执行的,所以山东大学威海分校毕业设计(论文)10修改的过程通常只是简单的 PC 加 1。表 2 说明了在引入流水线后 PC 的具体工作情况:邁茑赚陉宾呗擷鹪讼凑。表 3 指令执行中 PC 值的变化情况时钟周期Reset周期 1周期 2周期 3周期 4PC01234第一条指令读取指令 0执行指令 0第二条指令读取指令 1执行指令 1第三条指令读取指令 2执行指令 2表 3 表明,在系统复位时,PC 内的值清 0,第一个时钟周期,指令

32、寄存器 取 PC为 0 的地址的指令,同时 PC 的值加 1;第二个时钟周期,执行 0 地址的 指令,同时读取地址 1 的指令,同时 PC 的值加 1;第三个时钟周期,重复这样 的过程。这样可以得到结论:如果当前 CPU 正在执行的是第 N 条指令,那么指 令寄存器正在读取的是 N+1条指令,此时 PC 的值应该是 N+2。嵝硖贪塒廩袞悯倉華糲。2.4 CPU 整体结构即设计思想在设计 CPU 之前整个结构的特性及由哪些模块组成,这些模块之间的 互连关系以及整个 CPU 的最后输出信号等都是要事先定义好的。2.4.1 CPU 的外部引脚规划从 CPU 外部看整个输入输出如图 2-5山东大学威海

33、分校毕业设计(论文)11R7.,.OC4wdddr7, ,0wdata15,0CPU图 2-5 CPU 外部引脚信号该 CPU 有 5 个输入引脚,1 个结果输出端口以及一个运算溢出信号。系统 的时钟信号将直接驱动驱动整个 CPU。WR 信号是系统的异步指令输入信号,高 电平有效。当 WR 信号有效时,整个 CPU 进入指令输入状态,当 WR 低电平时 CPU 进入指令读取并完成指令操作的状态,当 CPU 完成全部输入指令时进入停 机状态,此时Start 信号重新启动 CPU,使其进入等待状态。该栎谖碼戆沖巋鳧薩锭。2.4.2CPU 的整体框图系统的顶层结构模块图如图 2-6该模块包含了系统的

34、主要模块及它们之间的连接关系。 图中的一个一个的 模块代表了各个功能模块,将在下面的章节中分别做详细的设计说明。每个模块 都将按照 EDA 设计中自下而上的设计原则分别独立设计。 有些模块是比较简单的 像指令寄存器(IR),有些模块则是比较难的像 ALU 模块和控制单元模块。劇妆诨貰 攖苹埘呂仑庙。elkwr取指单元取指单元执行单元执行单元山东大学威海分校毕业设计(论文)12在设计微处理器的功能模块之前,需要决定如何逻辑实现和处理器锁存数 据。微处理器中有两种不同的逻辑元件:(1)ALU、MUX、CONCROL 单元的元件都是组合逻辑电路。它们的输出仅仅依赖于当前的输入状态,没有内部存储功能;

35、臠龍讹驄桠业變墊罗蘄。(2)寄存器堆、临时寄存器都是状态单元,它的输出不仅依赖于输入,还有 其自身内部的状态。时钟用来决定状态何时被写入,一个状态可以在任意时 刻读取。鰻順褛悦漚縫輾屜鸭骞。微处理器的时钟采用边沿触发的方式, 整个系统采用单时钟电路,即提供一 个系统时钟,每当时钟边沿到来的时候,向状态单元写入数据。穡釓虚绺滟鳗絲懷紆泺。整个系统可以分为两个单元:取指单元,执行单元。取指单元负责取下条指 令,执行单元负责执行当前指令。取指单元和执行单元共同构成了CPU 的微控制单元。取指单元的第一个模块是程序计数器(PC),PC 中是下条要执行的指令 的地址,它是指向程序存储器单元(PROM)来

36、寻址指令的。控制模块是对从指令 寄存器(IR)送出指令进行译码从而发出适当的控制信号执行程序的。隶誆荧鉴獫纲鴣攣駘賽。系统中包括了很多寄存器的设计包括指令寄存器 (IR),程序计数器(PC),这些寄存器大都在我们顶层可见的模块的内部, 系统的工作也可以看作就是数据 在这些寄存器之间的“迁移”,也即寄存器内容的迁移。微处理器的功能就是体 现在这些这些数据是如何传递的, 在传递前的处理是如何处理的,所有这一系列 寄存器数据之间的迁移转换就组成了微处理器。浹繢腻叢着駕骠構砀湊。243 CPU 结构的层次划分正确合理的划分系统是所有数字系统设计成功的关键。子系统的划分过程就是把总体任务划分程若干分任务

37、的过程。本设计将 CPU 分解为两大子系统:数 据通路和控制通路。这种划分将 CPU 的运算、执行单元与控制部件分离开,是 非常合理、自然的。数据通路和控制通路这两大部分又可以细化为更小的模块,ALU 模块(算术逻辑单元)、PC_RAM 模块(程序存储器)和 IR (指令寄存器)、 TRAM (寄存器堆)属于数据通路部分,ALU 内部又包含更小的模块(加、减、与、或、移位模块) ;控制模块属于控制通路部分,其中控制模块又由FSM (状态机)和 CONTROL (控制器)构成。具体的模块功能实现将在下面两章中详细 介绍。鈀燭罚櫝箋礱颼畢韫粝。山东大学威海分校毕业设计(论文)13第三章CPU数据通

38、路设计从这一章开始将详细介绍整个 CPU 的细化设计模块。通过上一章对 CPU 的 结构划分,已经知道 CPU 的整个设计分为两个部分:数据通路和控制单元。在 这一章中将细分数据通路模块,数据通路是 CPU 中的执行部件,数据传输、存 储、处理都是在数据通路中完成的。在整个 CPU 的结构框图中,除了控制单元 部分,其余部分都是数据通路部分,包括程序计数器 PC、程序存储器 PC_RAM、 指令寄存器 IR、寄存器堆 TRAM、数据选择器 ALUMUX 和算术与逻辑单元 AL U。惬執缉蘿绅颀阳灣愴鍵。设计数据通路,有两种不同的设计方案。第一种是在所有需要传送数据的部 件创建一条直接通路,采用

39、多路选择器或者缓冲器为那些有多个数据源的寄存器 从多个可能的输入中选择一个,这种方案适用于规模比较小的微处理器设计。另一种方案是在微处理器内部创建一条总线,并且在各个部件之间使用总线传数 据。本设计采用的是第一种方案的设计方法。下面将一一介绍数据通路的各个模 块功能及其实现。贞廈给鏌綞牵鎮獵鎦龐。3.1 程序计数器模块 PC程序计数器(PC)作为指向指令地址“指针”,决定着下一条要执行的指令。正是有了 PC 的移动和变化,CPU 才能按一定的顺序或预想的情况进行指令的执山东大学威海分校毕业设计(论文)14行。程序计数器 PC 中存放指令存储器的地址,当一条指令被执行时,程序计数 器存放下一条指

40、令的地址。在正常工作的条件下,控制信号选择PC+1 作为下一个 PC 的值输出;当执行 JMP 指令时,选择来自指令中的跳转地址决定新的 PC 值,但是在本次设计中没有涉及到。嚌鳍级厨胀鑲铟礦毁蕲。AHpc_out7, Q-nrst-pjincPC图 3-1 PC 模块外部接口信号图 3-1 所示是从外部看的 PC 模块的接口。其中输出的 PC 是 8BitS 宽的,因 此PC 模块可以寻址独立的 256 个单元。PC_OUT 地址输出信号是直接与程序存 储器PCRAM 相连的。PCNC 控制信号来自控制单元,若 PC_INC 有效则 PC 将执行加1 操作。EN 信号是程序计数器 PC 的使

41、能控制信号,只有当该信号有 效时 PC 的相应才能操作才能执行。薊镔竖牍熒浹醬籬铃騫。3.2 程序存储器 PC_RAM程序存储器是存储微处理器程序,即能执行特定功能的一组指令组合。图3-2 显示了程序存储器的结构图。在设计程序存储器模块时,本文是自行设计寄存器堆型的存储器,直接使用 一个数组存放二进制数据,通过 VHDL 编写一个一定长度的数组实现。因为程 序计数器可以寻址到 256 条指令,所以程序存储器也必需可以至少存放128 条 16位的指令,这样只需申请一个变量 Ram,有 256 个元素,每个元素 16 位即可。第一个数组兀素下标表示存贮器的 0 号地址,第二个数组兀素下标表示 1

42、号地址,以 此类推至第 256 个数组元素的下标,即 11111111 号存贮器地址。齡践砚语蜗铸转絹攤濼。山东大学威海分校毕业设计(论文)15程序存储器是一个可读可写的模块, 其输入端口接入外围程序和地址输入端口,由 WR 异步控制其读写状态,WR 高电平有效。当 WR 有效时,程序存 储器为写状态,即将输入程序存入其输入地址对应的存储单元中,即执行操作ram(conv_integer(waddr) = wdata;当 WR 为低电平时,程序存储器处于读状 态,其将程序计数器输出地址PC_OUT 上 对应的存储单元中的指令输出,即执行操作 instruction waddr7,.0- wda

43、ta15.-0PC PM山东大学威海分校毕业设计(论文)16J图 3-4 指令寄存器外部接口图 3-4 所示,指令寄存器的指令流向是:4 位操作码 IR 指令送往控制单元已做 译码使用,而根据不同指令分离出来的要操作的立即数DATA、源操作寄存器RR、目的操作寄存器 RD 送到寄存器堆 TRAM 模块。指令寄存器外部输入控制信 号en 是来自控制单元的输入信号,En 高电平有效,与 PC 模块的使能 en 信号功能 上基本一致,它控制着指令寄存器是否可以从程序存储器中加载指令。当 en 有效时指令寄存器才能更新来自程序存储器的指令。撷伪氢鱧轍幂聹諛詼庞。3.4 时钟发生器模块时钟发生器 TIM

44、E_CTRL 利用时钟信号 CLK 生成从时钟信号 CLKR,并送往 CPU的寄存器堆 TRAM 中,作为其进行读写操作的时钟信号。 CLKR 是将 CLK 延迟半个周期产生的,有利于流水线的完成。踪飯梦掺钓貞绫賁发蘄。时钟发生器的外部接口如图 3-5。ckclkrTIME CTRL图 3-5 时钟发生器的外部接口3.5 寄存器堆 TRAM寄存器堆与程序存储器设计相同,都是直接使用一个数组存放二进制数 据,通过 VHDL 编写一个一定长度的数组实现,同样可以通过集成器数组 元素和输入地址间的相互赋值实现“读存储器”,“写存储器”。婭鑠机职錮夾簣軒蚀骞。在本次 CPU 设计中 TRAM 模块用以

45、完成以下几个操作:1、 将立即数写入指定寄存器中。2、 将指定目的操作寄存器地址中的数据读出并输出。3、 将指定源操作寄存器地址中的数据读出。山东大学威海分校毕业设计(论文)17regLTr7.,0egd7 0ram_ctrll,0data1.0RO7.O图 3-6 寄存器堆 TRAM 卜部接口如图 12 所示,fclkr 时钟信号是来自时钟发生器,控制寄存器是否能进行读 写操作。在 CPU 时钟的前半周期,控制器进行译码并发出控制信号,为操作的施 行铺好路,在时钟的后半周期,也就是从时钟信号 fclkr 的上升沿,TRAM 在控制 信号 ram _ctrl、load、store 的控制下进行

46、读写操作。譽諶掺铒锭试监鄺儕泻。If (ris in g_edge(fclkr) the nIf (fstore = thenram (conv_in teger(fromrd)=fR0一存储上条指令运算得到的结果elsif (fromram_ctrl = 11) the n toreg_rr=ram(c onv_in teger(fromrr);toreg_rd=ram(c onv_in teger(fromrd);一一将指定寄存器的值输出elsif (fromram_ctrl = 01) the n ram (conv_in teger(fromrd)=value2;-/存储立即数到目的寄

47、存器从这段代码可以看出,当控制信号 store 有效时,TRAM 可以完成将运算器的 结果写入目的操作寄存器中,若无效,则判断控制信号 ram_ctrl 的值,根据不同的 控制值可以将寄存器的储存值分别写入目的操作寄存器和源操作寄存器中,可以将立即数写入目的操作寄存器中,可以读出指定寄存器的值并输出。俦聹执償閏号燴鈿膽賾。3.6 ALU 模块ALU 单元即算术运算单元,是 CPU 的核心处理的单元,不但能完成算术和 逻辑运算,而且很多数据都要通过 ALU 送出到输出端口并输出。在 ALU 中还 可以细化成两个功能单元:取操作数单元、执行运算单元。取操作数单元负责对 ALU 的两个操作数 A 和

48、 B 的取值,执行运算单元负责将取到的操作数进行相应 的操作。ALU 整体框图如图 3 7 所示。缜電怅淺靓蠐浅錒鵬凜。clkrloadstorerr3. .0rd3,.,0-山东大学威海分校毕业设计(论文)18图 3-7 ALU 整体结构图算术逻辑单元 ALU是绝大多数指令必须经过的单元,所有的运算都在 ALU 中完成。取操作数单元在数据选择的控制信号控制下,可以选取一个或者两个操 作数输入执行单元。在执行运算单元中,根据指令的类型对两个或一个 8 位输入 数据进行运算。4位算术控制输入信号 alu_ctrl 决定两个输入数据的算术操作类 型,可以有 16 种不同的功能组合。2 位逻辑控制输

49、入信号 Logic 决定一个输入数 据的逻辑操作类型,可以有 4种不同的功能组合。骥擯帜褸饜兗椏長绛粤。在 ALU 的设计中主要还是根据指令来的,ALU 所能执行的指令是很多的, 基本的指令可以分为 4 类,即卩 ADD,SUB, LOGIC, LSL、LSR。指令 ADD 分 为不带进位和带进位加法操作:SUB 指令组分为执行不带进位和带进位减法操作 LOGIC 指令组分为或和与的逻辑操作;LSL 指令组分为带进位的循环右移和不带 进位的算术右移操作;LSR 指令组分为带进位的循环左移和不带进位的算术左 移操作;在本次设计中只完成加法、减法、与、或、不带进位的左移和不带进位 的右移的运算功能

50、,并输出溢出信号。癱噴导閽骋艳捣靨骢鍵。Process (a1, b1, fromalu_ctrl , fromlogic)Beg incase fromalu_ctrl isend case;case fromlogic isend case;end process;Process (clk)beg inif (rising_edge(clk) thenif fouten =0 then Rv=ZZZZZZZZ;elsif fload =0 then Rreg_rr7lk0-reg_rd7.R7.O- -*-*廿DdEi丄.日.Jr-alu_ctrl3.,0-logic 1 0-outen-

51、loadALU图 3-11 ALU 模块外部接口第四章 CPU 控制单元的设计在 CPU 中还有一个重要的模块,即控制单元模块,其功能是得到当前指令, 得到需要的数据,在正确的时间、用正确的值设置所有相关的控制信号,控制 CPU 的取指、译码和指令执行等操作。因此这个模块在整个 CPU 的设计中是最关键的 也是最难精准实现的模块。榄阈团皱鹏緦寿驏頦蕴。流水线操作和数据通路各个模块的所有控制信号都是来自控制单元。控制单元的作用就是对指令译码,在不同的状态发出不同的控制信号来处理流水线过 程,另一方面在合适的时间对数据通路发出正确的控制信号来控制指令的正确执 行。为了实现控制模块的功能,可以将该模

52、块细化为两个部分,即控制指令操作的控制器和控制状态转换的有限状态机(FSM)。逊输吴贝义鲽國鳩犹騸。山东大学威海分校毕业设计(论文)204.1 控制器 Control 模块控制器则是一个微处理器的核心部件之一,在每一个时钟周期的上升沿,指 令寄存器 IR 从内存中读取指令字后,送入控制器中,控制器能够根据输入的 4 位 操作码进行译码,为其他每个功能单元产生相应的主控制信号,并发出信号状态 信号控制状态机的状态转换,最终实现对 CPU 各个功能单元的控制,实现指令的 顺利执行。幘觇匮骇儺红卤齡镰瀉。loadouteni3 0sleepstore abselfl, ,0 ram_ctrll.Ol

53、ogic 1.-0alu_ctr3.OCONTROL图 4-1 控制器Control外部接口控制器根据 4 位操作码 IR 进行译码, 通过指令译码给出其它各单元的操作控 制信号,包括 ALU 单元的算术和逻辑运算控制信号、移位控制信号,操作数输入 选择信号、结果输出信号,TRAM 的读写控制、送入状态机得停机控制信号。誦 终决懷区馱倆侧澩赜。4.2 有限状态机 FSM 模块4.2.1 有限状态机状态机是 CPU 的又一个控制核心部件,是实现高效率高可靠逻辑控制的重要 途径,用于产生一系列的控制信号,启动或停止某些部件。程序计数器PC 值的改变、指令寄存器取指令以及 CPU 的复位等操作都是由

54、状态机来控制的。状态机 FSM的当前状态,由变量 state 记录。医涤侣綃噲睞齒办銩凛。从状态机的信号输出上分,有 Moore 型和 Mealy 型两种状态机。从输出时序 上看,前者属于同步状态机,而后者属于异步状态机。Mealy 型状态机的输出是当前状态和所输入信号决定的,它的输出是在输入变化后立即发生的,不依赖时钟的同步16。Moore 型状态机的输出则仅由当前状态控制,这类状态机在输入发山东大学威海分校毕业设计(论文)21本次设计采用 2 个进程模块,一个模块用同步时序描述状态转移;另一个模 块用组合逻辑判断状态的逻辑输出,其 VHD 代码如下:筧驪鴨栌怀鏇颐嵘悅废。process (

55、clk,wr,i nput,start)beg in/第一个进程模块用同步时序描述状态转移if wr = 1 thenstate /利用 case句对每一个状态建立一项 case句的分支If in put =1 thenstate = tj;elsestate whe n tj =end case;end if;end process;process (state)生变化还必须等待时钟的到来,时钟使状态发生变化时才导致输出变化。胪当为遙头韪鳍啰晕糞。在本次 CPU 设计中,将采用 Mealy 型状态机来实现时序和状态的转换。在整 个CPU 的状态机中共设计了 3 个状态:执行(exe)待机(s

56、p),停机(tj)。图 16 是 各个状态的状态转移图。鸪凑鸛齏嶇烛罵奖选锯。en=(1nrst311pc incwhe n sp =whe n tj =end case;end process;第五章 RISC CPU 勺仿真验证5.1 各模块的组合前面两章将 CPU 细化为多个功能模块,为了使其能集合成一个完整的系统共 同完成特定的功能执行,各个模块就需要组合起来配合工作。在构建顶层文件的 方法有语言描述和原理图法。原理图法就是将 CPU 中的每个综合模块以元件的形 式,通过互连线将各个模块像电路上画原理图一样连接起来,系统规模比较大时,各个模块连起来的互连线很多,操作起来很不方便,同时也

57、容易出错。韋鋯鯖荣擬滄閡悬贖蘊。在本次设计中由于各个模块的互连信号比较多, 所以将采用硬件语言描述的 方法将各个模块连接起来,即用 VHDL 语言将各个模块组合起来从而形成一个最 顶层的模块。涛貶騙锬晋铩锩揿宪骗。用 VHDL 语言引用一个模块时是先用 compo nen 来声明这个模块,模块的接山东大学威海分校毕业设计(论文)23口要用 port 关键词声明,例如对程序计数器模块的引用声明如下:钿蘇饌華檻杩鐵样说泻。COMPONENT pc ISPORT (elk ,fe n: IN STD_LOGIC ;fromnrst : IN STD_LOGIC ; frompc_i nc : IN

58、STD_LOGIC ;pcout : out un sig ned(7 dow nto 0);END COMPONENT pc;对程序计数器模块的声明后再对该模块的引用, 引用时用的关键词是 PORT MAP,通过如下程序段完成模块引用U1: pc PORT MAP (clk = clk,fen = en,fromnrst = n rst, frompc_i nc = pc_inc, pcout = pc_out);各个模块间的互连信号是用用一 signa 类型的变量声明的。SIGNAL en, n rst ,clkr: STD_LOGIC;SIGNAL oute n :STD_LOGIC;将

59、所有的功能模块组合连接起来就成为一个整体,作为整个仿真的 顶层模块。5.2 综合 RTL 电路图利用硬件语言法构建好顶层文件, 把所有模块组装成了一个整体,在对这 个整体进行编译和综合成功后即可对它进行功能仿真。用 QUARTUSII 对设计模 块进行编译及综合后生成的 RTL 综合电路图如图 5 1 示。購櫛頁詩燦戶踐澜襯鳳。山东大学威海分校毕业设计(论文)24on clk,fe n = en,fromnrst = n rst,frompc_i nc = pc_inc,frompc_load =pc_load,fromaddr =addr, pcout = pc_out)鄭饩腸绊頎鎦鹧鲕嘤錳

60、。U2: pc_ram PORT MAP(clk = clk,fro mnrst = n rst,pc_in = pc_out,waddr= waddr,wdata = wdata,wr = wr, toi nstructio n = in structi on);弃铀縫迁馀氣鰷鸾觐廩。U3: ir_ram PORT MAP(clk = clk,fromi ns = in structio n,frome n = en ,tord= rd,torr = rr,todata = data,toir = ir);调谇續鹨髏铖馒喪劉薮。U4: Tram PORT MAP(fclkr = clkr,f

温馨提示

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

评论

0/150

提交评论