微处理器设计2 刘鹏 College of ISEE Zhejiang University

Slides:



Advertisements
Similar presentations
教员信息 姓 名:仲崇权 单 位:电子与信息工程学院 电 话: 办公室:创新院大厦720房间 :
Advertisements

嵌入式系统与单片机 北京科技大学电子信息系.
计算机基础 第一章 计算机基础知识 机电系计算机教研室
第2章 微处理器 2.1 概述 /8086微处理器 微处理器 X86/Pentium微处理器
第5章 多级结构的存储系统 5.1 三级结构存储系统概述 主存储器 虚拟存储器 CPU 高速缓存 三级结构的存储系统.
Chap4 電腦硬體基本單元 高中資訊科技概論 松崗圖書公司.
计算机组成原理 北京理工大学计算机科学工程系 赵清杰 北京理工大学计算机科学工程系.
Principles of Microcomputers
最新計算機概論 第3章 計算機組織.
第五章 中央处理单元.
新世代計算機概論 第3章 電腦的系統單元.
计算机导论 第4讲 微型计算机硬件系统 1.
半导体存储器 第四章 半导体存储器.
数字系统设计 Digital System Design
计算机与信息技术应用基础 徐东雨 计算机中心
大连理工大学软件学院 软件工程系 赖晓晨 计算机组成与结构 大连理工大学软件学院 软件工程系 赖晓晨
单片机原理与应用.
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
《计算机操作员》精品 课件 淮南市潘集职教中心
《 PLC应用技术》课件 第三章 梯形图编程技巧.
單晶片原理與應用 魏兆煌 整理 南台科技大學 電機系 Sep
Hardware Chen Ching-Jung
CH.2 Introduction to Microprocessor-Based Control
第七章 单片机存储器的扩展.
單晶片MCS-51 C語言入門實習 第1章 微電腦與單晶片MCS-51架構 作者:董勝源.
Chapter 5 電腦元件 目標---- 研讀完本章後,你應該可以: 閱讀有關電腦的廣告以及了解它的專業用語(行話)。
主讲教师:唐大仕 第5讲 计算机硬件 主讲教师:唐大仕
第 2 章 中央處理單元.
第5章 中央處理單元與主記憶體 5-1 中央處理單元-CPU 5-2 主記憶體.
微处理器设计1 刘鹏 College of ISEE Zhejiang University
CPU資料處理 醫務管理暨醫療資訊學系 陳以德 副教授: 濟世CS 轉
PIC16F1827介紹 以微控器為基礎之電路設計實務-微處理器實驗室.
第4章 处理器(CPU) 4.1 引言 4.2 逻辑设计的一般方法 4.3 建立数据通路 4.4 一个简单的实现机制 4.5 多周期实现机制.
第8章 AT89S52单片机外部 存储器的扩展 1.
指令集架構 計算機也跟人類一樣,需要提供一套完整的語言讓人們跟它充分溝通,以完成正確的計算工作。
網 址: PC320考勤系統簡報 簡報設計 富宏資訊有限公司 聯絡電話: 網  址:
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
1-1 微電腦系統單元 1-2 微電腦系統架構 1-3 微控制器(單晶片微電腦) 1-4 類比與數位訊號介面
第六部分 ADSP-2189M EZ-KIT评估套件 a.
YM100开发实验板 演讲人:熊小燕 2009年月12月16日
5 Computer Organization (計算機組織).
2018/11/ /11/23 TRAINING-LZW.
嵌入式系统教案 武汉创维特信息技术有限公司 2018/11/27.
Game Boy Architecture 计算机体系结构课程报告 --刘继元.
PLC电气控制与组态设计 哈尔滨理工大学 第一章 可编程控制器的基本知识 2018/11/28.
微程序控制器 刘鹏 Dept. ISEE Zhejiang University
第5章 智能汽车设计基础—微控制器.
一个非常简单的CPU的设计 1、组合逻辑控制器 2、微程序控制器.
第2章 電腦硬體的架構及功能.
電腦的硬體架構.
TMS320C6000系列DSPs简介 使用DSPs的必要性 实时DSP系统的构成 DSPs针对DSP算法的结构特点
2018年12月29日 单片机原理与应用 单片机概述.
知识点:1、PLC系统起动前检查项目、 定期检查项目、日常维护 内容与步骤 2、掌握PLC诊断流程及故障 排除
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
精简指令集(RISC)CPU的构造原理和设计方法
数字系统设计 Digital System Design
Computer Inside/Outside
认识计算机系统.
8051單晶片 蘇恆生 老師.
微机原理与接口技术 西安邮电大学计算机学院 王忠民.
第6章 存储器接口 6.1 存储器概述 6.2 半导体存储器 6.3 MCS-51单片机存储器扩展.
2019/4/29 计算机组成原理 辅导教师:陆明强.
什么是单片机 单片微型计算机(Single Chip Microcomputer)简称单片机,是指集成在一个芯片上的微型计算机,它的各种功能部件,包括CPU(Central Processing Unit)、存储器(memory)、基本输入/输出(Input/Output,简称I/O)接口电路、定时/计数器和中断系统等,都制作在一块集成芯片上,构成一个完整的微型计算机。单片机内部基本结构如图1.7所示。由于它的结构与指令功能都是按照工业控制要求设计的,故又称为微控制器(Micro-Controller.
第三章 计算机系统的组成与工作原理.
动态扫描显示(实验四) 查询式键盘(实验五)
第1章 单片机及其开发环境 教学内容 初识单片机 单片机应用系统 Keil µVision软件的使用.
单片机原理及接口技术 前修课程:数模电、微机原理.
第3章 CPU子系统 西南石油大学计算机科学学院 主讲教师 杨 梅 联系电话:
第5章 中 央 处 理 器 5.1 CPU的功能和组成 5.2 指令周期 5.3 时序产生器和控制方式 5.4 微程序控制器
第三章 计算机体系结构.
Presentation transcript:

微处理器设计2 刘鹏 liupeng@zju.edu.cn College of ISEE Zhejiang University Source: 补充讲义 2018/12/2 Spring 2018 ZDMC – Lec. #24

10.3 微处理器设计示例EC-1 指令集-1 五个8bits指令 Opcode=3bits, 000,001和010三个编码没有定义, nop 1) 指令IN A输入一个8比特的数值,并存储到累加器A中; 2) 指令OUT A将累加器A中的数值拷贝到输出端口; 3) 指令DEC A把累加器A中的数值减1后再存入到累加器A中; 4) 指令JNZ(Jump Not Zero)测试A中的数值是否为0,假如为0,这个指令什么也不做,假如不为0,则将指令中的后四位,即aaaa(表示跳转地址)加载到寄存器PC中; 5) 指令HALT通过使CPU停止在halt状态从而停止微处理器的运行,直到系统复位跳出halt状态。 2018/12/2 Spring 2018 ZDMC – Lec. #24

数据通路-1 指令集中操作的数据通路 (1)执行指令周期中的取指操作,并递增PC值或 者加载新的PC值; (2)存储器; (3)实现指令集中所有指令的操作。 2018/12/2 Spring 2018 ZDMC – Lec. #24

数据通路-1 一个PC寄存器,4比特,+递增单元 一个IR寄存器,8比特 一个具有16个存储单元的8位程序存储器 一个8比特的累加器A,+递减单元 指令IN A,累加器A的输入来自于数据输入端口 指令DEC A,累加器A的输入来自于递减单元的输出 指令OUT A,无需特别的数据通路的操作,累加器的输出直接连接到 数据输出端口 指令JNZ A,需要一个8比特的OR门连接到累加器的所有输出上,来测 试条件A是否不等于0。IR寄存器的低4位数据加载到PC寄存器中 指令HALT,不需要任何额外的操作 2018/12/2 Spring 2018 ZDMC – Lec. #24

控制信号 数据通路中的控制字主要有5个 给控制单元提供一个状态反馈信号 即IRload,PCload,INmux,Aload和JNZmux。 Aneq0 为了保持设计的简洁,程序存储器设计在数据通路 2018/12/2 Spring 2018 ZDMC – Lec. #24

控制单元 控制单元的状态图 状态START(000)作为初始复位状态 在FETCH状态 在DECODE状态 指令JNZ A需要额外的时钟周期完成 PC加载新地址在下一个时钟沿发生 在FETCH状态 控制IRload信号有效 将PC寄存器指向的程序加载到IR寄存器 然后PC寄存器中的内容递增1后 信号PCload将新PC加载到PC寄存器中 在DECODE状态 测试IR寄存器的高三位 即IR_7-5解码 跳转到对应的状态 2018/12/2 Spring 2018 ZDMC – Lec. #24

五个指令的执行状态 指令IN A操作 指令DEC A 指令JNZ 到HALT状态 设置INmux信号为1来选择输入信号为外部端口 设置Aload信号为1来加载输入信号到累加器A 注意,为了输入指令能够读取到正确的输入值,输入数据需要在微处理器复位之 前就设置好 而且,由于INPUT状态不需要等待一个类似于回车键的信号,因此,即使有多个 数据输入,也只能有一个数据会被读入进来 指令DEC A 需要设置INmux信号为0、Aload信号为1 以使递减单元的输出被连接到累加器并加载进来 指令JNZ 使JNZmux信号有效以将IR寄存器中的低4位地址信号加载到PC寄存器 状态反馈信号Aneq0=1时,控制信号PCload信号被设置为有效 到HALT状态 将会无条件的停留在HALT状态 微处理器看上去像停止操作一样 2018/12/2 Spring 2018 ZDMC – Lec. #24

状态图 次态表、实现表,激励方程 2018/12/2 Spring 2018 ZDMC – Lec. #24

状态控制 控制信号 2018/12/2 Spring 2018 ZDMC – Lec. #24

控制单元 完整控制电路 2018/12/2 Spring 2018 ZDMC – Lec. #24

完整电路 数据通路电路与控制单元电路信号连接 2018/12/2 Spring 2018 ZDMC – Lec. #24

示例汇编程序 测试程序 手工编译 输入一个数据,将此数据进行递减直至0。 程序必须在数据通路和微处理器实现之前,加载到存储器中去 指令JNZ,最右边4位表示当检测条件为真时程序跳转的地址。 假设第一个指令IN A存储在程序存储器的地址为0000, 指令JNZ将跳转到第二个指令OUT A(在程序存储器中的地址是0001) JNZ指令的最后四位操作数被设置为0001。 由于指令JNZ的操作码为110,所以综合起来指令JNZ完整的编码是11000001。 2018/12/2

硬件电路实现 完整的计算机 微处理器,存储器、输入和输出设备。 八个拨码开关作为输入设备,2个七段数码管作为输出设备。 一个LED来显示是否已经结束工作,一个按钮作为复位按钮。 较高频率(如25MHz)的时钟分频后变成4Hz,作为微处理 器的时钟。 2018/12/2 Spring 2018 ZDMC – Lec. #24

10.5 微码型微处理器设计 CPU主要包括运算器和控制器两个部分,由总线 连接在一起 CPU内部信号种类 数据信号 地址信号 控制信号 2018/12/2 Spring 2018 ZDMC – Lec. #24

总线设计 数据总线和地址总线 IO接口部分 处理 8 位数据的 CPU,至少有 8 位的数据总线 12 位的地址总线,一共可访问 4KB 代码和数据 每一个连接在总线上的部件需要用一组三态缓冲器来 控制其是否向总线输出数据 每个部件所需的三态缓冲个数和这个部件的位数对应 IO接口部分 对每一个 IO 通道直接采用一个带三态缓冲控制的 8 位 寄存器连接到数据总线上 2018/12/2 Spring 2018 ZDMC – Lec. #24

寄存器设计 A 寄存器,即累加器 Accumulator T 寄存器,即临时寄存器(Temporary Instruction) ALU 数据来源 之一,保存ALU计算结果 T 寄存器,即临时寄存器(Temporary Instruction) ALU 数据来源 之一,也是MD 寄存器(Memory Data) B 寄存器,通用寄存器(General-Purpose Register) 用户可任意使用 IR 寄存器,即指令寄存器(Instruction Register) PC 寄存器,即程序计数器(Program Counter) MA 寄存器,即内存地址寄存器(Memory Address) 2018/12/2 Spring 2018 ZDMC – Lec. #24

ALU 组合电路 ,完成 CPU 内的算术和逻辑运算 算术运算主要包括:加、减、乘、除 逻辑运算主要包括:与、或、非、异或等 指令数有限的情况下无需实现所有的算术和逻辑 运算 减法、乘法→加法 与、非→其他逻辑运算 2018/12/2 Spring 2018 ZDMC – Lec. #24

控制器 Control Unit 时序电路 , CPU 设计中的最后一个环节 实现方式 (1)微代码(Micro Code)方式 优点:灵活,定制能力强 缺点:速度相对较慢 ,访问ROM比直接运行门电路慢 (2)硬布线(Hard Wired)方式 优点:速度快,因为无需访问 ROM 缺点:门电路比较复杂 70, 80, 90 年代的 CPU 90 年代以后的 RISC 型 CPU 2018/12/2 Spring 2018 ZDMC – Lec. #24

I/O &存储器部分设计 I/O,即输入输出(Input/Output)功能 存储器部分 设计宗旨:尽可能简单可行 直接使用 RAM 和 ROM 芯片 需要考虑存储架构 2018/12/2 Spring 2018 ZDMC – Lec. #24

Nibbler 4 Bit CPU Nibbler 是一个 4 位的 CPU,用标准 7400 系列逻辑芯片 组建,包括计数器、寄存器、缓冲器和门电路等 ,控制 器实现采用的是微代码方式 。 规格 4 位定制 CPU 12 位寻址, 4K 地址空间大小 哈佛体系结构—独立的程序和数据存储空间 2.46 MHz 时钟速度,每条指令 2 个时钟=123 万个指令/秒 在 CPU 数据和控制通道中使用 13 个 7400 系列芯片 2 个 28C16 EEPROMS 用于存储产生内部控制信号的微代码 4K x 4 SRAM (CY7C168A) 28C64 EEPROM 存储程序 4 个按键输入 16 x 2 字符 LCD 显示器 1 个音频扬声器 5V 电源,大约 100 mA 电流 2018/12/2 Spring 2018 ZDMC – Lec. #24

体系结构 哈佛架构 load-store 设计 程序和数据地址都为 12 位宽 支持多达 32 个不同 的 I/O 设备 数据总线 4 位宽 程序总线 8 位宽 4 位的指令操作码 4 位的直接操作数 或目标地址的高位 load-store 设计 数据可以在“A”和 RAM 中的内存位置 之间移动 程序和数据地址都为 12 位宽 支持多达 32 个不同 的 I/O 设备 程序计数器(PC)提供程序 ROM 的地址。程序字节与其他状态位相结合,为微码 ROM 提供地址。这些 ROM 在适当的时间生成内部控制信号,用于 CPU 中其他芯片所需的置数(load)、使能(enable)和递增(increment)。每个 ROM 输出 16 个总控制信号中的 8 个。程序字节(program byte)也用于构造 RAM 和跳转(jump)目标的地址,以及将立即数放在数据总线上。 2018/12/2 Spring 2018 ZDMC – Lec. #24

Schematic 原理图 除了 RAM 和 ROM 之外,所有芯片都是常见的 7400 系列的器件。大部分使用了7400HCT 逻辑系列的器件,这样可以提供与常规 7400LS 系列器件类似的速度,而功耗更低。 2018/12/2 Spring 2018 ZDMC – Lec. #24

局限性 没有地址译码器 程序 ROM 占用了所有的程序地址空间,RAM 占用了所有的数据地址空间 I/O 外围设备不是内存映射的 没有地址寄存器 不支持任何形式的间接寻址 不支持硬件控制的堆栈 2018/12/2 Spring 2018 ZDMC – Lec. #24

程序数据 原理图上中间右边是程序 ROM (28C64) 当前正在执行的程序指令的地址存储在程序计数 器(PC)中 8KX8 的 EEPROM 地址线的 A12 输入脚未使用 程序存储器 ROM所有 8 个 I/O 线都被使用 当前正在执行的程序指令的地址存储在程序计数 器(PC)中 3 个 4 位计数器 74HCT163串接在一起构成 12 位的逻 辑寄存器 2018/12/2 Spring 2018 ZDMC – Lec. #24

控制与微码 原理图的左上方 指令操作码、 ALU 标志和相位组合形成两个微码 ROM(28C16)的 7 位地址 8 位寄存器 74HCT377 :取指寄存器(Fetch) 高 4 位保存当前指令的操作码 低 4 位保存指令或地址的数据 4 位标志寄存器 74HCT173 存储ALU 标志(Flags) :进位(carry)、零(zero) 双 D 触发器 74HCT74 同步复位信号 相位比特 指令操作码、 ALU 标志和相位组合形成两个微码 ROM(28C16)的 7 位地址 两个 ROM 的输出构成了协调所有其它芯片行为所需 的 16 个控制信号 2018/12/2 Spring 2018 ZDMC – Lec. #24

ALU 数据通道 原理图的左下方 ALU:74LS181 累加器寄存器“A”:74HCT173 对其两个输入执行任一常见得算术或逻辑运算 2018/12/2 Spring 2018 ZDMC – Lec. #24

Carry-In and Carry Flag 进位输入和进位标志 ALU 的进位输入(carry-in bit)是微码提供的控 制信号 进位标志不会反馈到 ALU 中,影响后面的计算 如果进位标志确实连接到 ALU 的进位输入比特, 那么程序在执行任何单半字节相加之前都需要清 除它,这比多个半字节相加更为常见。 2018/12/2 Spring 2018 ZDMC – Lec. #24

RAM 随机存取存储器 原理图的底部中间 RAM 芯片 CY7C168A 4Kx4 SRAM I/O 线连接到数据总线,地址来自取指寄存器 (Fetch)的操作数(作为高 4 位)和程序 ROM 字节(低 8 位) CLK 信号与/CSRAM 控制信号相或,输出连接到 RAM 的芯片选择输入端/CS CLK 信号与/CSRAM 控制信号相或,输出连接到 RAM 的芯片选择输入端/CS。这意味着 RAM 将只在每个时钟周期的后半部分使能,而且只有在微码专门使能它时才被使能。这是当写使能信号/WE 和 RAM 地址可能尚未有效时,在时钟周期的上半部分防止错误写入 RAM 的简单方法。 2018/12/2 Spring 2018 ZDMC – Lec. #24

输入输出端口 原理图的右下方 IN0 : 4 位总线驱动器 74HCT125 OUT : 4 位寄存器 74HCT173 输出有上拉电阻的四个按键的状态 OUT : 4 位寄存器 74HCT173 OUT1 连接到 16×2 字符的 LCD显示器的数据总线 databus[4..7] OUT0 将两条线连接到 LCD,用于控制 LCD 数据传输所需的 RS 和 E 信号 OUT0 的另外两条线,一条连接到 LED 上,另一条连接到一 个扬声器 74HCT173 有两个置数使能输入/G1 和/G2,并且两者 必须都是低才能将数据加载到芯片。 2018/12/2 Spring 2018 ZDMC – Lec. #24

总线驱动 原理图中心底部 8 位驱动 74HCT244 一半用于将 ALU 结果驱动到数据总线上 另一半用于将操作数从取指寄存器驱动到数据总线上 2018/12/2 Spring 2018 ZDMC – Lec. #24

组合反馈环路 ALU 输出有一个组合反馈环路,通过总线驱动器 B,返回到 ALU 的 B 输入端 反馈环路问题可在微码中修复 如果 ALU 功能被设置为类似 A+B,而总线驱动 B 使能, 那么会产生反馈问题 ALU 功能被设置为 A,也可以创建反馈环路,只是输 入 B 上的值是逻辑无关的 反馈环路问题可在微码中修复 使用 0000 输出替代原来的 ALU 功能选择 1111 从理论上讲,从不同逻辑家族或不同制造商生产的 74LS181 可能具有不同的内部逻辑,微码为基础的修复可能不起作用。如果在构建一个 Nibbler 克隆版并碰到这个问题,在数据总线和ALU 的 B 输入之间可以放置一个像 74HCT7541 的施密特触发缓冲器。 根据芯片数据手册中获取的 SN74LS181 的内部逻辑的知识 2018/12/2 Spring 2018 ZDMC – Lec. #24

微码和指令集 CPU 指令的两种类型:立即数、可寻址 指令编码 Nibbler 指令集和微码 ADDI JZ(零则跳转) 注意一些 ALU 控制信号与某些指令无关,并且以灰色显示,并标记为“dc”,表示不用关心(don’t care)。 2018/12/2 Spring 2018 ZDMC – Lec. #24

指令集 4 位指令操作码,最多有 16 个不同的指令 跳转指令:JMP、JC、JNC、JZ、JNZ LD、ST LIT OUT IN 从数据空间(RAM)加载一个半字节到累加器,或从累加 器存储一个半字节到数据空间 LIT 加载一个立即数半字节值到累加器 OUT 从累加器中存储半字节到 16 个输出端口中的一个 IN 从 16 个输入端口中加载半字节到累加器中 2018/12/2 Spring 2018 ZDMC – Lec. #24

指令集 ADDI ADDM CMPI CMPM NORI NORM 加半字节立即数值到累加器中 将数据空间中的半字节加到累加器中 将一半字节立即数与累加器进行比较 CMPM 将数据空间中的半字节与累加器进行比较 NORI 执行与立即数的 NOR NORM 执行与数据空间值的 NOR 2018/12/2 Spring 2018 ZDMC – Lec. #24

合成指令 那些不包括在表里的指令可以根据现有指令合成 无法合成的通用指令是 ANDM 和 SUBM NOT: NORI #0 ORI x: NORI x; NORI #0 ORM x: NORM x; NORI #0 ANDI x: NORI #0; NORI ~x SUBI: ADDI (~x+1) 无法合成的通用指令是 ANDM 和 SUBM 数据空间中的专用位置可以用于保存数据空间值的补码 在许多情况下, 通过一些思考可以完全消除对这 些合成指令的需要 2018/12/2 Spring 2018 ZDMC – Lec. #24

软件工具 Microcode Builder 微代码生成器 Assembler 汇编器 Simulator 仿真器 为两个微代码 ROM 的内容生成两个二进制文件 Assembler 汇编器 使用符号命名指令名称和分支标记 Simulator 仿真器 基于 GUI 图形的工具模拟 CPU 的数据和控制路径 2018/12/2 Spring 2018 ZDMC – Lec. #24