8位CPU的设计与实现.docx
- 文档编号:12395779
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:13
- 大小:409.54KB
8位CPU的设计与实现.docx
《8位CPU的设计与实现.docx》由会员分享,可在线阅读,更多相关《8位CPU的设计与实现.docx(13页珍藏版)》请在冰点文库上搜索。
8位CPU的设计与实现
运算机组成原理
实验题目8位CPU的系统设计
学号46
姓名魏忠淋
班级11电子B班
指导老师凌朝东
华侨大学电子工程系
8位CPU的系统设计
一、实验要求与任务
完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。
具体内容包括:
典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。
设计指标
能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;
设计要求
画出电路原理图、仿真波形图;
二、CPU的组成结构
三、元器件的选择
1.运算部件(ALU)
ALU181的程序代码:
LIBRARYIEEE;
USEALU181IS
PORT(
S:
INSTD_LOGIC_VECTOR(3DOWNTO0);
A:
INSTD_LOGIC_VECTOR(7DOWNTO0);
B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
F:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
COUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
M:
INSTD_LOGIC;
CN:
INSTD_LOGIC;
CO,FZ:
OUTSTD_LOGIC);
ENDALU181;
ARCHITECTUREbehavOFALU181IS
SIGNALA9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALB9:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALF9:
STD_LOGIC_VECTOR(8DOWNTO0);
BEGIN
A9<='0'&A;B9<='0'&B;
PROCESS(M,CN,A9,B9)
BEGIN
CASESIS
WHEN"0000"=>IFM='0'THENF9<=A9+CN;ELSEF9<=NOTA9;ENDIF;
WHEN"0001"=>IFM='0'THENF9<=(A9orB9)+CN;ELSEF9<=NOT(A9ORB9);ENDIF;
WHEN"0010"=>IFM='0'THENF9<=(A9or(NOTB9))+CN;ELSEF9<=(NOTA9)ANDB9;ENDIF;
WHEN"0011"=>IFM='0'THENF9<="000000000"-CN;ELSEF9<="000000000";ENDIF;
WHEN"0100"=>IFM='0'THENF9<=A9+(A9ANDNOTB9)+CN;ELSEF9<=NOT(A9ANDB9);ENDIF;
WHEN"0101"=>IFM='0'THENF9<=(A9orB9)+(A9ANDNOTB9)+CN;ELSEF9<=NOTB9;ENDIF;
WHEN"0110"=>IFM='0'THENF9<=(A9-B9)-CN;ELSEF9<=A9XORB9;ENDIF;
WHEN"0111"=>IFM='0'THENF9<=(A9or(NOTB9))-CN;ELSEF9<=A9and(NOTB9);ENDIF;
WHEN"1000"=>IFM='0'THENF9<=A9+(A9ANDB9)+CN;ELSEF9<=(NOTA9)andB9;ENDIF;
WHEN"1001"=>IFM='0'THENF9<=A9+B9+CN;ELSEF9<=NOT(A9XORB9);ENDIF;
WHEN"1010"=>IFM='0'THENF9<=(A9or(NOTB9))+(A9ANDB9)+CN;ELSEF9<=B9;ENDIF;
WHEN"1011"=>IFM='0'THENF9<=(A9ANDB9)-CN;ELSEF9<=A9ANDB9;ENDIF;
WHEN"1100"=>IFM='0'THENF9<=(A9+A9)+CN;ELSEF9<="000000001";ENDIF;
WHEN"1101"=>IFM='0'THENF9<=(A9orB9)+A9+CN;ELSEF9<=A9OR(NOTB9);ENDIF;
WHEN"1110"=>IFM='0'THENF9<=((A9or(NOTB9))+A9)+CN;ELSEF9<=A9ORB9;ENDIF;
WHEN"1111"=>IFM='0'THENF9<=A9-CN;ELSEF9<=A9;ENDIF;
WHENOTHERS=>F9<="000000000";
ENDCASE;
IF(A9=B9)THENFZ<='0';ENDIF;
ENDPROCESS;
F<=F9(7DOWNTO0);CO<=F9(8);
COUT<="0000"WHENF9(8)='0'ELSE"0001";
ENDbehav;
ALU的原理图:
2.微操纵器
实现信息传送要靠微命令的操纵,因此在CPU中设置微命令产生部件,依照操纵信息产生微命令序列,对指令功能所要求的数据传送进行操纵,同时在数据传送至运算部件时操纵完成运算处置。
微命令产生部件可由若干组合逻辑电路组成,也能够由专门的存储逻辑组成。
产生微命令的方式可分为组合逻辑操纵方式和微程序操纵方式两种。
在本章所介绍的8位模型CPU设计中,采纳微程序操纵方式通过微程序操纵器和微指令存储器产生微命令,因此此CPU属于复杂指令CISCCPU。
微操纵器的原理图:
3.寄放器组
运算机工作时,CPU需要处置大量的操纵信息和数据信息。
例如对指令信息进行译码,以便产生相应操纵命令对操作数进行算术或逻辑运算加工,而且依照运算结果决定后续操作等。
因此,在CPU中需要设置若干寄放器,临时寄存这些信息。
在模型CPU中,寄放器组由R0、R一、R2所组成。
寄放器组的原理图:
3.地址寄放器
CPU访问存储器,第一要找到需要访问的存储单元,因此设置地址寄放器(AR)来寄存被访单元的地址。
当需要读取指令时,CPU先将PC的内容送入AR,再由AR将指令地址送往存储器。
当需要读取或寄存数据时,也要先将该数据的有效地址送入AR,再对存储器进行读写操作。
地址寄放器的原理图:
4.指令寄放器
指令寄放器(IR)用来寄存当前正在执行的指令,它的输出包括操作码信息、地址信息等,是产生微命令的要紧逻辑依据。
指令寄放器的原理图:
5.程序计数器
程序计数器(PC)也称指令指针,用来指示指令在存储器中的寄存位置。
当程序顺序执行时,每次从主存掏出一条指令,PC内容就增量计数,指向下一条指令的地址。
增量值取决于现行指令所占的存储单元数。
若是现行指令只占一个存储单元,则PC内容加1;若现行指令占了两个存储单元,那么PC内容就要加2。
当程序需要转移时,将转移地址送入PC,使PC指向新的指令地址。
因此,当现行指令执行完,PC中寄存的老是后续指令的地址;将该地址送往主存的地址寄放器AR,即可从存储器读取下一条指令。
程序计数器的原理图:
四、系统总电路图及原理
系统原理:
该CPU要紧由算术逻辑单元ALU,数据暂存寄放器DR一、DR2,数据寄放器R0~R2,程序计数器PC,地址寄放器AR,程序/数据存储器MEMORAY,指令寄放器IR,微操纵器uC,输入单元INPUT和输出单元OUTPUT所组成。
图中虚线框内部份包括运算器、操纵器、程序存储器、数据存储器和微程序存储器等,实测时,它们都能够在单片FPGA中实现。
虚线框外部份主若是输入/输出装置,包括键盘、数码管、LCD显示器等,用于向CPU输入数据,或CPU向外输出数据,和观看CPU内部工作情形及运算结果。
五、波形仿真
仿真波形图:
分析:
(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的数据送=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。
题目:
减法器
实验结论:
本实验系统是我做过最为庞大的,开始时全然不明白如何下手,完满是一头雾水,老师讲解后仍是不明白如何着手,仍是慢慢查找资料才略微知道颔首绪。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU 设计 实现