测试平台:
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 总线作为通信桥梁,确保了两者之间的数据传输和控制信号的传递。