简单的MCU与FPGA通过APB总线实现通讯(fpga mcu APB):乘法器为例

ops/2024/11/19 11:01:28/

测试平台:

GW1N4器件内置 M1内核;并且可以设置 APB总线与fpga 逻辑进行交互;

框图:

+---------------------+
|                     |
|   M1 Microprocessor |  <-----------------+
|                     |                    |
|   +-----------------+--------------------+
|   |                                             |
|   |  APB Bus                                  |
|   |  (PCLK, PRESETn, PSEL, PENABLE, PWRITE,   |
|   |   PADDR, PWDATA, PRDATA, PREADY, PSLVERR) |
|   +-----------------+--------------------+
|                     |                    |
+---------------------+                    ||v
+---------------------+---------------------+
|                                          |
|   FPGA Multiplier Module                 |
|   +-------------------------------------+
|   |                                     |
|   |  +-----------------+                |
|   |  |  Multiplier     |                |
|   |  +-----------------+                |
|   |  |  8-bit register |                |
|   |  +-----------------+                |
|   |                                     |
|   |  +-----------------+                |
|   |  |  Multiplicand  |                |
|   |  +-----------------+                |
|   |  |  8-bit register |                |
|   |  +-----------------+                |
|   |                                     |
|   |  +-----------------+                |
|   |  |  Command       |                |
|   |  +-----------------+                |
|   |  |  2-bit register |                |
|   |  +-----------------+                |
|   |                                     |
|   |  +-----------------+                |
|   |  |  Result        |                |
|   |  +-----------------+                |
|   |  |  16-bit register|                |
|   |  +-----------------+                |
|   |                                     |
|   +-------------------------------------+
|                                          |
+---------------------+---------------------+

说明

    M1 微处理器


        APB Bus:M1 微处理器通过 APB 总线与 FPGA 乘法器模块进行通信。APB 总线包括以下信号:
            PCLK:总线时钟信号。
            PRESETn:复位信号,低电平有效。
            PSEL:选择信号,表示当前传输的目标是从设备。
            PENABLE:使能信号,表示传输的第二个时钟周期(即数据传输周期)。
            PWRITE:读/写控制信号,高电平表示写操作,低电平表示读操作。
            PADDR:地址总线,表示当前传输的目标地址。
            PWDATA:写数据总线,用于写操作的数据传输。
            PRDATA:读数据总线,用于读操作的数据传输。
            PREADY:准备就绪信号,表示从设备已经准备好响应当前传输。
            PSLVERR:错误信号,表示传输过程中发生错误。

    FPGA 乘法器模块


        Multiplier:8 位寄存器,用于存储乘数。
        Multiplicand:8 位寄存器,用于存储被乘数。
        Command:2 位寄存器,用于存储命令。
        Result:16 位寄存器,用于存储乘法结果。

交互过程:

    初始化
        M1 微处理器通过 APB 总线初始化 FPGA 乘法器模块。
        设置乘数寄存器和被乘数寄存器的初始值。

    写操作
        M1 微处理器通过 APB 总线写入乘数寄存器和被乘数寄存器。
        设置命令寄存器中的启动位(例如 CMD_START)。

    读操作
        M1 微处理器通过 APB 总线读取命令寄存器的状态位(例如 STATUS_FINISHED),以检查乘法操作是否完成。
        如果乘法操作完成,读取结果寄存器中的乘法结果。

    完成
        M1 微处理器通过 APB 总线清除命令寄存器中的启动位,完成一次乘法操作。
        可以重复上述步骤进行多次乘法操作。

框图总结

通过这个框图,我们可以清晰地看到 M1 微处理器和 FPGA 乘法器模块之间的连接性和交互过程。APB 总线作为通信桥梁,确保了两者之间的数据传输和控制信号的传递。

M1端的C代码:


http://www.ppmy.cn/ops/134949.html

相关文章

DNS服务器Mac地址绑定与ip网路管理命令(Ubuntu24.04)

DNS server Mac绑定 查看 DNS服务器地址 resolvectl statusLink 2 (wlp2s0)Current Scopes: DNS Current DNS Server: 10.10.0.21DNS Servers: 10.10.0.21 10.10.2.21查看路由器中邻居表的内容&#xff0c;每一行表示一个网络设备的IP地址、MAC地址及其状态 ip neigh10.162.…

靓车汽车销售网站(源码+数据库+报告)

基于SpringBoot靓车汽车销售网站&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块&#xff0c;主要功能如下。 前台功能简介&#xff1a; - 首页&#xff1a;展示网站的概要信息和推荐车辆。 - 车辆展示&#xff1a;展示可供销售的汽车。 - …

React状态管理之Redux

React状态管理之Redux 在React应用中&#xff0c;状态管理是一个至关重要的概念。随着应用规模的扩大&#xff0c;组件之间的状态共享和更新变得愈发复杂。Redux作为一个专门用于JavaScript应用&#xff08;尤其是React应用&#xff09;的状态管理库&#xff0c;提供了一种可预…

【Java 集合】Collections 空列表细节处理

问题 如下代码&#xff0c;虽然定义为非空 NonNull&#xff0c;但依然会返回空对象&#xff0c;导致调用侧被检测为空引用。 实际上不是Collections的问题是三目运算符返回了null对象。 import java.util.Collections;NonNullprivate List<String> getInfo() {IccReco…

ODC 如何精确呈现SQL耗时 | OceanBase 开发者工具解析

前言 在程序员或DBA的日常工作中&#xff0c;编写并执行SQL语句如同日常饮食中的一餐一饭&#xff0c;再寻常不过。然而&#xff0c;在使用命令行或黑屏客户端处理SQL时&#xff0c;常会遇到编写难、错误排查缓慢以及查询结果可读性不佳等难题&#xff0c;因此&#xff0c;图形…

redis和mongodb等对比分析

Redis 和 MongoDB 都是非常流行的 NoSQL 数据库,它们在数据存储模型、性能、扩展性等方面有很大的差异。下面是 Redis 和 MongoDB 的对比分析: 1. 数据模型 Redis: 键值存储:Redis 是一个内存数据结构存储,它支持多种数据类型,如字符串、哈希、列表、集合、有序集合等。…

前端项目接入单元测试手册

一、单元测试 Vue.js项目中的单元测试是一种软件测试方法&#xff0c;通过对最小的、可测试的代码单元进行检查和验证来保证代码质量。确保每个组件作为独立单元正确执行其预定功能。当代码库随着时间发展增长时&#xff0c;单元测试成为识别错误和避免潜在问题的关键手段。此…

打造专业问答社区:Windows部署Apache Answer结合cpolar实现公网访问

文章目录 前言1. 本地安装Docker2. 本地部署Apache Answer2.1 设置语言选择简体中文2.2 配置数据库2.3 创建配置文件2.4 填写基本信息 3. 如何使用Apache Answer3.1 后台管理3.2 提问与回答3.3 查看主页回答情况 4. 公网远程访问本地 Apache Answer4.1 内网穿透工具安装4.2 创建…