- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第五章基于Verilog的CPU设计.
作为电子或计算机专业的学生,电脑(计算机)对于大家已经不再是什么新鲜的东西了。大家都知道,计算机可以为我们做很多的事情,替我们节约很多时间,为我们计算各种复杂的数据并且准且无误。那么,计算机为什么能够做这些事情呢?计算机内部到底是怎么工作的呢?本章将为你展示计算机的主要部件的设计过程。
计算机最核心的部分叫做中央处理器,也就是我们常说的CPU,计算机所做的工作都是由CPU来完成的。当然,作为学习,我们不能够设计出类似奔腾处理器(Pentium? microprocessor)的CPU,我们用一个能够完成简单功能的简单的CPU作为讲解,麻雀虽小,五脏俱全,这个简单的cpu具有一般CPU的全部基本特征。
CPU概览
众所周知,cpu只能识别二进制数据,也就是机器码。所以,在CPU内部靠不同的二进制序列来区别不同的机器码。我们把这些机器码存储在一个存储器中,共CPU读取使用。同时,为了用户和程序员能够更好的记住机器码的含义,采用相应的助记符来表示这些机器码,如:用LDA表示二进制的000等。这些助记符通常被称为汇编语言,不同架构的计算机的汇编语言通常都是各不相同的。
CPU的内部框架
下图是本章准备设计的一个CPU内部结构框架。
CPU的内部工作原理
不同架构的计算机工作原理也是不同的,此处仅以本课本中讲授的CPU工作原理为例讲解。
首先,CPU的指令是存储在存储器中的,所以cpu执行指令的第一步是从存储器中取出(fetch)指令,第二步,将取出的指令解码,第三步,根据指令解码出的功能决定是否再从存储器中取出需要处理的数据,第四步,根据解码出的指令决定进行相应的计算,这由(ALU)完成。第五步,根据解码出的指令决定是否将计算结果存入存储器,第六步,修改PC指针,为下一次取指令做准备。整个执行过程由控制器控制。
在介绍具体的CPU硬件架构之前,我们先确定一些CPU能够执行的指令,在这里,为了教学演示,我们设定6个计算机指令,分别为:LDA指令、STA指令、ADD指令、SUB指令、AND指令和HLT指令。指令集表示的含义见下表:
操作码 助记符 执行的功能 000 LDA addr 将地址为addr处的存储器中的内容装载到A寄存器 001 STA addr 将A寄存器的内容存储到存储器中的addr地址处 010 ADD addr 将A寄存器的内容加上存储器中的addr地址处的内容 011 SUB addr 将A寄存器的内容减去存储器中的addr地址处的内容 100 AND addr 将A寄存器的内容与上存储器中的addr地址处的内容 101 HLT 停止指令的执行
前两条指令,“LDA”和“STA”是数据传输指令,就像助记符表示的那样,这些指令在A寄存器和存储器之间传送数据。对于LDA指令,“源”数据是存储器的addr地址处的值(也称为内容),目的寄存器是A寄存器;对于STA指令,“源”数据是A寄存器,目的寄存器是存储器的addr地址处的存储空间。
这里为了以后的表达方便,我们采用一种简单的方式来表示上述指令的功能,如:表示LDA addr指令可以用A?(addr),而STA addr可以用(addr)?A来表示。同样,加法指令ADD addr用A?A+(addr)表示,减法指令SUB addr用A?A - (addr)表示。“AND addr”用A?A (addr)表示。注意,由于这里涉及到计算的结果,我们设置了一些标志用来标识结果的特殊性,如:Z(零标志),标识运算的结果A中为0;N(负数标志),标识运算的结果A中小于0;V(溢出标志),标识运算的结果A溢出;C(进位标志),标识运算的结果A中产生了进位;值得一提的是C位的处理,加法和减法对于C的处理是不一样的。对于ADD,进位标志是A中的最高位产生了进位;对于减法,最高位产生借位将C为置1。
为了能够更好的理解CPU的运行,我们以一个简单的汇编程序的执行来讲解。这个程序将使用以上的全部指令。在这里,我们使用助记符的方式写汇编程序,实际在,在存储器内部是以二进制码来存储的,例如:第一行“LDA 01011”在存储器中
LDA 01011 A?(01011)
ADD 01100 A?A+(01100)
STA 01101 (01100)?A
LDA 01011 A?(01011)
AND 01100 A?A (01100)
STA 01110 (01110)?A
LDA 01011 A?(01011)
S
文档评论(0)