RISC-CPU是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂,可把它分
成8个基本部件来考虑;
〈1)时钟发生器
(2)指令寄存器;
(3)累加器;
(4)算术逻辑运算单元;
(5)数据控制器;
(6)状态控制器;
(7)程序计数器;
(8)地址多路器。
各部件的互相连接关系如图 其中时钟发生器利用外来信号进行分频生成系列时钟
时钟发生器
时钟发生器CLKGEN利用外来时钟信号clk生成一系列时钟信号clk1,fetch,alu_clk,并送往CPU的其他部件。其中,fetch是控制信号,elk的8分频信号。当FETCH高电平时,使CLK能触发CPU控制器开始执行一条指令;同时FETCH信号还将控制地址多路器输出指令地址和数据地址。clk信号用作指令寄存器、累加器、状态控制器的时钟信号。ALU_ENA则用于控制箅术逻辑运算单元的操作。图17.2为时钟clkgen的波形如图所示 时钟发生器的设计中采用了同步状态机的设计方法,使clk_gen可以被综合。
指令寄存器 指令寄存器的触发时钟是clk,在clk的正沿触发下,寄存器将数据总线送来的指令存入高8位或低8位寄存器中。但并不是每个clk的上升沿都寄数据总线的数据,因为数据总线上有时传输指令,有时传输数据。什么时候寄存,什么时候不寄存由CPU状态控制器的load_ir信号控制。load_ir信号通过ena口输到指令寄存器,复位后,指令寄存器被清为零。 每条指令为两个字节,即16位。高3位是操作码,低13位是地址〈CPU的地址总线为13位,寻址空间为8K字节)。本设计的数据总线为8位,所以每条指令需取两次“先取高8位,后取低8位。而当前取的是高8位还是低8位·由变state记录。为0表示取的是8位,存入高8位寄存器,同时将变量state置为1.下次再寄存时,由于state为1,可知取的是低8位,存入低8位寄有器中。
累加器 ACCUM
累加器用于存放当前的结果,它也是双目运算中的一个数据来源(见图17,5).复位后,累加器的值是零·当累加器通过ena口收到来自CPU状态控制器load_acc信号时,在clkl时钟正跳沿时就收到来自数总线的数据。
算术运算器ALU
地址多路器ADR
程序计数器PC
状态机控制器
外围:ROM\RAM\地址译码器
cpu的操作和时序
CPU的寻址方式和指令系统
模块的综合