嵌入式课程8位CPU的设计.docx

上传人:b****1 文档编号:10379420 上传时间:2023-05-25 格式:DOCX 页数:13 大小:342.63KB
下载 相关 举报
嵌入式课程8位CPU的设计.docx_第1页
第1页 / 共13页
嵌入式课程8位CPU的设计.docx_第2页
第2页 / 共13页
嵌入式课程8位CPU的设计.docx_第3页
第3页 / 共13页
嵌入式课程8位CPU的设计.docx_第4页
第4页 / 共13页
嵌入式课程8位CPU的设计.docx_第5页
第5页 / 共13页
嵌入式课程8位CPU的设计.docx_第6页
第6页 / 共13页
嵌入式课程8位CPU的设计.docx_第7页
第7页 / 共13页
嵌入式课程8位CPU的设计.docx_第8页
第8页 / 共13页
嵌入式课程8位CPU的设计.docx_第9页
第9页 / 共13页
嵌入式课程8位CPU的设计.docx_第10页
第10页 / 共13页
嵌入式课程8位CPU的设计.docx_第11页
第11页 / 共13页
嵌入式课程8位CPU的设计.docx_第12页
第12页 / 共13页
嵌入式课程8位CPU的设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式课程8位CPU的设计.docx

《嵌入式课程8位CPU的设计.docx》由会员分享,可在线阅读,更多相关《嵌入式课程8位CPU的设计.docx(13页珍藏版)》请在冰点文库上搜索。

嵌入式课程8位CPU的设计.docx

嵌入式课程8位CPU的设计

 

《嵌入式技术》课程设计

8位CPU的设计

一、设计的任务与要求

计算机的核心部件CPU通常包含运算器和控制器两大部分。

组成CPU的基本部件有运算部件,寄存器组,微命令产生部件和时序系统等。

这些部件通过CPU内部的总线连接起来,实现它们之间的信息交换。

1.设计目的

(1)CPU的组成部件有哪些?

(2)各部件信息如何交换?

(3)CPU与外部连接通过什么方式实现?

(4)CPU的控制命令是如何形成的?

(5)如何用EDA技术设计方法在FPGA上完成模型CPU设计?

2.设计原理

实验中,计算机数据通路的控制将由微过程控制器来完成,CPU从内存中取出一条机器指令到指令执行结束的一个指令周期,全部由微指令组成的序列来完成,即一条机器指令对应一个微程序。

该CPU主要由算术逻辑单元ALU,数据暂存寄存器DR1、DR2,数据寄存器R0~R2,程序计数器PC,地址寄存器AR,程序/数据存储器MEMORAY,指令寄存器IR,微控制器uC,输入单元INPUT和输出单元OUTPUT所组成。

图中虚线框内部分包括运算器、控制器、程序存储器、数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA中实现。

虚线框外部分主要是输入/输出装置,包括键盘、数码管、LCD显示器等,用于向CPU输入数据,或CPU向外输出数据,以及观察CPU内部工作情况及运算结果

图一8位CPU的结构

二、单元电路设计

1、运算部件

运算部件的任务是对操作数进行加工处理。

主要由三部分组成:

(1)输入逻辑。

(2)算术/逻辑运算部件ALU。

(3)输出逻辑。

2.寄存器组

计算机工作时,CPU需要处理大量的控制信息和数据信息。

例如对指令信息进行译码,以便产生相应控制命令对操作数进行算术或逻辑运算加工,并且根据运算结果决定后续操作等。

因此,在CPU中需要设置若干寄存器,暂时存放这些信息。

在模型CPU中,寄存器组由R0、R1、R2所组成。

3.指令寄存器

指令寄存器(IR)用来存放当前正在执行的指令,它的输出包括操作码信息、地址信息等,是产生微命令的主要逻辑依据。

4.程序计数器

程序计数器(PC)也称指令指针,用来指示指令在存储器中的存放位置。

当程序顺序执行时,每次从主存取出一条指令,PC内容就增量计数,指向下一条指令的地址。

增量值取决于现行指令所占的存储单元数。

如果现行指令只占一个存储单元,则PC内容加1;若现行指令占了两个存储单元,那么PC内容就要加2。

当程序需要转移时,将转移地址送入PC,使PC指向新的指令地址。

因此,当现行指令执行完,PC中存放的总是后续指令的地址;将该地址送往主存的地址寄存器AR,便可从存储器读取下一条指令。

5.地址寄存器

CPU访问存储器,首先要找到需要访问的存储单元,因此设置地址寄存器(AR)来存放被访单元的地址。

当需要读取指令时,CPU先将PC的内容送入AR,再由AR将指令地址送往存储器。

当需要读取或存放数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写操作。

6.标志寄存器

标志寄存器F是用来记录现行程序的运行状态和指示程序的工作方式的,标志位则用来反映当前程序的执行状态。

一条指令执行后,CPU根据执行结果设置相应特征位,作为决定程序流向的判断依据。

例如,当特征位的状态与转移条件符合时,程序就进行转移;如果不符合,则顺序执行。

在后面将要介绍的较复杂模型计算机设计中设置了两个标志位:

进位位Fc:

运算后如果产生进位,将Fc置为1;否则将Fc清为0。

零位Fz:

运算结果为零,将Fz置为1,否则将Fz清为0。

7.微命令产生部件

实现信息传送要靠微命令的控制,因此在CPU中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。

微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。

产生微命令的方式可分为组合逻辑控制方式和微程序控制方式两种。

在本章所介绍的8位模型CPU设计中,采用微程序控制方式通过微程序控制器和微指令存储器产生微命令,因此此CPU属于复杂指令CISCCPU。

8.时序系统

计算机的工作常常是分步执行的,那么就需要有一种时间信号作为分步执行的标志,如周期、节拍等。

节拍是执行一个单步操作所需的时间,一个周期可能包含几个节拍。

这样,一条指令在执行过程中,根据不同的周期、节拍信号,就能在不同的时间发出不同的微命令完成不同的微操作。

周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一组触发器组成。

由石英晶体振荡器输出频率稳定的脉冲信号,也称时钟脉冲,为CPU提供时钟基准。

时钟脉冲经过一系列计数分频,产生所需的节拍(时钟周期)信号。

时钟脉冲与周期、节拍信号和有关控制条件相结合,可以产生所需的各种工作脉冲。

三、指令系统的结构及功能的确定

1、指令是计算机执行某种操作的命令,而指令系统是一台计算机中所有机器指令的集合。

通常性能较好的计算机都设置有功能齐全、通用性强、指令丰富的指令系统,而指令功能的实现需要复杂的硬件结构来支持。

因此在设计CPU时,首先要明确机器硬件应具有哪些功能,然后根据这些功能来设置相应指令,包括确定所采用的指令格式、所选择的寻址方式和所需要的指令类型。

设模型机指令系统中包含有五条基本指令,分为算术运算指令、存取指令和

控制转移指令等三种类型。

五条机器指令分别是:

IN(输入)、ADD(二进制加

法)、STA(存数)、OUT(输出)、JMP(无条件转移)。

IN为单字长(8位

二进制),其余为双字长指令,XXH为addr对应的十六进制地址码。

(1)微命令和微操作

微命令和微操作是一一对应的。

微命令是微操作的控制信号,微操作是微命令的操作过程。

微命令有兼容性和互斥性之分。

兼容性微命令是指那些可以同时产生,共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。

兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。

对于单独一个微命令,就无所谓兼容性或互斥性了。

(2)微指令、微地址

微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微命令的集合,存放控制字的控制存储器的单元地址就称为微地址。

一条微指令通常至少包含两大部分信息:

微操作码字段,又称操作控制字段,该字段指出微指令执行的微操作;微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址。

(3)微周期

所谓微周期是指从控存中读取出一条微指令并执行规定的相应操作所需的时间。

(4)微程序

一系列微指令的有序集合就是微程序。

若干条有序的微指令构成了微程序。

微程序可以控制实现一条机器指令的功能。

或者说一条机器指令可以分解为特定的微指令序列。

一旦机器的指令系统确定以后,每条指令所对应的微程序被设计好并且存入控存后,控存总是处于只读的工作状态,所以控存一般采用只读存储器(ROM)存放。

重新设计控存内容就能增加、删除、修改机器指令系统。

在FPGA

中通常采用嵌入式阵列块构成的LPM_ROM作为控存,存放微指令。

uA5~uA0:

微程序控制器的微地址输出信号,是下一条要执行的微指令的微地址。

S3、S2、Sl、S0:

由微程序控制器输出的ALU操作选择信号,以控制执行16种算术操作或16种逻辑操作中的某一种操作。

M:

微程序控制输出的ALU操作方式选择信号。

M=0执行算术操作;M=l执行逻辑操作。

Cn:

微程序控制器输出的进位标志信号,Cn=0表示ALU运算时最低位有进位;Cn=1则表示无进位。

WE:

微程序控制器输出的RAM控制信号。

当CE=0时,如WE=0,为存储器读;如WE=1,为存储器写A9、A8:

译码后产生CS0、CS1、CS2信号,分别作为SW_B、

RAM、LED的选通控制信号。

A字段(15、14、13):

译码后产生与总线相连接的各单元的输入选通信号。

B字段(12、11、10):

译码后产生与总线相连接的各单元的输出选通信号。

C字段(9、8、7):

译码后产生分支判断测试信号P

(1)~P(4)和LDPC信号。

2、微程序设计

一个具有五条指令IN、ADD、STA、OUT和JMP的微程序流程图。

其中方框代表基本的微操作,菱形框为分支判断框。

(1)IN指令

为了执行输入指令,CPU要做两件事情。

首先,由INPUT输入装置的数据开关SW输入数据送到数据总线上;其次,通过数据总线将输入的数据写入寄存器R0中。

BUS←SW;R0←BUS

由于输入到数据总线上的数据就是要写入寄存器的数据,因此可以将这两个操作合并成一个操作:

R0←SW3.

(2)2.ADD指令R0←R0+(MEM)

存储单元的地址是存放在紧跟在操作码后的字节中的,因此,首先要以该字节的内容为地址,即将该单元内容送地址寄存器AR;然后,从AR所指向的RAM存储单元取出操作数送

给DR2。

由于在取指令操作码时,PC已经自动加1,指向下一字节,该地址就是存放操作数的存储单元的地址。

通过执行以下三个步骤,可以从存储器中取出操作数送到DR2:

AR←PC,PC←PC+1;以AR的内容作为取操作数的地址

BUS←RAM,AR←BUS;AR指向存放操作数的RAM单元

BUS←RAM,DR2←BUS;RAM中的数据通过BUS送DR2

将R0中的数据送DR1:

DR1←R0

在ALU中进行加法运算,运算结果送R0:

R0←(DR1)+(DR2)

(3)STA指令

向存储器RAM写数据操作STA,以紧跟在操作码后的字节作为存放操作数地址,将R0中的数据存入该地址单元。

首先将紧跟在操作码后的字节的内容送给地址寄存器AR:

AR←PC,PC←PC+1;以PC的内容作为存数据的地址

BUS←RAM,AR←BUS;AR指向存放操作数的RAM单元

BUS←R0,RAM←BUS

(4)OUT指令

AR←PC,PC←PC+1;以PC的内容作为存数据的地址

BUS←RAM,AR←BUS;AR指向存放操作数的RAM单元

BUS←RAM,DR1←BUS

OUT←DR1

(5)JMP指令

AR←PC,PC←PC+1;以PC的内容作为取数据的地址

BUS←RAM,PC←BUS;将RAM内容送PC,实现程序转移

4、波形仿真及分析

分析:

(1)M输出微指令01800,控制台执行P(4),进行“读、写、运行”功能判断。

检测到SWA、SWB=11后,进入程序运行RP(11)方式,执行微地址为23的微指令,M输出微指令为018001,后续微地址uA为01.然后进入程序运行的流程,执行微地址为01的M微指令008001,执行的操作为PC→AR=00H,PC+1=01H,AR指向RAM存储器地址00H,后续地址uA为02.

(2)执行微地址为02的M微指令01ED82,执行取指令操作,取出第一条指令的操作码,经过分支判断P

(1),这是一条输入指令IN。

执行微地址为10的M微指令00C048,将RAM中的指令00通过内部总线BUS,送指令寄存器IR:

RAM(00H)=00→BUS→IR=00H。

执行微地址为01的M微指令001001,SW_B为高电平,允许SW的数据送往数据总线BUS,由此接收数据56H。

所以R0=56H。

(3)执行微地址为02的M微指令01ED82,执行取指令操作:

PC→AR=01H,PC+1=02H,AR指向RAM存储器地址01H,后续微地址uA为02。

执行微地址09的M微指令00C048,取指令,并经过分支判断P

(1),读出地址为01H单元的内容10H,经过BUS送到指令寄存器IR:

RAM(01H)=10H→BUS→IR=10H。

执行微地址为03的M微指令01ED83,进入加法运算微程序。

通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:

PC→AR=02H,PC+1=03H,AR指向RAM的02单元。

(4)执行微地址为04的M微指令00E004,RAM_B为高电平,RAM的(02)单元的内容通过BUS送AR,取数地址(AR)=0AH,RAM(02)=0AH→BUS→AR=0AH。

执行微地址为05的M微指令00B005,RAM_B为高电平,RAM的(0AH)单元的内容34H送到BUS,此时LDDR2为高电平,BUS上的数据就送给了DR2,执行结果:

RAM(0AH)=34H→BUS→DR2=34H。

(5)执行微地址为06的M微指令01A206,将R0的数据送DR1.R0_B=1,允许R0的内容56H送往BUS,此时LDDR1为高电平,BUS上的数据56H写入ALU的数据缓冲期DR1,执行结果:

(R0)=56H→BUS→DR1=56H.执行微地址为01的M微指令919A01,完成加法运算:

(DR1)+(DR2)→R0,56H+34H=8AH→R0=8AH。

(2)执行一个周期循环程序的全部仿真波形

分析:

(1)M输出微指令01800,控制台执行P(4),进行“读、写、运行”功能判断。

检测到SWA、SWB=11后,进入程序运行RP(11)方式。

(2)执行微地址为23的微指令,M输出微指令为018001,后续微地址uA为01.然后进入程序运行的流程。

(3)执行微地址为01的M微指令008001,执行的操作为PC→AR=00H,PC+1=01H,AR指向RAM存储器地址00H,后续地址uA为02.

(4)执行微地址为02的M微指令01ED82,执行取指令操作,取出第一条指令的操作码,经过分支判断P

(1),这是一条输入指令IN。

(5)执行微地址为10的M微指令00C048,将RAM中的指令00通过内部总线BUS,送指令寄存器IR:

RAM(00H)=00→BUS→IR=00H。

(6)执行微地址为01的M微指令001001,SW_B为高电平,允许SW的数据送往数据总线BUS,由此接收数据56H。

所以R0=56H。

(7)、执行微地址为02的M微指令01ED82,执行取指令操作:

PC→AR=01H,PC+1=02H,AR指向RAM存储器地址01H,后续微地址uA为02。

(8)执行微地址09的M微指令00C048,取指令,并经过分支判断P

(1),读出地址为01H单元的内容10H,经过BUS送到指令寄存器IR:

RAM(01H)=10H→BUS→IR=10H。

(9)执行微地址为03的M微指令01ED83,进入加法运算微程序。

通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:

PC→AR=02H,PC+1=03H,AR指向RAM的02单元。

(10)执行微地址为04的M微指令00E004,RAM_B为高电平,RAM的(02)单元的内容通过BUS送AR,取数地址(AR)=0AH,RAM(02)=0AH→BUS→AR=0AH。

(11)执行微地址为05的M微指令00B005,RAM_B为高电平,RAM的(0AH)单元的内容34H送到BUS,此时LDDR2为高电平,BUS上的数据就送给了DR2,执行结果:

RAM(0AH)=34H→BUS→DR2=34H。

(12)执行微地址为06的M微指令01A206,将R0的数据送DR1.R0_B=1,允许R0的内容56H送往BUS,此时LDDR1为高电平,BUS上的数据56H写入ALU的数据缓冲期DR1,执行结果:

(R0)=56H→BUS→DR1=56H.

(13)执行微地址为01的M微指令919A01,完成加法运算:

(DR1)+(DR2)→R0,56H+34H=8AH→R0=8AH。

(14)执行微地址为02的M微指令01ED82,执行取指令操作:

PC→AR=03H,PC+1=04H,AR指向RAM存储器地址03H,执行第三条指令,存储STA。

(15)执行微地址12的M微指令00C048,取指令,并经过分支判断P

(1),读出地址为03H单元的内容20H,经过BUS送到指令寄存器IR:

RAM(03H)=20H→BUS→IR=20H。

(16)执行微地址为07的M微指令01ED87,通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:

PC→AR=04H,PC+1=05H,AR指向RAM的04单元。

(17)执行微地址为15的M微指令00E00D,RAM_B为高电平,RAM的(04)单元的内容通过BUS送AR,取数地址(AR)=0BH,RAM(04)=0BH→BUS→AR=0BH。

(18)执行01微地址为01的M微指令038201,RAM_B为高电平,R0的内容存入RAM(0BH)单元,BUS上的数据就送给了DR2,执行结果:

RAM(0BH)=8AH→BUS→RAM(0BH)=8AH。

(19)执行微地址为02的M微指令01ED82,执行取指令操作:

PC→AR=05H,PC+1=06H,AR指向RAM存储器地址05H,执行第四条指令,输出OUT。

(20)执行微地址13的M微指令00C048,取指令,并经过分支判断P

(1),读出地址为05H单元的内容30H,经过BUS送到指令寄存器IR:

RAM(05H)=30H→BUS→IR=30H。

(21)执行微地址为16的M微指令01ED8E,通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:

PC→AR=06H,PC+1=07H,AR指向RAM的06单元。

(22)执行微地址为17的M微指令00E00F,RAM_B为高电平,RAM的(06)单元的内容通过BUS送AR,取数地址(AR)=0BH,RAM(06)=0BH→BUS→AR=0BH。

(23)执行微地址为25的M微指令00A015,RAM_B为高电平,RAM的(0BH)单元的内容8AH送到BUS,此时LDDR2为高电平,BUS上的数据就送给了DR2,执行结果:

RAM(0BH)=8AH→BUS→DR2=8AH。

(24)执行微地址为01的M微指令010A01,将DR1的数据送输出单元OUT,允许DR1的内容8AH送往BUS,BUS上的数据8AH送输出单元OUT,执行结果:

DR1=8AH→BUS→OUT=8AH。

(25)执行微地址为02的M微指令01ED82,执行取指令操作:

PC→AR=07H,PC+1=08H,AR指向RAM存储器地址07H。

(26)执行微地址14的M微指令00C048,取指令,并经过分支判断P

(1),读出地址为07H单元的内容40H,经过BUS送到指令寄存器IR:

RAM(07H)=40H→BUS→IR=40H。

(27)执行微地址为26的M微指令01ED96,进入转移JMP运算微程序。

通过间接寻址获得另一个操作数,地址寄存器AR指向取数的间接地址:

PC→AR=08H,PC+1=09H,AR指向RAM的08单元。

(28)执行微地址为01的M微指令00D181,RAM_B为高电平,RAM的(0AH)单元的内容34H送到BUS,此时LDDR2为高电平,BUS上的数据就送给了DR2,执行结果:

RAM(0AH)=34H→BUS→DR2=34H。

附录A:

系统电路原理总图

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2