# 前言

最近遇到需要在 fpga 中例化一个 arm m1 软核,用来实现控制的逻辑

自然而然地,软核与 fpga 之间怎么沟通成为一个问题

Gowin_EMPU_M1 硬件设计

# 读写寄存器

以高云的 Soft-Core-MCU 中的 M1 为例

具有三级结构

AHB Bus 总线上连接有很多外设,其中有一个是 AHB Master,可以扩展 AHB 外部设备

若干个 AHB Master 分别对应了不同的地址范围

当软核中的程序向对应的地址读写时,比如 *((uint32_t *) 0x80000000) = 0x12345678

AHB 总线会操纵 “AHB Master” 这一个 “外设”,让他以 AHB 总线协议的形式把相关数据发送出去

接收这个数据,就需要我们在硬件上实现 AHB slave,并把数据保存在寄存器中,比如 reg,然后 reg 作为别的模块的使能

相当于我们做了一个外设,比方说叫做 Ctrl_reg,是一小块内存,挂在 AHB Master 上

# AHB 协议

todo

目前参考这篇学习:AMBA 总线 —AHB 总线协议详解_ahb 协议 - CSDN 博客