【FPGA】设计一个简单CPU

您所在的位置:网站首页 cpu内部结构图简单 【FPGA】设计一个简单CPU

【FPGA】设计一个简单CPU

2024-07-09 10:57| 来源: 网络整理| 查看: 265

目录

设计成果

CPU的简单介绍

CPU设计思路

Verlog实现

仿真验证

小结

设计成果

先展示一下成果,目前的CPU设计较为简单,后续会加以优化。连接有指令存储器和数据存储器的CPU综合电路图如图1.1

图1.1(CPU综合电路图)

CPU的简单介绍

  要设计一款简单的CPU,首先,我们要了解一个CPU的结构组成和工作方式。CPU作为中央处理器,其核心功能可以概括为接收由内存传来的指令,并按照指令对内存的数据进行处理。为实现以上功能,CPU具有相对应的结构,其整体结构可以简化为图2.1所示。

图2.1(CPU简化结构)

CPU结构组成

从上图中我们可以看到一个简易的CPU应该具有四个基本的逻辑单元,分别是程序计数器(PC)、指令寄存器(IR)、累加寄存器(AC)、运算逻辑单元(ALU),接下来我们简单了解一下它们的功能。

程序计数器

       程序计数器(PC)主要用于存放指令的地址。为了保证程序可以有条不紊的进行,CPU必须具有某些手段来确定下一条指令的地址。PC便是用来完成这一项工作的,在程序执行的过程中,PC会根据进程自增或按要求转移以确定下一条需要执行的指令的地址,并将该地址输出,指令存储器将根据该地址输出指令。

指令寄存器

       指令寄存器(IR)主要用于存放和解析当前需要执行的指令。当要执行一条指令时,指令寄存器会接收由指令存储器输出的指令,然后将传来的指令进行拆分和解析,并根据拆分和解析结果决定接下来要执行的操作,并将这些操作命令输出给下级。

累加寄存器

       累加寄存器(AC)的主要作用是存储当前需要处理的数据。当我们要从数据存储器中取出数据时,需要一个容器来暂时存储该数据,在执行运算时也需要一个容器来存储运算结果,累加寄存器便是以上过程中的关键容器,可见一个CPU至少应含有一个累加寄存器。

运算逻辑单元

       运算逻辑单元(ALU)主要用于执行由指令寄存器给出的运算命令。在接受到指令寄存器给出的命令后,运算逻辑单元会根据命令的内容执行相应的操作,并将运算结果输出给累加寄存器。

CPU的工作过程

       CPU的工作过程可以总结为取指、译码、执行三个过程。其中取指过程便是根据程序计数器给出指令地址取出指令并传输给指令寄存器;译码过程为指令寄存器对取到的指令进行解析,并将解析结果输出;执行过程为对指令寄存器输出命令进行执行的过程,该过程会根据命令决定启动ALU还是直接进行数据存储器的读写,抑或是执行指令跳步(即令程序计数器跳到给出的指令地址)。以上即为CPU的的简化工作过程。

CPU设计思路

      完成一个CPU设计,我们要进行两步,即指令设计和运行过程设计。

指令设计

      根据以上我们对CPU的解析,我们可以看到指令在整个CPU的运行过程中发挥着重要的作用。所以一个可行的指令系统将是CPU能否正常运行的关键。

      现今的计算机指令一般为图3.1的形式出现

图3.1(指令的基本结构)

      其中地址码很好理解,即数据的地址或指令的地址,该地址将指向内存中一块特定的空间。操作码为一段记录了我们将要执行的操作内容的二进制码,操作码为指令中最关键的部分,指令寄存器需要做到对操作码的精准翻译,所以操作码的设计极为关键。在操作码的设计过程中,我们可以参考MIPS指令集。

      在整体的设计中我们规定操作码为八位二进制码,另外为简化CPU的运行等,我们将地址码设计为八位二进制码,这样一条指令即一个十六位二级制码,其中前八位为操作码,后八位为地址码。操作码的设计过程中,我们首先要确定我们设计的简易CPU应该具有的功能。既然为简易CPU,其应具有CPU的基础功能,那么对内存中数据的读写功能就不可或缺,其次呢,我们还需要数据的基本逻辑运算功能,即加减、与或非等。

      那么我们可以设计出如表3.1的操作码。

序号指令操作码功能1NOP00_0000_00空操作2MOVAC01_0000_00R


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3