- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RISC_CPU设计
简化的 RISC_CPU设计概述前面已经学习了VerilogHDL的基本语法、简单组合逻辑和简单时序逻辑模块的编写,学习了Top-Down设计方法,还学习了可综合风格的组合逻辑的设计.因此这次讨论班将介绍一个精简指令集(RISC)CPU的原理和功能,结合相关资料,完成它的设计和验证,以此来学习这种新设计方法,并掌握利用Verilog硬件描述语言的高层次设计方法。这里介绍它的目的是想说明一下几点:(1)VerilogHDL仿真和综合工具的潜力;(2) 对整个设计的流程有初步的认识和掌握;(3)展示Verilog设计方法对软/硬件联合设计和验证的意义。什么是CPU CPU即中央处理单元的缩写,它是计算机的核心部件 。计算机进行信息处理可分为两个步骤: (1)将数据和程序(即指令序列)输入到计算机的存储器中; (2)从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。 CPU的作用是协调并控制计算机的各个部件并执行程序的指令序列,使其有条不紊地进行。因此它必须具有以下基本功能: 取指令:当程序已经在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。 分析指令:即指令译码,这是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。 执行指令:根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器、存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。将CPU的功能进一步细化,可概括如下:??能对指令进行译码并执行规定的动作;??可以进行算术和逻辑运算;??能与存储器和外设交换数据;??提供整个系统所需要的控制。 尽管各种CPU的性能指标和结构细节各不相同,但 它们所能完成的基本功能相同。 由功能分析,可知任何一种CPU内部结构至少应包 含下面这些部件:??算术逻辑运算部件(ALU)??累加器;??程序计数器;??指令寄存器和译码器;??时序和控制部件。RISC_CPU结构RISC即精简指令集计算机(Reduced Instruction Set Computer)的缩写;是20世纪80年代才出现的CPU,与一般的CPU相比不仅只是简化了指令系统,而且还通过简化指令系统,使计算机的结构更加简单合理,从而提高运算速度;它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式;所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微指令的时间。RISC_CPU 是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂。可以把它分成8个基本部件来考虑:(1)时钟发生器;(2)指令寄存器;(3)累加器;(4)算术逻辑运算单元;(5)数据控制器;(6)程序计数器;(7)地址多路器;(8)状态控制器;其中时钟发生器利用外来时钟信号进行分频生成一系列时钟信号,送往其他部件用作时钟信号。各部件之间的相互操作关系则由状态控制器来控制。模块一 时钟发生器时钟发生器clkgen利用外来时钟信号clk生成一系列时钟信号clk1、fetch、alu_clk,并送往CPU的其他部件。其中,fetch是外来时钟clk的8分频信号,利用fetch的上升沿来触发CPU控制器开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址; clk1信号用作指令寄存器、累加器、状态控制器的时钟信号; alu_clk则用于触发算术逻辑运算单元。其VerilogHDL 程序见下面的模块:?//----------------------------------------- clk_gen.v 的开始 -------------`timescale 1ns/1ns module clk_gen (clk,reset,fetch,alu_ena);input clk, reset;output fetch,alu_ena;wire clk,reset;reg fetch,alu_ena;reg[7:0] state;parameter S1 = 8 S2 = 8 S3 = 8 S4 = 8 S5 = 8 S6 = 8 S7 = 8 S8 = 8 idle = 8always @(posedge clk) if(reset) begin fetch = 0; alu_ena = 0; state = idle; end else begin case(stat
文档评论(0)