FPGA自己给自己复位的可行性分析

一、嵌入式Flash

Pango Compact系列CPLD拥有一块片上非易失存储单元——嵌入式Flash。在配置方面, 为提高配置效率和节约外围电路带来极大的优势。嵌入式 Flash 是 Compact 系列 CPLD 的重 要组成部分,主要介绍嵌入式 Flash 的存储结构信息,以及其中极为重要的存储内容— —特征控制位的具体描述。

嵌入式 Flash 通过状态寄存器中的[21:18]位指示状态。当进行嵌入式 Flash 读写操作时, 除了读 UID 之外,均需确保嵌入式 Flash 处于唤醒且空闲状态,即位[21]busy 为 0,位[19]wake 为 1,位[18]sleep 为 0。

位[21]busy 指示操作是否完成,不完整的操作会导致 busy 一直为高,此时只能通过重新 上电来复位 busy 位。常见的不完整操作主要有读写嵌入式 Flash 时未完整读写一页,特别当 写位流最后一页时,不足一页也应填充全 0 或全 1 至页完整。

嵌入式 Flash 的普通存储器还支持锁定功能,用户可通过软件或其他接口指令,指定锁 定结束页。锁定之后,第 0 页到该指定页(含)之间的内容无法读写,只有完整擦除普通存 储器空间,才能解锁。锁定状态不影响 CCS 从嵌入式 Flash 中获取位流。

存储结构

嵌入式 Flash 由普通存储器和监管存储器组成。用于存储包括特征控制位、UID、位流以 及普通用户数据,存储位置见下表。

在这里插入图片描述

Compact 系列 CPLD 不同器件的嵌入式 Flash 的普通存储器的存储存储空间不同,如下表 所示:

在这里插入图片描述

普通存储器可用于存储位流和用户数据,存储用户数据时,需考虑不覆盖位流。可参考 各器件的位流所占页数。

在这里插入图片描述

特征控制位

存储于嵌入式 Flash 的特征控制位,决定了 CPLD 具体使用的配置模式、不同配置模式 的功能设置以及配置复用引脚的保留设置。

用户可以通过设置不同的特征控制位来选择 CPLD 器件的配置模式。

CPLD 器件支持 JTAG、从 SPI、从 I 2C 以及内部 APB 接口访问嵌入式 Flash 中的特征控 制位寄存器,从而改变特征控制位。用户也可通过 PDS 软件中的 Fabric Configuration 插件来 进行修改,具体操作过程请参照《Fabric Configuration User Guide》。

CPLD 器件会在初始化过程从嵌入式 Flash 中读取特征控制位,然后根据特征控制位选择 配置模式,使能或禁止某些配置接口。因此,通过 JTAG、从 SPI、从 I 2C 以及内部 APB 接口 更新特征控制位后,**需要通过指令复位、外部 RSTN 管脚复位(需使能或保留该引脚)或重 新上电,使 CPLD 器件重新读取并生效更新后的特征控制位。**以上几种配置接口均支持复位 指令,具体指令见配置模式描述。

对于 4K/7K/10K 器件,32 位特征控制位组成 1 个特征控制组 CTL,每个特征控制位描述 如下所示。

在这里插入图片描述

二、配置

紫光同创Compact 系列 CPLD 是基于 SRAM 的可编程逻辑器件,芯片内部包含一块嵌入式 Flash, 可实现位流从芯片内部自主加载。由于 CPLD 器件掉电后 SRAM 中的配置信息将会丢失,因 此每次上电需要重新对 CPLD 进行配置。

配置(Configuration)是把用户设计的位流写入 CPLD 内部的过程,而整个配置过程是 由配置控制系统(CCS)来完成的,其结构图如图 1-1 所示,其中用户逻辑通过 APB 总线连 接 7 个从设备。位流可以由芯片主动从外部 SPI Flash 或嵌入式 Flash 中获取,也可通过外部 处理器/控制器等主设备将位流下载到芯片中。

在这里插入图片描述

CPLD 器件有 5 种配置模式,具体情况如下所示:

 JTAG 模式,数据位宽 X1,符合 IEEE 1149.1 和 IEEE 1532 标准,支持配置和重配置 普通/压缩位流,支持回读普通/压缩位流

 主自加载模式,支持配置普通位流、压缩位流

 主 SPI 模式,数据位宽 X1,支持配置普通位流、压缩位流

 从 SPI 模式,数据位宽 X1,支持配置和重配置普通位流、压缩位流  从 I 2C 模式,数据位宽 X1,支持配置和重配置普通位流、压缩位流

 此外, CPLD 器件还提供以下功能:

 支持在线调试和边界扫描测试

 看门狗,支持配置时间超时检测

 支持双启动,支持所有 5 种配置模式的应用位流版本回退

 用户逻辑接口,JTAG 用户指令接口(SCANCHAIN)、UID 接口、功耗控制器、用户 唤醒接口(START)、内部从 APB 接口、回读 CRC

 嵌入式硬核,包括 1 个 SPI、2 个 I 2C、1 个定时器

配置过程

对于所有的配置接口,基本的配置步骤是相同的,包括建立,位流加载以及唤醒。CPLD 器件的配置的具体过程,如下表所示。

在这里插入图片描述

CPLD 器件的上电配置时序如下图所示。

在这里插入图片描述

配置三大过程:

1、建立

建立完成 CPLD 器件初始化和配置模式确定的操作,包括器件上电、器件初始化和配置 模式选择。

器件上电

器件上电过程由内部 POR_N 信号来标识,当 POR_N 信号由低变高,表示内核电源 VCCCORE 已经达到了上电复位电路的启动阈值 VPUP。 器件上电后,嵌入式 Flash 开始正常工作,然后配置控制系统上电复位释放,配置控制 系统开始工作。

器件初始化

配置控制系统开始工作后,首先进行器件初始化操作。

器件初始化完成两个操作:清空配置存储器,嵌入式 Flash 上电,校准和调整,读特征 控制位,读 UID,读嵌入式 Flash 锁定标识。

进入器件初始化过程后,配置控制系统开始逐帧清空配置存储器,清空配置存储器完成 后,初始化完成标志信号 INIT_FLAG_N 变高。

清空配置存储器的同时,配置控制系统对嵌入式 Flash 上电,校准和调整,读特征控制 位,读 UID,读嵌入式 Flash 锁定标识。

可以通过维持外部的 INIT_FLAG_N 管脚为低电平,来维持配置控制系统继续处于器件 初始化过程。

当硬复位,JTAG 指令复位,从 SPI 指令复位,从 I 2C 指令复位,版本回退中的一种功能 触发时,配置控制系统进入器件初始化过程。

配置模式选择

当 INIT_FLAG_N 信号为高后,CCS (配置管理系统)根据特征控制位,选择复用管脚的配置功能。

2、位流加载

不同配置模式具有不同配置接口。配置模式选择完成后,相应的模式所对应的管脚被设 置为配置管脚。

同步

同步字 0x01332D94 用于 32 位字边界对齐。同步后,才能进行后续解帧操作。 当接收到正确的同步字后,配置控制系统才认为数据是有效数据,配置控制系统的包处 理器才进行解包操作。任何在同步字之前的数据都将被忽略。

复位CRC

复位 CRC 寄存器。

CRC 检查采用 32 位 CRC 算法,在唤醒操作之前进行。配置数据写入寄存器时,5 位寄 存器地址在高位,32 位数据在低位,连接成 37 位数据,做一次 CRC 计算。

CRC 检查在写入 CRC 寄存器数据后进行。如果写入 CRC 寄存器的数据和计算的 CRC 结果不一致,INIT_FLAG_N 信号拉低,同时 STATUSR 寄存器的 CRC 错误位置高。

器件标识检查

检查位流中的器件标识是否与硬件匹配,如果不匹配,INIT_FLAG_N 信号变低,ID 错 误标志存入状态寄存器,跳出配置过程。

加载前选项设置

加载配置数据前,可通过 PDS 界面指定器件的工作状态: 看门狗设置 设置是否保留复用的配置端口在配置完成后继续作为配置端口使用 唤醒时钟选择 唤醒时是否等待 PLL 主模式时钟频率设定

加载配置数据

将配置数据帧写入配置存储器

加载后 CRC 检查

配置数据加载完成后,进行 CRC 校验。软件生成的 CRC 值存放在 CRC 寄存器中,与 CCS 计算的 CRC 值进行比较。如果两个值一致,表示 CRC 检查通过,所有配置信息正确写 入了配置存储器中。如果两个值不一致,表示 CRC 检查不通过,那么 INIT_FLAG_N 信号变 为低,CRC 错误标志存入状态寄存器。

加载后选项设置

配置数据加载完成后,在配置寄存器中指定器件的工作状态: 设置是否允许用户逻辑关断 OSC 外部端口安全级别设置

3、唤醒

位流加载完毕并通过 CRC 后, CPLD 器件进入唤醒阶段。配置系统先使能 CPLD 器件 内部所有功能模块的逻辑输出。唤醒前再次 CRC 校验,然后进行去同步操作,表示配置操作 结束,后续操作需要重新同步。最后完成唤醒,逐步释放相应的全局信号。

全局逻辑使能

加载后 CRC 检查通过后,使能 fabric 内部所有功能模块的逻辑输出。

唤醒启动

全局逻辑使能后,启动唤醒操作。

唤醒前 CRC 检查

唤醒操作执行前,进行 CRC 校验。软件生成的 CRC 值存放在 CRC 寄存器中,与 CCS 计算的 CRC 值进行比较。如果两个值一致,表示 CRC 检查通过,唤醒前准备工作完成。如 果两个值不一致,表示 CRC 检查不同过,那么 INIT_FLAG_N 信号变为低,CRC 错误标志存 入状态寄存器。

去同步

表示配置过程结束。后续操作需要重新同步。

唤醒

去同步完成后,唤醒电路按照设定的时序开始工作,逐步释放相应的全局信号,最终进 入用户模式

三、FPGA自复位方案

方案一:用自己的GPIO脚给自己的硬件复位脚(RSTN)拉低复位(需设置特征控制位保留RSTN引脚)

专用复位IO:

在这里插入图片描述

手册上的RSTN引脚定义说明

在这里插入图片描述

手册上的复位引脚编号

专用配置复位IO默认外部用电阻上拉,当该管脚为低电平时,FPGA进入复位状态,所有的IO脚处于弱下拉

普通用户I/O

在这里插入图片描述

可以确定,上电复位器件,普通I/O都为低电平,完成上电复位但未配置时,普通IO为下拉,配置期间,普通用户IO为下拉。

会出现问题:

如果CPLD的普通IO和专用复位IO相连接,让普通IO去控制复位IO(即CPLD普通IO输出低电平让CPLD的RSTN做复位),那么RSTN由于在上电过程中处于弱下拉状态,会导致RSTN一直处于低电平复位状态,导致CPLD无法进入器件初始化状态。成为砖头。

方案二:通过紫光FPGA内部的APB进行复位

使用APB写复位命令对CPLD复位

从APB总线去控制复位,只要写RESET命令到命令寄存器就可以了。

内部从APB操作流程

在这里插入图片描述

经过验证,也是成功的实现复位。

四、三个问题

1、CPLD的配置过程是什么样的?

2、通过内部APB进行复位的流程是什么?

砖头。

方案二:通过紫光FPGA内部的APB进行复位

使用APB写复位命令对CPLD复位

从APB总线去控制复位,只要写RESET命令到命令寄存器就可以了。

内部从APB操作流程

[外链图片转存中…(img-2MV7hjBH-1725435130600)]

经过验证,也是成功的实现复位。

四、三个问题

1、CPLD的配置过程是什么样的?

2、通过内部APB进行复位的流程是什么?

3、为什么方案一不能实现(用自己的GPIO脚去操控自己复位)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值