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 数码管显示

results matching ""

    No results matching ""