LAB5: "吃硬还是吃软?"-软硬协同才是正道
关于LAB5
- 本实验对应教材 6.3 "加速器IP集成与软硬件协同设计".
- 本实验主要介绍基于软硬件协同设计的思想如何实现算法加速, 并以最大公约数加速器 IP 为例介绍实际的设计案例.
- 本实验展示了加速器 IP 的功能划分逻辑、集成方案以及软硬件交互设计流程.
通过这个实验能学到什么
- 掌握软硬件功能划分逻辑, 包括 "以软制硬" "以硬助软" 模式及 "外设加速器" 等具体加速类型的适用场景.
- 理解软硬件协同全流程, 从 IP 功能验证和改造, 到驱动编写和人机交互集成, 最终形成一套完整的设计思路.
学习目标
- 理解 SoC 系统中外设扩展的基本方法
- 掌握 AHB-Lite 总线外设接口的设计流程
- 学会设计硬件加速器并与 CPU 协同工作
- 熟悉常见 I/O 外设(键盘、数码管)的接口设计
实验须知
本实验建立在前序实验基础上,请确保已完成 Lab1-Lab4 的学习,熟悉 Cortex-M0 处理器和 AHB-Lite 总线协议。
实验内容概述
第一部分:GCD 硬件加速器设计
GCD(Greatest Common Divisor,最大公约数)是一个经典的数学问题。虽然软件实现简单,但在需要频繁计算的场景下,硬件加速器可以显著提升性能。
第二部分:4x4 矩阵键盘接口设计
矩阵键盘是嵌入式系统中最常见的输入设备之一。通过行列扫描的方式,仅用 8 个 I/O 引脚即可实现 16 个按键的检测。
第三部分:4 位数码管显示控制器设计
数码管是最直观的数字显示设备。通过动态扫描技术,可以用较少的 I/O 资源驱动多位数码管。
第四部分:综合实验
将上述三个模块整合,实现一个完整的 GCD 计算器:
- 通过键盘输入两个数字
- 使用硬件加速器计算 GCD
- 在数码管上显示结果
系统架构
本实验的 SoC 系统架构如下:
┌─────────────────────────────────────────────────────────────┐
│ Cortex-M0 │
│ 处理器核 │
└───────────────────────────┬─────────────────────────────────┘
│
AHB-Lite 总线
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ ROM / RAM │ │ GPIO │ │ UART │
│ 存储器 │ │ 通用IO │ │ 串口 │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
└───────────────────┼───────────────────┘
│
┌───────────────────┼───────────────────┐
│ │ │
▼ ▼ ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ GCD 加速器 │ │ 4x4 键盘 │ │ 4位数码管 │
└───────────────┘ └───────────────┘ └───────────────┘
地址空间分配
| 外设 | 基地址 | 大小 | 说明 |
|---|---|---|---|
| ROM | 0x00000000 | 64KB | 程序存储器 |
| RAM | 0x20000000 | 64KB | 数据存储器 |
| GPIO | 0x40010000 | 4KB | 通用输入输出 |
| UART | 0x40020000 | 4KB | 串口通信 |
| GCD | 0x40030000 | 4KB | GCD 加速器 |
| Keyboard | 0x40040000 | 4KB | 矩阵键盘 |
| SEG7 | 0x40050000 | 4KB | 数码管显示 |