8位CPU设计与实现
8位移位寄存器的电路设计与版图实现要点
8位移位寄存器的电路设计与版图实现要点8位移位寄存器的电路设计与版图实现摘要电⼦设计⾃动化,缩写为EDA,主要是以计算机为主要⼯具,⽽Tanner EDA则是⼀种在计算机windows平台上完成集成电路设计的⼀种软件,基本包括S-Edit,T-Spice,W-Edit,L-Edit与LVS等⼦软件,其S-Edit以及L-Edit为常⽤软件,前者主要实现电路设计,后者主要针对的是已知电路的版图绘制,⽽T-Spice主要可实现电路图及版图的仿真,可以⽤Tanner EDA实现电路的设计布局以及版图实现等⼀系列完整过程。
本⽂⽤Tanner EDA⼯具主要设计的是8位移位寄存器,移位寄存器主要是⽤来实现数据的并⾏和串⾏之间的转换以及对数据进⾏运算或专业处理的⼯具,主要结构构成是触发器,触发器是具有储存功能的,可以⽤来储存多进制代码,⼀般N 位寄存器就是由N个触发器构成,移位寄存器⼯作原理主要是数据在其脉冲的作⽤下实现左移或者右移的效果,输⼊输出的⽅式表现为串⾏及并⾏⾃由组合,本设计就是在Tanner EDA的软件平台上进⾏对8位移位寄存器的电路设计仿真,再根据电路图在专门的L-Edit 平台上完成此电路的版图实现,直⾄完成的结果和预期结果保持⼀致。
关键词:Tanner EDA;L-Edit;移位寄存器,S-Edit8 bits shift register circuit design and layoutAbstractElectronic design automation,referred to as EDA,it is based on computers as the main tool,and Tanner EDA is a kind of software that complete the integrated circuit design on Windows platforms.Its Sub-Softwares include S-Edit,T-Spice,W-Edit,L-Edit and LVS and so on.S-Edit and L-Edit are commonly used software,S-Edit is primarily designed to achieve circuit,the latter is aimed primarily known circuit layout drawing,T-Spice can achieve schematic and layout simulation.We can achieve layout of the circuit design and a series of complete process layout used Tanner EDA tools.In this paper, Tanner EDA tools are mainly designed an 8-bit shift register.The shift register is mainly used for data conversion between parallel and serial, and the data processing tool operation or professional,its main structure is the trigger composition,flip-flop is a storage function,it can be used to store more hexadecimal code,In general N-bits register is composed of N trigger.Working principle of the shift register data under the action of the pulse, mainly the effect of the shift to the left or right,input and output of the way of serial and parallel free combination.This design is in Tanner on the EDA software platform to 8 bits shift register circuit design and simulation,then according to the circuit diagram on special L - Edit platform to complete the circuit layout implementation,until the finish is consistent with the results and expected results.Keywords:Tanner EDA;L-Edit;Shift register,S-Edit⽬录1 前⾔ (1)1.1 课题的背景和⽬的 (1)1.2课题的设计内容 (1)2 设计软件简介 (2)2.1EDA技术的介绍 (2)2.2T ANNER EDA T OOLS的简述 (2)2.3T ANNER软件的组成及发展 (3)2.3.1 Tanner的设计流程 (4)2.3.2 Tanner软件的发展 (5)2.3.3 L-Edit软件的介绍 (6)2.48位移位寄存器的⼯作原理和设计要求 (9)2.4.1 ⼯作原理 (9)2.4.2 电路结构与设计 (11)3 8位移位寄存器的电路设计与版图实现过程 (13)3.1各个模块的设计与仿真 (13)3.1.1 带复位端D触发器的设计与版图实现 (13)3.1.2 与或⾮门的设计与版图实现 (16)3.28位移位寄存器的电路设计与版图实现 (18)3.2.1 8位移位寄存器的电路结构 (18)3.2.2 8位移位寄存器的版图实现 (19)3.2.3 LVS对⽐ (21)4 结束语 (21)参考⽂献 (22)巢湖学院2013届本科毕业论⽂(设计)1 前⾔1.1 课题的背景和⽬的随着科技的进步,近⼏个世纪寄存器技术不断成熟,在数字电路中,寄存器已经是⼀个经常被提出的概念,它主要指的是⽤来存放⼆进制数据或者代码的电路。
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位ALU设计
8位算术逻辑单元设计电子12-112060401248位算术逻辑单元设计1.概述算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。
算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门)和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。
基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。
通常而言,ALU具有对处理器控制器、内存及输入输出设备的直接读入读出权限。
输入输出是通过总线进行的。
输入指令包含一个指令字,有时被称为机器指令字,其中包括操作码,单个或多个操作数,有时还会有格式码;操作码指示ALU机要执行什么操作,在此操作中要执行多少个操作数。
比如,两个操作数可以进行比较,也可以进行加法操作。
格式码可与操作码结合,告知这是一个定点还是浮点指令;输出包括存放在存储寄存器中的结果及显示操作是否成功的设置。
如操作失败,则在机器状态字中会有相应的状态显示。
大部分ALU都可以完成以下运算∶整数算术运算(加、减,有时还包括乘和除),位逻辑运算(与、或、非、异或),移位运算。
2.ALU设计2.1设计目标设计要求该处理器的数据宽度是8bit,可以实现算术加法、算术减法、逻辑与、逻辑或、逻辑非、逻辑与非、逻辑或非和逻辑异或等8种运算。
2.2逻辑分析依照ALU的原理与逻辑结构原理图,用超前进位的方法能实现下面八种功能操作的4位ALU,并对电路进行封装。
设定:输入信号:A4-A1、B4-B1、F3-F1、低位进位端C0、(级联控制端G);输出信号:S4-S1、进位C4 4位ALU的八种功能如下:把低位的进位连接到高一位的本位上,而当F3F2F1的值为001、011、101 时,C0的值为1,其余为0,于是C0应满足:C0=GF1/F1F2F3+C0/G。
8位ALU设计.doc
8位算术逻辑单元设计电子12-18位算术逻辑单元设计1.概述算术逻辑单元(arithmetic and logic unit) 是能实现多组算术运算和逻辑运算的组合逻辑电路,简称ALU。
算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器的核心组成部分,由"And Gate"(与门)和"Or Gate"(或门)构成的算术逻辑单元,主要功能是进行二位元的算术运算,如加减乘(不包括整数除法)。
基本上,在所有现代CPU体系结构中,二进制都以补码的形式来表示。
通常而言,ALU具有对处理器控制器、内存及输入输出设备的直接读入读出权限。
输入输出是通过总线进行的。
输入指令包含一个指令字,有时被称为机器指令字,其中包括操作码,单个或多个操作数,有时还会有格式码;操作码指示ALU机要执行什么操作,在此操作中要执行多少个操作数。
比如,两个操作数可以进行比较,也可以进行加法操作。
格式码可与操作码结合,告知这是一个定点还是浮点指令;输出包括存放在存储寄存器中的结果及显示操作是否成功的设置。
如操作失败,则在机器状态字中会有相应的状态显示。
大部分ALU都可以完成以下运算∶整数算术运算(加、减,有时还包括乘和除),位逻辑运算(与、或、非、异或),移位运算。
2.ALU设计2.1设计目标设计要求该处理器的数据宽度是8bit,可以实现算术加法、算术减法、逻辑与、逻辑或、逻辑非、逻辑与非、逻辑或非和逻辑异或等8种运算。
2.2逻辑分析依照ALU的原理与逻辑结构原理图,用超前进位的方法能实现下面八种功能操作的4位ALU,并对电路进行封装。
设定:输入信号:A4-A1、B4-B1、F3-F1、低位进位端C0、(级联控制端G);输出信号:S4-S1、进位C4 4位ALU的八种功能如下:把低位的进位连接到高一位的本位上,而当F3F2F1的值为001、011、101 时,C0的值为1,其余为0,于是C0应满足:C0=GF1/F1F2F3+C0/G。
8位CISC微处理器的设计与实现
c tg re o aa ta s sin, r h t a d lgc p rt n , r c s c n o ,n u d o tu . e i lto rs l h ws ae ois f d t r miso ai me c n o i n t i o eai s p o es o t lip t a up t s o r n Th muain eut o s
台具有数据传送 、 算逻运算 、 程序控制和输入输 出4 种功 能的 3 条指令的 系统 。在 QU R USI O A T I 系统上仿真成功 , 结果表明该微
处理 器 系统 可以运行在 10MH 时钟 工作频率下 , 0 z 能快速 准确地 完成各种指令组成的程序 。
关键 词 : 场 可 编 程 门阵 列 ( P A)复 杂 指 令 集 计 算机 ( IC ; 高 速 集 成 电路 硬 件 描 述 语 言 ( DL ; 真 现 FG ; CS )超 VH )仿 DO :03 7 0i n10 .3 1 0 0 00 7 文 章 编 号 :0 28 3 (0 02 .0 00 文献 标 识 码 : 巾图 分 类  ̄ : P 2 I 1. 8 .s . 283 . 1 . .1 7 s 0 2 2 10 —3 12 1 )00 6 -4 A T 33
1 引言
随着电子工业和超大规模集成 电路 ( s) VL I技术的高速发 展, 要求专用集成 电路( I 的功能越来越 强 , Asc) 功耗越来越低 ,
过微控制 器转换 成相应 的命令信 号 , 从而使 内部部件 完成相 应的操作 ;
生产周期越来越短 , 这些都对芯 片设计提 出了 巨大 的挑 战 , 传 统 的芯 片设计方 法 已经不 能适应 复杂 的应 用需求 了 。在这 种环境下 , 现场可编程 门阵 列( P A) 件以其灵活的可重配 FG 器
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位微处理器设计
高速8位微处理器设计陈明敏;易清明;石敏【摘要】针对当前MCS51指令集的微处理器指令执行效率低问题,设计一款高速微处理器.其特点是:首先,采用快速乘除器和基4快速除法器,其计算速度是传统乘法器和除法器计算速度的48倍;其次,采用32位指令总线,能一次从ROM读取4个字节,覆盖所有指令长度,减少取指周期数;此外,使用五级流水线,能在单周期完成大多数指令;在Altera EP3C16 FPGA芯片上进行物理验证,根据Dhrystone 2.1性能测试,在相同的时钟频率下其综合性能是传统MCS51微处理器的12倍.实验结果表明,通过上面3种改进方法,微处理器指令执行效率得到极大提高.【期刊名称】《计算机应用与软件》【年(卷),期】2016(033)001【总页数】4页(P240-243)【关键词】微处理器;快速除法器;快速乘法器;流水线【作者】陈明敏;易清明;石敏【作者单位】暨南大学信息科学技术学院广东广州510632;暨南大学信息科学技术学院广东广州510632;暨南大学信息科学技术学院广东广州510632【正文语种】中文【中图分类】TP331FPGA中嵌入式CPU有硬核和软核,目前嵌入硬核有高性能cortexA9双核。
嵌入式软核有Altera公司的NIOS,Xilinx公司的Micro Blaze,以及改进后的MCS51 IP核。
前两个都是免费的IP核,可灵活配置,但是需要用各自的编译器,且编译时间漫长,不便于修改,应用非常少。
嵌入式硬核只有高端器件上面才有,不适用于大多数要求,且价格昂贵。
随着SOC(System On Chip)技术发展,基于IP核的SOC设计有利于增加新功能和缩短上市时间的特点,越来越得到广泛地应用。
在单片机家族中MCS51是一种经典的单片机,历经30多年至今应用依然很广。
由于其占用逻辑资源少,在FPGA应用越来越广。
传统的MCS51引入了机器周期,每个机器周期需要12个时钟,每条指令需要不同的机器周期来完成。
8位高速微控制器IP软核的设计与实现
指 令 周期 避 免 了 深度 流 水 线 增加 电
路结 构 复杂 性 和芯 片 面积 。 该 微 处 理器 在 结 构 上 可 以划 分
为 四 个 子 系统 ,分 别 为 控 制 单元 、
2 0 . 电 子 设 计应 用 ww .a .o cl 07 3 w e w c m.,
维普资讯
维普资讯
_
《
—
鬈 譬
一
■ 成 都 电子科 技 大 学微 电子与 固体 电子 学 院 耿 磊 李 平 陈勇 杜 涛
8位 高 速 微 控 制 器 I 核 的 设 计 与 实 现 P软
摘 要 :本 文介 绍 了一 种8 高速 微 控 制器 I 软核 的设 计 , P 用 哈佛 总线 和 二 级流 水 线 , 令 集 与PC 6 66 位 P 该I 采 指 I 1F 7
兼 容 。本 文 按 照 自顶 而 下 的设 计 流 程 ,首 先定 义 了该 MCU I P核 的 顶层 功 能和 体 系结 构 ,然 后对 各 单 元模 块 进 行 了详 细 的设 计 ,讲 述 了 I 核 的 设计 方 法 及 其仿 真 验 证 ,并对 该 微 控 制器 的读 / 时序 进 P软 写
令译码单元 , 用空 操 作 指 令 N P O 代 同时 把 GOTO指 令跳 转 后 指 向地 址
替 。这样 ,控 制 逻 辑 不 需要 做 太 大 对 应 的指 令 取 出 来 ,在 下个 指令 周
MCU I 的 时 序 设计 P核
时钟 网络 的 时序 设 计 本设 计 的 时序 设 计 部 分 采 用 内 部 包含 4个 节 拍 时 钟 的结 构 ,时 钟 网 络模 块 在 复位 结 束 后 会 利 用两 级 嵌 套 的 D触 发器 将 外 部 时 钟( K) CL
8位嵌入式CPU的AMBA TM wrapper设计
关键 词 : o AMB r a p rI S C; A ”w p e ;P复 用 ; 入 式 C U 嵌 P
文章 编 号 :0 2 8 3 (0 6 3 — 0 30 文 献 标 识 码 : 中 图 分 类 号 :P 6 ;N 7 10 — 3 12 0 )4 0 7 — 3 A 3 8 T 4 r
维普资讯
嘲- 产品 、 研发 ห้องสมุดไป่ตู้ 测试 ・
带 F带 带 F 苷 {
8 位嵌入式 C U  ̄A A wrp e 设计 P MB a pr
顾 叶华 ,曾晓 洋 ,韩 军
( 复旦 大 学 专 用集成 电路 与 系统 国家重 点 实验 室, 海 2 1 0 ) 上 0 2 3
A A 总线 通 过 w ap r MB rp e 交互 通 信 。因 此 , 设 计 wap r首 要 p e,
先 需 了解 C U 和 AMB P A 总 线 。
C U有 8位 的 8 5 和 3 P 0l 2位 的 MIS A M7 A M P 、 R 、 R 9等 。 采 用 3 的 C U是 当前 没计 的 主流 , 成 本 比较高 , 易得 到广 泛 2位 P 但 不
8位模型机的设计与实现
结 构和数 据通 路如 图 1所 示. 制 器 是 整个 模 型 机 控
的 中心 , 由它 来控制 计算 机指 令 的执行 . 型机执行 模 指 令 的具 体过程 为 : 先 控 制器 从 指令 寄 存 器 取得 首 指令, 编译 指 令 , 输 出微 控 制 信 号 , 制 AL 的 再 控 U 运算 , C加 1 并且 从 RAM 中取 出数 据 运算 , 算 P , 运
方式后 , 要掌握 其它类 型 的 寻址 方 式 ( 接寻 址 等) 间 就 比较 容易 了. 由于我 们 设计 模 型 机 的主要 目的 又 是 为 了使 学生掌握 计算机 的工作 原理及 指令在 计算 机 中执行 的流程 , 而不 是 真 正要 实 现一 台计算 机 产 品 , 以我们 只在模 型机 中实现这 两种 寻址方式. 所
觉得 计 算 机 组 成 原 理 整 机 实验 不 再 抽 象 难 懂 . 关 键 词 :模 型 机 ; 计 与 实 现 ; 设 VHDL 中 图 分 类 号 :T 3 3 P 0 文 献 标 识 码 :A 文 章 编 号 : 1 7 一 l 9 ( 0 10 — 0 7 —0 6 1 lX 2 1 )1 0 1 3
立 即数或 存储 单元 等操 作 数 , 4位用 于保 存 指令 高 操 作码 , 模型 机 的指令 格式 如图 2 示. 所 模型 机指令
系统 包括 数据 传送 类指 令 、 术逻辑 运算 类指令 、 算 转 移类 指令 、 停机 指令 4类 指令 , 1 共 0条指令 . 每条 指 令 的助记 符 、 令格 式 、 指 机器码 和指令 功能 如表 1所
存 器读 取 下一 条指令 , 次循 环. 依
0 引 言
计算 机组成 原理是 计算 机科 学 专业 的一 门重 要 的专 业基础 课 , 内容 包 括 计算 机 部 件 和 整 机 的组 成
(选做)方案3:4个8位通用寄存器组的设计思路
4个8位通用寄存器组的设计与VHDL实现一、设计目标设计一个通用寄存器组Reg4-8,里面包含4个寄存器,每个寄存器可以存储8位的数据。
每次读的时候,能同时读出两个数据;每次写的时候,可以写入一个数据。
读/写的寄存器单元由寄存器编号所确定。
二、设计要求1.当reset信号为0时,初始化各寄存器的值;2.当reset信号为1时,可以进行寄存器读或写,具体如下:✧寄存器的写受到时钟上升沿的控制。
即当时钟上升沿来临且写使能信号en=1时,将输入的8位数据d[7..0]写入到由寄存器选择编号dest_reg[1..0](如dest_reg[1..0]=“01”)所确定的寄存器(如寄存器R1)中。
其中,[1..0]代表下标从1到0,其它类推;✧寄存器的读不受时钟信号的控制。
即只要给出源寄存器选择编号source_reg[1..0]和目的寄存器选择编号dest_reg[1..0],便同时将这两个对应寄存器单元的数值输出到双数据总线sr[7..0]和dr[7..0]中,以便同时传2个数据给运算器;3. 在CPU中,source_reg[1..0]和dest_reg[1..0]实际上都来自于指令,在运算过程中用户是难于操控的;相应地,寄存器的输出结果sr[7..0]和dr[7..0],也都是传送到运算器那里,是不能直接输出的。
但是,在设计的过程中,我们又必须要检测某个寄存器的内容是什么,以测试指令的执行是否正确。
解决此问题的思路是引入一些附加输入输出信号,如可以设置所需测试的寄存器的编号值,然后将结果输出到相应的指示灯上。
本设计中,我们用reg_sel[1..0]作为待测试的寄存器编号,并用reg_out[7..0]作为该寄存器中读出的数据。
三、设计思路在设计时,首先根据设计目标和要求确定逻辑框图,然后再确定其内部结构。
前者,主要确定输入和输出信号,后者主要确定输出如何利用输入而产生。
1.首先根据上述的设计目标与要求,分析输入输出引脚。
八位高性能低功耗微控制器的设计与实现
得读取一条指令需要好 几个周 期 , 令效率较 低。 指
此外 , 传统 M U没有采用流水线结构 , C 使得 倒 很
大 , 为 4~ 。所 以导 致冯 ・ 曼 结 构 的 MC 约 6 纽 U功
耗高 、 速度 慢 , 设计 难度大 。而 哈佛 总线结构 的双
总线结构 , 分立 的程 序存储 器和数据存 储器 , 大 大 提高了 M U执行 的并行性。这种结构允许指令 的 C
2 1 体 系结构和指令集 .
传统 的基于复杂指令集计 算机 ( I 结构 的 CS C)
维普资讯
6 期
应继宏 , : 等 八位高性能低 功耗微控制器 的设 计与实现
微控制器 , 大都 采用 冯 ・ 曼 结构 。只 有一 条 总 纽 线, 必须安排控制电路来 控制程序存储器 和数据存 储器读取数据二者 的先后顺序 ; 这样不仅使得控制 电路的结构更加复杂 , 增加 了电路 的 , 而且会使
识产权 的 I P模块 , 无论是以标准芯片还是嵌入式 的 形式 , 8位微控制器 ( C 都有广泛 的应用 。尤其 M U)
的负载 电容 ,D V D表示 电路的工作 电压。由上式可 以看出, 要想降低 , 就要 降低电源 电压 V D, D 降低 时钟频率.减少电路 的门数 , 厂 , 降低每条指令 时钟数
减少每 条指 令 时钟数
、
1 MC U的功耗 分析
MC U功耗 W = ×05× ×C . L×V D D ×
, 减少 电路 的负 载 电容
电路 的翻转频 率 是降低功耗 的因素, 主要通
过以改进流水线 的时序结构 和体系结构 的优化设 计 降低功耗 , 完成微控制器的设计。
长度大于数据 的长度 , 使得 单周期指令 成为可 能。 即在取出数 据的 同时 , 还可 以一读 出指令 , 少 了 减 读取存储器的次数 , 简化 了控制 电路 的设计 。但 是双总线结构的引人势必会引起 电路规模 的扩大 ;
计算机组成原理实验报告-八位补码加减法器的设计与实现
计算机科学与技术学院计算机组成原理实验报告书实验名称八位补码加/减法器的设计与实现班级学号姓名指导教师日期成绩实验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⑤实验体会与小结。
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的设计
8位逻辑计算机设计
4)内部寄存器的种类和数量
助记符
机器码1
机器码2
注释
_FETCH
00
00000
取指令
寄存器R?的值加到A上
图1.0 8位微型计算机开发设计过程
图1.1逻辑框图
表1.0功能设计
模块名称
模块功能
时钟发生器CLKGEN
产生一系列时钟信号,送往CPU其他部件
指令寄存器IR
寄存指令
累加器ACCUM
存放当前的运算结果
算术逻辑运算单元ALU
实现基本运算和操作
数据控制单元DATACTL
控制累加器数据输出
地址多路器ADDR
选择输出的地址是程序地址计数地址还是数据端口
程序计数器PC
提供指令地址
状态机MACHБайду номын сангаасNE
CPU控制核心,产生一系列控制信号,控制某些部件的启动或停止
对系统所需硬件做出初步的估计和选择
1.0对外围设备要求不高。只考虑现实、键盘、和串行口通信
2.0微处理器的考虑因素:
1)字长8位
2)寻址范围和寻址方式
实验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实用教程:电子科技大出版社。
简单CPU系统设计及实现
简单CPU系统设计及实现首先,我们需要确定CPU系统的架构。
在本例中,我们将采用单周期处理器设计,该设计非常简单且易于实现。
在该架构中,每个指令在一个时钟周期内完成执行。
接下来,我们需要确定指令集的构成。
在本例中,我们将使用基本的指令集,包括算术操作指令(如加法、减法、乘法、除法)、逻辑操作指令(如与、或、异或)和数据传输指令(如存储、加载和移动数据)。
在开始设计CPU系统之前,我们需要确定CPU寄存器的数量和宽度。
在本例中,我们将使用8个寄存器,每个寄存器的宽度为8位。
这些寄存器将分别用于存储通用数据、存储器地址和指令。
现在我们可以开始设计CPU的数据路径。
数据路径是指数据在CPU内部通过的路径。
在单周期处理器中,数据路径包括指令存储器、程序计数器、寄存器文件、算术逻辑单元(ALU)和存储器。
指令存储器用于存储程序的指令,可以通过程序计数器(PC)来访问。
PC是一个寄存器,它存储下一条指令的地址。
每个时钟周期,PC增加1,以指向下一条指令。
寄存器文件用于存储CPU的寄存器,可以通过寄存器地址来访问。
寄存器文件包括8个通用寄存器。
ALU用于执行算术和逻辑运算。
它从寄存器文件中读取操作数,并将结果写回寄存器文件。
存储器用于存储数据,包括程序的指令和变量。
存储器有两个口,一个用于读取操作,一个用于写入操作。
设计数据路径后,我们需要设计控制单元。
控制单元控制数据路径中的信号流动。
在单周期处理器中,控制单元通常由指令解码器和控制逻辑组成。
指令解码器将二进制指令解码为对数据路径的控制信号。
控制逻辑基于解码的指令生成控制信号。
在实现CPU系统之前,我们需要设计指令的编码方式。
在本例中,我们将使用定长编码,每个指令都有相同的长度,例如8位。
现在我们可以开始实现CPU系统。
我们可以使用硬件描述语言(HDL)来描述和实现CPU系统的各个部分。
常用的HDL包括VHDL和Verilog。
我们可以使用仿真工具来验证CPU系统的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机组成原理论文姓名:某某班级:计科一班学号:8位CPU的设计与实现论文CPU 的主要功能是执行指令,控制完成计算机的各项操作,包括运算操作、传送操作、输入/输出操作等。
作为模型计算机设计,将重点放在寄存器组,采取较简单的组成模式,以尽量简洁的设计帮助读者掌握CPU 的基本原理。
此次设计CPU就是为了了解CPU运行的原理,从而完成从指令系统到CPU 的设计,并且通过仿真对CPU设计进行正确性评定。
关键词:CPU,设计指标,电路原理图,运算部件,寄存器组,模型机指令系统,微命令序列,数据通路1. 设计的任务与要求1.1设计指标1. 能实现IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)这五种指令;2. 整个系统能正常稳定工作。
1.2 设计要求1. 画出电路原理图;2.写出设计的全过程,附上有关资料和图纸(也可直接写在相关章节中),有心得体会。
2. 方案论证与选择2.1 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。
7.微指令产生部件实现信息传送要靠微命令的控制,因此在CPU 中设置微命令产生部件,根据控制信息产生微命令序列,对指令功能所要求的数据传送进行控制,同时在数据传送至运算部件时控制完成运算处理。
微命令产生部件可由若干组合逻辑电路组成,也可以由专门的存储逻辑组成。
产生微命令的方式可分为组合逻辑控制方式和微程序控制方式两种。
在本章所介绍的8 位模型CPU 设计中,采用微程序控制方式通过微程序控制器和微指令存储器产生微命令,因此此CPU 属于复杂指令CISC CPU。
8.时序系统计算机的工作常常是分步执行的,那么就需要有一种时间信号作为分步执行的标志,如周期、节拍等。
节拍是执行一个单步操作所需的时间,一个周期可能包含几个节拍。
这样,一条指令在执行过程中,根据不同的周期、节拍信号,就能在不同的时间发出不同的微命令完成不同的微操作。
周期、节拍、脉冲等信号称为时序信号,产生时序信号的部件称为时序发生器或时序系统,它由一组触发器组成。
由石英晶体振荡器输出频率稳定的脉冲信号,也称时钟脉冲,为CPU 提供时钟基准。
时钟脉冲经过一系列计数分频,产生所需的节拍(时钟周期)信号。
时钟脉冲与周期、节拍信号和有关控制条件相结合,可以产生所需的各种工作脉冲。
2.2模型机指令系统一条指令必须包含下列信息:操作码、操作数的地址、操作结果的存储地址、下一条指令的地址。
指令的基本格式op-code 为操作码,rs为源寄存器,rd 为目的寄存器寄存器操作数模型机指令系统,及其指令编码形式设模型机指令系统中包含有五条基本指令,分为算术运算指令、存取指令和控制转移指令等三种类型。
五条机器指令分别是:IN(输入)、ADD(二进制加法)、STA(存数)、OUT(输出)、JMP(无条件转移)。
IN 为单字长(8 位二进制),其余为双字长指令,XX H 为addr对应的十六进制地址码。
2.3 拟定指令流程和微命令序列(计算机设计中最关键步骤)1.微程序控制概念(1)微命令和微操作一条机器指令可以分解成一个微操作序列,这些微操作是计算机中最基本的,不可再分解的操作。
在微程序控制的计算机中,将控制部件向执行部件发出的各种控制命令叫做微命令,它是构成控制序列的最小单位。
因此,微命令是控制计算机各部件完成某个基本微操作的命令。
微命令和微操作是一一对应的。
微命令是微操作的控制信号,微操作是微命令的操作过程。
微命令有兼容性和互斥性之分。
兼容性微命令是指那些可以同时产生,共同完成某一些微操作的微命令;而互斥性微命令是指在机器中不允许同时出现的微命令。
兼容和互斥都是相对的,一个微命令可以和一些微命令兼容,和另一些微命令互斥。
对于单独一个微命令,就无所谓兼容性或互斥性了。
(2)微指令、微地址微指令是指控制存储器中的一个单元的内容,即控制字,是若干个微命令的集合,存放控制字的控制存储器的单元地址就称为微地址。
一条微指令通常至少包含两大部分信息:微操作码字段,又称操作控制字段,该字段指出微指令执行的微操作;微地址码字段,又称顺序控制字段,指出下一条要执行的微指令的地址。
(3)微周期所谓微周期是指从控存中读取出一条微指令并执行规定的相应操作所需的时间。
(4)微程序一系列微指令的有序集合就是微程序。
若干条有序的微指令构成了微程序。
微程序可以控制实现一条机器指令的功能。
或者说一条机器指令可以分解为特定的微指令序列。
一旦机器的指令系统确定以后,每条指令所对应的微程序被设计好并且存入控存后,控存总是处于只读的工作状态,所以控存一般采用只读存储器(ROM)存放。
重新设计控存内容就能增加、删除、修改机器指令系统。
在FPGA 中通常采用嵌入式阵列块构成的LPM_ROM 作为控存,存放微指令。
2.微指令格式(1)水平型微指令一次能定义并执行多个并行操作微命令的微指令。
按照操作控制字段的编码方法不同,水平型微命令又分为三种:第一种是全水平型(不译码法)微指令,第二种是字段译码法水平型微指令,第三种是直接和字段译码相混合的水平型微指令。
(2)垂直型微指令垂直型微指令中设置操作码字段,由微操作码规定微指令的功能。
垂直型微指令的结构类似于机器指令的结构。
在一条微指令中只存一二个微命令,每条微指令的功能比较简单。
因此,实现一条机器指令的微程序要比水平型微指令编写的微程序长得多,它是采用较长的微程序结构去换取较短的微指令结构。
3.模型机的微指令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 信号。
4.微指令的执行方式执行一条微指令的过程类似于机器指令的执行过程。
首先,将微指令从控存CM 中取出,称为取微指令。
对于垂直型微指令还应包括微操作码的译码时间。
然后,执行微指令所规定的各个微操作。
根据微指令的执行方式可分为串行执行和并行执行两种。
5.时序安排由于CPU 的工作是分步进行的,而且需要严格定时控制,因此设置时序信号,以便在不同的时间发出不同的微命令,控制完成不同的操作。
组合逻辑控制方式和微程序控制方式在时序安排上有区别,前者多采用三级时序划分,而后者往往采用两级时序。
6.拟定指令流程和微命令序列这是设计中最关键的步骤,这是由于需要根据这一步的设计结果形成最后的控制逻辑。
拟定指令流程是将指令执行过程中的每步传送操作(寄存器之间的信息传送),用流程图的形式描述出来,拟定微命令序列是用操作时间表列出每步操作所需的微命令及其产生条件。
7.形成控制逻辑设计的最后一步。
采用组合逻辑控制方式或采用程序控制方式,有各自不同的设计方法。
在组合逻辑控制方式中,将产生微命令的条件进行综合、化简,形成逻辑式,从而构成控制器的核心逻辑电路。
在微程序控制方式中,则是根据微命令来编写微指令,组成微程序,从而构成以控制存储器为核心的控制逻辑。
2.4 微程序设计1.IN指令为了执行输入指令,CPU 要做两件事情。
首先,由INPUT 输入装置的数据开关SW输入数据送到数据总线上;其次,通过数据总线将输入的数据写入寄存器R0 中。
2.ADD指令 R0←R0+(MEM)存储单元的地址是存放在紧跟在操作码后的字节中的,因此,首先要以该字节的内容为地址,即将该单元内容送地址寄存器AR;然后,从AR 所指向的RAM 存储单元取出操作数送给DR2。