【学习笔记】基于Arm Cortex-M0 Designstart Eval设计SOC(一)

一、简介

本项目是使用Arm Cortex-M0 Designstart Eval进行开发,以下内容来自Arm Cortex-M0 DesignStart Eval User Guide。

点击此处下载Arm Cortex-M0 Designstart Eval

开发环境:

Win10、MDK5、TD(Tang Dynasty)、安路EG4S20 FPGA开发板

二、Designstart Eval文件介绍

点击上方链接申请Arm Cortex-M0 Designstart Eval后,得到一个名为AT510-MN-80001-r2p0-00rel0的压缩包。解压后得到如下文件

【学习笔记】基于Arm Cortex-M0 Designstart Eval设计SOC(一)

1.工具包的主目录

表1描述了设计工具包的主目录。

表1.主目录说明
目录名称 目录内容
Recovery FPGA 映像,包括字节码文件、BIOS、配置和软件二进制文件。
RevC FPGA 设计文件 (Verilog) 和实现流程。
cores/cortexm0_designstart_r2p0 混淆Cortex-M0集成级别。
logical FPGA 设计文件 (Verilog) 和实现流程。
smm_common 常见的 FPGA 组件和外设。
software

软件文件。这些包括:

  • 与 CMSIS 兼容的 C 头文件。

  • 示例系统的示例程序文件。

  • 示例设备驱动程序。

systems/cortex_m0_mcu CMSDK 示例系统的设计文件、测试平台文件和仿真设置文件。

systems/fpga_testbench

FPGA 示例系统的测试台文件和仿真设置文件。
documentation 文档文件。

2.MCU示例及其余模块 

下图为本项目的MCU系统顶层试图示例,表2解释组成MCU的各模块的含义。

【学习笔记】基于Arm Cortex-M0 Designstart Eval设计SOC(一)

表2. MCU各模块的含义
项目 描述

cmsdk_mcu

微控制器设计示例。此级别包含行为记忆和时钟生成组件。

cmsdk_mcu_system

微控制器设计的可合成水平。这将实例化 Cortex-M0 处理器。
CORTEXM0INTERGRATION Cortex-M0 集成层。这是经过混淆和拼合的代码。
cmsdk_apb_subsystem APB 外设和 APB 基础设施的子系统。
System controller 包含用于系统控制的可编程寄存器,例如存储器重映射。
SysTick reference clock 系统Tick参考时钟生成逻辑。
cmsdk_ahb_gpio 具有 AHB 接口的低延迟 GPIO。每个 GPIO 模块提供 16 个 I/O 引脚。

cmsdk_mcu_clkctrl

时钟和复位生成逻辑行为模型。

cmsdk_mcu_pin_mux

用于 I/O 端口的引脚多路复用器和三态缓冲器。
cmsdk_ahb_rom 用于ROM的内存包装器,用于测试不同内存实现的行为。您可以修改 Verilog 参数以更改实现。
cmsdk_ahb_ram RAM 的内存包装器,用于测试不同内存实现的行为。您可以修改 Verilog 参数以更改实现。
cmsdk_ahb_cs_rom_table 一个示例系统级 CoreSight ROM 表,它使调试器能够将系统标识为基于 Cortex-M0 的系统。
cmsdk_mcu_addr_decode 基于 CMSDK 地址映射为每个内存映射组件生成 HSELS
cmsdk_clkreset 生成时钟和复位信号。XTAL1 以 50MHz 的频率运行。它在仿真开始时将NRST LOW断言为5ns。
cmsdk_uart_capture

从 UART2 捕获文本消息,并在仿真期间显示该消息。它在收到回车符后显示消息的每一行。要缩短仿真时间,请将波特率设置为与时钟频率相同。必须将 UART 设置为高速测试模式

下图显示了 Cortex-M0 示例系统的接口。

【学习笔记】基于Arm Cortex-M0 Designstart Eval设计SOC(一)

表3描述系统设计包括的外围组件。

表3.外围组件
项目 描述
cmsdk_ahb_gpio 两个具有 AHB 接口的低延迟 GPIO。每个 GPIO 模块提供 16 个 I/O 引脚。
cmsdk_apb_timer 32 位计时器。
cmsdk_apb_uart A UART.
cmsdk_apb_watchdog 与 AMBA 设计套件中的看门狗兼容的看门狗组件。
cmsdk_apb_dualtimers 与 AMBA 设计套件中的双定时器模块兼容的双定时器模块。

  表4介绍了Cortex-M0 微控制器中包含的 Verilog 文件。

表4.Cortex-M0 微控制器的 Verilog 文件
文件名 描述

cmsdk_mcu.v

微控制器的顶层

cmsdk_mcu_defs.v

示例微控制器的常量定义和配置定义

cmsdk_mcu_system.v

微控制器系统级设计

cmsdk_mcu_sysctrl.v

用于系统级控制的可编程寄存器块

cmsdk_mcu_stclkctrl.v

系统Tick参考时钟生成逻辑

cmsdk_mcu_clkctrl.v

时钟和复位控制

cmsdk_mcu_pin_mux.v

用于 I/O 端口的引脚多路复用器和三态缓冲器
cmsdk_mcu_addr_decode.v 基于 CMSDK 地址映射为每个内存映射组件生成 HSELS
cmsdk_ahb_cs_rom_table.v CoreSight system level ROM table for CMSDK

表5介绍了测试平台中包含的 Verilog 文件。

表5.Cortex-M0 微控制器测试平台的验证日志文件
文件名 描述

tb_cmsdk_mcu.v

示例微控制器的测试台
cmsdk_clkreset.v 时钟和复位发生器
cmsdk_uart_capture.v 用于文本消息显示的 UART 捕获
tbench_M0_DS.vc Cortex-M0 DesignStart Eval 的 Verilog 命令文件

表6介绍了 FPGA 设计的主要文件(不包括外设)。

表6.Cortex-M0 FPGA 设计的验证日志文件
文件名 描述
fpga_top.v * FPGA,具有 I/O 引脚、PLL 和 ddr 焊盘实例、复位控制逻辑
fpga_system.v 包装器级别
user_partition.v 主系统集成。端口多路复用,内存设备接口,gpio 2/3
cmsdk_mcu_system.v 基于 CMSDK 的系统,集成了其他外设
cmsdk_mcu_stclkctrl.v 简单的系统信号控制
cmsdk_mcu_sysctrl.v 简单的系统控制外设,PMU 支持捆绑
cmsdk_ahb_cs_rom_table.v 标准 CMSDK 系统 ROM 表
cmsdk_mcu_addr_decode.v FPGA 版本 cmsdk_mcu_system 的地址解码

表7介绍了测试平台中包含的 Verilog 文件。

表7.Cortex-M0 FPGA 测试平台中包含的 Verilog 文件
文件名 描述
tb_fpga.v 测试台*
cmsdk_uart_capture_ard.v UART 捕获/显示模块
tb_arduino_shield.v Arduino Shield 组件的包装器
arduino_adaptor.v 用于Arduino Shield的Arm适配器模型
arduino_shield.v Arduino shield的测试台模型
GS8160Z36DT.v 内存模型
core.v 内存模型组件
SPI_EEPROM.v 内存模型
I2C_SRAM.v 内存模型
IS66WVE409616BLL.v 内存模型
scc_tb.v SCC 接口包装器示例

对于系统文件的介绍就到这里。

上一篇:CTFHub技能书解题笔记-RCE-eval执行


下一篇:第5章-2 图的字典表示 (20 分)