分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
基于状态机的简易RISC CPU设计
目录
一、什么是CPU?
二、RISC CPU结构
1.时钟发生器2.指令寄存器3.累加器4.RISC CPU算术逻辑运算单元5.数据控制器6.状态控制器7.程序计数器8.地址多路器9.外围模块10.地址译码器
a.RAMb.ROM
三、RISC CPU中各部件的相互连接关系
四、RISC CPU和它的外围电路
五、RISC CPU的寻址方式和指令系统
六、RISC CPU的操作和时序
正文
一、什么是CPU?
CPU 即中央处理单元的英文缩写,它是计算机的核心部件。计算机进行信息处理可分为两个步骤:- 将数据和程序(即指令序列)输入到计算机的存储器中。
- 从第一条指令的地址起开始执行该程序,得到所需结果,结束运行。CPU的作用是协调并控制计算机的各个部件执行程序的指令序列,使其有条不紊地进行。因此它必须具有以下基本功能:
-
- a)取指令:当程序已在存储器中时,首先根据程序入口地址取出一条程序,为此要发出指令地址及控制信号。
- b)分析指令:即指令译码。是对当前取得的指令进行分析,指出它要求什么操作,并产生相应的操作控制命令。
- c)执行指令:根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器,存储器及输入/输出设备的执行,实现每条指令的功能,其中包括对运算结果的处理以及下条指令地址的形成。
将其功能进一步细化,可概括如下:
- 能对指令进行译码并执行规定的动作;
- 可以进行算术和逻辑运算;
- 能与存储器,外设交换数据;
- 提供整个系统所需要的控制;
尽管各种CPU的性能指标和结构细节各不相同,但它们所能完成的基本功能相同。由功能分析,可知任何一种CPU内部结构至少应包含下面这些部件:
- 算术逻辑运算部件(ALU),
- 累加器,
- 程序计数器,
- 指令寄存器,译码器,
- 时序和控制部件。
RISC 即精简指令集计算机(Reduced Instruction Set Computer)的缩写。它是一种八十年代才出现的CPU,与一般的CPU 相比不仅只是简化了指令系统,而且是通过简化指令系统使计算机的结构更加简单合理,从而提高了运算速度。从实现的途径看,RISC_CPU与一般的CPU的不同处在于:它的时序控制信号形成部件是用硬布线逻辑实现的而不是采用微程序控制的方式。所谓硬布线逻辑也就是用触发器和逻辑门直接连线所构成的状态机和组合逻辑,故产生控制序列的速度比用微程序控制方式快得多,因为这样做省去了读取微指令的时间。RISC_CPU也包括上述这些部件,下面就详细介绍一个简化的用于教学目的的RISC_CPU的可综合VerilogHDL模型的设计和仿真过程。
二、RISC CPU结构
RISC_CPU是一个复杂的数字逻辑电路,但是它的基本部件的逻辑并不复杂。可把它分成八个基本部件:
- 时钟发生器
- 指令寄存器
- 累加器
- RISC CPU算术逻辑运算单元
- 数据控制器
- 状态控制器
- 程序计数器
- 地址多路器
1 时钟发生器
时钟发生器 clkgen 利用外来时钟信号clk 来生成一系列时钟信号clk1、fetch、alu_clk 送往CPU的其他部件。其中fetch是外来时钟 clk 的八分频信号。利用fetch的上升沿来触发CPU控制器开始执行一条指令,同时fetch信号还将控制地址多路器输出指令地址和数据地址。clk1信号用作指令寄存器、累加器、状态控制器的时钟信号。alu_clk 则用于触发算术逻辑运算单元。时钟发生器clkgen的波形见下图所示:
其VerilogHDL 程序见下面的模块:
module clk_gen (clk,reset,clk1,clk2,clk4,fetch,alu_clk);input clk,reset;output clk1,clk2,clk4,fetch,alu_clk;wire clk,reset;reg clk2,clk4,fetch,alu_clk;reg[7:0] state;parameter S1 = 8'b00000001, S2 = 8'b00000010, S3 = 8'b00000100, S4 = 8'b00001000, S5 = 8'b00010000, S6 = 8'b00100000, S7 = 8'b01000000, S8 = 8'b10000000, idle = 8'b00000000;assign clk1 = ~clk;always @(negedge clk) if(reset) begin clk2 <= 0; clk4 <= 1; fetch <= 0; alu_clk <= 0; state <= idle; end else begin case(state) S1: begin clk2 <= ~clk2; alu_clk <= ~alu_clk; state <= S2; end S2: begin clk2 <= ~clk2; clk4 <= ~clk4; alu_clk <= ~alu_clk; state <= S3; end S3: begin clk2 <= ~clk2; state <= S4; end S4: begin clk2 <= ~clk2; &

本文详细介绍了基于状态机的RISC CPU设计,包括CPU的基本功能、RISC结构、各组件如时钟发生器、累加器、算术逻辑运算单元等的工作原理,以及CPU的操作和时序。此外,还提到了RISC CPU的寻址方式和简单的指令系统。
最低0.47元/天 解锁文章
4944





