CPU对FPGA或CPLD进行配置,该配置可以分为两种
- SS SP等对FPGA或CPLD内部的SRAM进行程序配置;
- MCU模拟JTAG接口配置FPGA或CPLD的flash,进行程序远程更新;
- 另外还有I2C、SSPI以及UART对CPLD进行flash远程更新(该部分有待研究);
1. CPLD可通过 SSPI 端口来配置 Flash(读/写操作),把位流文件写入内置 Flash,以实现更新版本的目的;
2. CPLD可通过 I2C 端口来配置 Flash(读/写操作),把位流文件写入内置 Flash,以实现更新版本的目的。
3. PC通过UART端口来配置Flash(注意:CPLD中需要有MCU,MCU以UART接口接收bit流文件),PC 作为 XModem 协议的发送端,FPGA 侧 MCU 作为 XModem 协议的接收端;
一、设计概述
TD软件版本:TD5.6.2_71036-64bit
工程 :SPIM_SS_CFG_Demo
参考工程 : APUG012_基于 MCU 串行配置、TN008_AJE 移植指南
二、SS配置
CPLD(EF2、EF3系列)SS配置方式:
通过Generate Bitstream->Properties->Attr Option->boot_mode->ss;
FPGA(EG4等)SS配置方式(EG4A、EG4X配置不同):
主要通过硬件对MSEL[2:0]进行配置;
三、MCU模拟JTAG配置
MCU/CPU端需要模拟JTAG接口配置FPGA或CPLD,需要使用TD软件生成对应程序的SVF文件;
然后使用SVF转换AJE工具,将SVF文件转换为AJE文件,才能进行配置。
注意:如果配置不成功,可以关注一下延时校准:
具体延时可以通过vec.c中的RUNTEST配置,即针对SVF文件参考频率和RUNTEST值进行换算(TN008)。
CPU端的代码根据什么编写SDI、SDR等命令?
可以使用TD将bit文件生成SVF文件,其中SVF文件包含整体定义的指令进程,可以根据SVF文件进行C代码部分的编写;
四、其他远程更新简介
1. SSPI 配置
SSPI 配置硬件连接框图,如图所示,MCU/CPU 器件作为主控设备,通过该平台 GPIO 控制器,FPGA 作为从设备,按照 SPI 协议实现对内置 Flash 实现擦除、更新等操作。
- 支持最高 40MHz 配置速率;
- 支持 CFG/用户模式阶段配置接口使能;
2. I2C 配置
I2C 配置硬件连接框图如图,MCU/CPU 器件作为主控设备,EF3LA0 器件作为从设备,主控设备通过该平台 I2C 控制器,按照 I2C 协议实现对内置 Flash 实现擦除、更新等操作。
- 支持两种速度模式,标准模式 100kHz,快速模式 400kHz;
- 具有可配置的 7、10 bit I2C 总线从设备地址;
- 支持 CFG/用户模式阶段配置接口使能;
3. UART 配置
FPGA 侧 MCU 上电复位后进入升级模式,不断发送 NAK 信号请求传输;PC 侧上位机(如 SecureCRT、MobaXterm 等串口终端软件)将升级的文件加载到内存,按照协议将数据传递到 MCU 接收侧;MCU 根据自身 RAM 大小缓存一定数据后再将数据写入 Flash。重复此过程,直到整个升级 bin 文件更新到 Flash。Flash 配置完成后,可通过协议发起重启命令,完成整个配置过程。在线升级系统框图如下。
整个过程中的数据传输正确性,接收方需要计算 CRC 后发送 ACK 信号来进行确认,如果数据传输有误,则发送 NAK 信号,发送方在接收到 NAK 信号之后需要重新发起该次数据传输,如果数据已近传输完成,发送方需要发送 EOT 信号,来结束数据传输。
- 通过设备串口进行位流或 MCU 程序代码自更新;
- 自定义波特率进行文件传输;
- 支持传输完成后的文件正确性校验;
- 支持小容量 RAM 的 MCU 边写边传机制;
- 支持 1024 bytes 包的 Xmodem 协议传输;
- 支持复位后直接启动和进入升级模式的选择;