VP-508DFAN-03
VP-508DFAN-03
尽管各种CPU的性能指标和结构细节不同,但所要完成的基本功能相同,从整体上可分为八个基本的部件:时钟发生器、指令寄存器、累加器、RISCCPU算术逻辑运算单元、数据控制器、状态控制器、程序控制器、程序计数器、地址多路器。状态控制器负责控制每一个部件之间的相互操作关系,具体的结构和逻辑关系如图1所示。
时钟发生器利用外部时钟信号,经过分频生成一系列时钟信号给CPU中的各个部件使用。为了分频后信号的跳变性能,在设计中采用了同步状态机的方法。
指令寄存器在触发时钟clk1的正跳变触发下,将数据总线送来的指令存入寄存器中。数据总线分时复用传递数据和指令,由状态控制器的load_ir信号负责判别。load_ir信号通过使能信号ena口线输入到指令寄存器。复位后,指令寄存器被清为零。每条指令为两个字节16位,高3位是操作码,低13位是地址线。CPU的地址总线为是13位,位寻址空间为8K字节。本设计的数据总线是8位,每条指令取两次,每次由变量state控制。
累加器用于存放当前的运算结果,是双目运算中的一个数据来源。复位后,累加器的值为零。当累加器通过使能信号ena口线收到来自CPU状态控制器load_acc信号后,在clk1时钟正跳沿时就接收来自数据总线的数据。
算术逻辑运算单元根据输入的不同的操作码分别实现相应的加、与、异或、跳转等基本运算。
数据控制器其作用是控制累加器的数据输出,由于数据总线是各种操作传送数据的公共通道,分时复用,有时传输指令,有时要传送数据。其余时候,数据总线应呈高阻态,以允许其他部件使用。所以,任何部件向总线上输出数据时,都需要一个控制信号的,而此控制信号的启、停则由CPU状态控制器输出的各信号控制决定。控制信号datactl_ena决定何时输出累加器中的数据。
地址多路器用于输出的地址是PC(程序计数器)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址,后4个时钟周期用于对RAM或端口的读写,该地址由指令给出,地址的选择输出信号由时钟信号的8分频信号fecth提供。
程序计数器用于提供指令地址,以便读取指令,指令按地址顺序存放在存储器中,有两种途径可形成指令地址,一是顺序执行程序的情况,二是执行JMP指令后,获得新的指令地址。