Xilinx 7系列FPGA的配置流程

news2024/9/21 0:27:08

目录

1.4配置流程

1.4.1  设备上电

​编辑1.4.2  清除配置寄存器

1.4.3  采样模式引脚

1.4.4  同步

​编辑1.4.5  检测设备ID

​编辑1.4.6  加载配置数据

1.4.7  CRC校验

1.4.8  启动序列


1.4配置流程


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

1.4.1  设备上电

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


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


FPGA在设备启动阶段的时序关系:


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

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

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


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

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

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


1.4.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拉高再进行配置。

1.4.3  采样模式引脚

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

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

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

1.4.4  同步


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

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

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


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


1.4.5  检测设备ID

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

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


1.4.6  加载配置数据

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

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

1.4.7  CRC校验

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

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

1.4.8  启动序列

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


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

       默认情况下,启动顺序:


与启动相关的信号:


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


从上图可以看出:

       FPGA最后的Startup过程有8个周期,其中DONE变高仅仅是第4个周期。因此,在DONE变高之后还需要再给3个CCLK。否则DONE虽然变高了,FPGA程序并没有正确运行。

ISE会在设计中搜索用户是否使用了DCI,如果是,FPGA会使用2个周期的Start UpPhase,等待DCI匹配上。即FPGA会在那儿等待,直到DCI匹配上。如果我们在上位机读取了配置文件,获得了文件大小,我们把它写到负责加载FPGA的Flash里,然后CCLK时钟就不给了。这就产生问题,因为DCI匹配需要时间,我们的问题就是,过了一段时间,DCI匹配完毕了,但是CCLK却没有了,因此FPGA一直处在Start UP的前2个Phase上,不会到DONE。导致无法配置成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1513004.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高速USB3.0接口控制器芯片--T630

T630芯片是方寸微电子自主研发的USB3.0超高速控制器,具有功能丰富、性能强劲、扩展性强等特点,可广泛应用于视频采集卡、视频会议摄像头、监控摄像头、数字摄录机、工业照相机、测量和测试设备、医疗成像设备、打印机、扫描仪、指纹采集终端等众多电子产…

记事小本本

记事小本本 实现效果 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…

TRANSCEIVER 中的LPM和DFE模块

接收端都使用了通信中常用的LPM和DFE 本质上是高通滤波器&#xff0c;一个是单项被动&#xff0c;而常用的DFE用 了反馈。参见这篇不错的文章。 赛灵思7系列FPGA GT收发器中的RX均衡器_lpm和dfe-CSDN博客

C#,T检验(T -Test)的算法与源代码

1 T-Test 学生t检验(英语:Students t-test)是指虚无假设成立时的任一检定统计有学生t-分布的统计假说检定,属于母数统计。学生t检验常作为检验一群来自正态分配母体的独立样本之期望值的是否为某一实数,或是二群来自正态分配母体的独立样本之期望值的差是否为某一实数。举…

Android自定义view从入门到高级

简介 什么是自定义view&#xff1f;我认为只要不是编译器直接提供可以使用的view&#xff0c;都可以认为是自定义view。自定义view主要分为两大类&#xff0c;第一类自定义view可以通过系统提供的各种view组合&#xff0c;样式变化实现的view。第二类是通过继承view或者ViewGro…

​高山 MPV 四驱旗舰版:新能源时代的豪华出行新选择

随着新能源技术的不断进步和消费者对高端出行体验的追求&#xff0c;MPV&#xff08;Multi-Purpose Vehicle&#xff0c;多用途车&#xff09;市场迎来了新的发展机遇。 长城汽车旗下的魏牌&#xff0c;凭借其在新能源领域的深厚技术积累&#xff0c;推出了全新的高山MPV四驱旗…

用通俗易懂的方式讲解:大模型 Rerank 模型部署及使用技巧总结

Rerank 在 RAG&#xff08;Retrieval-Augmented Generation&#xff09;过程中扮演了一个非常重要的角色&#xff0c;普通的 RAG 可能会检索到大量的文档&#xff0c;但这些文档可能并不是所有的都跟问题相关&#xff0c;而 Rerank 可以对文档进行重新排序和筛选&#xff0c;让…

【Python 5】----Pytest接口自动化(实现基础的测试框架)

安装准备 安装好pytest的环境及allure环境 1. 安装pytest pip insatll pytest2.安装allure (需要确保安装了jdk环境&#xff09;安装allure命令行&#xff1a; 访问allure官网&#xff0c;下载allure2.13.5的安装包&#xff0c;将其bin路径 添加进环境变量path中在cmd里面…

flutter选择国家或地区的电话号码区号

1.国家区号列表&#xff08;带字母索引侧边栏&#xff09; import package:generated/l10n.dart; import package:widget/login/area_index_bar_widget.dart; import package:flutter/material.dart; import package:flutter_screenutil/flutter_screenutil.dart;class LoginA…

位图、布隆过滤器

普通的哈希表增删查改的效率的确达到了令人满意的O&#xff08;1&#xff09;&#xff0c;但是本质还是以空间换时间来实现的。并且哈希表中是直接存储数据的&#xff0c;应对一些海量数据处理的问题可能就会造成空间不足的问题。 加入现有40亿个无符号整形数字&#xff0c;设…

RPC基础知识回顾

RPC基础知识回顾 1、先认识一下大家熟悉的HTTP 大家都了解HTTP吧。相信项目中也用过一些。 比如: JDK自带的老旧的HttpURLConnection&#xff0c;封装写的很累,java8之前基于HTTP1.0。在java9开始支持Http2.0Spring的其中RestTemplate都是基于HTTP/1.1的请求。最新的还有Sp…

SpringCloudEureka理论与入门

文章目录 1. 前置工作1.1 搭建 user-server1.1.1 pom1.1.2 po&#xff0c;mapper&#xff0c;controller1.1.3 yml1.1.4 启动类1.1.5 启动并访问 1.2 搭建 order-server1.2.1 pom1.2.2 po mapper controller1.2.3 yml1.2.4 启动类1.2.5 启动并访问 1.3 两个服务通信 2. Eureka2…

当HR问你:“对于你申请的这个岗位,你觉得你欠缺什么?”【文章底部添加进大学生就业交流群】

当HR问这个问题时&#xff0c;你可以展示自我认识和诚实&#xff0c;同时展现你对自己的积极态度和学习能力。以下是一个可能的回答示例&#xff1a; "对于我申请的这个岗位&#xff0c;我认为我可能欠缺一些行业特定的经验。虽然我在相关领域有一定的工作经验和技能&…

H5 网课宣传引导跳转微信单页源码

源码名称&#xff1a;网课宣传引导跳转微信单页 源码介绍&#xff1a;一款网课销售宣传单页源码&#xff0c;源码支持一键复制微信号并跳转打开微信功能。 需求环境&#xff1a;H5 提示&#xff1a;源码仅支持复制微信和跳转打开微信&#xff0c;客户需自行贴贴搜索添加好友…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的石头剪刀布手势识别系统详解(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;本篇博客深入探讨了使用深度学习技术开发石头剪刀布手势识别系统的过程&#xff0c;并分享了完整代码。该系统利用先进的YOLOv8、YOLOv7、YOLOv6、YOLOv5算法&#xff0c;并对这几个版本进行性能对比&#xff0c;如mAP、F1 Score等关键指标。文章详细阐述了YOL…

【漏洞复现】网康科技 NS-ASG 应用安全网关 SQL注入漏洞(CVE-2024-2330)

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

碳实践 | 基于“界、源、算、质、查”五步法,实现企业组织碳核算

碳排放核算是夯实碳排放统计的基础&#xff0c;提高碳排放数据质量的关键&#xff0c;同时&#xff0c;将推动能耗“双控”向碳排放“双控”转变。总体来看&#xff0c;碳核算分为区域层面、组织层面和产品层面的碳核算&#xff0c;这三个层面的意义和计算方法完全不同。本文将…

SingleSpa微前端基本使用以及原理

先说说singleSpa的缺点 不够灵活 不能动态加载css文件css不隔离没有js沙箱的机制 ( 没有全局对象 每次切换的应用 都是同一个window ) 但是刚刚接触微前端 可以了解一下微前端的基础使用 qiankun微前端框架已经很成熟 也是基于singleSpa来实现的 点击跳转qiankun的基础使用 大…

6.同步异步、正则表达式

JS执行机制 js的特点&#xff1a;单线程&#xff0c;同一时间只能做一件事 可以通过多核CPU解决这个问题&#xff0c;允许js脚本创建多个线程&#xff0c;于是js出现了同步和异步 同步 程序执行的时候按照顺序依次执行 异步 程序执行的时候&#xff0c;会跳过某个步骤继续…

装饰者模式-C#实现

可以使用装饰者模式来动态地给一个对象添加额外的职责。 装饰者模式以对客户透明的方式动态地给一个对象附加上更多的责任&#xff0c;装饰者模式相比生成子类可以更灵活地增加功能。 在装饰者模式中各个角色有&#xff1a; 抽象构件&#xff08;Phone&#xff09;角色&#…