AG16K MCU ARM Cortex M3

AGM AG16K MCU 器件是 FPGA+MCU 的 SoC 单芯片产品。
FPGA 单元具有 16K LEs 的逻辑资源,MCU 为硬核 ARM Cortex M3。

MCU 特性
 内核 ARM32 位的 Cortex M3 CPU

  1. 最高 200 Mhz 工作频率
  2. 单周期乘法和硬件除法
  3. 集成的嵌套式的中断控制器(NVIC)提供确定性的中断处理
     高达 128K 字节的 SRAM
     调试模式
  4. 串行调试模式(SWP)和 JTAG 接口
  5. Cortex M3 内嵌跟踪模块(ETM)
     定时器
  6. 两个定时器,每个可被配置为一个 32 位的定时器或两个 16 位的定时器
  7. 独立的看门狗定时器
     GPIO
    3 组 GPIO,每组 GPIO 是 8bit,取决于用户的配置
     通信接口
  8. SPI 接口,用于访问程序存储器 FLASH,支持 FLASH 快速读写模式
  9. Uart 接口
  10. 访问外设的 AHB Master 接口
  11. 与 FPGA 交互的 AHB Slave 接口
  12. 共享 MCU 内部 RAM 访问接口;

MCU 管脚说明:
所有 MCU 接口均可灵活配置为任意 FPGA 外部 IO,或 FPGA 内部连接。
MCU 例化 Primitive 模版见文档结尾。
在这里插入图片描述
在这里插入图片描述
注:在使用 MCU EXT AHB Interface 前,需要先对该接口进行使能才能正常使用。
使能寄存器 EXTAHBEN,具体见文档中寄存器说明;

 设计说明
AG16K MCU 的 FPGA 工程中,需调用 alta_mcu_m3 的硬核 IP,包含在 alta_sim.v 的库文
件中,这个文件默认在 supra 的安装目录中,如:D:\Supra\etc\arch\rodinia。Quartus II
project 要添加这个文件,同时,要把 alta_mcu_m3 设为 Design Partition,如下图:
在这里插入图片描述
MCU 的 SPI 接口接到 FPGA 的 AS 口(复用配置管脚),就可以从配置 FLASH 读取软件程序了。
alta_mcu_m3 还有 2 个参数需要确定,需在 Supra 软件执行 migrate 时,添加 mcu.ip 文件,mcu.ip 文件用户自行创建,内容如下:
IP mcu_inst
TYPE : alta_mcu_m3;
PARAMETER
FLASH_BIAS : 24’h060000 BITS; //MCU 程序在 FLASH 中存放的首地址
CLK_FREQ : 8’h64 BITS; //MCU 主时钟频率(100MHz)
END_PARAMETER
END_IP
在这里插入图片描述
注: mcu.ip 文件中 IP 名字(如上:mcu_inst)需与设计中的自定义的 IP 名字完全一致;mcu 在 FLASH 中的存放地址 FLASH_BIAS 和 mcu 工作频率一定要与实际设计一致;

MCU 程序在 SPI FLASH 里的存储格式:
以下为偏移地址,存放 FLASH 中的起始地址由 MCU.IP 中的FLASH_BIAS 给出。
在这里插入图片描述
该存储格式可通过 2018.06.01 之后版本的 Supra 软件 Tools 中的 Generate 生成,流程如下:在这里插入图片描述
其中,Input文件为Keil生成的mcu程序文件,输出为合成后的存储格式Bin文件,Program address 为上方表格中“程序运行 RAM 地址(4bytes)”,即 Keil 中设置的程序运行地址。在这里插入图片描述
通过正常 FPGA 设计流程(参见 Manual_Supra),可得到 FPGA 硬件编程文件。
最后通过 Generate 将 MCU 程序和 FPGA 程序打包,生成 flash 烧写文件。其中 MCU 程序的地址,根据 mcu.ip 中设置的 FLASH_BIAS 进行设置。在这里插入图片描述
 软件设计
AG16K 的 MCU 可用 SWD 或者 JTAG 调试接口,管脚可通过任意 FPGA IO 引出,即可通过 ARM M3 调试工具进行软件设计和调试,如 J-LINK 和 Keil。在这里插入图片描述
SWD 接口:
SWD 接口最少只需 VCC, GND, SWDIO, SWCLK 四个 pin 脚即可调试。SWD 接口的复用 JTAG接口的 JTMS 和 JTCK 两个管脚,如上图所示。
使用 SWD 接口替代 JTAG 接口时,需设置顶层 SWDIO 端口为 inout 型,同时代码中添加语句:“ assign SWDIO = SWDOEN ? SWDO : 1’bz; ”,MCU SWD 接口接法如下:
.JTRST_n ( ),
.JTCK (SWCLK ),
.JTDI ( ),
.JTMS (SWDIO ),
.JTDO ( ),
.SWDO (SWDO ),
.SWDOEN (SWDOEN ),

JTAG 接口:在这里插入图片描述
SWD 接口:在这里插入图片描述
在这里插入图片描述
 MCU 地址映射表:
一、基本地址空间在这里插入图片描述
Note: 0x2000_0000-0x2000_FFFF 地址映射的 64KB SRAM 与 0x1FFF_0000-0x1FFF_FFFF 地址映射的 64KB SRAM 是同一个;

二、地址 REMAP
当通过 CPU 的 DBUS、IBUS 访问代码区空间(0x0000_0000-0x1FFF_FFFF)时,可以通过 REMAP功能改变地址映射。
在这里插入图片描述
REMAP=0 时,0x0000_0000 地址映射在 ROM 上,CPU 从 ROM 启动。
REMAP=1 时,0x0000_0000 地址映射在 On-chip Ram 上,CPU 从 On-chip Ram 启动。
注意,REMAP 的设置,只对来自 DBUS、IBUS 的访问有效。
来自 CPU SBUS 以及 DMA 等其他 AHB Master 的访问,无论 REMAP 如何设置,都按照基本地址空间的地址访问。

 MCU 寄存器地址说明:
在这里插入图片描述
 MCU 例化模版:
注意:其中 EXT_RAM,AHB_SLAVE, AHB_MASTER 接口不使用时,一些控制管脚需设置定值;
alta_mcu_m3 mcu_inst (
.CLK ( ),
.POR_n ( ),
.EXT_CPU_RST_n ( ),

.JTRST_n ( ),
.JTCK ( ),
.JTDI ( ),
.JTMS ( ),
.JTDO ( ),

.SWDO ( ),
.SWDOEN ( ),

.UART_RXD ( ),
.UART_CTS_n ( ),
.UART_TXD ( ),
.UART_RTS_n ( ),

// On-Chip Memory Ports
.EXT_RAM_RDATA ( ),
.EXT_RAM_EN (1’b0 ),
.EXT_RAM_WR ( ),
.EXT_RAM_ADDR ( ),
.EXT_RAM_BYTE_EN ( ),
.EXT_RAM_WDATA ( ),

// AHB Slave Ports
.HRESP_EXT (2’b00 ),
.HREADY_OUT_EXT ( ),
.HRDATA_EXT ( ),
.HTRANS_EXT ( ),
.HADDR_EXT ( ),
.HWRITE_EXT ( ),
.HSEL_EXT ( ),
.HWDATA_EXT ( ),
.HSIZE_EXT ( ),
.HREADY_IN_EXT ( ),

// AHB Master Ports
.HRESP_EXTM ( ),
.HREADY_OUT_EXTM ( ),
.HRDATA_EXTM ( ),
.HTRANS_EXTM (2’b0 ),
.HADDR_EXTM ( ),
.HWRITE_EXTM ( ),
.HSEL_EXTM (1’b0 ),
.HWDATA_EXTM ( ),
.HSIZE_EXTM ( ),
.HREADY_IN_EXTM (1’b1 ),
.HBURSTM ( ),
.HPROTM (4’b0 ),

.FLASH_SCK (FLASH_SCK ),
.FLASH_CS_n (FLASH_CS_n ),
.FLASH_IO0_SI_i (FLASH_IO0_SI ),
.FLASH_IO1_SO_i (FLASH_IO1_SO ),

.FLASH_IO0_SI (flash_io0_si_o ),
.FLASH_IO1_SO (flash_io1_so_o ),
.FLASH_IO2_WPn (flash_io2_wpn_o ),
.FLASH_IO3_HOLDn (flash_io3_holdn_o ),
.FLASH_IO2_WPn_i (1’b1 ),
.FLASH_IO3_HOLDn_i (1’b1 ),
.FLASH_SI_OE (flash_si_oe ),
.FLASH_SO_OE (flash_so_oe ),
.WPn_IO2_OE (flash_wpn_oe ),
.HOLDn_IO3_OE (flash_holdn_oe ),

.GPIO0_I ( ),
.GPIO1_I ( ),
.GPIO2_I ( ),
.GPIO0_O ( ),
.GPIO1_O ( ),
.GPIO2_O ( ),
.nGPEN0 ( ),
.nGPEN1 ( ),
.nGPEN2 ( )
) ;
assign FLASH_IO0_SI = (flash_si_oe == 1’b1)? flash_io0_si_o :1’bz;
assign FLASH_IO1_SO = (flash_so_oe == 1’b1)? flash_io1_so_o :1’bz;
assign FLASH_IO2_WPN = (flash_wpn_oe == 1’b1)? flash_io2_wpn_o :1’bz;
assign FLASH_IO3_HOLDN = (flash_holdn_oe == 1’b1)? flash_io3_holdn_o :1’bz;

最详细的基于AG16K的Cortex M3应用手册,欢迎使用,有疑问请联系kh_hsiah@126.com/Douglas。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/238536.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins 添加node节点

安装SSH插件 Jenkins- 插件管理- 可选插件- 搜索SSH Agent 配置启用SSH Server Jenkins- 系统管理 - 全局安全配置, 把 SSH Server 设置为启用(默认是禁用) 新增节点 第一种方式(SSH密钥连接): 1.Jenkins主机生成SSH密钥 [rootk…

mysql——数据库基础

目录 一.什么是数据库 二.主流的数据库 三.服务器,数据库,表关系 四.数据逻辑存储 五.MySQL架构 六.SQL语句分类 七.存储引擎 一.什么是数据库 存储数据用文件就可以了,为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1…

Nacos热更新(动态获取配置)

写在前面:各位看到此博客的小伙伴,如有不对的地方请及时通过私信我或者评论此博客的方式指出,以免误人子弟。多谢!如果我的博客对你有帮助,欢迎进行评论✏️✏️、点赞👍👍、收藏⭐️⭐️&#…

[渗透测试学习] CozyHosting - HackTheBox

文章目录 信息搜集 nmap扫描一下,发现存在80端口和22端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.230直接访问80端口发现有跳转 那么我们将ip添加到hosts里面,成功访问 观察发现是企业网站,扫描一下没有子域名 那么就扫下目录&am…

【大模型】800万纯AI战士年末大集结,硬核干货与音乐美食12月28日准时开炫

文章目录 WAVE SUMMIT五载十届,AI开发者热血正当时酷炫前沿、星河共聚!大模型技术生态发展正当时 回望2023年,大语言模型或许将是科技史上最浓墨重彩的一笔。从技术、产业到生态,大语言模型在突飞猛进中加速重构万物。随着理解、生…

若依源码分析

一.登录 1.1 生成验证码 基本思路 后端生成一个表达式,74?11 74?转成图片,传到前端进行展示 将结果11存入redis 前端代码实现: 请求后端地址:http://localhost/dev-api/captchaImage,通过反向代理解决前后端跨域问题,将请求路径变为:http://localhost:8080/captchaImag…

038.Python面向对象_三大特性综合案例1

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉&…

开源贡献世纪榜评选揭晓,TDengine 成功入选并亮相 FICC 开源计算机系统大会

12 月 3-6 日,2023 国际测试委员会智能计算机与芯片联邦大会(FICC)在海南三亚举行,本次大会主要分为四个会议:芯片大会,智能计算机、算法与应用大会,开源计算机系统大会,测试基准与标…

注册与回调

C 再论无处不在的回调机制---注册与回调 回调函数的作用和用途,我就不多说了,之前也讨论过, 现在再来熟悉一下与回调函数相关的程序。 我们知道, 回调机制, 就是通过函数指针来实现的。 说白了, 就是注册与…

算法-05-二分查找

二分查找(Binary Search)算法,也叫折半查找算法,是一种针对有序数据集合的查找算法。 1-二分查找的思想 我们生活中猜数字的游戏,告诉你一个数据范围,比如0-100,然后你说出一个数字&#xff0c…

【lesson8】表的约束(1)

文章目录 表的约束的介绍空属性约束(null)和非空属性约束测试建表插入测试 默认值约束测试建表测试 建表查看默认行为建表插入测试 表的约束的介绍 真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束&#…

LeetCode-交换链表中节点的问题

两两交换链表中的节点 题目描述: 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 思路: 首先将整个链…

MinGW编译Ptyhon至pyd踩坑整理

注意需要魔法 用scoop自动安装配置MinGw 需要魔法,不需要手动配置mingw scoop install mingw安装Cython,Setuptools第三方库 关闭魔法,使用清华源 pip install setuptools -i https://pypi.tuna.tsinghua.edu.cn/simple pip install cyt…

800万纯AI战士年末大集结,硬核干货与音乐美食12月28日准时开炫

回望2023年,大语言模型或许将是科技史上最浓墨重彩的一笔。从技术、产业到生态,大语言模型在突飞猛进中加速重构万物。随着理解、生成、逻辑、记忆四大能力显著提升,大语言模型为通用人工智能带来曙光。 AI开发者们正在用算法和代码书写一个美…

Python简单网抑云数据采集 JS逆向

嗨喽,大家好呀~这里是爱看美女的茜茜呐 环境使用: Python 3.10 Pycharm 模块使用: requests -> pip install requests execjs -> pip install execjs 爬虫实现基本思路流程: 一. 数据来源分析: 明确需求: 明确采集的网站以及数据内容 网址: https://mu…

【java】java类/方法冲突解决工具

目录下查找包含特定名称(如:类名称)的Jar包 上代码: 比如要查找含有类 “org/apache/avro/Schema” 的: # 方法一 # 此方法只能查找到内容(比如:类名称)。但是不能打印jar名称 fi…

大数据Vue项目必备|Window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm)

大数据Vue项目必备|Window下安装并使用nvm(含卸载node、卸载nvm、全局安装npm) 一、卸载旧版本 如果已经安装了node,那么需要先卸载node,如果没有安装那可以直接跳过这一步。 卸载:   打开控制面板 -> 打开程序和…

2个实用的快速涨粉视频号数据分析平台

很多人在做视频号的视频总不知道怎么利用视频号进行数据分析以及如何涨粉?今天就说两个视频号数据分析平台 可以查询各项爆款数据,什么账号大火、什么领域热大家都在关心什么快速了解。 1:视频号助手(https://channels.weixin.q…

一文了解什么是Selenium自动化测试?

一、Selenium是什么? 用官网的一句话来讲:Selenium automates browsers. Thats it!简单来讲,Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏…

手把手搭建腾讯云服务器教程(新手必看)

使用腾讯云服务器搭建网站全流程,包括轻量应用服务器和云服务器CVM建站教程,轻量可以使用应用镜像一键建站,云服务器CVM可以通过安装宝塔面板的方式来搭建网站,腾讯云服务器网txyfwq.com分享使用腾讯云服务器建站教程,…