在FPGA上搭建Cortex-m3软核
前言
说是在fpga上搭建,其实还是比较偷懒了,在Vivado上进行搭建,比较方便。先来讲讲Cortex-m3这个东西,玩过单片机的人应该都用过Stm32f103c8t6这块板子,里面的核心架构就是Cortex-m3,c8t6这个器件是基于m3内核组成一块芯片。由于自己需要做一个加密解密的soc,所以需要先搭建一个m3的软核,后续在软核基础上把做好的模块挂到AXI总线上。花了一天做这个,今天就顺带着博客写了,就当作笔记了。
Cortex-m3 Design_Star计划
其实多亏了Risc-V的兴起,ARM公司在前几年把m3和m0的内核通过Design_Star的活动给开源了,开发者只需要在ARM网站上注册就可以下载源码或者是IP核来直接调用,目前来看比较完善的有Xilinx和Gowin这两家体验挺好。手头没有高云的器件,只有一块4k(但是带了硬核),所以就拿手头的zynq来做这次项目。
前期准备
硬件资源
1、你需要一块Xilinx的板子,lut容量大概10k左右应该就差不多。
2、jlink调试器
软件资源
1、Cortex-m3的ip核
2、Keil的cortex-m3的bsp
Cortex-m3软核搭建
1、创立工程文件夹
为了我们方便开发,我们先建立一个名为“Cortex-m3_7010"的文件夹,文件夹下方有下图这些文件夹
其中”cm3_core“中存储的是我们下载得到的资源包中的”Arm_ipi_repository“这个文件夹。
2、建立Vivado工程
本篇博客面向的是有FPGA开发经验的同学,怎么建立Vivado工程就不具体讲了,建立完工程后在Tools-Settings中找到ip相关的设置栏
在”Repository“中添加Cortex-m3的ip核的路径。
3、在Block Design中搭建Cortex-m3
相信用过Vivado的同学们应该都知道Xilinx的Block Design的功能十分高效。使用方法建议百度。
创建Block Design后,我们添加Cortex-m3的IP核进我们的画布中。