# 前言
最近遇到需要在 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 博客