综合实验:8位CPU设计与实现
头歌计算机组成原理实验
头歌计算机组成原理实验第一章引言计算机组成原理是计算机科学与技术专业的一门重要课程,它是了解计算机内部结构和工作原理的基础。
实验教学是计算机组成原理课程中的重要环节,通过实验可以巩固和加深理论知识,并且培养学生的动手能力和问题解决能力。
本实验以头歌计算机为例,通过构建和调试头歌计算机,加深对计算机组成原理的理解,并让学生亲自参与到计算机的设计和实现过程中,达到提高学生综合素质的目的。
第二章头歌计算机概述头歌计算机是一种简易的8位计算机系统,采用基于冯·诺依曼结构的设计思路,具有指令寄存器、程序计数器、数据寄存器等基本模块,能够执行基本的指令集。
头歌计算机的硬件设计基于VHDL语言,通过FPGA进行实现。
第三章实验目的本实验的主要目的是通过实践加深对计算机组成原理的理解,提高学生的动手能力和问题解决能力。
具体目标包括:1.理解并掌握头歌计算机的基本组成和工作原理;2.学会使用VHDL语言进行硬件设计;3.掌握FPGA的基本使用方法;4.实现头歌计算机的简单指令集。
第四章实验内容与步骤4.1头歌计算机的基本组成头歌计算机的基本组成包括中央处理单元(CPU)、存储器单元、输入输出单元等。
其中CPU包括指令寄存器、程序计数器、数据寄存器和算术逻辑单元。
存储器单元包括存储器和存储器管理单元。
输入输出单元包括输入设备和输出设备。
4.2头歌计算机的工作原理头歌计算机的工作原理是基于冯·诺依曼结构的。
当计算机通电后,程序计数器将指向内存中的第一条指令,指令寄存器将读取指令并交给算术逻辑单元执行。
执行完毕后,程序计数器将指向下一条指令。
计算机会循环执行指令,直到遇到停机指令。
4.3VHDL设计与FPGA实现根据头歌计算机的基本组成和工作原理,使用VHDL语言进行硬件设计。
设计时需要考虑模块的连接方式和时钟信号的处理。
设计完成后,使用FPGA进行实现,并通过上位机软件进行调试和测试。
4.4实现头歌计算机的简单指令集根据头歌计算机的工作原理,设计并实现它的简单指令集。
计算机组成原理实验教案
数据存入寄存器DR1
ALUB=1
开输入三态门
数据开关置数
KD0-D7=00110101SWB=0
LDDR1=0
数据存入寄存器DR2
LDDR2=1
T4=方波
3、检验DR1和DR2中存入的数据是否正确,利用算术逻辑运算功能发生器74LS181的逻辑功能,即M=1。
4、验证74LS181的算术运算和逻辑运算功能。
H
L
L
写入
DI
HIGH-Z
L
L
L
选择
X
HIGH-Z
H
H
L
【实验过程】(实验步骤、记录、数据、分析)
1实验接线
(1)MBUS连BUS2
(2)EXJ1连BUS3
(3)跳线器J22的T3连TS3
(4)跳线器J16的SP连H23
(5)跳线器SWB\CE\WE\LDAR拨在左边(手动位置)。
2实验步骤
(1)连接实验线路,仔细查线无误后接通电源
4、用二进制模拟开关MK1-MK24置24位微代码,24位微代码由LMD1-LMD24显示灯显示,高电平亮,低电平灭。
5、按动“启动运行”开关,启动时序电路,即可将微代码写入到E2PROM 2816的相应地址单元中。
6、重复C-E步骤,将表3-5的微代码全部写入E2PROM 2816中。
读微程序:
1、将“编程开关”设置为“读”状态。
图中算术逻辑运算功能发生器74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M并行相连后连至SJ2插座,实验时通过6芯排线连至6位功能开关插座UJ2,以手动方式用二进制开关S3、S2、S1、S0、CN、M来模拟74LS181(U31、U32)的功能控制信号S3、S2、S1、S0、CN、M;其它电平控制信号LDAR1、LDAR2、ALUB、SWB以手动方式用二进制开关LDDR1、LDDR2、ALUB、SWB来模拟,这几个信号有自动和手动两种方式产生,通过跳线器切换,其中ALUB、SWB位低电平有效,LDDR1、LDDR2位高电平有效。
8位CPU的设计与实现
计算机组成原理实验题目8位CPU得系统设计学号1115106046姓名魏忠淋班级 11电子B 班指导老师凌朝东华侨大学电子工程系8位CPU得系统设计一、实验要求与任务完成从指令系统到CPU得设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。
具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。
1。
1设计指标能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;1、2设计要求画出电路原理图、仿真波形图;二、CPU得组成结构三、元器件得选择1.运算部件(ALU)ALU181得程序代码:LIBRARY IEEE;USEIEEE、STD_LOGIC_1164。
ALL;USEIEEE、STD_LOGIC_UNSIGNED.ALL;ENTITY ALU181 ISPORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO0 );A:IN STD_LOGIC_VECTOR(7 DOWNTO0);B: INSTD_LOGIC_VECTOR(7DOWNTO 0);F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);ﻩCOUT:OUTSTD_LOGIC_VECTOR(3 DOWNTO0);M :INSTD_LOGIC;CN : IN STD_LOGIC;CO,FZ:OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF ALU181 ISSIGNALA9 :STD_LOGIC_VECTOR(8DOWNTO 0);SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO0);SIGNALF9: STD_LOGIC_VECTOR(8 DOWNTO0);BEGINA9<= '0'& A; B9 <= ’0’&B;PROCESS(M,CN,A9,B9)BEGINCASE S ISWHEN "0000" =〉IF M='0’THEN F9<=A9 + CN ; ELSE F9<=NOT A9; E NDIF;WHEN "0001" =>IF M='0’THEN F9<=(A9 orB9)+ CN ;ELSE F9〈=NOT(A9OR B9);END IF;WHEN ”0010"=> IF M=’0’THEN F9〈=(A9 or(NOT B9))+C N; ELSE F9<=(NOT A9) ANDB9; ENDIF;WHEN "0011"=> IF M='0’THEN F9<= ”000000000"—CN ;ELSEF9<="000000000”;END IF;WHEN"0100”=> IFM='0'THENF9<=A9+(A9 ANDNOT B9)+ CN; ELSE F9〈=NOT(A9 ANDB9);END IF;WHEN ”0101”=>IFM='0' THENF9<=(A9orB9)+(A9 AND NOTB9)+CN ;ELSEF9<=NOT B9; END IF;WHEN"0110" =>IFM=’0’THEN F9〈=(A9- B9) -CN ;ELSE F9〈=A9XOR B9; ENDIF;WHEN”0111"=>IF M='0' THEN F9〈=(A9 or(NOT B9)) -CN ;ELSE F9<=A9 and (NOT B9); END IF;WHEN"1000" =>IFM='0'THEN F9<=A9+ (A9AND B9)+CN ; ELSE F9〈=(NOTA9)and B9; END IF;WHEN "1001”=> IF M=’0’THEN F9〈=A9+ B9 + CN ; ELSE F9<=NOT(A9 XOR B9); ENDIF;WHEN ”1010"=>IF M=’0'THEN F9〈=(A9or(NOTB9))+(A 9AND B9)+CN ; ELSEF9<=B9;END IF;WHEN "1011”=〉IF M='0'THENF9<=(A9 AND B9)- C N; ELSE F9<=A9 ANDB9; ENDIF;WHEN ”1100”=〉IF M='0'THENF9<=(A9 +A9) + CN; ELSEF9〈="000000001"; END IF;WHEN "1101”=〉IF M='0' THEN F9〈=(A9or B9)+ A9 + CN;ELSEF9〈=A9 OR (NOTB9); END IF;WHEN "1110"=>IF M='0'THENF9<=((A9 or (NOTB9)) +A9) + CN; ELSE F9〈=A9OR B9;END IF;WHEN”1111”=〉IFM=’0'THENF9<=A9 —CN ;ELSE F9<=A9 ; END IF;WHEN OTHERS=> F9<= ”000000000" ;ENDCASE;IF(A9=B9) THENFZ<=’0';END IF;ﻩEND PROCESS;F<=F9(7DOWNTO0) ;CO<= F9(8) ;COUT<="0000"WHEN F9(8)=’0'ELSE"0001";END behav;ALU得原理图:2、微控制器实现信息传送要靠微命令得控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求得数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
8位CPU的设计与实现
计算机组成原理CPU 实验题目 8位的系统设计1115106046 号学魏忠淋姓名B 11电子班班级凌朝东指导老师华侨大学电子工程系8位CPU的系统设计一、实验要求与任务完成从指令系统到CPU的设计,编写测试程序,通过运行测试程序对CPU设计进行正确性评定。
具体内容包括:典型指令系统(包括运算类、转移类、访存类)设计;CPU结构设计;规则文件与调试程序设计;CPU调试及测试程序运行。
1.1设计指标能实现加减法、左右移位、逻辑运算、数据存取、有无条件跳转、内存访问等指令;1.2设计要求画出电路原理图、仿真波形图;二、CPU的组成结构三、元器件的选择1.运算部件(ALU)ALU181的程序代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ALU181 ISPORT (S : IN STD_LOGIC_VECTOR(3 DOWNTO 0 );A : IN STD_LOGIC_VECTOR(7 DOWNTO 0);B : IN STD_LOGIC_VECTOR(7 DOWNTO 0);F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);M : IN STD_LOGIC;CN : IN STD_LOGIC;CO,FZ: OUT STD_LOGIC );END ALU181;ARCHITECTURE behav OF ALU181 ISSIGNAL A9 : STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL B9 : STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL F9 : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGINB9 <= '0' & B ; A9 <= '0' & A ;PROCESS(M,CN,A9,B9)BEGINCASE S ISWHEN ぜ?尰=> IF M='0' THEN F9<=A9 + CN ; ELSE F9<=NOT A9; END IF;WHEN IF M='0' THEN F9<=(A9 or B9) + CN ; ELSEF9<=NOT(A9 OR B9); END IF;WHEN 0 => IF M='0' THEN F9<=(A9 or (NOT B9))+ CN ; ELSEF9<=(NOT A9) AND B9; END IF;WHEN 1 => IF M='0' THEN F9<= ; ELSEF9<= END IF;WHEN 0 => IF M='0' THEN F9<=A9+(A9 AND NOT B9)+ CN ; ELSE F9<=NOT (A9 AND B9); END IF;WHEN 1 => IF M='0' THEN F9<=(A9 or B9)+(A9 AND NOT B9)+CN ; ELSE F9<=NOT B9; END IF;WHEN 0 => IF M='0' THEN F9<=(A9 - B9) - CN ; ELSE F9<=A9 XOR B9; END IF;WHEN 1 => IF M='0' THEN F9<=(A9 or (NOT B9)) - CN ; ELSE F9<=A9 and (NOT B9); END IF;WHEN @0 => IF M='0' THEN F9<=A9 + (A9 AND B9)+CN ; ELSE F9<=(NOT A9)and B9; END IF;WHEN @1 => IF M='0' THEN F9<=A9 + B9 + CN ; ELSE F9<=NOT(A9 XOR B9); END IF;WHEN A0 => IF M='0' THEN F9<=(A9 or(NOT B9))+(A9 AND B9)+CN ;ELSE F9<=B9; END IF;WHEN A1 => IF M='0' THEN F9<=(A9 AND B9)- CN ;ELSE F9<=A9 AND B9; END IF;WHEN H0 => IF M='0' THEN F9<=(A9 + A9) + CN ; ELSEF9<= END IF;WHEN H1 => IF M='0' THEN F9<=(A9 or B9) + A9 + CN ; ELSEF9<=A9 OR (NOT B9); END IF;WHEN I0 => IF M='0' THEN F9<=((A9 or (NOT B9)) +A9) + CN ; ELSEF9<=A9 OR B9; END IF;WHEN I1 => IF M='0' THEN F9<=A9 - CN ; ELSEF9<=A9 ; END IF;WHEN OTHERS => F9<=END CASE;IF(A9=B9) THEN FZ<='0';END IF;END PROCESS;F<= F9(7 DOWNTO 0) ; CO <= F9(8) ;COUT<=END behav;ALU的原理图:2.微控制器实现信息传送要靠微命令的控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
计算机组成原理CPU设计实验报告
计算机组成原理CPU设计实验报告课程设计题目:16位CPU设计学院: 信息学院班级:电子A班学号:1115102015姓名:方茹1目录1 实验方法 ..................................................................... . (4)2 总体说明 ..................................................................... ................................................. 5 2.1指令系统: .................................................................... .......................... 5 2.1.1指令格式分类(按指令字长和操作数不同): ...................................................... 5 2.1.2具体指令汇总表: .................................................................... .......................... 6 2.1.3相关指令流程图: .................................................................... .......................... 6 2.1.4指令数据通路的构建: .................................................................... ................... 8 2.1.5指令的分组及节拍: .................................................................... ..................... 12 2.1.6指令执行状态图:(见下页)..................................................................... ........... 13 2.1.7具体微指令: .................................................................... ............................... 13 2.2 系统整体介绍 ..................................................................... .................. 16 2.2.1系统基本模块划分 ..................................................................... ....................... 16 2.2.2总体结构图:(见下页)..................................................................... (17)3 CPU的控制逻辑与具体数据通道设计 ..................................................................... ......18 3.1取指令逻辑的设计 ..................................................................... .. (19)3.1.1指令地址的保存 ..................................................................... (19)3.1.2指令存储器 ..................................................................... .................................. 20 3.1.3下一条指令地址的计算 ..................................................................... ................ 20 3.2指令译码逻辑的设计...................................................................... ...................... 21 3.3指令执行逻辑的设计...................................................................... ...................... 22 3.4存储器访问逻辑的设计 ..................................................................... ................... 23 3.5结果写回逻辑的设计...................................................................... ...................... 24 3.6单周期CPU的总成...................................................................... (25)4各部分说明 ..................................................................... .............................................26 4.1ALU .................................................................................................................... 26 4.2数据选择器BUS_MUX ................................................................ ........................ 28 4.3器件T1 ..................................................................... .......................................... 30 4.4标志寄存器FLAG_REG ............................................................... ........................ 31 4.5T2: .................................................................... ................................................ 33 4.6程序计数器PC ..................................................................... ............................... 33 4.7地址寄存器AR和指令寄存器IR: .................................................................... .. 34 4.8寄存器、寄存器组和寄存器的选择.......................................................................36 4.9一位控制信号/WR .................................................................... ........................... 37 4.10 节拍发生器 ..................................................................... .................................. 37 4.11控制逻辑 ..................................................................... ...................................... 39 4.12T3...................................................................... ................................................ 42 4.13REG_OUT ......................................................................................................... 43 4.14存储器 ..................................................................... .......................................... 44 4.15总线选择器 ..................................................................... .. (45)24.16REG_TEST ............................................................... .. (46)5附录: .................................................................... .. (47)附录A:组员分工: .................................................................... .. (47)附录B:组员设计总结: .................................................................... . (47)31 实验方法实验要完成的工作主要包括:指令系统的设计,FPGA-CPU的整体结构设计及其细化,逻辑设计的具体实现(VHDL语言程序的编写),软件模拟,以及硬件调试。
8位CPU总线采样记录仪的设计
4 2・
《 测控技 术 ̄0 2年 第 3 21 1卷 第 2期
8位 C U总 线 采 样 记 录仪 的 设 计 P
程 耀 林 ,魏 华 兵 ,伍 时促 ,王 锐 ,陈 锟
( 中南 民族大学 电子信息工程学 院 , 湖北 武汉 4 07 ) 3 0 4
摘要 : 计 了一种 8位 C U 总线 采样 记 录仪 , 5 设 P 对 l单 片机 总 线进 行 采样 , 中提 取 如 下 4种信 息并 存 从
The De in fBu t a pl n S o i n t um e o sg o sDa a S m i a d t rng I sr ng ntf r
CPU t 8 bi S wih . t BU
C HENG o l , EI Hu - i g W U S iC , ANG i C Ya —i W a b n , n h— U W Ru , HE Ku N n ( c ol f l t nca d If m t n E gn eig S uhC nrl n es yfr a o a t s Wu a 3 0 4 C i ) S h o o e r i n n r ai n i r , o t— e t i ri t n li , h n4 0 7 , hn E co o o e n a U v t o N i ie a
储 : 外程 序代 码 和地 址 、 片 片外 数据 存储 器的数据 和地 址 。 它基 于 A t a 司提 供 的 D 0开发 板 , lr 公 e E 外接
A 8 S2单 片机 最 小 系统 , T95 带触摸 L D和 s C D卡 , F G 内实现 总线采 集模 块 , 同构 建 了一 个 S P 在 PA 共 OC 系统 , 过 在 No 通 i I s I中运 行 的软件 对数据进 行 存储 、 处理 。测试 结 果表 明 , 采集 的数 据 可使 用 T T文件 X
8位CPU设计与实现
计算机组成原理论文姓名:某某班级:计科一班学号:8位CPU的设计与实现论文CPU 的重要功效是履行指令,控制完成盘算机的各项操纵,包含运算操纵.传送操纵.输入/输出操纵等.作为模子盘算机设计,将重点放在存放器组,采纳较简略的构成模式,以尽量简练的设计帮忙读者控制CPU 的基起源基础理.此次设计CPU就是为了懂得CPU运行的道理,从而完成从指令体系到CPU的设计,并且经由过程仿真对CPU设计进行准确性评定.症结词:CPU,设计指标,电路道理图,运算部件,存放器组,模子机指令体系,微敕令序列,数据通路1. 设计的义务与请求1.1设计指标1. 能实现IN(输入).ADD(二进制加法).STA(存数).OUT(输出).JMP(无前提转移)这五种指令;2. 全部体系能正常稳固工作.1.2 设计请求1. 画出电路道理图;2.写出设计的全进程,附上有关材料和图纸(也可直接写在相干章节中),有心得领会.2. 计划论证与选择CPU的体系计划CPU 重要由算术逻辑单元ALU,数据暂存存放器DR1.DR2,数据存放器R0~R2,程序计数器PC,地址存放器AR,程序/数据存储器MEMORAY,指令存放器IR,微控制器uC,输入单元INPUT 和输出单元OUTPUT 所构成.图中虚线框内部分包含运算器.控制器.程序存储器.数据存储器和微程序存储器等,实测时,它们都可以在单片FPGA 中实现.虚线框外部分主如果输入/输出装配,包含键盘.数码管.LCD 显示器等,用于向CPU 输入数据,或CPU 向外输出数据,以及不雅察CPU 内部工作情形及运算成果.1.运算部件运算部件的义务是对操纵数进行加工处理.重要由三部分构成:(1)输入逻辑.(2)算术/逻辑运算部件ALU.(3)输出逻辑2.存放器组盘算机工作时,CPU 须要处理大量的控制信息和数据信息.例如对指令信息进行译码,以便产生响应控制敕令对操纵数进行算术或逻辑运算加工,并且根据运算成果决议后续操纵等.是以,在CPU 中须要设置若干存放器,临时存放这些信息.在模子CPU中,存放器组由R0.R1.R2 所构成.3.指令存放器指令存放器(IR)指令存放器指令存放器(IR)用来存放当前正在履行的指令,它的输出包含操纵码信息.地址信息等,是产生微敕令的重要逻辑根据.4.程序计数器程序计数器(PC)程序计数器程序计数器也称指令指针,用来指导指令在存储器中的存放地位.当程序次序履行时,每次从主存掏出一条指令,PC 内容就增量计数,指向下一条指令的地址.增量值取决于现行指令所占的存储单元数.假如现行指令只占一个存储单元,则PC 内容加1;若现行指令占了两个存储单元,那么PC 内容就要加2.当程序须要转移时,将转移地址送入PC,使PC 指向新的指令地址.是以,当现行指令履行完,PC 中存放的老是后续指令的地址;将该地址送往主存的地址存放器AR,即可从存储器读取下一条指令.5.地址存放器CPU 拜访存储器,起首要找到须要拜访的存储单元,是以设置地址存放器(AR)来存放被访单元的地址.当须要读取指令时,CPU 先将PC 的内容送入AR,再由AR将指令地址送往存储器.当须要读取或存放数据时,也要先将该数据的有用地址送入AR,再对存储器进行读写操纵.6.标记存放器标记存放器F是用来记载现行程序的运行状况和指导程序的工作方法的,标记位则用来反应当前途序的履行状况.一条指令履行后,CPU 根据履行成果设置响应特点位,作为决议程序流向的断定根据.例如,当特点位的状况与转移前提相符时,程序就进行转移;假如不相符,则次序履行.在后面将要介绍的较庞杂模子盘算机设计中设置了两个标记位:进位Fc.零位Fz.实现信息传送要靠微敕令的控制,是以在CPU 中设置微敕令产生部件,根据控制信息产生微敕令序列,对指令功效所请求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理.微敕令产生部件可由若干组合逻辑电路构成,也可以由专门的存储逻辑构成.产生微敕令的方法可分为组合逻辑控制方法和微程序控制方法两种.在本章所介绍的8 位模子CPU 设计中,采取微程序控制方法经由过程微程序控制器和微指令存储器产生微敕令,是以此CPU 属于庞杂指令CISC CPU.盘算机的工作经常是分步履行的,那么就须要有一种时光旌旗灯号作为分步履行的标记,如周期.节奏等.节奏是履行一个单步操纵所需的时光,一个周期可能包含几个节奏.如许,一条指令在履行进程中,根据不合的周期.节奏旌旗灯号,就能在不合的时光发出不合的微敕令完成不合的微操纵.周期.节奏.脉冲等旌旗灯号称为时序旌旗灯号,产生时序旌旗灯号的部件称为时序产生器或时序体系,它由一组触发器构成.由石英晶体振荡器输出频率稳固的脉冲旌旗灯号,也称时钟脉冲,为CPU 供给时钟基准.时钟脉冲经由一系列计数分频,产生所需的节奏(时钟周期)旌旗灯号.时钟脉冲与周期.节奏旌旗灯号和有关控制前提相联合,可以产生所需的各类工作脉冲.模子机指令体系一条指令必须包含下列信息:操纵码.操纵数的地址.操纵成果的存储地址.下一条指令的地址.指令的根本格局op-code 为操纵码,rs为源存放器,rd 为目标存放器存放器操纵数模子机指令体系,及其指令编码情势设模子机指令体系中包含有五条根本指令,分为算术运算指令.存取指令和控制转移指令等三种类型.五条机械指令分离是:IN(输入).ADD(二进制加法).STA(存数).OUT(输出).JMP(无前提转移).IN 为单字长(8 位二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码.拟定指令流程和微敕令序列(盘算机设计中最症结步调)1.微程序控制概念(1)微敕令和微操纵一条机械指令可以分化成一个微操纵序列,这些微操纵是盘算机中最根本的,不成再分化的操纵.在微程序控制的盘算机中,将控制部件向履行部件发出的各类控制敕令叫做微敕令,它是构成控制序列的最小单位.是以,微敕令是控制盘算机各部件完成某个根本微操纵的敕令.微敕令和微操纵是一一对应的.微敕令是微操纵的控制旌旗灯号,微操纵是微敕令的操纵进程.微敕令有兼容性和互斥性之分.兼容性微敕令是指那些可以同时产生,配合完成某一些微操纵的微敕令;而互斥性微敕令是指在机械中不许可同时消失的微敕令.兼容和互斥都是相对的,一个微敕令可以和一些微敕令兼容,和另一些微敕令互斥.对于单独一个微敕令,就无所谓兼容性或互斥性了.(2)微指令.微地址微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微敕令的聚集,存放控制字的控制存储器的单元地址就称为微地址.一条微指令平日至少包含两大部分信息:微操纵码字段,又称操纵控制字段,该字段指出微指令履行的微操纵;微地址码字段,又称次序控制字段,指出下一条要履行的微指令的地址.(3)微周期所谓微周期是指从控存中读掏出一条微指令并履行划定的响应操纵所需的时光.(4)微程序一系列微指令的有序聚集就是微程序.若干条有序的微指令构成了微程序.微程序可以控制实现一条机械指令的功效.或者说一条机械指令可以分化为特定的微指令序列.一旦机械的指令体系肯定今后,每条指令所对应的微程序被设计好并且存入控存后,控存老是处于只读的工作状况,所以控存一般采取只读存储器(ROM)存放.从新设计控存内容就能增长.删除.修正机械指令体系.在FPGA 中平日采取嵌入式阵列块构成的LPM_ROM 作为控存,存放微指令.(1)程度型微指令一次能界说并履行多个并行操纵微敕令的微指令.按照操纵控制字段的编码办法不合,程度型微敕令又分为三种:第一种是全程度型(不译码法)微指令,第二种是字段译码法程度型微指令,第三种是直接和字段译码相混杂的程度型微指令.(2)垂直型微指令垂直型微指令中设置操纵码字段,由微操纵码划定微指令的功效.垂直型微指令的构造相似于机械指令的构造.在一条微指令中只存一二个微敕令,每条微指令的功效比较简略.是以,实现一条机械指令的微程序要比程度型微指令编写的微程序长得多,它是采取较长的微程序构造去换取较短的微指令构造.3.模子机的微指令uA5~uA0:微程序控制器的微地址输出旌旗灯号,是下一条要履行的微指令的微地址.S3.S2.Sl.S0:由微程序控制器输出的ALU 操纵选择旌旗灯号,以控制履行16 种算术操纵或16 种逻辑操纵中的某一种操纵.M:微程序控制输出的ALU 操纵方法选择旌旗灯号.M=0 履行算术操纵;M=l履行逻辑操纵:微程序控制器输出的进位标记旌旗灯号,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 旌旗灯号.履行一条微指令的进程相似于机械指令的履行进程.起首,将微指令从控存CM 中掏出,称为取微指令.对于垂直型微指令还应包含微操纵码的译码时光.然后,履行微指令所划定的各个微操纵.根据微指令的履行方法可分为串行履行和并行履行两种.5.时序安插因为CPU 的工作是分步进行的,并且须要严厉准时控制,是以设置时序旌旗灯号,以便在不合的时光发出不合的微敕令,控制完成不合的操纵.组合逻辑控制方法和微程序控制方法在时序安插上有差别,前者多采取三级时序划分,尔后者往往采取两级时序.这是设计中最症结的步调,这是因为须要根据这一步的设计成果形成最后的控制逻辑.拟定指令流程是将指令履行进程中的每步传送操纵(存放器之间的信息传送),用流程图的情势描写出来,拟定微敕令序列是用操纵时光表列出每步操纵所需的微敕令及其产生前提.7.形成控制逻辑设计的最后一步.采取组合逻辑控制方法或采取程序控制方法,有各自不合的设计办法.在组合逻辑控制方法中,将产生微敕令的前提进行分解.化简,形成逻辑式,从而构成控制器的焦点逻辑电路.在微程序控制方法中,则是根据微敕令来编写微指令,构成微程序,从而构成以控制存储器为焦点的控制逻辑.2.4 微程序设计1.IN指令为了履行输入指令,CPU 要做两件工作.起首,由INPUT 输入装配的数据开关SW输入数据送到数据总线上;其次,经由过程数据总线将输入的数据写入存放器R0 中.2.ADD指令 R0←R0+(MEM)存储单元的地址是存放在紧跟在操纵码后的字节中的,是以,起首要以该字节的内容为地址,即将该单元内容送地址存放器AR;然后,从AR 所指向的RAM 存储单元掏出操纵数送给DR2.因为在取指令操纵码时,PC 已经主动加1,指向下一字节,该地址就是存放操纵数的存储单元的地址.3.STA指令向存储器RAM 写数据操纵STA,以紧跟在操纵码后的字节作为存放操纵数地址,将R0 中的数据存入该地址单元.起首将紧跟在操纵码后的字节的内容送给地址存放器AR.4. OUT指令AR←PC,PC←PC+1;以PC的内容作为存数据的地址BUS←RAM,AR←BUS;AR指向存放操纵数的RAM单元BUS←RAM,DR1←BUSOUT←DR15.JMP指令AR←PC,PC←PC+1 ;以PC的内容作为取数据的地址BUS←RAM,PC←BUS ;将RAM内容送PC,实现程序转移3. CPU设计及微代码3.1 道理图模版取指令阶段完成的义务是将现行指令从主存中掏出来并送至指令存放器中.具体的操纵如下:(1)将程序计数器(PC)中的内容送至存储器地址存放器(AR),并送往地址总线(AB).(2)PC 的内容递增,为取下一条指令做好预备.(3)由控制单元(CU)经控制总线(CB)向存储器发读敕令.(4)从主存中掏出的指令经由过程数据总线(DB)送到指令存放器(IR)中.以上这些操纵对任何一条指令来说都是必须要履行的操纵,所以称为公共操纵.完成取指阶段义务的时光称为取指周期.掏出指令后,指令译码器ID 可辨认和区分出不合的指令类型.此时盘算机进入剖析取数阶段,以获取操纵数.因为各条指令功效不合,寻址方法也不合,所以剖析取数阶段的操纵是各不雷同的.(5)指令存放器(IR)中的内容送指令译码器(ID)进行指令译码.(6)指令译码器(ID)的内容送操纵控制器.(7)操纵控制器产生履行指令的微控制.2. 剖析取数阶段对于无操纵数指令,只要辨认出是哪条具体的指令,即可以直接转至履行阶段,所以不需进入剖析取数阶段.而对于带操纵数指令,为读取操纵数起首要盘算出操纵数的有用地址.假如操纵数在通用存放器内,则不须要再拜访主存;假如操纵数在主存中,则要到主存中去取数.对于不合的寻址方法,有用地址的盘算办法是不合的,有时要多次拜访主存才干掏出操纵数(间接寻址).对于无操纵数指令,只要辨认出是哪条具体的指令,即可以直接转至履行阶段,所以不需进入剖析取数阶段.而对于带操纵数指令,为读取操纵数起首要盘算出操纵数的有用地址.假如操纵数在通用存放器内,则不须要再拜访主存;假如操纵数在主存中,则要到主存中去取数.对于不合的寻址方法,有用地址的盘算办法是不合的,有时要多次拜访主存才干掏出操纵数(间接寻址).别的对于单操纵数指令和双操纵数指令,因为须要的操纵数的个数不合,剖析取数阶段的操纵也不合.3. 履行阶段履行指令阶段完成指令划定的各类操纵.履行阶段完成义务的时光称为履行周期.盘算机的根本操纵进程就是取指令.取操纵数.履行指令,然后再取下一条指令……如斯周而复始,直至碰到停机指令或外来的干涉为止.微程序流程图是根据每条指令的微操纵流程所绘制的,操纵框内给出的是该微操纵要履行的动作.当拟定“取指”微指令时,该微指令的判别测试字段为P(1)测试,根据P(1)的测试成果将消失多路分支.因为操纵码的位数已肯定为4 位,所以可直接将操纵码与微地址码的部分对应.本模子机用指令存放器(IR7~IR0)的高4 位(IR7~IR4)与微地址码的后4 位对应.模子机的微地址码共有六位,微地址码的高三位已固定为001,低三位从000~111 共有八种状况,现设计了五条指令,须要五个分支进口,是以,将低三位中的000B~100B 这五个地址分派给这五条指令,就得到五个分支进口微地址.这五个分支进口(以八进制暗示)分离是10.11.12.13 和14,占用五个固定的微地址单元.其余的微操纵单元的微地址设置,可以将还未应用的微地址按照从小到大的次序依次分派给这些微操纵单元,微地址的分派情形见图5-4.微地址标注在每个微操纵框的左上角,右上角标注的是微指令码.ALU 为运算器;DR0 和DR1 为其输入端的两个暂存存放器;R0 是数据存放器,用来保管数据和运算成果;PC 为程序计数器;IR 和ID分离为指令存放器和指令译码器;AR 和MOMERY 分离为存储地址存放器和存储数据存放器;INPUT 为输入装配;OUTPUT 为输出装配.各根本单元模块的输出端经由过程三态门控制与内部数据总线相衔接;微控制器按照时序产生器的节奏,对指令进行译码后产生同步的控制旌旗灯号.各部件旁边的C 是由微指令译码器输出的控制旌旗灯号,用于控制数据的输入和输出.与数据总线相连的旌旗灯号有些是单向的,有些则是双向的.如数据存放器.存储器.I/O 接口的数据旌旗灯号是双向的,而指令旌旗灯号.地址旌旗灯号.控制旌旗灯号是单向的.现实上在FPGA 中,双向端口元件的表述办法是:输入和输出端口采取两个不合的端口,这时各根本元件的输出端口不克不及直接与内部总线衔接在一路,而是须要经由过程三态门控制今后再衔接到总线上.在向总线输出数据时,不克不及同时有两路或两路以上数据一路输出,不然会产生数据冲突.是以在设计微程序.肯定微操纵时,应留意数据传输中控制旌旗灯号对时序的请求.3.5 微程序控制的基起源基础理3.6 在模子CPU中的软件履行微指令履行情形经由过程此次的设计,我受益匪浅.起首,我对CPU有了根本熟悉,熟悉它的道理,构造,运行;其次,我对微指令的熟悉也有了进一步进步,特殊是指令对应的功效以及对指令的懂得;再次,我对该部件的道理及功效运行有了必定层次的懂得;最后,我必须承认,不管碰到什么问题都要从底层抓起,然后去解决问题,当我对某些器械不懂时,要从书本的最根本概念看起,再到道理,运行层次,构造等去懂得才干真正懂,还有和他人的交换很重要,不懂的问题彼此交换看法可以受益匪浅.我很感激此次机遇让我有了一次锤炼.参考文献:[1] 潘松潘明. 现代盘算机构成道理. 科学出版社.[2] 王爱英.盘算机构成与构造(第四版).清华大学出版社.。
CPU设计
作业:10、解:对非常简单CPU增加了一条CLEAR指令后的新的状态图如下:其RTL代码如下:FETCH1:AR PCFETCH2:DR M, PC PC+1FETCH3:IR DR[7..6], AR DR[5,0]ADD1:DR MADD2:AC AC+DRAND1:DR MAND2:AC AC^DRJMP :PC DR[5..0]R5 :DR[5] 1 或DR[5] 0INC :AC AC+1CLEAR:AC 011、解:一、确定CPU的用途以下设计的CPU是要用来执行取反运算、加法运算、逻辑或运算、减法运算这四条指令的,而且该CPU能够访问64个字的存储器,每个字为8位宽。
字长:8位D[7....0]寻址范围:64Btye ,2^6=64,A[5....0]二、确定ISA1、程序员可访问的寄存器在下表中,为了完成COM , JREL , OR 和SUB1这四条指令,显然我们只需用到一个通用寄存器AC——8位累加器就可以实现。
指令操作码操作COM 00XX XXXX AC AC' (取反)JRET 01AA AAAA PC PC+00AA AAAAOR 10AA AAAA AC AC^M[00AA AAAA]SUB1 11AA AAAA AC AC—M[00AA AAAA]—12、CPU还需要一些其他的寄存器以便完成取指令(或数据)、译码和执行指令所必须的内部操作,最基本的寄存器有:AR(地址寄存器)——6位,由A[5.....0]向存贮提供地址PC (程序计数器)——6位,指出下一条指令的地址DR(数据寄存器)——8位,通过D[7....0]从存贮器接受指令和数据IR(指令寄存器)——2位,存放从存贮器中取回的指令的操作码部分。
三、为CPU设计状态图为了确定CPU的状态图,需对每条指令作如下分析:1、从存贮器取出指令(所有指令都相同)2、指令译码3、指令执行从存贮器中取出指令:1、原理:根据冯. 诺依曼型机的原理(指令在存贮器中按顺序存放.......), 在CPU能执行指令之前,它必须将这条指令从存贮中取出,CPU通过执行如下的操作序列完成这个任务的:【1】选择存贮单元由A[5... 0]确定【2】对A[5... 0]译码、延迟、并向存贮器发一个信号(如READ或R/W'=1),使存贮器将此指令输出到它的输出引脚。
八位二进制累加器的设计
输入电压V=5V时,当Cin=1,A=1,B由0->1变化时,用计算器中的delay函数测得此最坏下降延时(对于Sum来说,此时相当于最坏的上升延时)如图所示。由图可知,Sum最坏的上升延时为484.14ps;而Sum_layout最坏的上升延时。所以,版图仿真的最坏上升延时比原理图仿真的最坏延时小79.1ps。
图七Cin=1,A=1,B由0->1时功耗的波形
(2)最坏的下降延时分析
下面利用瞬态分析,测量Cin=0,A=0,B由1->0变化时的延时情况。如下图所示,是该情况下的输入输出波形。
图八Cin=0,A=0,B由1->0时,输入输出波形
用计算器中的delay函数测得此时的最坏上升延时(对于Sum来说,此时相当于最坏的下降延时)如图九所示。由图可知,最坏的下降延时为528.98ps
aபைடு நூலகம்组内并行,组间串行的进位链
b)组内并行,组间并行的进位链
它们的目的就是要进位信号的产生尽可能的快,因此产生了二重进位链或更高重进位链,显然进位速度的提高是以硬件设计的复杂化为代价来实现的。
(3)串行加法进位
串行加法进位从最低位进到最高位,即整个进位是分若干步骤进行的。
优点:具有器件少、成本低、电路结构简单的优点。缺点:运算速度慢。
正电平触发式触发器的状态在CP=1期间翻转,在CP=0期间保持不变。电平触发式触发器的缺点是存在空翻现象,通常只能用于数据锁存。
(2)主从触发器:
主从触发器由分别工作在时钟脉冲CP不同时段的主触发器和从触发器构成,通常只能在CP下降沿时刻状态发生翻转,而在CP其他时刻保持状态不变。它虽然克服了空翻,但对输入信号仍有限制。
eda实验报告
EDA技术与 VHDL 实验报告电气工程系电子信息工程实验一: 1 位全加器设计实验目的:I1131.学习 QuartusII9.1 集成开发环境的使用方法以及如何建立工程和文件;2.用原理图输入设计法和VHDL 文本输入设计法设计1 位全加器;3.通过电路仿真和硬件验证,进一步了解1 位全加器的功能I113实验内容:用原理图输入设计法和VHDL 文本输入设计法分别设计1 位全加器,并下载到 CH4 实验箱上运行。
实验原理: 1 位全加器可以由两个半加器和一个或门连接而成, 因而可根据半加器的电路 (如图 3-1 所示)或真值表写出或门和半加器的 VHDL 描述。
然后根据图 3-2 写出全加器的顶层描述。
co a b so co0 0 0 0 aand20 1 1 0bnot xnor2so1 0 1 0111图 3-1半加器 h_adder 电路图及其真值表u1dh_adder a or2aainh_adder ccoutf_addercoutain A coAco f bbinsumbin BsoeBsou3sumcincinu2图 3-2全加器 f_adder 电路图及其实体模块实验步骤:1.打开实验箱电源; 2.输入移位寄存器 VHDL 程序;3.点击图标,进行分析和综合;4. 建立波形文件,进行功能仿真; 5.按接线图配置 FPGA 引脚; 6.点击图标 ,进行编译;7.下载 ****.sof 配置文件到 EP3C16Q240C8中;1 半加器的 vhdl 描述有两种,我用的是下面这种,布尔函数描述法 :( 1)布尔函数描述方法的VHDL 源程序如下:LIBRARY IEEE; --半加器描述 (1):布尔方程描述方法USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT (a, b : IN STD_LOGIC;co, so : OUT STD_LOGIC);END ENTITY h_adder;ARCHITECTURE fh1 OF h_adder isBEGINso <= NOT(a XOR (NOT b)) ; co <= a AND b ;END ARCHITECTURE fh1;( 2)或门逻辑描述:LIBRARY IEEE ; --或门逻辑描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a ISPORT (a, b :IN STD_LOGIC;c : OUT STD_LOGIC );END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINc <= a OR b ;END ARCHITECTURE one ;( 3) 1 位二进制全加器顶层设计描述:LIBRARY IEEE; --1 位二进制全加器顶层设计描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_adder ISPORT (ain, bin, cin : IN STD_LOGIC;cout , sum: OUT STD_LOGIC );END ENTITY f_adder;ARCHITECTURE fd1 OF f_adder ISCOMPONENT h_adder--调用半加器声明语句PORT ( a, b :IN STD_LOGIC;co, so :OUT STD_LOGIC);END COMPONENT ;COMPONENT or2aPORT (a, b : IN STD_LOGIC;c : OUT STD_LOGIC);END COMPONENT;SIGNAL d, e,f : STD_LOGIC; --定义 3 个信号作为内部的连接线。
单周期MIPS CPU实验(8条指令)
单周期M I P S C P U设计实验目的⏹掌握硬布线控制器设计的基本原理⏹能利用相关原理在Logisim平台中设计实现MIPS单周期CPU⏹主要任务☐绘制MIPS CPU数据通路☐实现单周期硬布线控制器☐测试联调核心指令集(可实现内存区域冒泡排序)#MIPS指令RTL功能描述1add$rd,$rs,$rt R[$rd]←R[$rs]+R[$rt]溢出时产生异常,且不修改R[$rd] 2slt$rd,$rs,$rt R[$rd]←R[$rs]<R[$rt]小于置1,有符号比较3addi$rt,$rs,imm R[$rt]←R[$rs]+SignExt(imm)溢出产生异常16b4lw$rt,imm($rs)R[$rt]←Mem4B(R[$rs]+SignExt16b(imm))5sw$rt,imm($rs)Mem4B(R[$rs]+SignExt16b(imm))←R[$rt]6beq$rs,$rt,imm if(R[$rs]=R[$rt])PC←PC+SignExt18b({imm,00})7bne$rs,$rt,imm if(R[$rs]!=R[$rt])PC←PC+SignExt18b({imm,00})8syscall系统调用,这里用于停机单周期MIPS 参考数据通路MemtoReg MemWrite Branch AluOP ALUSrc RegDstRegWritePCSrcCLKPCRDA指令存储器指令字4PC+45:020:1625:2115:1115:0Sign ExtendSignImmR1#R2#W#WDWE 寄存器堆R1R2101011<<2+PCBranchSrcB SrcA EqualA L UALUResult WriteDataWERD A 数据存储器WD ReadData WriteBackData++BranchAddress31:26CLK CLKPC+4控制器FuncOp rsrtrd步骤1:构建MIPS主机通路⏹在MIPS单周期CPU子电路中,利用如下组件构建MIPS 单周期CPU数据通路☐PC、IMEM、RegFile、ALU、DMEM、Controller步骤2:设计单周期MIPS控制器⏹输入信号⏹指令字Opcode,Func字段(12位)⏹输出信号⏹多路选择器选择信号⏹内存访问控制信号⏹寄存器写使能信号⏹运算器控制信号、指令译码信号⏹纯组合逻辑电路、无时序逻辑控制信号功能说明(8条核心指令集)#控制信号信号说明产生条件1MemToReg写入寄存器的数据来自存储器lw指令2MemWrite写内存控制信号sw指令未单独设置MemRead信号3Beq Beq指令译码信号Beq指令4Bne Bne指令译码信号Bne指令5AluOP运算器操作控制符加法,比较两种运算6AluSrcB运算器第二输入选择Lw指令,sw指令,addi7RegWrite寄存器写使能控制信号寄存器写回信号8RegDst写入寄存器选择控制信号R型指令9Halt停机信号,取反后控制PC使能端syscall指令完善硬布线控制器内部逻辑⏹打开CPU.circ打开单周期硬布线控制器电路⏹实现指令译码、ALU控制逻辑完善控制信号逻辑⏹增加简单的组合逻辑⏹根据给出的指令译码信号,实现所有控制信号逻辑步骤3:CPU测试⏹在指令存储器中载入排序程序sort.hex⏹时钟自动仿真,Windows:Ctrl+k Mac: command+k运行程序⏹程序停机后,查看数据存储器中排序情况,有符号降序排列下节课再见…。
计算机组成原理实验报告-八位补码加减法器的设计与实现
计算机科学与技术学院计算机组成原理实验报告书实验名称八位补码加/减法器的设计与实现班级学号姓名指导教师日期成绩实验1八位补码加/减法器的设计与实现一、实验目的1.掌握算术逻辑运算单元(ALU)的工作原理。
2.熟悉简单运算器的数据传送通路。
3.掌握8位补码加/减法运算器的设计方法。
4.掌握运算器电路的仿真测试方法二、实验任务1.设计一个8位补码加/减法运算器(1)参考图1,在QUARTUS II里输入原理图,设计一个8位补码加/减法运算器。
(2)创建波形文件,对该8位补码加/减法运算器进行功能仿真测试。
(3)测试通过后,封装成一个芯片。
2.设计8位运算器通路电路参考下图,利用实验任务1设计的8位补码加/减法运算器芯片建立运算器通路。
3.利用仿真波形,测试数据通路的正确性。
设定各控制信号的状态,完成下列操作,要求记录各控制信号的值及时序关系。
(1)在输入数据IN7~IN0上输入数据后,开启输入缓冲三态门,检查总线BUS7~BUS0上的值与IN0~IN7端输入的数据是否一致。
(2)给DR1存入55H,检查数据是否存入,请说明检查方法。
(3)给DR2存入AAH,检查数据是否存入,请说明检查方法。
(4)完成加法运算,求55H+AAH,检查运算结果是否正确,请说明检查方法。
(5)完成减法运算,分别求55H-AAH和AAH-55H,检查运算结果是否正确,请说明检查方法。
(6)求12H+34H-56H,将结果存入寄存器R0,检查运算结果是否正确,同时检查数据是否存入,请说明检查方法。
三、实验要求(1)做好实验预习,掌握运算器的数据传送通路和ALU的功能特性。
(2)实验完毕,写出实验报告,内容如下:①实验目的。
②实验电路图。
③按实验任务3的要求,填写下表,以记录各控制信号的值及时序关系。
表中的序号表示各控制信号之间的时序关系。
要求一个控制任务填一张表,并可用文字对有关内容进行说明。
号-bus BUS R0 R1 R2 u-busIN0 BUS0⑤实验体会与小结。
简单的CPU设计
CPU 设计10 计算机科学与技术姓名:谢xx学号:201040200xx一.非常简单的CPU设计规范:1.确定CPU的用途:该CPU的字长为8位,寻址范围为64个字节,并且要求能实现4条简单的指令。
2.确定ISA:要实现的指令集如下:要实现该CPU的功能,还需要一些寄存器完成取指,译码和执行的步骤:AR(地址寄存器)—6位,由A[7..0]向存贮器提供地址PC (程序计数器) —6位,指出下一条指令的地址DR (数据寄存器) —8位,通过D[7..0]从存贮器接收指令和数据IR (指令寄存器) —2位,存放从存贮器中取回的指令的操作码部分3.为CPU设计状态图:为了确定CPU的状态图,需对每条指令作如下分析:①从存贮器中取指令②指令译码③指令执行二.从存贮器中取指令:⑴原理:根据冯•诺依曼型的原理(指令在存贮器中顺序存放••••••),在CPU能执行指令之前,它必须将这条指令从存贮器中取出,CPU通过执行如下的操作序列完成这个任务:①选择存贮单元由A[5..0]确定②对A[5..0]译码、延迟并向存贮器中发一个信号,使存贮器将此指令输出到它的输出引脚。
这些引脚与CPU的D[7..0]相连接。
CPU从这些引脚读入数据。
⑵具体的操作①要取的指令的地址存放在程序计数器(PC)中。
由于A[5..0]从地址寄存器AR中。
这样,取指令周期的第一个状态就是:FETCH1:AR←PC这一状态的意义是当FETCH为真时,把PC的值送到AR,执行微操作AR←PC,以下同理。
②CPU必须存贮器中读取指令。
为此CPU必须发一个READ信号到存贮器的RD端使存贮器将数据送到D[7..0]上。
同时,CPU读进该数据并放到DR 中,因为DR是用来访问存贮器的唯一寄存器。
同时还实现微操作PC←PC+1,为取下一条指令作准备。
FETCH2:DR←M,PC←PC+1③作为取指令的一部分,CPU还必须完成两件事。
•DR的高2位拷贝到IR,母的是确定指令的功能(即将指令的操作码读入IR)·DR的第六位拷贝到AR。
计算机组成原理实验报告-八位补码加减法器的设计与实现
计算机科学与技术学院计算机组成原理实验报告书实验名称八位补码加/减法器的设计与实现班级学号姓名指导教师日期成绩实验1八位补码加/减法器的设计与实现一、实验目的1.掌握算术逻辑运算单元(ALU)的工作原理。
2.熟悉简单运算器的数据传送通路。
3.掌握8位补码加/减法运算器的设计方法。
4.掌握运算器电路的仿真测试方法二、实验任务1.设计一个8位补码加/减法运算器(1)参考图1,在QUARTUS II里输入原理图,设计一个8位补码加/减法运算器。
(2)创建波形文件,对该8位补码加/减法运算器进行功能仿真测试。
(3)测试通过后,封装成一个芯片。
2.设计8位运算器通路电路参考下图,利用实验任务1设计的8位补码加/减法运算器芯片建立运算器通路。
3.利用仿真波形,测试数据通路的正确性。
设定各控制信号的状态,完成下列操作,要求记录各控制信号的值及时序关系。
(1)在输入数据IN7~IN0上输入数据后,开启输入缓冲三态门,检查总线BUS7~BUS0上的值与IN0~IN7端输入的数据是否一致。
(2)给DR1存入55H,检查数据是否存入,请说明检查方法。
(3)给DR2存入AAH,检查数据是否存入,请说明检查方法。
(4)完成加法运算,求55H+AAH,检查运算结果是否正确,请说明检查方法。
(5)完成减法运算,分别求55H-AAH和AAH-55H,检查运算结果是否正确,请说明检查方法。
(6)求12H+34H-56H,将结果存入寄存器R0,检查运算结果是否正确,同时检查数据是否存入,请说明检查方法。
三、实验要求(1)做好实验预习,掌握运算器的数据传送通路和ALU的功能特性。
(2)实验完毕,写出实验报告,内容如下:①实验目的。
②实验电路图。
③按实验任务3的要求,填写下表,以记录各控制信号的值及时序关系。
表中的序号表示各控制信号之间的时序关系。
要求一个控制任务填一张表,并可用文字对有关内容进行说明。
⑤实验体会与小结。
四、实验预习内容1.实验电路设计原理及思路说明本实验利用基本逻辑门电路设计一位全加器(FA),如表1:法又可以实现减法,所以使用了一个M输入来进行方式控制加减。
ASIC实验报告(8位CPU的设计)
ASIC设计实验报告学院:电子工程学院学号:2014*******姓名:***指导老师:***2014年11月13日一、实验目的:通过对ASIC实验课的学习,应当学会以下几点:1.熟悉Linux操作系统的应用环境,基本命令行的应用,以及对vi编辑器熟练应用。
2.熟练掌握Verilog编程语言,包括基本组合逻辑电路的实现方法,基本时序逻辑电路的实现方法,怎样使用预定义的库文件,利用always块实现组合逻辑电路的方法已经着重了解assign与always 两种组合逻辑电路实现方法之间的区别,深入了解阻塞赋值与非阻塞赋值的概念以及应用的差别,有限状态机(FSM)实现复杂时序逻辑的方法,以及学会在Linux 系统环境当中应用Synopsys工具VCS进行仿真。
3.熟悉电路设计当中的层次化、结构化的设计方法。
4.熟悉CPU当中有哪些模块组成,模块之间的关系,以及其基本的工作原理。
5.学会利用汇编语言设计程序,注意代码规范性要求。
二、实验要求:按照实验指导书上的要求即:CPU各个模块的Verilog语言代码的编写、编译及仿真正确,并在规定的时间内完成。
要求对CPU进行语言级系统仿真结果正确之后,利用该实验当中采用的八个汇编关键字,编写一个能够实现某种功能的小程序。
然后对其中的控制器电路进行综合,并检查Timing 和Power,进行门级仿真。
三、实验内容:设计一个8位RISC_CPU 系统。
(RISC: Reduced Instruction Set Computer),它是一种八十年代才出现的CPU,与一般的CPU相比,不仅只是简化了指令系统,而且通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。
从实现的方法上,它的时序控制信号部件使用了硬布线逻辑,而不是采用微程序控制方式,故产生控制序列的速度要快的多,因为省去了读取微指令的时间。
此CPU所具有的功能有:(1)取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。
基于VHDL语言的8位CPU的设计(quartus仿真)
假设指令地址为0、1、2、3…,为便于显示,设置地址指令和程序计数器输出为数制十进制, 仿真波形如下图:
图2.14 程序计数电路仿真波形
第二部分:RISC-CPU各模块设计与仿真
8. 状态控制器
是CPU的控制核心, 用于产生一系列的控 制信号,启动或停止 某些部件,由状态机 和状态机控制器组成, 如图。
图2.9 数据输出控制器
假设累加器输出值由00000000递增,验证当data_ena为1时,data输出alu_out的值,当 data_ena为0时,data输出"ZZZZZZZZ"。波形如下:
图2.10 数据输出控制器仿真波形
第二部分:RISC-CPU各模块设计与仿真
6. 地址多路器
用于选择输出的地址是PC地址还是数据/ 端口地址,如图2.11所示。每个指令周期的 前4个时钟周期用于从ROM中读取指令,输 出PC地址。后4个时钟周期用于对RAM或 端口的读写,输出数据或端口地址。
图2.7算术逻辑单元
在仿真过程中,假设操作码依次为上述8种操作码。数据值为5,累加器值为由3变0,以此来 验证zero作用。仿真波形下图所示:
图2.8 算术逻辑运算单元仿真波形
第二部分:RISC-CPU各模块设计与仿真
5.数据输出控制器
控制累加器数据输出,如图2.9由于数据总 线是各种操作时传送数据的公共通道,不同 的情况下传送不同的内容。有时要传输指令, 有时要传送RAM区或接口的数据。
图3.2 RISC-CPU各模块连接图
谢谢!!
WPS Office
Make Presentation much more fun
@WPS官方微博 @kingsoftwps
基于VHDL语言的8位 RISC-CPU的设计
单片机课程设计报告 八路抢答器
单片机课程设计报告八路抢答器————————————————————————————————作者:————————————————————————————————日期:《单片机原理及接口技术》课程设计报告课题名称题目15八路抢答器设计★★学院自动控制与机械工程学院专业电气工程及其自动化班级姓名学号时间2011-12-27目录前言 (3)一、课程设计的目的和要求……………………………….。
.3二、方案设计2。
1功能介绍 (5)2。
2抢答器的工作原理 (6)三、硬件设计电路设计3。
1原理图的确定...................................................。
7 3。
2芯片的选择......................................................。
8 3。
3复位电路的设计......。
...。
.。
...。
.。
.。
..。
..。
..。
.。
.。
...。
(10)3.4晶振电路的设计……。
..。
..。
..。
.。
.。
.。
...。
...。
...。
.。
...。
.11 3。
5数码显示管的选择……。
.。
.....。
.。
.。
.。
.。
....。
..。
.。
..113.6报警设计……。
..。
.。
....。
.。
..。
.。
.。
....。
.。
.......。
.。
.。
.。
123.7 八位抢答输入设计...............................。
.........。
(12)3。
8主持人控制按键……………………。
.。
.。
..。
.。
..。
..。
.....。
.。
13四、软件设计思想及流程4。
1 主程序的设计 (14)4。
2子程序的设计 (15)五.调试过程和调试方法……………………………………。
..20六、课程设计体会 (22)七、参考文献 (22)附录 (23)前言单片机和其他微型机一样,也是由CPU(包括运算器和控制器)、存储器、输入设备、输出设备组成,只不过单片机是将CPU、RAM、ROM、定时/计数器,以及输入/输出(I/O)接口电路等计算机的主要部件集成在一小块硅片上的单片微型计算机.它具有体积小、可靠性高、性价比高等优点,主要应用于工业检测与控制、计算机外设、只能仪器仪表、通讯设备、家用电器和机电一体化产品等领域。
简单CPU设计
程序计数器用于提供指令地址,以便读取指令,指令按地址顺序存放在存储器中。有两种途径
可形成指令地址:其一是顺序执行的情况,其二是遇到要改变顺序执行程序的情况,例如执行 JMP
指令后,需要形成新的指令地址。
复位后,指令指针为零,即每次 CPU 重新启动将从 ROM 的零地址开始读取指令并执行。每条指
令执行完需 1 个时钟,这时 pc_addr 已被增 1,指向下一条指令。如果正执行的指令是跳转语句,这
load_ir 信号控制。load_ir 信号通过 ena 口输入到指令寄存器。复位后,指令寄存器被清为零。
Verilog 代码:
module
register(opcode,ir_addr,data,ena,clk,rst);
4
output [2:0] opcode; output [4:0] ir_addr; input [7:0] data; input ena, clk, rst; reg [2:0] opcode; reg [4:0] ir_addr;
end
LDA =3'b101,
LDA: alu_out<=data;
STO =3'b110,
STO: alu_out<=accum;
JA =3'b111;
JA: alu_out<=accum;
default: alu_out<=8'bxxxx_xxxx;
assign zero=!accum;
endcase
output [7:0]alu_out;
SUB: alu_out<=accum-data;
output zero,bz;
MUL:begin
实验2运算器ALU实验
实验2 运算器ALU实验运算器ALU是CPU的主要部件,数据处理的中心。
ALU可以实现算术加减运算和逻辑“与”、“或”、“非”运算,本实验设计8位ALU,为完成8为ALU,我们从1位全加器设计开始,经1位加法器,4位加法器,4位加减法器,到4位算术逻辑运算器ALU;再由4位ALU到8位ALU。
2.1 1位加法器设计1位加法器是构成多位加法器的基础,通过1位加法器可以组成4位加法器,4位减法器。
因此,本实验首先从1位全加器开始。
2.1.1 实验题目1位全加器。
2.1.2 实验内容设计1位全加器,并通过输入波形图验证。
2.1.3 实验目的与要求通过本实验使学生进一步掌握电子电路的设计方法,熟悉CAD软件QuartusII的使用,掌握使用QuartusII仿真来验证电路设计正确性的方法。
2.1.4 实验步骤设置本实验的项目所在路径,命名项目的名称为1ALU,顶层文件的名称也自动命名为1ALU。
如在文件夹C:\eda\ALU下新建工程1ALU,如图2-1 新建工程1ALU所示。
图2-1 新建工程1ALU直接点击next,直到器件选择对话框,如图2-2所示。
这里根据最终使用的FPGA器件选择一种器件,如Cyclone下的EP1C3T144C8,如果不下载到FPGA上进行实验,选择哪一种器件都无所谓。
图2-2 实现器件选择指定设计、仿真和时序验证工具,如图2-3所示,点击next,完成工程建立。
图2-3 工具选择设计1位全加器FA1位全加器是指可以实现两个1位二进制数和低位进位的加法运算逻辑电路(半加器不包括低位进位C i-1)。
它依据的逻辑表达式是:进位C i=A i B i+A i C i-1+B i C i-1,和S i=A i⊕B i⊕C i-1(本算式推导过程可以在教材中找到)。
其中A i和B i是两个1位二进制数,C i代表向高位的进位,C i-1代表低位来的进位,S i代表本位和。
依据上述逻辑表达式,设计实现1位全加的电路图。
VHDL实现简单的8位CPU
VHDL实现简单的8位CPU设计者:E-MAIL:CPU具有的功能:能完成一些简单的指令MOV AX,ADDRESS4 --将address4中的内容赋给AX寄存器(在8086/8088汇编语言中称这种寻址方式为直接寻址方式)ADD AX,ADDRESS4 -- 将address4中的内容加到AX寄存器中SUB AX,ADDRESS4 -- 用address4中的内容减去AX寄存器中的内容OUT -- 输出AX寄存器中的内容HLT -- CPU停止运行CPU工作的时序图:S0状态:程序计数器(PC)将值赋给MARS1状态:PC<=PC+1 注意:因为在设计状态机时引入了复位键(RST),为了避免一个信号有多个源,因而将时序进程(REG:PROCESS)和组合进程(COM:PROCESS)合二为一。
但是产生了一个比较麻烦的事情--------------即一个状态占用了两个时钟周期。
所以在设计PC<=PC+1时,引入了标志寄存器(FLAG),以确保在S1状态PC只加一次S2状态:从只读存储器(ROM)中读取汇编指令,并且将赋给指令寄存器(IR)IR<=DATABUS------------------------------------------------------------------------------------------------------------------------------------------------ 从S0-S2状态每条指令的执行都是相同的S3状态:取出指令寄存器的高4位(汇编的指令代码)进行译码if (temp="0000") or (temp="0001")or (temp="0010") thenmar<=ir(3 downto 0); --将数据存储的地址赋给MARelsif temp="1110" thenoutput_data<=ax; -- out overelsif temp="1111" thenrun<='0'; --Hlt overend if;有上面的程序可以看出,当指令是MOV、ADD、SUB中的一个时,取出地址当指令是OUT时将累加器中的值输出,该条指令做完当指令是HLT(1111)时,程序停止运行,该条指令做完S4状态:if temp="0000" then - -MOV AX,data overax<=dataBus;elsif temp="0001" then --ADD ax,databx<=databus;f1<='1';elsif temp="0010" then --SUB ax,bxbx<=databus;f1<='1';end if;读出RAM 中的内容(在此设计中,用ROM代替了RAM)在此状态MOV指令结束S5状态:为计算状态if temp="0001" and f1='1' thenax<=ax+bx;f1<='0';elsif temp="0010" and f1='1' thenax<=ax-bx;f1<='0';end if;当指令是ADD(0001)时,AX<=AX+BX当指令是SUB(0010)时,AX<=AX-BX此图为Modelsim se6.0的功能仿真图(结果为62 =(10+20+1)×2 注:×2用SHL指令实现因为其目的寄存器为Ax所以实现方法同OUT、HLT请读者自己实现)源程序:ROM16_4.VHD--//////////////////////////////////////////////////////////--16*8ROM--CE=0时允许读--huyugui--2005,1,28--//////////////////////////////////////////////////////////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity rom16_8 isport( addr:in std_logic_vector(3 downto 0);ce:in std_logic;dataout:out std_logic_vector(7 downto 0));end entity rom16_8;architecture behave of rom16_8 isbegin--10+20+60-10=80hdataout<="00001001" when addr="0000" and ce='0' else --mov ax,9h"00011010" when addr="0001" and ce='0' else --add ax,ah"00011011" when addr="0010" and ce='0' else --add ax,bh"00101100" when addr="0011" and ce='0' else --sub ax,ch"" when addr="0100" and ce='0' else --out"" when addr="0101" and ce='0' else --hlt"00000000" when addr="0110" and ce='0' else"00000000" when addr="0111" and ce='0' else"00000000" when addr="1000" and ce='0' else"00010000" when addr="1001" and ce='0' else --10h"00100000" when addr="1010" and ce='0' else --20h"01100000" when addr="1011" and ce='0' else --60h"00010000" when addr="1100" and ce='0' else --10h"00000000" when addr="1101" and ce='0' else"00000000" when addr="1110" and ce='0' else"00000000" when addr="1111" and ce='0' else"";end architecture behave;CPU_CONTROL.VHD--/////////////////////////////////////////////////////////////////////////////--8_CPU--mov ax,address /add ax,address/sub ax,address/out /hlt--说明:address为4位的地址(9H-fH)--完善:每个状态为一个时钟周期,这样的话PC<=PC+1在S1状态将只做一次,时钟将--得到很大的改善--设计者:胡玉贵--时间:2005,1,29A--/////////////////////////////////////////////////////////////////////////////library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity cpu_control isport(clk:in std_logic;rst:in std_logic;output_data,databus_out:out std_logic_vector(7 downto 0));end entity cpu_control;architecture behave of cpu_control iscomponent rom16_8 isport( addr:in std_logic_vector(3 downto 0);ce:in std_logic;dataout:out std_logic_vector(7 downto 0));end component rom16_8;type states is (s0,s1,s2,s3,s4,s5);signal current_state,next_state:states;signal flag:std_logic;signal pc,addrbus:std_logic_vector(3 downto 0);signal ax,bx:std_logic_vector(7 downto 0);--Ax,Bxsignal cs:std_logic;signal databus:std_logic_vector(7 downto 0);signal run:std_logic;signal mar:std_logic_vector(3 downto 0);signal ir:std_logic_vector(7 downto 0);signal f1:std_logic;beginreg:processvariable temp:std_logic_vector(3 downto 0);beginif rst='1' then --系统复位pc<="0000";ax<="00000000";bx<="00000000";run<='1';flag<='1'; --PC可以加1f1<='1';current_state<=s0;--databus<="00000000";elsif rising_edge(clk) thenif run='1' thencase current_state iswhen s0=>next_state<=s1; --Address State&Fetchmar<=pc; --将PC的值赋给MAR,在S2状态时从ROM中读出指令(IR<=databus)when s1=>next_state<=s2;if flag='1' thenpc<=pc+1; --地址加1flag<='0';end if;when s2=>next_state<=s3;flag<='1' ;ir<=databus; --将ROM中的指令赋给IR(指令寄存器)when s3=>next_state<=s4;temp:=ir(7 downto 4); --取指令寄存器的高4位(指令代码MOV 0000,ADD 0001,SUB 0010)-- Mov Add Subif (temp="0000") or (temp="0001")or (temp="0010") thenmar<=ir(3 downto 0); --将数据存储的地址赋给MARelsif temp="1110" thenoutput_data<=ax; -- out overelsif temp="1111" thenrun<='0'; --Hlt overend if;when s4=>next_state<=s5; --在S4状态,将从数据总线上读取数据if temp="0000" then --MOV AX,data overax<=dataBus;elsif temp="0001" then --ADD ax,databx<=databus;f1<='1';elsif temp="0010" then --SUB ax,bxbx<=databus;f1<='1';end if;when s5=>next_state<=s0;if temp="0001" and f1='1' thenax<=ax+bx;f1<='0';elsif temp="0010" and f1='1' thenax<=ax-bx;f1<='0';end if;end case;current_state<=next_state; --此设计使每个状态为两个时钟周期(Attention) end if;end if;end process reg;u1:rom16_8 port map(addrbus,cs,databus);addrbus<=mar when (current_state=s2) or (current_state=s4) else"0000";cs<='0' when (current_state=s2) or (current_state=s4) else'1';databus_out<=databus;end architecture behave;参考书目:微机原理及应用第3章:清华大学出版社VHDL和数字电路设计:科学出版社VHDL实用教程:电子科技大出版社。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PC、IR、时序发生器(即TIMER)、控制单元
AR
在分析这些模块时,先分析它的功能,然后分析输 入输出信号,最后分析其实现逻辑 在完成这些分析后,结合数据通路,分析各条指令 的执行流程,以加深对CPU原理的理解
运算器ALU
◦ 功能:对两个16位的输入及低位进位输入cin,根据运算 功能进行运算,产生相应的结果,并更改标志位
SELECT DESTINATION REGISTER
CIN ALU_OUT (15...0)
SELECT SOURCE REGISTER
REGISTER GROUP
ALU
SR (15...0) DR (15...0)
ALU_OUT (15...0)
BUS_MUX
ALU_A (15...0) ALU_B (15...0)
送往数 据总线
内存
CLK
TIMER
IR(15)
IR (R63)
REC(1...0)
AR (R17)
ALU_OUT (15...0)
PC (R62)
ALU_OUT (15...0)
EN
INSTRUCTION (15...0)
TIMER(2...0)
控制器
ALU_FUNC (2...0) STT(1...0) SCI (1...0)
寄存器组
◦ 功能:实现寄存器的读和写,写时在时钟上升沿根据DR和 REG_EN写入一个数据,读时根据SR和DR同时读出两个数 据。此外,为方便测试,尚需根据寄存器选择编号读出对 应寄存器的数值 ◦ 输入输出信号:
输入信号:reset, clk, dest_reg, src_reg, en, alu_out, reg_sel 输出信号:sr, dr, reg_out 16位 通 用 寄 存 器 组
I2I1I0
/WR REC
000
100
000
1
01
AR<-PC,PC<PC+1
注释
第2拍:从内存取出指令
◦ 对应节拍:001 ◦ 动作:IR <- Mem ◦ 控制信号:
为了控制内存读,/wr应该设置为/wr=1 为了将从Mem读出的指令打入IR,控制IR的REC应设成 REC=10 其它保持缺省值
◦ 其它控制信号按缺省值设置即可
如控制标志位的SST,令保持原来标志即可,此时SST=11 控制寄存器写的REG_EN,不用写,保持REG_EN=0 控制内存写的/wr,不用写,令/wr=1
综合上述控制信号值,可得:
指令 编码
节拍
Sci SST I7I6 01 11 10
I5I4I3
reset clk en sr[15..0] dest_reg[3..0] dr[15..0] source_reg[3..0] reg_out[15..0] alu_out[15..0] reg_sel[3..0]
◦ 逻辑框图
◦ 功能实现思路
设计两个功能模块:一为reg,一为reg_mux 调用16个reg和1个reg_mux连接起来,即形成寄存器组 参考基础实验4的方案2文档
(1)单字单操作数指令
15 8 7 4 3 0
OPCODE OPCODE
DEST_REG 0000 OFFSET
包括:DEC,INC,SHL,SHR,JR,JRC,JRNC,JRZ,JRNZ, JRS,JRNS
(2)单字双操作数指令
15 8 7 4 3 0
OPCODE
DEST_REG
◦ 操作控制(一条指令有若干操作信号实现) ◦ 时间控制(指令各个操作实施时间的定时) ◦ 数据加工(算术运算和逻辑运算)
4
C1
数存
cache
数据
70 100 66 77 … 40
指存
地址
101 102 103 104 105 106 107
cache
OP码
MOV LAD ADD STO JMP AND
ALU_func 000 001 010 011 100 101 110 进位输出c 若x”FFFF”-Bcin>A成立, c=1;否则c=0 溢出v 符号位s 若A、B的最高位 为1(或0),但 alu_out最高位为0 (1),则v=1; 若A<B成立, 若alu_out 若 否则 v=0 c=1;否则c=0 alu_out=x”000 的最高位 0”成立,z=1; 无溢出,v=0 为1,则s=1; 否则为0 否则s=0 无进位 c为最高位 c为最低位 结果为零z
◦ 因此,此时的控制信号集合为:
001
节拍
指令 编码
Sci SST I7I6 00 11 00
I5I4I3
000
I2I1I0
000
/WR REC
1
10
注释
IR<-Mem
第3拍:执行加法运算
◦ 节拍:011 ◦ 动作: R0<-R0+R1 ◦ 控制信号:
ALU运算的数据源自于寄存器,因此ALU_IN_SEL=000 执行加法运算,因此ALU_FUNC_SEL=000 初始进位Cin必须为0,因此SCI=00 完成运算后,结果会影响标志位,因此SST=00 运算结果要保存到寄存器中,因此REG_EN=1 其它控制信号按缺省值设置,即/wr=1和REC=00
000 000 000 001 010
1 1 1 1 1
注释 AR<-PC,PC<PC+1 IR<-MEM
DR<-DR+SR DR<-DR-SR
DR<-DR and SR
举例说明如何控制,以ADD R0,R1为例 第1拍:提供指令地址
◦ 对应节拍000 ◦ 动作:PC->AR, PC+1->PC ◦ 控制信号:
◦ 输入输出信号:
输入信号为:A、B、cin、alu_func 输出信号为:Y、C、Z、V、S
◦ 逻辑框图
功能实现思路
根据alu_func进行相应的运算,如alu_func为000时进行加 法运算,001时进行减法运算,如此类推 根据运算结果,对标志符号C、Z、V、S进行相应的更新 参考基础实验2的方案2文档
设计指令前了解现实需求,并将其中必不可少、使 用频率较大的需求设计为指令 确定指令格式,如OP和地址码分别如何设计 OP码常用固定长度,根据指令条数来确定 确定地址码有几个,分别应该是多长 指令分类及其对应的格式:单字长、双字长 指令功能分组及OP码分配,形成指令总表 不同组指令的执行时长不等,为提高效率,进行时 序分析与设计,以状态机形式反映
ALU
地址
5 6 7
地址码
R0,R1 R1,6 R1,R2 R2,(R3) 101 R1,R3
R0
10 … 30 31
R1
R2 R3 AR
数据
数据缓冲寄存器
地址总线
PC
指令
地址总线
地址寄存器
程序计数器
状态字寄存器
C1 C2 C3 Cn
C2
时序发生器 操作控制器 OC
指令译码器
控制信号
IR
OP码
地址码
5
指令寄存器
回顾冯· 诺依曼CPU结构及工作原理 16位实验CPU的设计与实现 将16位实验CPU的改造成8位的实验CPU 评分标准
下面以16位的实验CPU为例进行回顾,说明设计实 现过程的思路和方法
1. 2. 3. 4. 5. 6.
设计指令系统 确定CPU的结构图 确定控制信号 分析各个主要模块的功能及设计方法 编程实现 组装测试
0000
(5)双字双操作数指令
15 8 7 4 3 0
OPCODE
DEST_REG
0000
DATA
包括:MVRD
由于没有中断操作,本机指令的执行步骤可概括如下: 读取指令:
◦ 地址寄存器<-指令地址,修改PC内容使其指向下一条将 要执行的指令 ◦ 读内存,指令寄存器<-读出的内容
分析指令
◦ 执行指令: 通用寄存器之间的运算或传送,可1步完成 读写内存,通常要两步完成
FLAG ALU输出 AIsel <控制AR,IR接收 > BusSel <选择总线数据来源>
AR(地址寄存器)
IR( 指令寄存器) 符号扩展
Bus
寄存器数据<调试用>
MUX
地址总线
wrMem <内存读写>
数据总线
/WR
(来自数据总线)
MEM_DATA (15...0)
ห้องสมุดไป่ตู้
送往地址总线
ADR (15...0)
王春桃
回顾冯· 诺依曼CPU结构及工作原理 16位实验CPU的设计与实现 将16位实验CPU的改造成8位的实验CPU 评分标准
存储器
输入
运算器
输出
控制器 数据信号 控制信号 地址信号
2015/12/12
3
1. CPU的功能
取指令 执行指令
操作控制、时间控制
◦ 指令控制(程序的顺序控制)
◦ 因此,控制信号集合为:
011
节拍
指令 编码
Sci SST I7I6 00 00 01
I5I4I3
000
I2I1I0
000
/WR REC
1
00
注释
DR<-SR+DR