0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你们会设计CPU取指执行电路吗?

FPGA之家 来源:数字积木 作者:数字积木 2021-07-27 16:55 次阅读

【前言】

最近手上写了一个练手的小项目,项目的大致要求是实现一个取指,执行电路。取指的指令预存在,从ROM中读取指令后,根据预定的解码规则,对指令进行解码,并执行相对应的操作。发出来和大家共同分享。

该工程的设计要求如下:

ram模块中,储存有初始化的指令数据。我们要设计一个取指电路,并能根据不同的指令执行不同的操作。指令数据为16bit.

指令编码定义如下:

如果指令代码为0,则下一个状态为空闲。如果指令的低位8位为0,高位8位非0,则读取指定高位8位的存储器,并将其写入obuf0。如果指令的低8位非0,且高8位也不是0,则将下8位作为数据,写入地址为上8位的存储器中。

List4显示了指令获取电路。它实例化了五个模块:PC0(程序计数器、8位计数器)、Ir0(指令寄存器、16位计数器)、OBUF0(输出缓冲器、16位计数器)、STATE0(状态机)和RAM0(存储器,8位256字块RAM)。模块pc0用于指定要读取的地址,以便从ram0获取(提取)指令代码。指令代码存储在IR0中。

此指令获取操作在两种状态下执行:fetcha和fetchb。fetcha用于取地址操作,该地址作为读取ram中指令的地址,fetchb用于指令寄存操作,将指令寄存到指令寄存器中。

在execa和execb状态下,执行表1中的操作。如果存储在IR0中的指令代码为0,则下一个状态为空闲。如果指令的低位8位为0,高位8位非0,则读取指定高位8位的存储器,并将其写入obuf0。如果指令的下8位非0,则将下8位写入地址为上8位的存储器。

指令解码列在table1中

顶层代码如图所示:

下面是该工程的测试模块:

1796e308-eb92-11eb-a97a-12bb97331649.jpg

下面的ram模块的代码:

17b49bb4-eb92-11eb-a97a-12bb97331649.jpg

状态控制模块的代码:

17c181d0-eb92-11eb-a97a-12bb97331649.png

计数器模块的代码:

17d38f1a-eb92-11eb-a97a-12bb97331649.png

设计说明

该工程有以下模块组成:

PC0(程序计数器、8位计数器)、

Ir0(指令寄存器、16位计数器)、

OBUF0(输出缓冲器、16位计数器)、

STATE0(状态机)、

RAM0(存储器,8位256字块RAM)。

其中,PC0,IR0,OBUF0是例化计数器模块得到的,该计数器模块拥有计数和寄存数据两个功能,分别由端口 inc 和 端口 load 控制。

当 inc有效时,在下一个时钟,会将计数器内部的计数器自增1,并在q端输出。

当load信号有效时,在下一个时钟会将D端 的数据寄存到该计数器的寄存器中,并在Q端输出。

PC0利用的是计数器的计数功能,用于产生取指令的地址信息

IR0利用的是计数器的寄存功能,用于将ram中取出的指令暂时寄存。

OBUF0利用的是计数器的寄存功能,用于将输出中暂时寄存。

在状态机控制模块中,设置了以下五个状态:

IDLE:空闲态。

FETCHA:取地址状态。同时将程序计数器的内部计数值加一。

FETCHB:取指令,指令寄存状态。将从ram中读出的指令写入到指令寄存器模块中。

EXECA:指令解码模块,判断指令的停止,读,写控制信号。如果为写信号,将指令的低8位作为数据写到高8位对应的地址中。如果为读指令,跳转到EXECB状态,将指令的低8位输出。如果停止信号为真3,跳转到空闲状态。

EXECB:执行状态。用于将指令的低8位输出。

在ram模块中,储存有初始化的指令数据。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10855

    浏览量

    211601

原文标题:简单的CPU取指执行电路设计

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux之CPU调度策略和CPU亲和性

    一、调度策略 调度进程 单个 CPU一次只能执行一个进程,虽然 Linux 系统通过使用多任务同时处理多个进程,但当多个进程同时运行在一个CPU 上时,它通过交错执行这些进程。 内核使
    的头像 发表于 12-05 16:38 389次阅读
    Linux之<b class='flag-5'>CPU</b>调度策略和<b class='flag-5'>CPU</b>亲和性

    功率放大电路的转换效率是什么

    功率放大电路的转换效率是 功率放大电路的最大输出功率与电源所提供的功率之比 。这一标用于评估功率放大电路在将电源提供的功率转换为输出功率
    的头像 发表于 10-09 15:50 723次阅读

    为什么外设要通过接口与CPU相连

    外设与CPU之间的连接是计算机系统中一个非常关键的部分。外设(Peripherals)是除了CPU、内存和硬盘之外的所有设备,如键盘、鼠标、打印机、显示器等。这些设备需要与CPU进行
    的头像 发表于 09-30 14:10 833次阅读

    双核cpu和单核cpu的区别

    理器核心连接起来,从而提高计算能力。这种设计使得处理器能够同时执行多个任务,提高计算效率和性能。 单核CPU :只有一个处理器核心,所有的计算任务都由这一个核心来完成。单核CPU在处理多任务时可能
    的头像 发表于 09-24 16:17 2776次阅读

    如何用LM324做PI电路

    我想用你们的公司的LM324运放设计一个PI调节电路,如下图,但是我不知道 电路 中电阻,电容这些元器件具体怎样取值,我只知道理论公式,不知道你们的实际使用时,元器件值是怎样
    发表于 09-03 07:24

    Imagination CPU 系列研讨 | RISC-V 平台的性能分析和调试

    为了让开发者及工程师深入了解Imagination的CPU产品及相关解决方案,Imagination将陆续推出5期线上研讨,包含:RISC-V平台的性能分析和调试;RISC-V安全和全球平台可信
    的头像 发表于 08-10 08:28 288次阅读
    Imagination <b class='flag-5'>CPU</b> 系列研讨<b class='flag-5'>会</b> | RISC-V 平台的性能分析和调试

    简述cpu控制器的工作原理

    : 指令获取 CPU控制器首先需要从内存中获取指令。这个过程称为阶段。在这个阶段,CPU控制器通过程序计数器(PC)来确定下一条指令的地址,并将其从内存中读取出来。程序计数器是一个
    的头像 发表于 06-30 11:04 1357次阅读

    cpu控制器的两种类型和特点

    类型:单核处理器和多核处理器,以及它们的特点和应用。 一、单核处理器 单核处理器的定义 单核处理器是只有一个处理器核心的CPU。在单核处理器中,所有的计算任务都由一个核心来完成,这使得单核处理器在处理多任务时可能遇到性能瓶颈
    的头像 发表于 06-30 10:59 1278次阅读

    CPU中断程序:从硬件看什么是中断?

    CPU响应中断转去执行中断服务程序前,需要把被中断程序的现场信息保存起来,以便执行完中断服务程序后,接着从被中断程序的断点处继续往下执行
    发表于 03-26 11:36 3711次阅读
    <b class='flag-5'>CPU</b>中断程序:从硬件看什么是中断?

    放大电路的带负载能力是什么

    放大电路的带负载能力是电路在输出信号时,能够驱动或承载的负载的大小。放大电路通常用于放大电压或电流信号,将小信号放大成为更大的信号。负载是
    的头像 发表于 03-09 13:59 2684次阅读

    verilog中for循环是串行执行还是并行执行

    在Verilog中,for循环是并行执行的。Verilog是一种硬件描述语言,用于描述和设计数字电路和系统。在硬件系统中,各个电路模块是同时运行的,并且可以并行执行多个操作。因此,在V
    的头像 发表于 02-22 16:06 2909次阅读

    CPU芯片电路板的维修方法

    判断CPU基准时钟电路是否正常的方法。用示波器检查时钟引脚(晶振引脚)的时序波形,如果所检测的时序波形不正常,说明故障在CPU的基准时钟电路
    的头像 发表于 02-03 11:42 1882次阅读

    什么是外电路和内电路电路和内电路区别是什么?

    ,我们来详细解释什么是外电路。外电路电路的输入和输出端之间的电连接。在电路设计中,外电路
    的头像 发表于 01-30 15:31 3709次阅读

    处理器和cpu是一个东西吗 cpu和主板的区别

    处理器和CPU是一个东西,CPU中央处理器(Central Processing Unit)的简称,是计算机的核心部件,负责执行各种计算任务。
    的头像 发表于 01-19 09:52 2w次阅读

    一文了解CPU高速缓存

    CPU的核心功能包括数据运算和指令控制。CPU运算的数据和执行的指令全部存储在CPU的寄存器中,这些数据和指令又都来自于CPU高速缓存。
    的头像 发表于 01-02 16:01 1559次阅读
    一文了解<b class='flag-5'>CPU</b>高速缓存