• / 131
  • 下载费用:10 金币  

第4章++传统计算机硬件系统设计.ppt

关 键 词:
第4章++传统计算机硬件系统设计.ppt
资源描述:
第4章 传统计算机硬件系统设计,4.1 时钟与复位 4.2 处理器设计 4.3 总线 4.4 输入/输出系统 4.5 存储器系统 4.6 计算机系统组成 4.7 简单的单片机设计 习题,4.1 时钟与复位,传统的冯·诺依曼型计算机硬件系统如图4.1所示,它由主机和输入/输出系统组成,其中主机是指处理器和主存储器。框图中的每一个框中又包含了多个部件,所有部件之间通过某些方式互连在一起,在软件的统一指挥下实现信息处理。本章在第3章所描述的计算机部件的基础之上,主要讨论处理器的设计,并从系统的角度出发,介绍如何合理有效地设计一个计算机硬件系统。,,图4.1 计算机硬件系统基本组成,任何计算机系统都具有时钟信号和复位信号。时钟信号为系统工作提供了时序基准;复位信号确定了复位后系统的初始状态。由于处理器内部的部件和子部件往往是以时钟信号作为启动条件的,因此,计算机内部的时钟信号必须是一个有规律的脉冲信号。时钟信号通常又被称为节拍脉冲,它的周期称作时钟周期或 T 周期,是处理器处理操作的最基本单位;若干个时钟周期组成一个机器周期,也称作处理器周期,它是指处理器从主存读取一个指令字所花费的时间;读取并执行一条指令所花费的时间称作指令周期,指令周期一般由若干个处理器周期组成。,时钟信号由独立于处理器的时钟发生器电路产生。设计时钟发生器电路时该电路产生的信号频率必须符合处理器工作频率的要求。时钟发生器的具体设计根据系统要求的工作频率不同而不尽相同。时序电路的初始状态由复位信号重新设定来设置。如英特尔80486复位时,相应处理器内部寄存器都有一个初始值。根据复位信号对时序电路复位的操作不同可分为同步复位和异步复位。采用 VHDL 语言对时钟和复位信号的具体描述在第 2 章中已有详细介绍。,4.2 处理器设计,处理器是计算机系统的核心。处理器设计,特别是处理器的指令系统,必须结合该计算机的具体应用来进行设计。本节主要从处理器的基本功能出发,讨论处理器的一般设计。,在计算机系统中,处理器必须做的事情是: ① 取指令:从存储器读取指令; ② 解释指令:对指令进行译码,确定指令所要求的动作; ③ 取数据:指令执行时,从处理器的寄存器、存储器或输入/输出中; ④ 处理数据:对数据进行算术或逻辑运算; ⑤ 写数据:把处理完的数据写入寄存器、存储器或I/O中。,4.2.1 CPU的组织结构1. CPU内部结构根据系统对CPU的要求,CPU在组织结构上主要包含了三个部分:算术和逻辑单元(ALU,Arithmetic and Logic Unit)、控制单元(CU,Control Unit)和相关的寄存器。ALU完成数据的实际运算或处理;控制器控制数据和指令在CPU中移入移出,并控制ALU的操作;寄存器是由一组存储位组成的极小的内部存储器。图4.2描述的就是CPU的内部结构。,,图4.2 CPU的内部结构,2. CPU内部寄存器组(1) 用户可见寄存器用户可见寄存器(User-Visible Register)允许编程人员用机器语言或汇编语言的方式进行访问,这些用户可见寄存器可分为通用寄存器,数据和地址寄存器,条件 码寄存器。① 通用寄存器(General-Purpose Register)可被程序员指派各种用途。最常用的、速度最快的称为累加器AC。某些情况下,通用寄存器能用作寻址功能(如寄存器间址、偏移量)。,② 数据寄存器(DR,Data Register)和地址寄存器(AR,Address Register)之间通常没有严格的区分,但地址寄存器在很多场合自身具有专用性。如:在具有分段寻址的机器中,段指针(Segment Pointer)存放着某个段的段基址;变址寄存器(Index Register)用于变址寻址,并有可能是自动变址的;堆栈指针(Stack Pointer)始终指向堆栈的栈顶。,③ 条件码寄存器用于存放条件码(Condition Codes),它也称为标志寄存器(Flag Register)。条件位被集中存放在一个或多个寄存器中,形成了条件码。对于用户,它们至少是部分可见的。作为指令执行的结果,CPU硬件设置这些条件位。例如,进行算术运算时,除运算结果本身存于寄存器或存储器之外,相应的条件位也被设置,这就可能产生一个正、负、零或溢出的结果。这些条件代码一般被后面的指令所测试,作为转移的条件所用。,设计寄存器组时要考虑寄存器的用途、长度和数量。把寄存器设计成通用的还是专用的,关系到指令集的设计。在对专用寄存器寻址的指令中,一个地址码往往隐含在操作码中,这样可以缩短指令长度,但限制了编程的灵活性。寄存器数量的设置同样会影响指令集的设计,因为寄存器越多,要求的地址码字段的位数也越多。从程序设计的角度看,寄存器太少会导致不断地访问存储器,太多又增加了硬件开销。一般认为,机器设置8~32个寄存器是适宜的。寄存器长度的设置与计算机字和寻址空间有关,一般要求用于存放地址的寄存器的长度应能存放最长的地址,数据寄存器应能存放大多数数据类型的值。,(2) 控制和状态寄存器控制和状态寄存器(Control And Status Register)在CPU中起着控制操作的作用。除少数寄存器用户可见外,大多数的控制和状态寄存器用户是不可见的。 在不同的机器中,对这类寄存器的设置是有区别的。下面提到的寄存器都是最基本的,它们是:① 程序计数器(PC,Program Counter):存放着下一条将要读取执行的指令的地址;,② 指令寄存器(IR,Instruction Register):存放着最近被读取的指令;③ 存储器地址寄存器(MAR,Memory Address Register):存放着指示存储器位置的地址;④ 存储器缓冲寄存器(MBR,Memory Buffer Register):存放着将被写入存储器的数据字或最近读出的字。,在每次取指令之后,程序计数器的内容被CPU更改,它始终指向将被立即执行的指令。程序计数器与后三个寄存器一起被用于CPU与存储器之间的地址传送、数据传送和指令传送。在CPU设计中,都需设置程序状态字(PSW,Program Status Word)。PSW一般含有条件代码和其他一些状态信息。,3. 寄存器组的设计设计寄存器时需要考虑支持操作系统的问题,所以CPU的设计者应对将要采用的操作系统有一个基本的了解。CPU内部的寄存器一般都采用一组D触发器来构成。由n位触发器构成的寄存器被称为n位寄存器,它可以存储n位二进制信息。再广义一点来说,寄存器是由一组触发器和若干组合逻辑门组成的。触发器用于存储数据信息,而逻辑门用来控制何时及如何把数据写入或取出触发器。现在我们以指令寄存器IR来举例,看看它的具体结构。,我们知道,IR的内容是在程序要执行时才被装载的,所以可以用一位控制信号LDIR来表示能否打入相应的内容。CPU从存储器读取指令以后,LDIR由“0”变为“1”,把D上的信息打入寄存器。实现该寄存器的VHDL描述见例4.1。,【例4.1】 实现指令寄存器IR功能的VHDL描述如下:library ieee;use ieee,std_logic_1164.all;entity ir isport (d:in std_logic_vector (7 downto 0);clk,ldir:in std_logic;q:out std_logic_vector (7 downto 0));end ir;,architecture stru of ir is beginp1:process(clk)beginif (clk’event and clk=‘1’and ldir=‘1’) thenQ=d;end if; end p1; end stru;,图4.3 机器指令与微指令的关系,,4.2.2 CPU内部控制从逻辑上看,任何一种CPU的内部,都是由相关的部件及控制端和多路开关组成的。CPU执行不同的指令,就是在其内部不同部件之间进行控制信息的加载和控制开关的合或开来建立不同的数据通路,以完成信息的传递的。这个信息的传递过程需要控制器在时序和操作上有一个合理有效的安排。,1. 微指令的产生每一个指令周期开始时,CPU总是从存储器中读取指令。在典型的CPU操作中,除另通知外,在读取指令之后,程序计数器总是加上一个增量,为读取下一条指令做好准备。读取的指令装入指令寄存器IR当中,通过相关的子部件,IR中的指令的操作码最终将被转换为一系列机器内部的操作控制信号。图4.3描述了机器指令与微指令的关系。,在采用微程序控制的CPU中,微操作是执行部件的最基本的操作。一条微指令由要执行的所有基本微操作的定义和控制及下一条要执行的微指令地址的定义和控制两部分组成,各种微操作的定义通常包括ALU源操作的选择、ALU的功能、ALU的目的、进位控制、移位控制、中断控制以及数据入和数据出控制等等。下条微指令地址的定义通常包括下条微指令地址的源选择的区分,以及在某些场合对微指令地址提供实际值。微程序控制部件由微程序存储器和确定下条微指令地址所必须的结构组成。,由于所有的操作控制信号已被编成微指令存放在控制存储器中,CPU最终的功能实现就取决于该系统的微指令集。我们知道,一条微指令由操作控制和顺序控制两部分组成。操作控制部分决定了管理和指挥全机工作的控制信号。该字段的每一位都代表了一个微命令,表示一个控制操作。该位为‘1’,表示发出微命令;该位为‘0’,表示不发出微命令。顺序控制部分决定了下一条将要执行的微指令的地址。,2. 内部控制时序组成计算机硬件的器件特性决定了时序信号基本体制是电位—脉冲制。例如,在实现寄存器之间的数据传递时,数据加在触发器的电位输入端,电位高低表示数据是1还是0。而打入数据的控制信号则加在触发器的时钟输入端。在打入数据的控制信号到来前,要求电位信号必须保持稳定,这样才能保证电位输入端打入的数据信息是可靠的。,在串行方式的微程序控制器中,微指令周期等于读出微指令的时间加上执行该条微指令的时间。为了保证整个机器控制信号的同步,可以将一个微指令周期设计得与CPU周期相等。操作控制中的各个微命令都是节拍电位信号,它们的持续时间都是一个CPU周期。,设一个CPU周期有4个T周期,分别称为T1、T2、T3和T4周期。若一个CPU周期为800 ns,则每个T周期的脉冲宽度为200 ns。可以用T4作为读微指令的时间,用T1+T2+T3时间作为执行微指令的时间。例如,在前600 ns时间内运算器进行运算,在600 ns时间的末尾运算器运算完毕,可以用T4的上升沿将运算结果打入某个寄存器。在此同时可以用T4间隔读取下条微指令,经200 ns时间延迟,下条微指令又从微控制存储器读出,并在T1上升沿打入微指令寄存器。,如忽略触发器的翻转延迟,那么下条微指令的微命令信号就从T1上升沿起就开始有效,直到下一条微指令读出后打入微指令寄存器为止。因此一条微指令的保持时间恰好是800 ns,也就是一个CPU周期的时间。,有些微命令既不能来得太早,也不能太晚,这就要求这些微命令需要有时间控制,一般用这些微命令的节拍电位与相应的T周期进行组合,即可得到相应的节拍脉冲信号。图4.4 描述了一种CPU周期、节拍电位信号、节拍脉冲信号与T周期的关系。图4.4中的节拍脉冲信号是由节拍电位信号与T4'相与得到的,逻辑功能电路如图4.5所示。由此可见,在进行CPU设计时,设计上述这些时序逻辑电路是必需的。第3章已介绍了一种微程序控制中使用的时序信号产生器,这里不再赘述。,总之,控制器在每个时钟周期根据时钟、指令寄存器和标志的输入信号,发出一组控制信号,控制数据路径、ALU和系统总线。数据路径控制用于控制内部数据流,为了能控制每个路径,路径上都有门,控制信息可以暂时打开门以便让数据通过;对ALU的控制用于控制ALU的具体操作,一般这些控制信号会作用于ALU内的各种逻辑装置;系统总线控制用于将控制信号发送到系统总线的控制线上,如存储器读写信号、I/O读写信号等。,,图4.4 CPU内部时序关系图,,图4.5 节拍脉冲信号的产生电路,4.2.3 简单CPU的设计现在我们设计一个具有单总线结构的串行计算机系统的CPU。1. 总体设计(1) 设计目标CPU具有8根数据线,8根地址线。可以执行的机器指令包括输入/输出、逻辑运算、算术运算、数据传送和跳转,指令格式分单字节和双字节两种,但指令的操作码部分都占半个字节,所以最多有16条指令。机器指令有IN、OUT、ADD、MOVAR、MOVRA和JMP。,CPU的对外引脚有:数据线D7~D0、地址线A15~A0,CPU对IO的读控制信号IOR、IO写控制信号IOW、存储器读控制信号MR、存储器写控制信号MW、时钟信号CLK和复位信号REST。,(2) 设计方案控制部件由控制存储器和确定下条微指令地址所必需的结构所组成。微控制单元利用微控制位直接控制运算器以及运算器与地址、数据总线之间的寄存器。该微控制单元是一个外部数据总线8位,内部数据总线8位的微控制单元。采用层次设计的方法,该CPU的最顶层具有两个模块:总线接口单元和执行单元。总线接口单元含有取指令和数据及存指令执行结果时所需的相关寄存器:地址寄存器AR和指令寄存器IR;执行单元含有对指令进行译码并执行时所需的控制器、运算器、程序计数器PC、通用寄存器(R0和R1)。,2. 建立数据路径CPU设计的第一步就是根据指令系统来建立数据通路,确定执行相关的指令时信息从什么地方开始,经过哪些部件,最后到达哪个目的地。紧接着就是定义各个部件的控制信号,确定时钟周期。CPU内部各部件之间的数据通路及控制信号如图4.6所示。,,图4.6 CPU内部数据通路及控制信号图,图4.6中描述的CPU内部任何部件的输入/输出都受控制信号的控制。部件的输入/输出控制如图4.7所示。在信息输入时,当选通信号Load有效,就表示信息通路上的信息被打入该部件。部件输出端经过三态门,当控制信号有效时,所连部件的信息就可以输出到CPU的内部总线上,供其他部件读取。三态门的门控信号En来自于控制器。,,图4.7 部件的输入/输出控制,【例4.2】 CPU内部的部件实现输入/输出控制的VHDL描述如下: library ieee; use ieee.std_logic_1164.all; entity reg isport(LOAD:in std_logic;d:inout std_logic_vector(7 downto 0)); end reg;,architecture arch of reg iscomponent regport(LOAD:in std_logic;din:std_logic_vector(7 downto 0);dout: std_logic_vector(7 downto 0)); end component;component tri_gateport(din,en:in std_logic_vector(7 downto 0);dout:out std_logic_vector(7 downto 0)); end component;,signal doutt:out std_logic_vector(7 downto 0); beginu0: reg port map(load,din,doutt);u1: tri_gate port map(en,doutt,dout); end arch;,例4.2的VHDL源代码表明,实现部件输入/输出功能的实体分两个元件。一个元件是CPU内部的相关部件,如程序计数器PC、指令寄存器IR和通用寄存器(R0和R1)等,它们的输入选通信号来自控制器的控制信号Load;另一个元件是三态缓冲器,它的选通控制信号也来自于控制器。两个控制信号来自于微指令中的相应位。两个元件可各自作为实体进行单独设计,设计好的实体放入工作库中,只需定义好端口以后,利用元件例化和配置语句就可完成两个元件的连接。,由于在采用微程序控制的CPU中,微操作是执行部件的最基本的操作。要执行的所有基本微操作的定义和控制及下一条要执行的微指令地址的定义和控制两部分组成了一条微指令。我们所设计的简单CPU对应的微指令格式如图4.8所示。,,图4.8 微指令格式示意图,第0~5位是用于指明下一条要执行的微指令的微地址。第6位存放着判别测试信息P。当微程序出现分支时,意味着微程序出现条件转移。在这种情况下,通过该字段P的判断和执行部件的“状态条件”反馈信息,去修改微地址寄存器的内容,并按改好的内容去读下一条微指令。第7位到第23位分别表示了设计的CPU内部所有的控制信息定义。每一位用控制信号的名称来表示。第23位到第7位的指令含义如下:,LDPC:程序计数器PC置数控制端。当该位为1时,PC将在下一个脉冲的上升沿从数据线上装入数据。MW:存储器的写控制端。当该位为1时,在一个指令周期的T4上升沿时刻,把数据线上的8位数据送入存储器相应地址的单元中。,LDIR:指令寄存器IR写控制端。在T2时刻检测到该位为1时,IR将从内部总线上装入数据。INPC:程序计数器PC 的自增量控制端。如果LDPC不为1,而INPC为1时,给PC计数器一个脉冲,使得PC在原来的数值上加1。SELR0、SELR1:寄存器操作控制信号产生的译码输入。组合产生的控制信号用于决定对寄存器的选择和数据路径控制,如表4.1所示。表4.1中LDR0、LDR1、R1-Bus的含义为:,表4.1 寄存器控制信号的产生,LDR0、LDR1:寄存器R0和R1装载使能端。当该位为1时,数据总线上的信息放到寄存器中。R1-BUS:寄存器输出使能端。当该位为1时,允许寄存器的输出端往数据线上放数据。LDAR:地址寄存器AR装载使能端。当该位为1时,通过T4脉冲把总线上准备好的8位地址数据装入 AR。BUSSEL0~BUSSEL2:相关数据通路开关选择。组合产生的控制信号用于决定存储器、寄存器、I/O、ALU之间哪两者进行信息传递。具体设置如表4.2所示。,表4.2 部分数据通路控制信号的产生,表4.2组合产生的各信号定义如下:IOR:IO端口的读控制端。当该信号有效时,表示数据总线上的I/O信息可以读取。PC-BUS:表示程序计数器PC的输出通路使能。当该信号有效时,表示该通路接通,把自己的数据放在总线上,以便让地址寄存器AR来读取。MR:存储器的读控制端。当该信号有效时,表示数据总线上的存储器信息可以读取。AR-BUS:表示AR到总线的数据通路。当该信号有效时,表示该通路接通,AR的信息送到地址总线上。,ALU-BUS:运算器输出使能。当运算器要把结果送到寄存器R0或者其他寄存器时,该信号把运算器结果送到总线待寄存器读取。LDX、LDY:ALU的输入控制端。当它有效时,表示数据打入暂存器X和Y。S0~S3、M、C:这组信号用来控制ALU的具体操作。S3~S0用来选择运算类型,M用来选择是算术运算还是逻辑运算,C是进位。,IOW:IO的写控制端。当该位为1时,在一个指令周期的T4上升沿时刻,把数据线上的8位数据送入IO相应地址的端口中。上述所有控制信号可以分为CPU内部的控制信号和到外部控制总线的控制信号两类。前者用于实现控制寄存器与他者之间传送数据和用于启动指定的ALU功能,后者则用于实现CPU对存储器和I/O模块的控制。,CPU处于工作状态时,先要取得要执行的机器指令。现在来看取指令周期中,CPU内部是如何进行控制的。如前所述,设从T4开始取指令,第一步是传送PC的内容到AR,控制器完成此工作是通过启动控制信号PC-BUS、LDAR,打开PC各位与AR各位之间的门来实现的;第二步是由存储器读一个字装入IR并将PC增1,控制器同时发出如下控制信号来完成此工作:① 一个存储器读控制信号MW送到控制总线上;② 一个允许数据总线上的内容被存入指令寄存器IR的开门信号LDIR;③ 对PC内容加1并返存PC逻辑的控制信号INPC。,3. 机器指令的译码指令寄存器将送来的机器指令中的操作码部分送入控制器的指令译码单元进行译码,目的是得到该条机器指令所对应的微程序在控制存储器中的起始微地址。如第3章所写的,一条微指令长度为24位,存放微指令的控存单元所对应的微地址有6位,由于机器指令的操作码部分长度为4位,该4位的信息作为译码器的惟一的逻辑输入,译码器根据这个输入值产生单一输出。,通常,译码器有n位二进制输入和2n个二进制输出。被激活的惟一的输出则作为一个存放着所有微指令地址的寄存器堆的每个寄存器的选通信号,被选中的寄存器中存放的地址信息就被送到微地址寄存器,作为要执行的微指令的地址。根据该地址取得一条微指令,控制器就会以不同的时间单位发送不同的控制信号,来控制CPU中相应的部件完成需要的功能。图4.9描述的是机器指令的译码电路功能图。,,图4.9 机器指令的译码电路功能,表4.3给出了一个控制器的4位操作码信息对应的译码输出,输出信息Oi=1(1≤i≤16)时,表示微指令地址寄存器堆中的寄存器i被选中。,表4.3 指器指令的译码,【例4.3】 实现指令译码器电路的VHDL描述如下: library ieee; use ieee.std_logic_1164.all; entity decode4_16 isport(enable:in std_logic;a:in std_logic_vector(3 downto 0);y:out std_logic_vector(15 downto 0)); end decode4_16; architecture arch of decode4_16 issignal z:std_logic_vector(15 downto 0);,beginwith a selectz= “0000000000000001”when “0000”,“0000000000000010”when “0001”,“0000000000000100”when “0010”,“0000000000001000”when “0011”,“0000000000010000”when “0100”,“0000000000100000”when “0101”,,“0010000000000000”when “1101”,“0100000000000000”when “1110”,“1000000000000000”when “1111”;with enable selecty= z when ‘1’“0000000000000000”when others; end arch;,这种要执行第一条微指令地址产生方法在操作码长度较短时是比较适用的,而且对微程序所对应的微指令条数也没作限制。当机器指令所对应的微程序的微指令都是两条时,我们可以采用另外一种简单的方法来实现。由于所有微程序的第一条微指令在控制存储器中的地址值由译码结果左移一位得到的,因此图4.9中的寄存器堆可以取消,用一个移位寄存器电路替代即可。如果执行的机器指令所对应的微程序包含的微指令只有一条,那么要得到它的微地址就更简单了。,4. 具体设计根据CPU设计时对寄存器堆、程序计数器PC和ALU的X输入端、Y输入端,以及对指令译码电路的要求,利用多路选择器可实现多输入到单输出的功能。图4.10是一个4选1的多路选择器,4组输入线分别用D0、D1、D2、D3表示,D0是R0寄存器的8位数据线,D1是R1寄存器的8位数据线,D2是R2寄存器的8位数据线,D3是R4寄存器的8位数据线。为了在这4组输入中选择一组作为输出信号F,图中采用S1和S2作为选择码来实现选择功能。,图4.10 4选1多路选择器,,CPU内部任何一个需要用到多路选择器的地方,都可以用这这种方法实现,惟一的区别在输入线的组数和一组数的数目上的差异。一个4选1的多路选择器的真值表见表2.5,实现该电路的VHDL描述见例2.21。,【例4.4】 8位CPU的顶层VHDL描述如下: Library ieee; Use ieee.std_logic_1164.all; Use work.numeric_std.all; Use wor.cpu_8comps; entity cpu_8 is port(clk,rst: in std_logic;a: in usigned(7 downto 0);d: inout usigned(15 downto 0);mw,mr,iow,ior: out std_logic;);,end cpu_8; architecture behavior of cpu_8 issignal dd: intout usigned(7 downto 0);signal clk0,rst0:in std_logic; begin biu:block ——总线接口单元描述signal dd0: inout unsigned(7 downto 0); beginreg_a:block ——BIU内部相关寄存器描述,beginar:blockbeginend ar;dr:blockbeginend dr;ir:blockbegin,end ir;end reg_a; end biu; eu:block ——执行单元描述signal dd1: inout unsigned(7 downto 0); begin alu:block ——ALU描述 begin,end alu;cu:block ——控制器描述beginend cu;reg_b:block ——执行单元内相关寄存器描述begin r2:blockbegin,end r2;flag:blockbeginend flag;end reg_b; end cu; end behavior;,4.3 总 线,4.3.1 总线的概念与分类总线是构成计算机系统的互连机构,是多个系统功能部件之间进行数据传送的公共通路。整个计算机系统包含有许多模块,这些模块位于系统的不同层次上,整个系统按模块化构建。因此同一类型的总线在不同的层面上连接不同部位上的模块,其名称、作用、数量、电气特性和形态各不相同。,按总线连接的对象所处系统的层次来分,总线有芯片级总线、系统总线、局部总线和外部总线。芯片级总线用于模块内芯片级的互连,是该芯片与外围支撑芯片的连接总线。如连接CPU及其周边的协处理器、总线控制器、总线收发器等的总线称为CPU局部总线或CPU总线,连接存储器及其支撑芯片的总线称为存储器总线。系统总线是连接计算机内部各个模块的一条主干线,是连接芯片级总线、局部总线和外部总线的纽带。符合某一总线标准的系统总线具有通用性,是计算机系统模块化的基础。,与所连接的CPU和外部设备相比,系统总线发展滞后、速度缓慢、带宽较窄,成为数据传输的速度瓶颈。为了打破这一瓶颈,人们将一些高速外设从系统总线上卸下,通过控制和驱动电路直接挂到CPU局部总线上,使高速外设能高速运行。这种直接连接CPU和高速外围设备的传输通道就是局部总线。局部总线一端与CPU连接,另一端与高速外设和系统总线连接,好像在系统总线和CPU总线之间又插入一级。外部总线又称设备总线或输入/输出总线,是连接计算机与一般外部设备的总线。外部总线经总线控制器挂接到系统总线上。CPU与外部设备打交道需经过芯片级总线、局部总线、(系统总线)和外部总线这样三到四级总线。,按照允许信息传送的方向来分,总线可分为单向传输和双向传输两种。双向传输又分为半双向和全双向两种。半双向在一个时刻只能向其中的一个方向进行数据传送,而在另一时刻可以实现反方向的数据传送;全双向允许在同一时刻进行两个方向的数据传送。全双向的速度快,但造价高,结构复杂。,按照用法,总线又可以分为专用总线和非专用总线。只连接一对物理部件的总线称为专用总线。其基本优点是:系统的流量高,多个部件可以同时发送和接收信息,几乎不争用总线;控制简单,不用指明源和目的;任何总线的失效只会影响连接到该总线的两个部件不能直接通信,但它们仍可通过其他部件间接通信,因而系统可靠。专用总线的主要缺点是:总线数目多,难以小型化和集成电路化;总线长时,成本高;专用总线的时间利用率往往很低,系统的模块化也较难实现;,专用总线只适用于实现某个设备(部件)仅与另一个设备(部件)的相连。非专用总线可以被多种功能或多个部件所分时共享,同一时候只有一对部件可以使用总线进行通信。非专用总线的主要优点是:总线数少,造价低;总线接口标准化、模块性强,易于简化和统一接口的设计;可扩充能力强,部件的增加不会使电缆、接口和驱动电路等剧增;易于采用多重总线来提高总线的带宽和可靠性,使故障弱化。非专用总线的缺点是系统流量小,经常会出现总线争用,使未获得总线使用权的部件不得不等待而降低效率。如果处理不当,总线可能成为系统速度性能的瓶颈,对单总线结构尤其如此。,4.3.2 系统总线的设计系统总线包括数据总线(DB,Data Bus)、地址总线(AB,Address Bus)和控制总线 (CB,Control Bus)三部分。数据总线传送数据;地址总线传送地址;控制总线传送控制信号、时序信号和状态信息等。系统总线上三态门双向缓冲器是接口电路和总线驱动电路中经常用到的器件,下面将对它们的设计进行讨论。,1. 三态门电路三态门电路的原理图如图4.11所示。它具有一个数据输入端din,一个数据输出端dout和一个控制端en。当en=‘1’时,dout=din;当en=‘0’时,dout=‘Z’(高阻)。三态门的真值表如表4.4所示。,,图4.11 三态门电路,表4.4 三态门电路的真值表,【例4.5】 用VHDL语言描述的三态门电路的程序如下:library ieee;use leee.std_logic_1164.all;entity tri_gate isport(din,en:in std_logic;dout:out std_logic);end tri_gate;,architecture stru of tri_gate is begintri_gate1:processss(din,en)beginif(en=‘1’)thendout=din;elsedout=‘Z’;end if;end process; end stru;,三态门的结构体也可描述成下列语句: architecture stru of tri_gate is begintri_gate3:process(din,en)begincase en is when ‘1’ = dout dout=‘Z’;end case;end process; end stru;,2. 双向总线缓冲器双向总线缓冲器用于对数据总线的驱动和缓冲,典型的双向总线缓冲器的电路如图4.12所示。它有两个数据输入/输出端a和b,方向控制端dr和一个选通端en。当en=‘1’时,双向总线缓冲器未被选中,a和b呈高阻;en=‘0’时,双向总线缓冲器被选通。如果dr=‘0’,那么a=b;如果dr=‘1’,那么b=a。双向总线缓冲器的真值表如表4.5所示。,,图4.12 双向总线缓冲器,表4.5 双向总线缓冲器真值表,【例4.6】 用VHDL程序描述的双向总线缓冲器的程序如下:library ieee;use ieee.std_logic_1164.all;entity tri_bigate isport(a,b:inout std_logic_vector(7 downto 0);en:in std_logic;dr:in std_logic);end tri_bigate;,architecture rtl of tri_bigate signal aout,bout:std_logic_vector(7 downto 0); beginprocess(a,dr,en)beginif ((en=‘0’)and (dr=‘1’)) thenbout=a;elsebout=“zzzzzzzz”;end if;,b=bout;end process;process(b,dr,en)beginif((en=‘0’)and(dr=‘0’))thenaout=b;elseaout=“zzzzzzzz”;end if;,a=aout;end process; end rtl;,4.4 输入/输出系统,计算机系统由CPU、存储器和输入/输出 (I/O)系统三大部分组成。I/O系统为主机与外部世界进行信息交换提供各种手段。I/O系统通常包括I/O设备、I/O接口和与输入/输出操作有关的软硬件。I/O设备的狭义概念的范围应是磁盘、键盘、显示器、打印机等;I/O设备的广义概念的范围包括存储外设、通讯外设、声像处理外设等。,由于I/O设备与主机相对独立,它们之间无法直接相连,因而必须通过一个“中转站”,用于实现两者之间信息的传递。该“中转站”就是I/O接口电路,简称I/O接口。图4.13 表明了各种I/O设备通过I/O接口与主机互连的关系。,,图4.13 计算机系统I/O与主机互连示意图,由于I/O设备品种繁多且性能迥异,使得I/O系统成为计算机系统中最具多样性和复杂性的部分。对I/O设备进行输入/输出操作,是由I/O系统中相关软、硬件完成的。它包括对指定外设编址、连接好主存与指定外设之间的信息通路、完成在指定外设编址区和由操作系统指定的主存之间进行所要求的信息传送(输入时是将外设编址区域的信息送入主存,输出时是将主存的信息送往外设编址区)。,有的I/O系统还具备将要传送的信息进行格式转换,形成和产生有关输入/输出操作是否完成,或在执行过程中是否有错的状态控制信息,经中断系统传送给操作系统去分析和处理。上述功能由设计者根据具体要求,分配给I/O接口、I/O设备和操作系统,由它们共同完成。,无论是低性能单用户计算机还是高性能多用户计算机,I/O系统的设计主要是要解决好CPU、主存和I/O设备之间在信息交换中速度上的差异及如何减轻处理机的负担。在现代计算机系统中,I/O设备具有异步性、实时性和与设备无关性三个特点。其中异步性体现了I/O系统相对于处理机的独立自主的关系;实时性反映了按照不同设备响应时间的不同要求来划分和实现I/O系统内部不同功能之间的关系;,与设备无关性贯彻了I/O系统标准化接口与非标准I/O设备之间的关系;I/O系统的设计就是要合理地组织I/O系统并解决好I/O控制方式。对于工作速度、工作方式和工作性质不同的外围设备,通常需要采用不同的输入/输出方式。目前常用的输入/输出方式有三种:程序控制输入/输出、直接存储器访问和I/O处理机方式。这三种方式正好与输入/输出系统发展经历的三个阶段相对应,可以分别用于不同的计算机系统上,也可用在同一个计算机系统上作为相互补充。,4.5 存储器系统,在计算机系统中,存储器系统是一个重要的组成部分。设计者在进行系统设计时,应合理地对存储器系统进行组织,使得该模块在系统中发挥最佳的性能。,4.5.1 存储器组织计算机系统中存储器的设计要解决的关键问题之一就是存储器的译码电路,以便CPU可以完成多种宽度的数据访问。采用交叉编址方式来确定存储单元地址,则可以实现上述功能。假设存储器由m个存储模块构成,采用交叉编址方式确定存储单元地址。交叉编址又分为低位交叉和高位交叉两种方式。下面讨论的存储器均由m个存储模块组成,m个存储模块编号分别为0,1,2,…,m–1;每个存储模块的字数为l个字节。,1. 低位交叉编址在低位交叉编址的并行存储器中,主存物理地址的组成如图4.14所示。 由于模块号在物理地址的低部,因此第i号(0≤i≤m-1)模块内存储单元的地址为n×m+i(0≤n≤l-1)。可见,在低位交叉编址方式中,m个存储模块可以在同一时刻被访问,因而实际频宽很高。,图4.14 低位交叉编址的物理地址组成,,2. 高位交叉编址采用高位交叉编址的并行存储器物理地址组成如图4.15所示。由于模块号在物理地址的高部,因此第i号(0≤i≤m-1)模块内的地址范围为i×n至i+1×n-1。,,图4.15 高位交叉编址的物理地址组成,
展开阅读全文
  微传网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
0条评论

还可以输入200字符

暂无评论,赶快抢占沙发吧。

关于本文
本文标题:第4章++传统计算机硬件系统设计.ppt
链接地址:https://www.weizhuannet.com/p-4607164.html
微传网是一个办公文档、学习资料下载的在线文档分享平台!

网站资源均来自网络,如有侵权,请联系客服删除!

 网站客服QQ:80879498  会员QQ群:727456886

copyright@ 2018-2028 微传网络工作室版权所有

     经营许可证编号:冀ICP备18006529号-1 ,公安局备案号:13028102000124

收起
展开