收藏 分享(赏)

第9章数字系统设计基础.ppt

上传人:ysd1539 文档编号:7983772 上传时间:2019-06-02 格式:PPT 页数:110 大小:756KB
下载 相关 举报
第9章数字系统设计基础.ppt_第1页
第1页 / 共110页
第9章数字系统设计基础.ppt_第2页
第2页 / 共110页
第9章数字系统设计基础.ppt_第3页
第3页 / 共110页
第9章数字系统设计基础.ppt_第4页
第4页 / 共110页
第9章数字系统设计基础.ppt_第5页
第5页 / 共110页
点击查看更多>>
资源描述

1、第9章 数字系统设计基础,9.1 数字系统概述 9.2 十字路口交通灯控制系统设计 9.3 8位模型计算机设计,9.1 数字系统概述,9.1.1 数字系统的基本概念 采用数字电子技术实现数字信息处理、传输、控制的数字逻辑单元集合称为数字系统。数字系统一般由数据子系统和控制子系统构成。,图9-1 数字系统的结构,数据子系统(也称数据处理器)由寄存器和组合电路构成,寄存器用于暂存信息,组合电路实现对数据的加工和处理。在一个操作步骤中,控制子系统发出命令信号给数据子系统,数据子系统完成命令信号所规定的操作。在下一个操作步骤中,控制子系统发出另外一组命令信号,命令数据子系统完成相应的操作。通过多步操作

2、(也称操作序列),数字系统完成一个操作任务,控制子系统接收数据子系统的状态信息及外部输入来选择下一个操作步骤。,控制子系统(也称控制器)决定数据子系统的操作和操作序列。控制子系统决定操作步骤,它根据外部输入控制信号和数据子系统的状态信号来确定下一个操作步骤。控制子系统控制数字系统的整个操作进程。,控制器是数字系统的核心,有无控制器是区分数字系统和逻辑功能部件的重要标志。凡是有控制器、且能按照一定时序进行操作的,不论规模大小,均称为数字系统。凡是没有控制器,不能按照一定时序操作,不论规模有多大,均不能作为一个独立的数字系统,只能作为一个完成某一特定任务的逻辑功能部件;例如,加法器、译码器、寄存器

3、、存储器等。,9.1.2 数字系统设计的一般过程,数字系统与逻辑功能部件的设计方法是不同的。逻辑功能部件采用“自底向上”的设计方法,先按照任务要求建立真值表或状态表,给出逻辑功能描述,再进行逻辑函数化简,最后完成逻辑电路设计。数字系统则采用“自顶向下”的设计方法,这里的“顶”是指系统的功能,“向下”是指将系统功能由大到小进行分解,直至可以用基本逻辑功能部件来实现。,“自顶向下”的设计方法,图9-2 自顶向下的设计方法,1.明确系统功能,明确系统功能是对要设计的系统的任务、要求、原理以及使用环境等进行充分调研,进而明确设计目标、确定系统功能。,2.确定总体方案,数字系统总体方案将直接影响整个数字

4、系统的质量与性能,总体方案需要综合考虑以下几个因素:系统功能要求、系统使用要求和系统性能价格比,考虑不同的侧重点,可以得出不同的设计方案。同一功能的系统可以有多种工作原理和实现方法。应根据实际问题以及工作经验对各个方案进行比较,从中选出最优方案。,3. 确定系统结构,系统方案确定以后,再从结构上对系统进行逻辑划分,确定系统的结构框图。具体方法是:根据数据子系统和控制子系统各自功能特点,把系统从逻辑上划分为数据子系统和控制子系统两部分。逻辑划分的依据是,怎样更有利于实现系统的工作原理,就怎样进行逻辑划分。逻辑划分以后,就可以画出系统的粗略结构框图。,对数据子系统进行进一步结构分解,将其分解为多个

5、功能模块,在将各个功能模块分解为更小的模块,直至可用逻辑功能模块如寄存器、计数器、加法器、比较器等实现为止。最后画出由基本功能模块组成的数据子系统结构框图,数据子系统中所需的各种控制信号将由控制子系统产生。,4. 控制算法设计,控制算法是建立在给定的数据子系统的基础上的,它直接地反映了数字系统中控制子系统对数据子系统的控制关系和控制过程。控制算法设计的目的是为了获得控制操作序列和操作信号,为设计控制子系统提供基础。,5. 系统仿真实现,上述步骤完成之后,可以得到一个抽象的数字系统。经过细分后,数据子系统是逻辑功能部件的逻辑符号的集合,这些逻辑功能部件功能可以运用逻辑电路的设计方法进行设计。控制

6、子系统经过控制算法设计后得到了控制操作序列和操作信号。数字系统中的控制子系统设计的状态信号、外部输入信号、控制信号比较多,因此,控制子系统的具体电路设计是数字系统设计的重点之一。在完成两个子系统设计后,可以用EDA(Electronic Design Automation)软件对所设计的系统进行仿真,验证数字系统设计的正确性。,6. 电路实现,通过EDA软件仿真,如果设计的数字系统满足总体要求,就可以用芯片实现数字系统。实现数字系统应“自底向上”进行。首先实现各个逻辑功能电路,调试正确后,再将它们互连成子系统,最后进行数字系统总体调试。,9.2 十字路口交通灯控制系统设计,9.2.1 系统功能

7、与使用要求 十字路口交通灯控制系统要完成对十字路口交通信号灯的控制,系统功能与使用要求如下: 十字路口由一条东西方向的主干道和南北方向的支干道构成。主干道和支干道均有红、绿、黄三种信号灯。 通常保持主干道绿灯、支干道红灯。只有当支干道有车时,才转为主干道红灯,支干道绿灯。,绿灯转红灯过程中,先由绿灯转为黄灯,5秒钟后再由黄灯转为红灯;同时对方才由红灯转为绿灯。 当两个方向同时有车时,红、绿灯应每隔30秒变换一次,应扣除绿灯转红灯过程中有5秒黄灯过渡,绿灯实际只亮25秒。 若仅一个方向有车时,处理方法是: 该方向原来为红灯时,另一个方向立即由绿灯变为黄灯,5秒钟后再由黄灯变为红灯,同时本方向由红

8、灯变为绿灯。 该方向原为绿灯时,继续保持绿灯。当另一方向有车来时,作两个方向均有车处理。,9.2.2 总体方案设计,根据交通灯控制系统的功能,确定采用如下方案 : (1)在东西南北四个方向各装1个车辆传感器,有车用1表示,无车用0表示。主干道(A道)的东西分别为AX1和AX2,只要AX1或AX2中有一个为1,就说明A道有车,令AX=AX1+AX2。支干道(B道)的南北分别为BX1和BX2,只要BX1或BX2中有一个为1,就说明B道有车,令BX=BX1+BX2。,(2)设黄灯5秒时间到时T5=1,时间未到时T5=0;设绿灯25秒时间到时,T25=1,时间未到时T25=0。 (3)设主干道由绿灯转

9、为黄灯的条件为AK,当AK=0时绿灯继续,当AK=1时立即由绿灯转为黄灯。设支干道由绿灯转为黄灯的条件为BK,当BK=0时绿灯继续,当BK=1时立即由绿灯转为黄灯。AK、BK与T25、AX、BX有关。,(4)设主干道的东侧绿灯、黄灯、红灯分别为AG1、AY1、AR1,主干道的西侧绿灯、黄灯、红灯分别为AG2、AY2、AR2。AG1、AG2,AY1、AY2,AR1、AR2分别并联,即它们同时点亮或熄灭,分别用AG、AY、AR表示。设支干道的南侧绿灯、黄灯、红灯分别为BG1、BY1、BR1,支干道的北侧绿灯、黄灯、红灯分别为BG2、BY2、BR2。BG1、BG2,BY1、BY2,BR1、BR2分别

10、并联,即它们同时点亮或熄灭,分别用BG、BY、BR表示。用0表示灭、1表示亮,则两个方向的交通灯有四种输出状态,如表9-1所示。,表9-1 交通灯输出状态,图9-3车辆传感器及交通灯示意图,十字路口交通灯控制系统结构图,图9-4 十字路口交通灯控制系统结构图,9.2.3 基于逻辑部件的系统设计与实现,1数据子系统的设计与实现 交通灯控制系统的数据子系统只有25秒定时器和5秒定时器。假设基准时钟周期CP为1秒,则需要设计一个25进制计数器和一个5进制计数器,且每个计数器应具有计数器使能控制端和计时时间到信号输出端。在本例中计数器采用可异步清零、同步置位的4位十进制加法计数器74LS160构成,5

11、进制计数器的逻辑电路如图9-5所示,25进制计数器的逻辑电路如图9-6所示。,图9-5 5进制计数器的逻辑电路,图9-6 25进制计数器的逻辑电路,2. 控制子系统的设计与实现,根据前面的分析,可以得出交通灯控制系统的操作序列,其状态转换图如图9-7所示。,图9-7 控制系统的状态转换图,设控制子系统的初始状态为S0,此时主干道A道为绿灯,支干道B道为红灯。要想脱离该状态转入A道黄灯,B道红灯的S1状态,必须同时满足如下条件: B道有车(BX=1); A道无车(AX=0),或者25秒定时时间到(T25=1)。 也就是,AK=BX(AX+ T25) 同样,在S2状态,此时主干道A道为红灯,支干道

12、B道为绿灯。要想脱离该状态转入B道黄灯,A道红灯的S3状态,只需满足如下一种条件: B道无车(BX=0); A道有车(AX=1),且25秒定时时间到(T25=1)。 也就是,BK=BX+AXT25,表9-2 交通灯控制器状态转换表,十字路口交通灯控制子系统逻辑电路,图9-8 十字路口交通灯控制子系统逻辑电路,3. 系统硬件电路集成与功能测试,将控制子系统模块电路和2个定时器模块电路进行连接,得到实现交通灯控制的逻辑电路。该电路有二个数据信号输入AX、BX,一个时钟信号输入CP,一个复位信号RESET(低电平有效),六个输出信号AR、AY、AG、BR、BY、BG。最后,验证系统设计的正确性。,9

13、.2.4 基于VHDL的系统设计与实现,1. 基于FPGA的十字路口交通灯控制系统实现方法一 (1)顶层设计顶层设计采用自顶向下的设计方法,利用Quartus II的原理图输入法进行顶层设计的输入,系统顶层原理图如图9-9所示。,图9-9 十字路口交通灯控制系统的顶层设计原理图,(2)功能子模块设计,十字路口交通灯控制系统由计数器(在本例中定义为分频)模块和控制(在本例中定义为状态机)模块组成,整个系统采用模块化设计,在Altera公司的Quartus II软件平台下,使用VHDL语言对各个功能模块进行编程,然后在顶层文件中调用各个模块的元件(例如:fre.FSM),从而实现一个完整的十字路口

14、交通灯控制系统。,(1)分频模块fre的VHDL源程序(fre.vhd),说明:此模块用于产生1Hz的系统时钟频率。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY fre ISPORT(clk_in : IN STD_LOGIC; -晶振时钟源输入(50MHz)clk_out : OUT STD_LOGIC -1Hz频率输出); END fre;,ARCHITECTURE fre_architecture OF fre IS BEGINPROCESS(clk_in)VARIABLE count:INTEGER RANGE 0 TO 5000

15、0000; -计数器BEGINIF (count=50000000) THEN clk_out=1;count:=0;ELSIF (clk_inEVENT AND clk_in=1) THENcount:=count+1;clk_out=0;END IF;END PROCESS; END fre_architecture;,(2)控制器FSM的VHDL源程序,说明:此模块为交通灯的控制器,负责交通灯的时序控制。 -命名规则:(A道)(B道),即AG表示A道为绿灯,BR表示B道为红灯. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FSM I

16、SPORT(AX : IN STD_LOGIC; -主干道(A道)车辆传感器,指示A道有无车辆BX : IN STD_LOGIC; -支干道(B道)车辆传感器,指示B道有无车辆RESET : IN STD_LOGIC; -系统复位CLK : IN STD_LOGIC; -系统时钟频率信号AG : OUT STD_LOGIC; -A道绿灯AY : OUT STD_LOGIC; -A道黄灯 AR : OUT STD_LOGIC; -A道红灯BG : OUT STD_LOGIC; -B道绿灯BY : OUT STD_LOGIC; -B道黄灯BR : OUT STD_LOGIC; -B道红灯FRE_O

17、UT:OUT STD_LOGIC -系统时钟输出,用于调试); END FSM;,ARCHITECTURE FSM_architecture OF FSM ISCONSTANT timeMAX : INTEGER := 30; -交通灯变换间隔最大时间CONSTANT timeGR : INTEGER := 25; -A道绿灯、B道红灯的时间CONSTANT timeYR : INTEGER := 5; -A道黄灯、B道红灯的时间CONSTANT timeRG : INTEGER := 25; -A道红灯、B道绿灯的时间CONSTANT timeRY : INTEGER := 5; -A道红灯

18、、B道黄灯的时间TYPE state IS (GR,YR,RG,RY); -交通灯状态组合SIGNAL pr_state,nx_state : state; SIGNAL time : INTEGER RANGE 0 TO timeMAX;SIGNAL FRE_OUT_TEMP:STD_LOGIC;,BEGINFRE_OUT=FRE_OUT_TEMP;PROCESS(AX,BX,CLK,RESET) -定时进程VARIABLE count : INTEGER RANGE 0 TO timeMAX; -计数器VARIABLE timeREADY : STD_LOGIC; -时间标志VARIABL

19、E AKorBKorT5: STD_LOGIC; -状态转换标志BEGINIF(RESET=0)THEN -复位pr_state=GR;count:=0; -初始状态ELSIF (CLKEVENT AND CLK=1)THENFRE_OUT_TEMP=NOT FRE_OUT_TEMP;count:=count+1;,IF(count=time)THEN timeREADY:=1;count:=0;ELSE timeREADY:=0;END IF;IF (pr_state=GR) THENAKorBKorT5:=BX AND (NOT AX OR timeREADY);ELSIF (pr_sta

20、te=YR) THENAKorBKorT5:=timeREADY;ELSIF (pr_state=RG) THENAKorBKorT5:=(NOT BX) OR (AX AND timeREADY);ELSIF (pr_state=RY) THENAKorBKorT5:=timeREADY;END IF;,IF(AK or BK or T5=1)THEN pr_state=nx_state;count:=0;END IF;END IF;END PROCESS;,PROCESS(pr_state) -状态转换进程 BEGINCASE pr_state ISWHEN GR =AG AG=0;AY=

21、1;AR=0;BG=0;BY=0;BR=1;nx_state=RG;time=timeYR;,WHEN RG =AGAG=0;AY=0;AR=1;BG=0;BY=1;BR=0;nx_state=GR;time=timeRY;END CASE; END PROCESS; END FSM_architecture;,(3) 仿真结果,图9-10 十字路口交通灯控制系统的仿真波形,2基于FPGA的十字路口交通灯控制系统实现方法二,用FPGA的另一种方法是,采用Quartus II提供的各种常用逻辑部件,通过原理图输入将9.2.3节中的图9-5、图9-6和图9-8输入,实现十字路口交通灯控制系统。输入

22、的原理图如图9-11所示。,图9-11 十字路口交通灯控制系统原理,9.3 8位模型计算机设计,9.3.1 模型计算机系统功能 计算机是最典型的数字系统,它能对输入的信息进行处理、运算。但是,计算机内部结构非常复杂,为了便于分析、设计,以计算机实际结构为基础,将其简化,构成了所谓的模型计算机。,1设计要求,本节要设计一个模型计算机,它由十个功能部件组成,具体是:存储器、时钟信号源、节拍发生器、操作控制器、程序计数器、地址寄存器、数据寄存器、累加器、算术逻辑单元、指令寄存器和指令译码器。,设计要求为,(1)总线结构:单总线,数据总线位数8位、地址总线3位; (2)存储器:存储容量5x8位; (3

23、)操作控制器:实现指令操作码所需的操作控制信号; (4)运算器:一个累加器,实现加法操作; (5)指令系统规模:3条指令。,2. 模型计算机逻辑框图,图9-12 模型计算机框图,3.指令系统,模型计算机可完成两个立即数相加,并将相加结果送入累加器。为了让计算机按照事先编制的程序运行,我们以6+7为例,设计了3条指令,并将其存入存储器,具体如下:LD A,6 ;A6 把6送入累加器A,操作码是00111110ADD A,7 ;AA+7 把A中6与7相加,结果送入累加器A,操作码是11000110HALT ;运算完毕,停机,操作码是01110110,9.3.2 基于逻辑部件的系统设计,根据模型计算

24、机框图,可以将模型计算机系统划分成一些逻辑功能部件,各个功能部件用地址总线和数据总线连接在一起,构成简易的模型计算机。,1. 存储器,计算机是按照事先编写的程序进行运算的,首先将编写好的程序写入存储器,计算机在运行过程中对存储器进行读写操作,这里选用27C64 EPROM做程序存储器,共3条指令,其中操作码3字节,立即数2字节,需要5个存储单元(每个存储单元是1字节),只需要3条地址线。,表9-3 存储器存储内容,图9-13 程序计数器、地址寄存器、存储器、数据寄存器的逻辑图,2. 程序计数器PC,程序计数器的作用是确定下一条指令的地址。在模型计算机中,选用74LS161(4位同步二进制计数器

25、)作为程序计数器。由于模型计算机只有5个字节的机器码,所以程序计数器PC的输出只使用3位,其连线如图9-13所示。当IPC=0时,计数器保持原状态;当IPC=1时,计数器处于计数状态,当时钟信号CLK上升沿到来时,做加1运算。,3. 地址寄存器MAR,地址寄存器MAR用来保存当前CPU所访问的主存储器单元的地址,由于主存储器与CPU之间存在操作速度上的差别,所以必须使用地址寄存器来保存地址信息,直到主存储器的读/写操作完成为止。在模型计算机中,因为存储器只使用了5个存储单元,所以可用3个D触发器实现其功能,图9-13中选用74LS378(6位D触发器)芯片,但只使用了其中的3位D触发器。当IM

26、AR=0时,且时钟信号CLK上升沿将地址存入,并直接输出到存储器EPROM的地址线上。,4. 数据寄存器DR,数据寄存器是用来暂时存放由主存储器读出的一条指令或一个数据字。由于模型计算机是8位,所以图9-13中选用74LS373作数据寄存器,它是8位D触发器,并有三态输出功能,可以直接与总线相连。当IDR=1时,且时钟信号CLK上升沿到来时,将被选中的存储单元中的数据存入DR。当EDR=1时,DR输出呈高阻态;当EDR=0时,DR将所存数据送到数据总线。,5. 累加器A,累加器A是一个通用寄存器,当运算器的算术逻辑部件ALU执行算术或逻辑运算时,为ALU提供一个工作区。由于模型计算机是8位,所

27、以图9-14中选用74LS377作累加器,它是8位D触发器。当IA=0时,且时钟信号CLK上升沿将总线上的8位数据存入。,6. 算术逻辑单元ALU,算术逻辑单元ALU是数据加工处理部件,用来实现基本的算术、逻辑运算功能。由于模型计算机只要求完成加法运算,所以ALU由2片74LS83、1片74LS377和1片74LS244组成,如图9-14所示。一个操作数由累加器A提供,另一个操作数来自内部数据总线。当ISUM=0时,在CLK作用下将两数相加结果存入74LS377,当输出控制命令ESUM=0时,相加结果通过三态门74LS244读入内部数据总线。,图9-14 累加器A和ALU逻辑图,7. 指令寄存

28、器IR和指令译码器,指令寄存器IR用来保存当前正在执行的一条指令。当执行一条指令时,先把它从主存储器中取到数据寄存器中,然后在传送到指令寄存器。如果IR中存储的是操作码就送入指令译码器,译码器将操作码译成相应的操作指令。图9-15是实现指令寄存和译码功能的逻辑图。当IIR=0时,且时钟信号CLK上升沿到来时,将指令操作码存入IR,并经门电路译码,输出LD、ADD、HALT三个操作命令。例如,当指令操作码为00111110时,译码器输出为LD=1,ADD=0,HALT=0。,图9-15 指令寄存器IR和指令译码器,8. 节拍发生器,节拍发生器用于产生T0T7八个节拍脉冲信号,以便控制计算机按固定

29、节拍有序地工作。节拍发生器逻辑图如图9-16(a)所示,它是一个环形移位寄存器,产生的波形如图9-16(b)所示。构成节拍发生器的关键在于环形移位寄存器的初始状态要置成10000000,为此模型计算机的节拍发生器由1片74LS273(八D触发器)和1片具有置1端的74LS74(双D触发器)构成。在CLR=0信号作用下,使74LS74初始产生一个1。,图9-16(a) 节拍发生器逻辑图,图9-16(b) 节拍发生器 脉冲波形图,9. 时钟信号源,时钟信号源用于产生固定频率的方波脉冲。模型计算机中的时钟信号源是由555定时器组成的多谐振荡器。为了使方波的占空比等于1/2,应选占空比可调的多谐振荡器

30、,电路如图9-17所示,电容充电时D1导通,电容放电时D2导通。时钟信号周期为: T=0.7(R1+R2)C2=0.7661031010-60.5s,图9-17 时钟信号源原理图,10. 操作控制器,操作控制器是根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。在模型计算机中,操作控制器的任务是按照时间节拍T0T7,并根据指令译码器输出的各个指令的不同操作要求,向各个功能部件发出一系列有序的控制命令。,模型计算机中控制信号共有9个,具体是: 程序计数器PC的计数控制信号IPC; 地址寄存器MAR的寄存命令信号IMAR; 数据寄存器DR的寄存

31、命令信号IDR; 数据寄存器DR的输出控制信号EDR; 累加器A的输入命令信号IA; 累加器A的输出控制信号EA; ALU的加法运算控制信号ISUM; ALU的输出控制信号ESUM; 指令寄存器IR的寄存命令信号IIR;,操作控制器是由GAL16V8实现的,引脚信号连接如图9-18所示。各控制命令与节拍脉冲信号、指令操作命令之间的关系是: IMAR=(T0+T3LD+T3ADD) (9-1) IIR=T2 (9-2) IA=(T6LD+T6ADD) (9-3) IDR=T1+T4LD+T4ADD (9-4) IPC=T2+T5LD+T5ADD (9-5) ISUM=(T5ADD) (9-6)

32、ESUM=(T6ADD) (9-7) EA=(T7ADD) (9-8) EDR=T6ADD+T7ADD (9-9),图9-18 操作控制器的引脚配置图,9.3.3 基于逻辑部件的模型计算机实现,在GAL16V8和EPROM编程后,将各个功能部件连接起来,就得到了8位模型计算机。现在以6+7运算来说明模型计算机是如何工作的。,(1)上电复位(CLR=0)后,程序计数器PC清零,即PC的状态是000;节拍发生器产生T0节拍,即T0=1;在T0节拍内,IMAR=0(见式9-1),将PC内容送入地址寄存器MAR,使存储器的地址线为000,由存储器EPROM读出指令操作码00111110,并送入DR的输

33、入端。第一个CLK的下降沿到达时,T0节拍结束,开始T1节拍。 (2)在T1=1节拍期间,IDR=1(见式9-4),在第二个CLK上升沿到来时,将指令操作码00111110送入DR,并直接送到内部数据总线上。第二个CLK的下降沿到达时,T1节拍结束,开始T2节拍。,(3)在T2=1节拍期间,IIR=0(见式9-2),IPC=1(见式9-5)。当IPC=1时,且在第三个CLK上升沿到来时,PC执行PC+1操作,即PC内容由000变成001。由于IIR=0,第三个CLK的上升沿到来时,内部数据总线上的操作码存入指令寄存器IR,并进行译码,译码输出为LD=1,表明下一步应取操作数。在第三个CLK的下

34、降沿到达时,T2节拍结束,开始T3节拍。 (4)在T3=1节拍期间,因为LD=1,所以IMAR=0(见式9-1),在第四个CLK上升沿到来时,MAR将PC的001存入,存储器的地址线为001。由存储器EPROM读出操作数00000110,该数在外部数据总线上。在第四个CLK的下降沿到达时,T3节拍结束,开始T4节拍。,(5)在T4=1节拍期间,IDR=1(见式9-4),在第五个CLK上升沿到来时,外部数据总线上的操作数送入DR,并送入内部数据总线。在第五个CLK的下降沿到达时,T4节拍结束,开始T5节拍。 (6)在T5=1节拍期间,IPC=1(见式9-5),在第六个CLK上升沿到来时,PC执行

35、PC+1操作,即PC内容由001变成010。在第六个CLK的下降沿到达时,T5节拍结束,开始T6节拍。,(7)在T6=1节拍期间,IA=0(见式9-3),在第七个CLK上升沿到来时,内部数据总线上的操作数00000110送入累加器A。在第七个CLK的下降沿到达时,T6节拍结束,开始T7节拍。 (8)在T7=1节拍期间,各个逻辑功能部件保持原状态,第一条指令LD A,6执行完毕。在第八个CLK的下降沿到达时,T7节拍结束,开始第二条指令的T0节拍。 (9)在第二条指令的T0T2节拍期间,PC的内容为010,取出EPROM中第二条指令的操作码11000110,经译码后为ADD=1,即执行加操作。在

36、T2期间PC执行PC+1操作,PC内容为011。此取指过程与(1)(3)相同。,(10)在T3=1节拍期间,IMAR=0(见式9-1),在CLK上升沿到来时,MAR将PC的011存入,存储器的地址线为011。由存储器EPROM读出操作数00000111,该数在外部数据总线上。 (11)在T4=1节拍期间,IDR=1(见式9-4),在CLK上升沿到来时,外部数据总线上的操作数00000111送入DR,并送入内部数据总线。加法器ALU(2片74LS83)完成两个操作数的加法运算,相加结果在SR寄存器的输入端。 (12)在T5=1节拍期间,IPC=1(见式9-5),在CLK上升沿到来时,PC执行PC

37、+1操作,即PC内容由011变成100。ISUM=0(见式9-6),在CLK上升沿到来时,将相加结果送入SR寄存器。,(13)在T6=1节拍期间,IA=0(见式9-3),ESUM=0(见式9-7),EDR=1(见式9-9)。由于EDR=1,数据寄存器DR的输出呈高阻态,于是将其与内部数据总线切断。由于ESUM=0,IA=0,则在CLK上升沿到来时,将SR寄存器的内容通过内部数据总线送入累加器A。 (14)在T7=1节拍期间,EA=0(见式9-8),EDR=1(见式9-9)。由于EDR=1,数据寄存器DR的输出呈高阻态,于是将其与内部数据总线切断。EA=0,将累加器的相加结果送到内部数据总线。第

38、二条指令ADD A,7执行完毕。 (15)在第三条指令的T0T2节拍期间,PC的内容为100,取出EPROM中第三条指令的操作码01110110,经译码后为HALT=1,于是就停机。,9.3.4 基于VHDL的系统设计与实现,图9-19 模型计算机设计流程,1.顶层系统设计,图9-20 模型计算机顶层设计原理图,2.设计指令执行流程,根据模型计算机的结构框图(图9-12),可设计指令系统中每条指令的执行流程。一条指令从主存中取出到执行完,需要若干个机器周期,任何指令的第一个机器周期都是“取指令周期”,一条指令一共需要几个机器周期,取决于指令在机内实现的复杂程度。,第一条指令 LD A,6;将立

39、即数6送入A。 T0: (PC)- MAR-ABUS, IMAR=0 T1: DBUS-DR, IDR=1 T2: (PC)+1-PC, IPC=1(DR)-IR, IIR=0, LD=1 T3: (PC)- MAR-ABUS, IMAR=0 T4: DBUS-DR, IDR=1 T5: (PC)+1-PC, IPC=1 T6: dbus-A, IA=0 T7: 空,第二条指令 ADD A,7;把A中6与立即数7相加,结果13送入累加器A。 T0: (PC)- MAR-ABUS, IMAR=0 T1: DBUS-DR, IDR=1 T2: (PC)+1-PC, IPC=1(DR)-IR, II

40、R=0, ADD=1 T3: (PC)- MAR-ABUS, IMAR=0 T4: DBUS-DR, IDR=1 T5: (PC)+1-PC, IPC=1A+7-SR, ISUM=0 T6: SR-dbus, ESUM=0dbus-A, IA=0, EDR=1 T7: A- dbus, EA=0,第三条指令HALT;运算完毕,停机。 T0: (PC)- MAR-ABUS, IMAR=0 T1: DBUS-DR, IDR=1 T2: (PC)+1-PC, IPC=1(DR)-IR, IIR=0, HALT =1,3.确定微操作控制信号,根据指令执行流程的分析,本模型计算机需要9个微操作控制信号,

41、具体是:IPC、IMAR、IDR、EDR、IA、EA、ISUM、ESUM、IIR。,4. VHDL源程序设计,ALU模块的VHDL源程序 说明:此模块用于实现加法运算。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ALU IS PORT(AC, DR: IN STD_LOGIC_VECTOR(7 DOWNTO 0); -累加器AC,数据寄存器DRISUM: STD_LOGIC; - ALU的加法运算控制信号ISUM

42、ESUM: STD_LOGIC; - ALU的输出控制信号ESUMALU_OUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -运算结果); END ALU;,ARCHITECTURE A OF ALU IS SIGNAL ALU_TEMP: STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINALU_TEMP=AC+DR WHEN ISUM=0;ALU_OUT=ALU_TEMP; END A;,累加器模块的VHDL源程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY ACC IS PORT(DAT

43、A_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -数据输入IA:IN STD_LOGIC; -累加器A的输入命令信号IAEA:IN STD_LOGIC; -累加器A的输出控制信号EACLK:IN STD_LOGIC; -时钟频率输入DATA_OUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) -累加器数据输出); END ACC;,ARCHITECTURE A OF ACC IS SIGNAL REGQ : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINPROCESS(CLK,IA,EA)BEGINIF(CLKEVENT

44、 AND CLK=1) THENIF(IA=0) THENREGQ=DATA_IN;END IF;END IF;END PROCESS; DATA_OUT=REGQ WHEN EA=0 ELSE “ZZZZZZZZ”; END A;,控制器模块的VHDL源程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CTRL ISPORT(LD,ADD,HALT:IN STD_LOGIC; -来自指令译码器的三条指令CLK:I

45、N STD_LOGIC; -系统时钟频率T0,T1,T2,T3,T4,T5,T6,T7:IN STD_LOGIC; -节拍脉冲IPC,IMAR,IDR,EDR,IA,EA,ISUM,ESUM,IIR:OUT STD_LOGIC-控制信号输出); END ENTITY;,ARCHITECTURE A OF CTRL IS BEGINPROCESS(LD,ADD,HALT)BEGINIF(HALT=1)THENIPC=0;ESUM=0;ELSE IMAR=NOT(T0 OR (T3 AND LD) OR (T3 AND ADD);IIR=NOT T2;IA=NOT(T6 AND LD) OR (T

46、6 AND ADD);,IDR=T1 OR (T4 AND LD) OR (T4 AND ADD);IPC=T2 OR (T5 AND LD) OR (T5 AND ADD);ISUM=NOT(T5 AND ADD);ESUM=NOT(T6 AND ADD);EA=NOT(T7 AND ADD);EDR=(T6 AND ADD) OR (T7 AND ADD); END IF;END PROCESS; END A;,节拍发生器的VHDL源程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE

47、 IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER IS PORT(CLK,CLR:IN STD_LOGIC; -系统时钟频率和清零控制T0,T1,T2,T3,T4,T5,T6,T7:OUT STD_LOGIC -节拍脉冲输出); END COUNTER;,ARCHITECTURE A OF COUNTER IS SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGINT0=TEMP(0);T1=TEMP(1);T2=TEMP(2);T3=TEMP(3);T4=TEMP(4);T5=TEMP(5);T6=TEMP(6)

48、;T7=TEMP(7);,PROCESS(CLK,CLR)BEGINIF(CLR=0) THENTEMP(0)=1;TEMP(1)=0;TEMP(2)=0;TEMP(3)=0;TEMP(4)=0;TEMP(5)=0;TEMP(6)=0;TEMP(7)=0;,ELSIF(CLKEVENT AND CLK=1) THENTEMP(0)=TEMP(7);TEMP(1)=TEMP(0);TEMP(2)=TEMP(1);TEMP(3)=TEMP(2);TEMP(4)=TEMP(3);TEMP(5)=TEMP(4);TEMP(6)=TEMP(5);TEMP(7)=TEMP(6);END IF;END PROCESS; END A;,指令寄存器模块IR和指令译码器的VHDL源程序,LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY IR IS PORT(DATA_IN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -数据输入 IIR:IN STD_LOGIC; -指令寄存器IR的寄存命令信号 CLK:IN STD_LOGIC; -系统时钟频率 LD,ADD,HALT: OUT STD_LOGIC -译码输出的三条指令信号); END IR;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报