- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
正弦信号LPM课案
8位CPU实验报告殷达
一.实验内容
设计要求:设计一简单的8位CPU,不仅要有加减运算功能,还要有与或的位运算。。使用VHDL语言设计。
二.实验原理
RISC即精简指令集计算机(Reduced Instruction Set Computer)的缩写。RISC-CPU与一般的CPU相比,通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。本文对RISC-CPU的架构进行了分析,并使用VHDL语言设计了8位RISC-CPU IP软核。
SAP-1 CPU部分:程序计数器、MAR、指令寄存器、控制器/序列发生器、累加器、加减法器、B寄存器、输出寄存器。
1.程序计数器
它是一个4Bits的计数器,计数范围由0~15。主要功用是记录下每个执行的指令地址,并把这个地址传送至MAR寄存器存放。
2.输入与MAR(Memory Access Register)
这个方块应分成两个部分,一个是接受由“输入”部分输入到RAM内存的外部程序和数据,另一部分“MAR”是用来在CPU执行上述所加载的程序???,暂存下一个要执行的指令地址。
3.16×8 RAM
这个RAM有16个存储单元,每个单元为1字节,即8bits。所以这个RAM的地址总线是4bit,地址编码是由0000,0001,0010…1111,这个地址内容是由上述MAR传送过来,然后通过译码将地址存放的8位数据或指令输出至Wbus。
4.指令寄存器
属于CPU内的控制单元,主要是将在RAM的8位数据,通过Wbus后读入指令寄存器,然后再把数据一分为二,较高的4位属于指令部分,送至下一级的“控制器”,而较低的4位属于数据部分,将会被送至Wbus。
5.控制器/序列发生器
这个模块也是属于CPU内控制单元的一部分,这个控制器在程序执行时,负责送出整个计算机的时序信号CLK,而且会把指令寄存器送来的4位指令,解译成12位的控制信号,由这组控制信号指挥其它的功能方块,完成该指令的运作。由于使用VHDL语言设计整个SAR-1,依照语法的使用,这部分会被省略,而且不会影响整个CPU运作。
6.累加器
累加器是个8位的缓冲寄存器,它是存放目前计算机执行的实时数据地方。不同的指令也将使它产生不同的工作方式。
7.加减法器
这个加减法器负责执行数学的加法和减法运算,而且运算的结果会放回“累加器”暂存。
8.B寄存器
这个寄存器用来配合“累加器”、“加减法器”,执行“加法” 或“减法”的工作。
9.输出寄存器
这个输出寄存器的用途是,CPU执行到“输出结果”的指令时,便将“累加器”的结果传至“输出寄存器”,所以它是负责存放输出结果,当然这个存放的结果是二进制形式的。
SAP-1的CPU指令,共有5个且可分成两种类型,如表
直接寻址法(Direct Addressing)
指令 运算码 范例 说明
LDA 0000 LDA 9H 将9H内存的内容值加载累加器
ADD 0001 ADD BH 将BH的内存内容值和累加器内容值相加,再存放运算结果回累加器
SUB 0010 SUB EH 将EH的内存内容值和累加器内容值相减,再存放运算结果回累加器
零位寻址法(Zero Addressing)
指令 运算码 范例 说明
OUT 1110 OUT 将累加器内容输出至“输出寄存器”
HLT 1111 HLT 结果CPU执行
三.SAP-1 CPU设计
SAP-1指令周期(Instruction Cycle)
时序状态S0-S2范围为取指令周期,而时序状态S3-S5为指令执行周期.下面是每个时序状态下,SAP-1 CPU的工作任务:
1.取指令周期(Fetch Cycle)
(1)状态S0: (寻址状态, Address State)
这个状态下,“程序计数器”负责将所要执行的指令地址值传递至MAR存放.
(2)状态S2: (增加状态,Increment State)
这个状态下,“程序计数器”的值加1,代表计数器将指针指向下一个要执行的指令地址值.
例如:
原先在状态S0时,“程序计数器”的值是01H,它会传递01H给 “MAR”,然后在这个状态S1时,将内容值加1后变成02H,这样以便记录下次要执行的指令地址值.
(3)状态S2: (记忆状态, Memory State)
这个状态下,将把记录在 “MAR”里的指令地址值,送入 “RAM”里后,由 “RAM”读出该地址的指令码,再将该指令放入 “指令寄存器”.
有一点必须强调的是,不论是执行哪个指令,它们的状态S0-S2的动作方式都是相同的,不过状态S3-S5的动作方式就会因执行对那个指令而有所不同
文档评论(0)