当前位置: 首页 > news >正文

【基于DesignStart的M3 SoC】

基于DesignStart的M3 SoC

  • 1 Arm based SoC简介
    • 1.1 ARM-M3
      • 1 M3简介
      • 2 启动流程
      • 3 中断
    • 1.2 处理器
      • 1 Cortex-M3处理器核
      • 2 例化接口配置
      • 3 AHB-Lite总线接口
      • 4 扩展外设
  • 2 使用标准组件来定制
    • 2.1 轮子
    • 2.2 开发方法
    • 2.3 需要软件
    • 2.4 使用CMSDK搭建CortexM3SoC
      • 1 AHB bus
      • 2 软件driver

ARM_M3 based SoC的快捷方法:使用arm DesignerStart开放的Cortex M3搭建SoC;

1 Arm based SoC简介

基于Cortex-M3搭建SoC;
基于自定义的功能IP并集成:w:w到SoC中;
在SoC系统上进行软件开发
在FPGA开发板上搭建SoC的验证原型;
通过搭建SoC,可以很好的学习从功能定义到FPGA/仿真上来验证跑完的流程;

1.1 ARM-M3

1 M3简介

32bit addr/data;
总线接口AHB-Lite;I/D/S
支持NMI以及最大支持240物理中断;
三级流水线;
使用Thumb/Thumb2 ISA的一个子集;

2 启动流程

M3启动流程:
1.在复位使能时,CPU处于reset状态;
2.复位释放后,从地址0x0000_0000出加载栈顶地址,及汇编代码中_vector的第一行则为栈顶地址;
3.从地址0x0000_0004初加载复位处理函数的地址;
4.PC改变为0x0000_0004中的值,开始执行复位处理,同时CPU的工作状态从异常模式切换为线程模式,开始正常工作;

3 中断

1.CPU接收到中断信号(IRQ/NMI/systick等);
2.寄存器入栈
3.根据中断信号查找中断向量表(对应汇编启动代码中的_Vector字段);
4.中断处理函数执行完成后,寄存器出战,PC跳转;
根据中断向量表的编号—>进入ISA程序;

ISA中C程序执行关键信号:
Hxxxx(以H开头的信号) HBus总线
vis_rX_O 通用寄存器,通过仿真观察这些寄存器能够知道相关汇编指令是否正常执行(ADD、MOV)
vis_msp_o 栈指针
vis_r14_o 链接寄存器,程序返回出错时需要检查此寄存器
vis_pc_o 程序计数器,可以用来判断处理器是否在正常运行
vis_ipsr_o 中断状态寄存器,当发生错误的时候,PSR的值会改变,用于判断发生何种类型错误;
LOCKUP 处理器处理NMI或者Hardfault时又发生错误后,处理器将会被死锁

1.2 处理器

1 Cortex-M3处理器核

直接在DesignStart上下载好M3软核;
DesignStart-M3面向个人的Eval和FPGA版本; 面向企业用户的Physical和Pro版本;
Eval版本:就是为网表级Verilog代码,可读性几乎为0;
FPGA版本:只有Xinlinx和Gowin版本;基本上用的最多的就是Xilinix的,搭配Keil,Jlink开发调试工具;FPGA上实现了arm内核后,就是相当于一颗通用单片机功能了;

2 例化接口配置

即M3顶层例化接口信号固接;根据功能进行信号分组;

3 AHB-Lite总线接口

该AHB总线是M3与外部进行交换信息的总线;
读写时序关系总线在这里就不介绍了;
AHB最主要的三个总线:I/D/S
I-AHB: I-mem;
D-AHB: D-mem;
S-AHB: 用于访问外设;

4 扩展外设

  • 扩展Decoder;
  • 在Interconnect中增加slave Port;
  • 在Interconnect中将新增的Slave Port与扩展的Decoder Hsel信号以及Slave Mux连接;
  • 扩展连接外设、外设接口、总线;
  • C语言程序中编写外设接口结构体;

2 使用标准组件来定制

具体即为使用AMBA Designer来生成具体所需标准cmsdk组件;

2.1 轮子

使用AMBA Designer来避免重复造轮子;
大轮子:使用cmsdk来搭建总线系统; 小轮子:使用cmsdk外设; 自定义轮子:写外设驱动的两种方法;
轮子跑起来:外设驱动移植与startUP;
具体示例:利用cmsdk来搭建基本的SoC; 基于cmsdk的总线系统搭建;基于cmsdk的外设及其软件驱动移植;自己实现自定义外设的思路;
DesignStart: 一个CortexM3处理器核;一套CMSDK IP/工具;一个cmsdk搭建的样板SoC工程;
CMSDK: 1.AHB and APB Protocol; 2. 外设:GPIO,timers,watchdog, and uart; 3. M0/M3/M4 Processors; 4.编译和仿真脚本来创造Verilog的开发环境;5.软件驱动和例程;

2.2 开发方法

1.直接在模板工程上魔改;
2.以样板工程为参考,自己用cmsdk搭建;
–1. 全局同步时钟;
–2. BRAM的readmemh/readmemb;
技术社区帖子:使用cmsdk搭建CortexM3SoC;

2.3 需要软件

仿真:ModelSim
综合:VIVADO/Quartus;
WSL: make,Minicom;
软件调试:make; Minicom;

2.4 使用CMSDK搭建CortexM3SoC

具体分类包含以下部分:

  • APB comoponents;
  • Advanced AHB-Lite components;
  • The memory models
  • The verificatoins components;
    cmsdk_ahb_busmatrix/cmsdk_ahb_to_sram/cmsdk_fpga_sram/cmsdk_ahb_to_apb/cmsdk_ahb_to_apb_sync/cmsdk_ahb_default_slave;

1 AHB bus

配置文件都是XML文件;
1.cmsdk_ahb_busmatrix(remap):
2.cmsdk_ahb_to_apb_sync
3.cmsdk_ahb_slave_mux

decoder+arbiter;

2 软件driver

移植外设驱动.c文件;

接下来尝试用FPGA或者纯仿真来搭建一个M3的SoC,然后在跑起来C;

http://www.dtcms.com/a/327569.html

相关文章:

  • 4/5G中频段频谱全球使用现状概述(截止2025 年7月)
  • 【unity实战】在 Unity 中实现卡牌翻转或者翻书的效果
  • 现代化水库运行管理矩阵建设的要点
  • 学习笔记《区块链技术与应用》ETH 第二天 状态树
  • 解决 HTTP 请求 RequestBody 只能被读取一次的问题
  • 敏捷开发的关键点是什么?深入探索!
  • Windows server服务器上部署python项目域名访问(超详细教程)
  • Vue 3 + Elementui + TypeScript 实现左侧菜单定位右侧内容
  • 【实时Linux实战系列】实时智能监控与异常检测
  • 什么是 DispatcherServlet?
  • 【Java项目与数据库、Maven的关系详解】
  • 部署一个开源的证件照系统
  • Notepad++ 插件开发实战技术
  • 3.8 vue2 devServer配置和 CDN 加载外部资源
  • code-inspector-plugin插件
  • 服务端配置 CORS解决跨域问题的原理
  • 从阶段演进到智能跃迁:企业合同管理的发展与趋势
  • 高性能web服务器nginx
  • Work【3】:TRIG —— 解码多维度权衡,重塑生成模型评测与优化新范式!
  • 无人机影像的像素坐标转大地坐标
  • 2025年中科院2区红杉优化算法Sequoia Optimization Algorithm-附Matlab免费代码
  • 数字气压传感器,筑牢汽车TPMS胎压监测系统的精准感知基石
  • 吉利汽车7月销量超23.7万辆 同比增长58%
  • Spring Boot 整合MongoDB
  • 【数据分析与挖掘实战】金融风控之贷款违约预测
  • Rust 泛型和 C++ 模板语法对比
  • 云原生高级---TOMCAT
  • 【Node.js从 0 到 1:入门实战与项目驱动】2.2 验证安装(`node -v`、`npm -v`命令使用)
  • centos 7 如何安装 ZipArchive 扩展
  • 前端性能优化:实战经验与深度解析