一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建

在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建

  • 获取资源
    • VIVADO
    • Cortex M1软核IP
    • KEIL(MDK)
    • 其他
  • 搭建工程
    • 工程概述
    • 添加IP库
    • FPGA工程

本文的硬件(FPGA)工程和软件代码、脚本均参考ARM提供的例程。

获取资源

VIVADO

VIVADO是xilinx开发FPGA的集成环境。在ARM提供的例程中使用VIVADO2018.2版本,这里为了方便,使用同一版本,当然你也可以使用更新的版本。
下载时你可能需要登录你的xilinx账户。

https://www.xilinx.com/member/forms/download/xef-vivado.html?filename=Xilinx_Vivado_SDK_2018.2_0614_1954.tar.gz

Cortex M1软核IP

M1的IP核由ARM提供,在下载的压缩包中包含了例程(FPGA及Cortex M1的软件工程)、文档和IP核。
下载时你可能需要登录你的ARM账户。

https://developer.arm.com/ip-products/designstart/fpga

KEIL(MDK)

keil资源十分好找,这里就不提供下载地址了。值得一提的是老版本的keil可能不支持Cortex M1,本文使用keil528。

其他

除上述软件外,还需要一块XILINX FPGA开发板、xilinx下载器以及Jlink仿真器,当然还有杜邦线(公对母)。

搭建工程

工程概述

FPGA开发板使用的zedboard(7020),当然你也可以使用xilinx其他的FPGA。

1.硬件

1).调试口

  • 标准JTAG接口,需要外接J-Link仿真器

2).外部复位按钮(2个)

  • 复位Cortex-M1
  • 复位M1的调试功能

3).GPIO(LED)

4).定时器

5).串口

2.软件

1).工程中包含外设:

  • GPIO驱动(AXI-GPIO)
  • 定时器驱动(AXI-TIMER)
  • 串口驱动(AXI-UARTLITE)

2).工程中包含中断:

  • 系统滴答
  • 定时器
  • 串口

添加IP库

将下载的cortex M1资源包解压(假设解压地址为$(IP_DIR)),把$(IP_DIR)\vivado\Arm_ipi_repository目录添加到VIVADO的IP仓库中。

FPGA工程

PDF版本:https://download.csdn.net/download/lai823177557/11580425
完整工程:https://download.csdn.net/download/lai823177557/11580459
一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建_第1张图片
1.clk_wiz

clk_out1: 100MHz用于M1和一般外设;
clk_out2: 50MHz预留给QSPI等外设。

2.CORTEXM1_AXI
一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建_第2张图片
一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建_第3张图片
一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建_第4张图片
一、在Xilinx FPGA上使用Cortex M1 软核——FPGA工程搭建_第5张图片
Cortex-M1配置综述:

中断源:8个
 调试模式:JTAG
ITCM:128KB(存储可执行代码)
DTCM:128KB(RAM)

软核配置概要:

SYSRESETn: 	由系统时钟和外部复位按钮组成的信号。
IRQ:		中断输入,支持1,8,16,32个中断源输入。
NMI:		不可屏蔽中断,没特殊用途可以不接。
CFGITCMEN:	ITCM别名使能(0x01:Lower,0x20:Upper),这里M1将重ITCM启动,所以输入为0x01。
DBGRESRn:	JTAG模式下的调试复位(仅针对调试功能)。
SWCLKTCK:	TCK(J-Link)。
SWDITMS:	TMS(J-Link)。
nTRST:		RESET(J-Link),分配IO时需要上拉,否则拔掉调试器M1无法工作。
TDI:		TDI(J-Link)
TDO:		TDO(J-Link)
nTDOEN:	TDO输出使能指示
CM1-AXI3:AXI
其余信号可以忽略

2.axi_gpio

输出模式

3.axi_uartlite

115200 8 n 1

FPGA工程搭建到此结束,IO配置、编译以及导出不在赘述。
下一章将探讨在Keil中搭建Cortex-M1嵌入式工程。
本人研究cortex-M1不久,如有错误,欢迎大神指正~~~

你可能感兴趣的:(FPGA软核)