xilinx 7系列fpga上电配置

2024-04-08 06:36
文章标签 配置 系列 fpga xilinx 上电

本文主要是介绍xilinx 7系列fpga上电配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前言

Xilinx FPGA通过加载比特流到内部存储单元来进行配置。

Xilinx FPGA存在两种数据配置路径,一种是满足最小引脚需求的串行路径,一种是可用8位、16位或32位来连接到行业的高性能通用接口,如处理器,8位或者16位并行的闪存。与处理器和处理器外围设备一样, FPGA可以在系统中按需无限次重新编程。

由于Xilinx FPGA 配置数据存储在 CMOS 配置锁存器 (CCL) 中,因此必须在断电后重新配置。比特流每次都通过特殊的配置引脚加载到器件中。常用的配置模式可以分为:

通过在输入引脚M[2:0]专用模式上设置适当的级别来选择特定的配置模式。M2、M1和M0模式引脚应通过上拉或下拉电阻(≤1kΩ),或直接连接到地或VCCO_0l来设置在恒定的DC电压电平,并且引脚不应在配置期间和配置之后变化。

此外,如果M[2:0]为101,则该FPGA只支持JTAG进行配置。处于其余配置模式下时,依旧可以使用JTAG模式进行调试,并且优先级最高。

主和从的概念于配置时钟(configuration clock,CCLK)的方向有关:

  • 在主配置模式下,7系列设备通过内部振荡器驱动CCLK。要选择所需的频率,使用比特流-g ConfigRate选项,具体可以参考UG628(ISE命令行工具用户指南)的BitGen部分和UG908 (Vivado编程和调试用户指南)的“设备配置比特流设置”部分。配置后,除非选择了持久选项或使用了SEU检测,否则CCLK将关闭。CCLK引脚为三态,上拉较弱。
  • 在从配置模式中,CCLK是一个输入。

FPGA 自加载配置模式,通常称为主模式,可用于串行或并行数据路径。主模式利用各种类型的非易失性存储器(如Flash、EEPROM等)来存储 FPGA 的配置信息。 FPGA 在驱动配置逻辑的内部振荡器中生成配置时钟信号,并在 CCLK 输出引脚上可见。

外部控制加载 FPGA 配置模式,通常称为从模式,也可用于串行或并行数据路径。在从模式下,处理器、微控制器、DSP 处理器或测试仪等外部“智能代理”将配置映像下载到 FPGA 中,从配置模式的优势在于 FPGA 比特流几乎可以驻留在整个系统中的任何位置。从串行模式非常简单,仅由时钟和串行数据输入组成。JTAG模式也是一种简单的串行配置模式,流行于原型设计,并高度用于板测试。Slave SelectMAP模式是一个简单的8位、16位或32位宽处理器外围接口,包括芯片选择输入和读/写控制输入。

二、FPGA 配置

一般必然存在的JTAG调试模式,另外使用较多的是主SPI模式和从串行配置模式,其余并行配置模式由于消耗引脚较多,一般不会使用,与这几种串行模式的区别仅在于数据引脚的区别。

2.1 配置信号

每个配置模式都有一组对应的接口引脚,这些引脚跨越7系列FPGA上的一个或多个I/O bank。bank 0包含专用配置引脚,并且始终是每个配置接口的一部分。bank 14 和 bank15包含涉及特定配置模式的多功能引脚。7系列FPGA数据表规定了在3.3V、2.5V、1.8V或1.5V下工作的bank中配置引脚的开关特性。

所有JTAG和专用配置引脚都位于一个单独的专用bank中,该bank具有专用电压电源(VCCO_0)。多功能配置针脚位于bank 14和15中。

CFGBVS(Configuration Banks Voltage Select)

CFGBVS决定专用配置bank0、bank14和bank15中多功能配置引脚的I/O电压操作范围。CFGBVS总是控制7系列FPGA的bank0电压,仅在配置期间控制bank14和bank15的电压。如果为bank0的VCCO_0电源提供2.5V或3.3V,则CFGBVS引脚必须连接为高电平(比如连接到VCCO_ 0)。仅当bank0的VCCO_0小于或等于1.8V,将CFGBVS连接到低电平(比如连接到GND)。在配置过程中,bank14和bank 15的电压应与施加到bank0的VCCO电平相匹配。

PROGRAM_B(program bar)

PROGRAM_B拉低(下降沿)时复位配置逻辑,PROGRAM_B低脉冲(下降沿)可以清除FPGA内部的所有配置信息,并初始化新的配置序列。注意在上电时把PROGRAM_B 保持为低电平不会使 FPGA 配置保持复位状态,延迟配置的时间需要使用INIT_B信号配合完成。PROGRAM_B 引脚外部需要通过小于等于4.7KΩ的电阻上拉至VCCO_0来确保稳定的高电平输入,推荐连接到GND来使能配置复位。

INIT_B(initialization bar)

低电平有效。当 FPGA 处于配置复位状态、FPGA 正在初始化(清除)其配置存储器或 FPGA 检测到配置错误时,FPGA 将该引脚驱动为低电平。

完成 FPGA 初始化过程后,INIT_B 被释放到高阻态,此时外部电阻器应将 INIT_B 拉高(将 INIT_B 连接到一个 ≤ 4.7 kΩ 的上拉电阻到VCCO_0)。当初始化过程完成后在 INIT_B 输入检测到高电平时,FPGA 继续执行由 M[2:0] 引脚设置指示的配置序列的其余部分。

Done

该信号高电平表示FPGA配置序列完成,默认情况下,该引脚为开漏输出,内部有一个大约10KΩ的上拉电阻,外部只需要通过一个330Ω的电阻上拉即可。

2.2 配置流程

配置流程包含三个大步骤(建立,加载程序,初始化启动),分为8个小步骤

对于所有配置模式,7系列的基本配置流程都是相同的,主要可以分为三个大块:设备启动,数据流加载,启动序列。

后面内容来源于:

谁说配置难?这篇文章让你轻松掌握xilinx 7系列FPGA配置技巧 - 知乎 (zhihu.com)

1.设备上电

配置流程的第一步自然是设备上电,这里也就解释了为何固化程序后需要下电再上电才能生效。配置涉及到的电源如下:

VCCO_0以及VCCO_14、VCCO_15在前文已经提及,其他的电源需要参照对应的数据手册推荐值进行配置,例如K7对应手册【DS182】:

FPGA在设备启动阶段(流程1-3)的时序关系:

TPOR :Power-on Reset (POR) ;TICCK :CCLK Output Delay

FPGA上电启动后电压达到VCCO后在10~50ms后INIT_B信号拉高,初始化完成,FPGA开始加载配置工作。

上电后可以通过拉低将 PROGRAM_B 引脚切换为低电平来重新配置器件:

INIT_B 在初始化期间被内部驱动为低电平,然后在上电情况下(第一次上电配置)在TPOR(图 5‑4)之后释放,在其他情况下(触发退回或者重配置等)在TPL之后释放。如果 INIT_B 引脚在外部保持低电平,则器件在初始化过程中的这一点等待,直到该引脚被释放,并且需要满足TPOR或TPL延迟。

FPGA上电第一次加载与PROGRAM_B没有关系,只要达到延迟时间,FPGA就会初始化完成,init_b信号拉高,直接进入配置数据过程。只有第二次重新配置才使用PROGRAM_B。

图中的时间参数可以在对应的FPGA数据手册中查看,如K7系列对应【DS182】:

2.清除配置寄存器

在器件上电后、PROGRAM_B 引脚脉冲低电平后、使用 JTAG JPROGRAM 指令或 IPROG 命令后或在回退重试配置序列期间,配置存储器会顺序清除。在此期间:

Block RAM 被重置为其初始状态,并且触发器通过全局设置重置 (GSR) 的断言重新初始化。除少数配置输出引脚外,I/O 通过使用全局三态 (GTS) 置于 High‑Z 状态,如果 PUDC_B 为低电平,则内部上拉。

PUDC_B用于设置配置期间的上拉,低电平有效,电路上通过直连或者 ≤ 1kΩ 连接到VCCO_14或GND,禁止悬空。

清除配置寄存器发生在INIT_B为低的这个阶段。通常这个时间为3ms。

3ms的时间来自于复旦微的手册中:JFM7K325T清除配置寄存器时间为20ms,而对标产品为3ms。在从模式中推荐等待INIT_B拉高再进行配置。

3.采样模式引脚

当 INIT_B 引脚转换为高电平时,器件对模式引脚 M[2:0] 进行采样并开始驱动 CCLK(如果处于主模式)。此时,器件开始在配置时钟的上升沿对配置数据输入引脚进行采样。

对于 BPI 和 SelectMAP 模式,总线宽度最初为 x8,可以在状态寄存器查看。在总线宽度检测序列之后,状态寄存器被更新。从串行、主串行、SPI 和 JTAG 模式忽略总线宽度检测模式。

只有在通过电源循环或PROGRAM_B置位进行重新配置时,才会再次对模式引脚进行采样。

4.同步

FPGA正常数据加载前,需要做一个FPGA与配置方(如FLASH)之间的同步检查。方法是将一个特殊的 32 位同步字 (0xAA995566) 发送到FPGA。同步字会提醒FPGA即将到来的配置数据并将配置数据与内部配置逻辑对齐。

除“总线宽度自动检测”序列外,同步之前配置输入引脚上的任何数据都将被忽略。

Xilinx在生成的.bit文件中已经自动加入了这个同步字。可以进行查看:

表5-19说明了bit流的定义:

5. 检测设备ID

设备同步后,必须通过设备 ID 检查才能加载配置数据帧。这可以防止配置具有针对不同设备格式化的比特流。如果在配置期间发生 ID 错误,设备会尝试执行回退重新配置。

设备 ID 检查内置于比特流中,器件 ID 检查是通过配置逻辑的比特流中的命令执行的,而不是通过 JTAG IDCODE 寄存器。ID可以在【UG470】的表1-1中查找到,例如7K325T对应3651093,可以在.bit文件中查找到:

6.加载配置数据

在准备工作完成后,FPGA开始加载配置数据。在这个过程中,FPGA的所有可配置I/O根据HSWAPEN引脚的设置变为弱上拉(HSWAPE=1)或者高阻态(HSWAPE=0)。这个阶段的I/O引脚还没有变为用户需要的状态,也最有可能影响到其他外围电路的上电时序和运行。

设计硬件电路时要特别注意并采取必要措施,如加入上下拉电阻或改变器件加电顺序来尽量避免或减少FPGA配置时对电路其他器件的影响。

7.CRC校验

加载配置数据帧时,器件会根据配置数据包计算循环冗余校验 (CRC) 值。加载配置数据帧后,配置比特流可以向设备发出校验 CRC指令,然后是预期的 CRC 值。如果设备计算的 CRC 值与比特流中的预期 CRC 值不匹配,则设备将 INIT_B 拉低并中止配置,此时用户必须把PROG-B引脚拉低,才能进行重新配置。

默认情况下,CRC 校验包含在配置比特流中,如果禁用 CRC 检查,则存在加载错误配置数据帧的风险,从而导致错误的设计行 为或损坏器件。

8.启动序列

加载配置帧后,FPGA不会马上执行用户的逻辑,比特流指示设备进入启动序列。启动顺序由 8 阶段(阶段 0‑7)顺序状态机控制。用户可以选择每个启动事件的特定阶段(见【UG628】):

可以强制启动序列等待 MMCM 锁定或等待 DCI 与适当的选项匹配。这些选项通常设置为在 MMCM 锁定和/或 DCI 匹配之前防止 DONE、GTS 和 GWE 被断言(防止设备操作)。

默认情况下,启动顺序:

与启动相关的信号:

信号名称描述
DONE表示配置完成。可以在外部保持低电平以与其他 FPGA 同步启动。
Release_DONE指示设备是否已停止将 DONE 引脚驱动为低电平。如果引脚在外部保持为低电平,Release_DONE 可能与 DONE 引脚上的实际值不同。
GWE全局写使能 (GWE)。置位后,GWE 启用 CLB 和 IOB 触发器以及FPGA 上的其他同步元件。
GTS全局三态 (GTS)。置位后,GTS 禁用所有 I/O 驱动程序,除了少数配置管脚。
EOS启动结束 (EOS)。 EOS 表示配置和启动过程的绝对结束。
DCI_MATCH指示所有数控阻抗 (DCI) 控制器何时将其内部电阻器与外部参考电阻器匹配。
MMCM_LOCK指示所有时钟管理块何时就绪。该信号默认置位。如果在MMCM 上使用了 LOCK_WAIT 选项并且在生成比特流时使用了LockCycle 选项,则它处于活动状态。

DONE信号可通过DONE 引脚或7 系列FPGA状态寄存器获取,其余只能通过7 系列FPGA状态寄存器获取。对应的信号时序如下:

这篇关于xilinx 7系列fpga上电配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/884821

相关文章

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

MyBatis的配置对象Configuration作用及说明

《MyBatis的配置对象Configuration作用及说明》MyBatis的Configuration对象是MyBatis的核心配置对象,它包含了MyBatis运行时所需的几乎所有配置信息,这个对... 目录MyBATis配置对象Configuration作用Configuration 对象的主要作用C

IDEA与JDK、Maven安装配置完整步骤解析

《IDEA与JDK、Maven安装配置完整步骤解析》:本文主要介绍如何安装和配置IDE(IntelliJIDEA),包括IDE的安装步骤、JDK的下载与配置、Maven的安装与配置,以及如何在I... 目录1. IDE安装步骤2.配置操作步骤3. JDK配置下载JDK配置JDK环境变量4. Maven配置下

Springboot的自动配置是什么及注意事项

《Springboot的自动配置是什么及注意事项》SpringBoot的自动配置(Auto-configuration)是指框架根据项目的依赖和应用程序的环境自动配置Spring应用上下文中的Bean... 目录核心概念:自动配置的关键特点:自动配置工作原理:示例:需要注意的点1.默认配置可能不适合所有场景

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

Keepalived+Nginx双机配置小结

《Keepalived+Nginx双机配置小结》本文主要介绍了Keepalived+Nginx双机配置小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1.1 软硬件要求1.2 部署前服务器配置调优1.3 Nginx+Keepalived部署1.3

Apache伪静态(Rewrite).htaccess文件详解与配置技巧

《Apache伪静态(Rewrite).htaccess文件详解与配置技巧》Apache伪静态(Rewrite).htaccess是一个纯文本文件,它里面存放着Apache服务器配置相关的指令,主要的... 一、.htAccess的基本作用.htaccess是一个纯文本文件,它里面存放着Apache服务器

nginx配置多域名共用服务器80端口

《nginx配置多域名共用服务器80端口》本文主要介绍了配置Nginx.conf文件,使得同一台服务器上的服务程序能够根据域名分发到相应的端口进行处理,从而实现用户通过abc.com或xyz.com直... 多个域名,比如两个域名,这两个域名其实共用一台服务器(意味着域名解析到同一个IP),一个域名为abc

nginx生成自签名SSL证书配置HTTPS的实现

《nginx生成自签名SSL证书配置HTTPS的实现》本文主要介绍在Nginx中生成自签名SSL证书并配置HTTPS,包括安装Nginx、创建证书、配置证书以及测试访问,具有一定的参考价值,感兴趣的可... 目录一、安装nginx二、创建证书三、配置证书并验证四、测试一、安装nginxnginx必须有"-

springboot rocketmq配置生产者和消息者的步骤

《springbootrocketmq配置生产者和消息者的步骤》本文介绍了如何在SpringBoot中集成RocketMQ,包括添加依赖、配置application.yml、创建生产者和消费者,并展... 目录1. 添加依赖2. 配置application.yml3. 创建生产者4. 创建消费者5. 使用在