当前位置: 首页 > 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.lryc.cn/news/618589.html

相关文章:

  • 终端安全检测和防御技术
  • UGUI源码剖析(6):遮罩的“魔法”与“算法”——从C#到Shader,彻底揭示Mask与RectMask2D的原理
  • OpenHarmony编译与烧录
  • HTTPS服务
  • MCU外设初始化:为什么参数配置必须优先于使能
  • Ceph的FileStore存储引擎详解
  • 如何提升需求分析能力
  • NLP—词向量转换评论学习项目分析
  • 【SpringBoot】05 容器功能 - SpringBoot底层注解的应用与实战 - @Configuration + @Bean
  • IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL
  • 面试八股之从jvm层面深入解析Java中的synchronized关键字
  • 使用pyqt5实现可勾选的测试用例界面
  • MM DEMO-2025 | 北航新融合LLM与多模态交互的无人机导航系统!AirStar,智能空中助手等你来体验
  • 前端/在vscode中创建Vue3项目
  • NoC设计中Router Table的作用
  • Day05 店铺营业状态设置 Redis
  • 【C++】迭代器失效问题
  • THCV215一种高速视频数据收发器,采用低电压差分信号(LVDS)技术支持高速串行数据传输,支持1080p/60Hz高分辨率传输
  • 软考备考(三)
  • 2-1〔O҉S҉C҉P҉ ◈ 研记〕❘ 漏洞扫描▸理论基础与NSE脚本
  • 26 届秋招建议指南
  • Git与CI/CD相关知识点总结
  • [激光原理与应用-251]:理论 - 几何光学 - 长焦与短焦的比较
  • k8s-scheduler 解析
  • 【Java项目与数据库、Maven的关系详解】
  • 正向传播与反向传播(神经网络思维的逻辑回归)
  • Gradient Descent for Logistic Regression|逻辑回归梯度下降
  • B站 韩顺平 笔记 (Day 16)
  • 微软发布GPT-5赋能的Copilot:重构办公场景的智能革命
  • MODBUS RTU协议:工业物联网的“普通话“(Android开发实战指南)