Xilinx FPGA上电和配置

Xilinx FPGA上电和配置

Xilinx FPGA上电和配置

ZYNQ7000系列上电和配置

引脚说明

1、INIT_B(初始化完成)——PL BANK0

  • 开漏输出引脚,外部通常通过电阻上拉至BANK0电压3.3V
  • 低电平表示器件正在进行初始化
  • 高电平表示初始化完成,可以开始配置

2、PROGRAM_B(配置启动)——PL BANK0

  • 输入引脚(有内部上拉),外部通常通过电阻上拉至BANK0电压3.3V
  • 低电平有效,强制器件重新配置
  • 上电时保持低电平会延迟配置过程

3、CFGBVS(配置电压选择)——PL BANK0

  • 输入引脚,外部不接电阻直接接3.3V或2.5V
  • 决定配置接口的电压标准(3.3V或2.5V)
  • 必须根据VCCO_MIO0电压正确设置

4、DONE(配置完成)——PL BANK0

  • 开漏双向引脚,外部通过470欧电阻上拉至BANK0电压3.3V
  • 配置完成后变高电平
  • 也用于多器件配置的菊花链控制

5、PUDC_B——PL BANK34

  • 输入引脚
  • 低有效,配置上拉控制:决定在配置过程中,未使用的I/O引脚是否使能内部上拉电阻
  • 通常在配置期间保持固定电平。接低电平时,使能内部上拉电阻;接高电平时,禁止内部上拉

6、PS_POR_B(处理系统上电复位)——PS BANK500

  • 输入引脚
  • 处理系统(PS)的全局复位信号
  • 低电平有效,复位整个PS

7、PS_SRST_B(处理系统软复位)——PS BANK501

  • 输入引脚
  • PS的软复位信号
  • 仅复位PS部分,不影响PL配置

PS_SRST_B和PS_POR_B区别

在ZYNQ-7000系列SoC中,PS_SRST_B 和 PS_POR_B 是两种不同的复位信号,它们在系统复位过程中扮演不同的角色。

在这里插入图片描述

PS_POR_B(Power-On Reset)

  • 作用:
    • 电源上电复位信号,属于全局硬件复位。
    • 当芯片上电或电源电压跌落到阈值以下时,该信号会被触发,强制整个PS(Processing System)进入初始状态。
    • 复位过程会初始化所有PS内部的寄存器、存储器和逻辑单元,确保系统从一个已知的稳定状态启动。
  • 触发条件:
    • 电源上电或电源电压异常(如欠压)。
    • 通常由硬件电路(如电源管理芯片或监控电路)产生。
  • 特点:
    • 属于非屏蔽复位,优先级最高,无法通过软件忽略或中止。
    • 复位期间,整个PS(包括CPU、外设、时钟等)完全重启。

PS_SRST_B(System Reset)

  • 作用:
    • 系统复位信号,属于局部或条件复位。
    • 用于在系统运行过程中强制重启PS(但可能保留部分配置或状态)。
    • 通常由软件触发(如看门狗超时、软件请求复位)或外部硬件事件(如按键复位)引发。
  • 触发条件:
    • 看门狗定时器超时。
    • 软件写入系统复位控制寄存器(例如通过SLCR寄存器)。
    • 外部硬件信号(如用户按下复位按钮)。
  • 特点:
    • 复位范围可能可配置(例如仅复位CPU而不影响外设)。
    • 可通过软件干预(如禁用看门狗)避免不必要的复位。

PS_POR_B和PS_SRST_B拉低的具体影响

PS_POR_B 被拉低的详细硬件影响

当PS_POR_B信号被拉低(有效)时,会触发一个冷复位 流程。其硬件影响如下:

  • 全局复位触发:
    • 整个PS(Processing System)的所有逻辑被强制进入复位状态。这包括所有CPU核心(Cortex-A9)、所有外设(如USB、SDIO、GPIO等)、存储器控制器、互联总线和配置寄存器。
  • 电源和时钟域的初始化:
    • 电源上电序列会被重新执行。芯片内部的电源管理单元会确保各个电源域按正确的顺序上电。
    • 时钟生成模块被复位。PLL(锁相环)被禁用并重置,系统回退到最基础的安全时钟(例如,由外部晶振直接提供的时钟)。在PS_POR_B释放后,PLL需要重新锁定,时钟网络需要重新配置。
  • 存储器控制器和存储单元的清除:
    • OCM(On-Chip Memory)和Cache(L1, L2)的内容被清除,变为未定义状态。
    • 存储器控制器(DDR)被完全复位,任何之前的DDR配置都会丢失。PS_POR_B释放后,DDR控制器必须像上电一样被重新初始化,DDR内存才能被访问。
  • 熔丝和密钥的重新加载:
    • 芯片的安全启动相关电路被复位。如果启用了安全功能,与安全相关的密钥和配置(如从eFUSE中读取的信息)会在这个阶段被重新加载到相应的安全模块中。
  • 启动流程的重新开始:
    • 复位后,芯片的BootROM会无条件地重新执行。芯片将从BootROM开始,根据启动模式引脚(如MIO[5:0])的设置,重新加载First Stage Boot Loader。

简单来说,PS_POR_B拉低的效果,几乎等同于给芯片的PS部分重新上电。

PS_SRST_B 被拉低的详细硬件影响

当PS_SRST_B信号被拉低(有效)时,会触发一个热复位 或系统复位。其硬件影响如下:

  • 复位目标的可配置性:
    • PS_SRST_B的复位范围是可配置的,通过SLCR(系统级控制寄存器) 中的pss_rst_ctrl寄存器进行设置。您可以决定是复位整个PS,还是只复位CPU、或者只复位某个特定的外设。
  • 对PS系统的影响,PS_SRST_B是否会重新加载PS系统:
    • 不会重新“加载”,但会重新“执行”。
    • 关键区别: PS_SRST_B不会触发BootROM的重新执行,也不会重新初始化时钟网络(PLL保持锁定状态)、电源管理单元和存储器控制器(如DDR配置保持不变)。
    • 它的主要作用是复位处理器的执行流。当PS_SRST_B释放后,ARM Cortex-A9处理器会从复位向量地址(通常是0x00000000) 开始取指执行。这个地址在ZYNQ中默认映射到OCM或者通过存储器控制器映射到DDR。
    • 这意味着,如果你的FSBL或应用程序已经预先加载到了DDR或OCM中,并且DDR控制器配置未变,那么处理器会直接跳转到已存在的代码处开始执行。它不会像上电那样从头开始走BootROM -> FSBL的加载流程,除非你通过软件主动跳转回BootROM。
  • 保留的硬件状态:
    • 时钟和PLL: 保持之前的配置和锁定状态。
    • 存储器内容: OCM和DDR中的内容通常不会被清除(除非配置了特定的复位行为)。这对于调试和快速系统恢复非常有用。
    • 部分外设状态: 根据pss_rst_ctrl寄存器的配置,一些外设的寄存器状态可能得以保留。

简单来说,PS_SRST_B拉低更像是按下了电脑的“重启”按钮,而PS_POR_B拉低则是拔掉电源再插上。

PS_POR_B比PS_SRST_B的范围大了哪些

PS_POR_B的复位范围远比PS_SRST_B更“底层”和“全面”。具体多出的范围包括:

在这里插入图片描述

芯片启动流程(Power-On Sequence)

阶段1:电源上电与复位

1、电源稳定:

  • 所有电源轨(VCCPINT、VCCPAUX、VCC_PSDDR等)按Zynq时序要求上电。
  • 外部复位芯片保持 PS_POR_B = 0 和 PS_SRST_B = 0。

2、复位释放:

  • 电源稳定后,先释放系统复位PS_SRST_B,再释放上电复位PS_POR_B。

这时候PROGRAM_B(输入)一直高;INIT_B(开漏输出)外部拉高;DONE(开漏输出)外部拉高。

阶段2:PS(处理器系统)启动

3、BootROM执行:

  • PS读取 MIO[5:0] 引脚状态决定启动模式(QSPI, SD, JTAG等)。
  • 初始化DDR、时钟、PLL等关键外设。

4、FSBL加载:

  • 从选定设备(如QSPI Flash)加载FSBL(First Stage Bootloader)。
  • FSBL初始化PS端外设和PL配置逻辑。

这时候PROGRAM_B(输入)一直高;INIT_B(开漏输出)外部拉高;DONE(开漏输出)外部拉高。

阶段3:PL(可编程逻辑)配置

5、上电/复位后(配置开始前)

  • INIT_B:为低电平。这表示PL配置逻辑正在进行清除内部配置内存和初始化,尚未准备好接收配置数据。
  • DONE:为低电平。这表示PL配置远未完成。

上电后,PL部分开始进行配置准备。此时,INIT_B被PL内部拉低(但因为是开漏,所以需要外部上拉,实际上外部上拉会试图保持高电平,但PL在配置开始前会将其拉低),表示PL正在初始化,尚未准备好接收配置数据。

6、PL初始化完成,准备就绪

  • INIT_B:从低电平变为高电平。这是第一个关键信号,表明PL内部的配置引擎已经准备就绪,可以开始接收比特流数据了。
  • DONE:保持低电平。

当PL初始化完成(例如,清理配置内存等)后,PL会释放INIT_B,由于外部上拉,INIT_B变为高电平。这表示PL已经准备好接收配置数据。

7、比特流加载与校验,配置数据开始通过PCAP(或其他接口)加载到PL中。

  • INIT_B:保持高电平。在整个比特流通过PCAP、SPI等接口传输到PL的过程中,INIT_B 会一直保持高电平,除非发生严重错误(如CRC校验失败)才会被拉低。
  • DONE:保持低电平。

8、配置成功完成

  • INIT_B:保持高电平。
  • DONE:从低电平变为高电平。这是第二个关键信号,表示比特流已全部加载完毕,并且CRC校验成功,PL的启动序列(如设置IO、释放内部复位)也已经完成。此时,PL进入用户模式,开始正常工作。

因此,在正常的配置流程中:首先,INIT_B从低变高(表示PL准备好接收配置数据)。然后,在配置数据加载并校验通过后,DONE从低变高。所以,INIT_B先拉高,然后DONE再拉高。INIT_B 的上升沿标志着“可以开始配置”,DONE 的上升沿标志着“配置已经结束”。

但是注意:如果配置过程中出现错误,INIT_B会被拉低(表示配置错误),然后PL会尝试重新配置(如果设置了重试机制)或者需要外部干预(例如重新触发PROGRAM_B)。

总结顺序为:

  • 上电后,INIT_B为低,DONE为低。
  • PL初始化完成,INIT_B被释放,由外部上拉拉高。
  • 配置数据加载开始。
  • 配置完成且校验通过,DONE被拉高。
在这里插入图片描述

阶段4:系统运行

9、用户代码执行:

  • PS启动操作系统或裸机程序。
  • PL进入用户定义的功能状态。

为什么INIT_B和DONE拉高顺序很重要

故障诊断:这是调试PL配置失败的最重要依据。

  • INIT_B 永远不拉高:说明PL基本初始化失败。可能原因:电源不正常、PROGRAM_B 被意外拉低、时钟问题、硬件故障。
  • INIT_B 拉高后,DONE 永远不拉高:说明比特流加载过程出错。可能原因:比特流数据损坏、配置时钟不稳定、Flash读取错误、CRC校验失败。

系统设计:某些系统逻辑可能需要监控这些信号来协调PS和PL的启动顺序。例如,PS端的软件可以轮询或中断监听 DONE 引脚,确认PL已就绪后,再向PL发送指令。

MPSoc系列上电和配置

引脚说明

1、PS_INIT_B——PS BANK503

  • 开漏输出引脚,外部通常通过电阻上拉至BANK503电压3.3V
  • 低有效,用于初始化状态:控制系统初始化过程,表示配置状态
  • PL配置前为低;PL初始化完成且准备好接收配置数据时拉高;配置出错时会被拉低

2、PS_PROG_B——PS BANK503

  • 输入引脚(有内部上拉),外部通常通过电阻上拉至BANK503电压3.3V
  • 低电平有效,重配置触发:强制器件重新配置
  • 上电时若为低电平会延迟配置;正常工作时常态为高,低脉冲触发PL重新配置

3、MPSoc没有CFGBVS(配置电压选择)引脚

4、PS_DONE——PS BANK503

  • 开漏双向引脚,外部可以通过4.7k欧电阻上拉至BANK503电压3.3V
  • 高有效,配置完成标志:表示PL比特流加载成功且CRC校验通过
  • 配置过程中为低;PL比特流加载成功且CRC校验通过后拉高

5、PUDC_B——PL BANK0

  • 输入引脚
  • 低有效,配置上拉控制:决定在配置过程中,未使用的I/O引脚是否使能内部上拉电阻
  • 通常在配置期间保持固定电平。接低电平时,使能内部上拉电阻;接高电平时,禁止内部上拉

6、PS_POR_B————PS BANK503

  • 输入引脚
  • 低有效,上电复位:指示处理系统(PS)供电是否正常
  • 电源稳定后,由外部电路拉高,触发PS启动

7、PS_SRST_B——PS BANK503

  • 输入引脚
  • 低有效,系统复位:用于复位处理系统
  • PS启动后,可由用户控制产生低脉冲实现软复位

芯片启动流程(Power-On Sequence)

阶段1:电源上电与复位

  • 所有电源轨按时序要求上电。
  • 外部复位电路保持 PS_POR_B 和 PS_SRST_B 为低电平。
  • 电源稳定后,PS_POR_B 被拉高,触发PS启动。PS_SRST_B 通常同步或稍晚释放。

阶段2:PS(处理器系统)启动

  • PS读取启动模式引脚,决定从何处(如QSPI, SD卡)启动。
  • 执行BootROM代码,初始化DDR、时钟等关键外设。
  • 加载并运行FSBL(First Stage Bootloader)。
  • 此阶段,PS_PROG_B 应保持高电平,PS_INIT_B 和 PS_DONE 因外部上拉也为高。

阶段3:PL(可编程逻辑)配置

  • 配置准备:FSBL通过PCAP等接口启动PL配置。此时,PL将 PS_INIT_B 拉低,表示配置未开始。PS_DONE 为低。
  • 准备就绪:PL初始化完成,释放 PS_INIT_B,由其外部上拉电阻拉高。这表示PL已准备好接收配置数据。
  • 比特流加载:FSBL将比特流数据加载至PL。此期间 PS_INIT_B 保持高电平(除非出错),PS_DONE 保持低电平。
  • 配置完成:比特流加载并校验通过后,PS_DONE 拉高,表示PL配置成功,进入用户模式。

阶段4:系统运行

  • PS启动操作系统或裸机程序,PL执行用户定义的功能。

重要顺序与设计注意

  • 关键时序:在PL配置阶段,PS_INIT_B 会先于 PS_DONE 拉高 。PS_INIT_B 的上升沿标志"可以开始配置",PS_DONE 的上升沿标志"配置已经结束" 。掌握这个顺序对调试至关重要。
  • PUDC_B设置:根据电路需求设置PUDC_B电平。使能上拉(PUDC_B 接低)有助于避免未使用I/O引脚因浮动引入噪声;在严格限制功耗的场景,可选择禁止上拉(PUDC_B 接高)以节省功耗
  • PS_PROG_B防护:建议为PS_PROG_B引脚增加RC滤波电路,防止噪声引起意外重配置 。
  • PS_POR_B与PS_SRST_B:这两个引脚通常连接至同一可靠的复位源,以确保PS能同步或按序正确复位

故障诊断提示

  • PS_INIT_B 始终为低:PL基本初始化失败。检查电源、时钟、PS_PROG_B 引脚是否被意外拉低,或是否存在硬件故障 。
  • PS_INIT_B 已拉高,但 PS_DONE 始终为低:比特流加载过程出错。排查比特流文件是否损坏、配置时钟是否稳定、存储设备读取是否正常,或CRC校验是否失败。

ZYNQ7000系列和MPSoc的PS_POR_B和PS_SRST_B两个复位上电时序反过来的原因

ZYNQ7000系列是PS_SRST_B先拉高,MPSoc是PS_POR_B先拉高。这个“反转”是设计使然,源于两款芯片完全不同的电源管理系统和复位架构。 Zynq-7000依赖于外部监控,而MPSoC则集成了一个更智能、更复杂的内部电源管理单元。

核心区别对比

Zynq-7000系列:

  • 复位架构:相对简单,依赖外部电路
  • PS_POR_B角色:上电复位。纯粹的外部输入,指示“所有电源轨已稳定并达到安全电平”。
  • PS_SRST_B角色:系统复位。用于在电源稳定后,对PS逻辑进行复位。
  • 时序逻辑:
    • 1、电源稳定
    • 2、PS_SRST_B先释放
    • 3、PS_POR_B后释放
    • 4、BootROM开始执行
  • 根本原因:外部复位电路可以灵活定义两个复位信号的相对时序,通常设计为让系统复位先于上电复位释放,确保逻辑处于确定状态。

Zynq UltraScale+ MPSoC:

  • 复位架构:复杂,拥有集成电源管理单元
  • PS_POR_B角色:PMU 硬件触发信号。不仅是电源状态指示,更是唤醒PMU并启动整个引导过程的硬件触发信号。
  • PS_SRST_B角色:系统复位。由内部的PMU管理和控制,是PMU启动流程中的一个步骤。
  • 时序逻辑:
    • 1、电源稳定
    • 2、PS_POR_B先释放(触发PMU)
    • 3、PMU执行内部固件,进行电源序列检查等
    • 4、PMU释放PS_SRST_B
    • 5、BootROM开始执行
  • 根本原因是架构强制要求:PMU必须最先被唤醒和配置。只有PS_POR_B有效后,PMU才能开始工作,并由它来决定何时释放系统复位。

详细解释

Zynq-7000的时序:PS_SRST_B先于PS_POR_B

在Zynq-7000中,PS_POR_B 是一个纯粹的模拟监控信号。它告诉芯片:“所有电源现在已经OK了”。而 PS_SRST_B 是数字系统的复位信号。

  • 为什么PS_SRST_B先释放?
    这种时序通常由外部的复位管理芯片实现。其逻辑是:当电源稳定后,先释放系统复位(PS_SRST_B),让处理器的数字逻辑退出复位状态,但此时 PS_POR_B 仍为低,意味着芯片还被保持在“上电复位”状态,不会开始执行代码。
  • 然后释放PS_POR_B:
    当 PS_POR_B 被释放(拉高)时,它作为一个最终的“绿灯”信号,通知芯片不仅电源稳定了,而且数字逻辑也已经处于一个稳定的复位后状态,可以安全地开始执行BootROM了。

可以理解为: 先让数字逻辑“就位”(释放 PS_SRST_B),然后再发出“开始奔跑”的指令(释放 PS_POR_B)。

Zynq UltraScale+ MPSoC 的时序:PS_POR_B 先于 PS_SRST_B

在MPSoC中,引入了一个全新的、强大的电源管理单元(PMU)。这是一个内置的微控制器,负责处理整个芯片的电源、复位和系统监控。这个变化是时序反转的根本原因。

  • PS_POR_B 是 PMU 的“唤醒”信号:
    在MPSoC中,PS_POR_B 不再是简单的电源OK指示,它最主要的功能是触发PMU开始工作。当 PS_POR_B 从低变高时,它唤醒了PMU。
  • PMU 接管控制权:
    PMU被唤醒后,首先执行其内部的固件。这个固件会检查所有电源轨的状态、完成芯片的初始化配置等。在这个过程中,整个PS的系统复位(PS_SRST_B)依然是保持有效的(低电平)。
  • PMU 释放 PS_SRST_B:
    只有当PMU完成它的初始化任务后,它才会主动地释放系统复位(PS_SRST_B)。随后,应用处理器开始执行BootROM代码。

可以理解为: 先“启动总管”(释放 PS_POR_B 以唤醒PMU),然后由“总管”检查所有情况无误后,再“释放各个部门开始工作”(释放 PS_SRST_B)。

总结

这个时序的“反转”并非随意的改动,而是反映了芯片内部架构的重大升级:

  • Zynq-7000:复位序列主要由外部电路控制,时序相对简单直接。
  • Zynq UltraScale+ MPSoC:复位序列由内部集成的PMU严格控制。PS_POR_B 是启动这个智能管理器的钥匙,而 PS_SRST_B 则成为了PMU管理流程的一个输出结果。

KU系列上电和配置

引脚说明

1、INIT_B——BANK0

  • 开漏输出引脚,外部通常通过电阻上拉至BANK0电压3.3V
  • 低有效,指示初始化状态或配置错误。初始化期间或出错时为低,初始化完成且准备接收数据时释放为高

2、PROGRAM_B——BANK0

  • 输入 (内部通常有上拉),外部通常通过电阻上拉至BANK0电压3.3V
  • 低电平有效,手动或外部触发重新配置。低电平脉冲启动配置过程,清除配置存储器
  • 用于FPGA的复位信号,可以通过复位芯片进行自复位

3、CFGBVS——BANK0

  • 输入引脚,外部不接电阻直接接BANK0电压3.3V
  • 选择BANK0的IO电压标准。接高对应2.5V/3.3V,接低对应≤1.8V

4、DONE——BANK0

  • 开漏输出,外部需要通过电阻(如4.7k)上拉至BANK0电压3.3V
  • 高有效,配置完成状态指示。配置成功后被拉高

5、PUDC_B——BANK0

  • 输入引脚
  • 低有效,控制配置期间未使用功能复用IO的内部弱上拉。接低电平使能上拉,接高电平禁止

6、PS_POR_B——没有此引脚

7、PS_SRST_B——没有此引脚

8、M0、M1、M2——BANK0

  • 输入引脚,选择配置模式(如SPI, BPI, JTAG)

9、CCLK——BANK0

  • 输入/输出,和10中引脚一起使用,通常是FLASH的时钟引脚
  • 配置时钟。主模式下为输出,从模式下为输入

10、D00_MOSI、D01_DIN、D02、D03——BANK0

  • D00_MOSI为配置数据线0/主出从入,双向,在主SPI模式下为MOSI(主设备数据输出)。在主BPI/并行模式下为数据总线的最低位(D00)
  • D01_DIN为配置数据线1/数据输入,输入,在主SPI/串行模式下连接存储器的数据输出。在主BPI/并行模式下为数据位D01
  • D02为配置数据线2,输入,在并行配置模式下为数据位D02
  • D03为配置数据线3,输入,在并行配置模式下为数据位D03

11、RDWR_FCS_B——BANK0

  • 写控制/Flash片选,输出
  • 在SelectMAP模式下,作为低电平有效的写使能信号(RDWR_B)。在SPI模式下,作为SPI Flash的片选信号(CSO_B)

12、POR_OVERRIDE——BANK0

  • 上电复位覆盖,输入,一般不使用0欧电阻接地
  • 激活时(通常为高电平)可阻止FPGA在上电后立即启动,使其保持在复位状态,用于系统调试或协同启动。

12、DXP/DXN——BANK0

  • 保密功能引脚
  • 通常与芯片的防篡改或知识产权保护功能相关,不使用直接接地

13、VCCADC、GNDADC、VREFP/VREFN、VP/VN——BANK0

  • VCCADC是XADC模块电源,为片内高精度模数转换器XADC模块供电。为了获得最佳性能和精度,建议使用独立的线性稳压器供电。例如1.8V。GNDADC是XADC模块地,为片内XADC模块提供接地回路。
  • VREFP/VREFN是XADC参考电压,模拟输入,为XADC提供外部参考电压基准,以提升转换精度。如果不使用直接接地
  • VP/VN是XADC专用模拟输入,XADC的专用高性能模拟差分输入对,通常连接至片内预调理电路,如果不使用直接接地

14、VBATT——BANK0

  • 电池备份电源,为FPGA的某些易失性存储单元(如部分寄存器和BLOCK RAM)在主电源关闭时提供备用电源,以保持其中数据。如果不需要保持数据,通常需要将其连接到合适的电源(如VCCAUX)或者1.8V

芯片启动流程(Power-On Sequence)

阶段1:复位与初始化

  • FPGA上电后,如果 PROGRAM_B_0 引脚接收到一个低脉冲(可来自外部或由上电产生),配置过程开始。此信号会清除原有的配置信息 。
  • 随后,FPGA进入初始化阶段,并将 INIT_B_0 引脚驱动为低电平,表示正在初始化 。
  • 初始化完成(包括清除配置存储器)后,FPGA释放 INIT_B_0 引脚,由于其是开漏输出,由外部上拉电阻将其拉至高电平,表明芯片已准备好接收配置数据

阶段2:数据加载

  • INIT_B_0 变高后,FPGA会采样 M[2:0] 引脚,确定配置模式 。
  • 根据选定的模式(如主SPI),FPGA在 CCLK 时钟同步下,从外部存储器加载配置数据 。
  • 在此过程中,FPGA会对加载的数据进行CRC校验。如果检测到错误,INIT_B_0 会被再次拉低,配置过程中断。

阶段3:启动与用户模式

  • 所有配置数据成功加载且CRC校验通过后,FPGA会拉高 DONE_0 引脚,表明配置已完成 。
  • 随后,FPGA开始执行启动序列,初始化内部逻辑和I/O寄存器。
  • 启动序列完成后,FPGA进入用户模式,执行用户设计的逻辑功能。

重要设计提示

  • 上拉电阻是关键:由于INIT_B_0和DONE_0是开漏输出,必须使用外部上拉电阻(通常4.7kΩ)至VCCO_0才能输出高电平 。
  • PUDC_B_0的设置:根据板级需求决定此引脚电平。使能上拉(接低)可增强配置期间IO的抗干扰能力;禁用上拉(接高)可降低静态功耗。
  • CFGBVS必须正确设置:此引脚电平必须与 BANK0 的供电电压VCCO_0匹配,否则可能导致IO接口故障或损坏。
  • PROGRAM_B_0防护:建议为PROGRAM_B_0添加RC滤波电路,防止噪声引起意外重配置。

Read more

【保姆级教程】从零入手:Python + Neo4j 构建你的第一个知识图谱

【保姆级教程】从零入手:Python + Neo4j 构建你的第一个知识图谱

摘要: 大数据时代,数据之间的关系往往比数据本身更有价值。传统的 SQL 数据库在处理复杂关系(如社交网络、推荐系统、风控分析)时显得力不从心,而 知识图谱 和 图数据库 Neo4j 正是为此而生。本文将带你从 0 基础出发,理解知识图谱核心概念,安装 Neo4j 环境,并手把手教你用 Python 代码构建一个生动的人物关系图谱。拒绝枯燥理论,全是实战干货! 一、 什么是知识图谱与 Neo4j? 在动手写代码之前,我们先用大白话把两个核心概念捋清楚。 1. 什么是知识图谱 (Knowledge Graph)? 不要被高大上的名字吓到。知识图谱本质上就是把世界上的事物(节点)和它们之间的联系(关系)画成一张巨大的网。 * Excel 思维: 罗列数据。例如:张三,25岁;李四,

iOS开发针对苹果新系统iOS26的兼容适配UITabBarButtonItem & UITabBar的液态玻璃效果/当前wifi ssid获取

1. UITabBarButtonItem液态玻璃效果         兼容处理:         第一种方式(不推荐):把所有的UITabBarButtonItem关闭液态玻璃效果: if (@available(iOS 26.0, *)) { self.navigationItem.rightBarButtonItem.hidesSharedBackground = YES; self.navigationItem.leftBarButtonItem.hidesSharedBackground = YES; } else { // Fallback on earlier versions }         第二种方式:所有导航栏按钮全部采用UITabBarButtonItem,支持液态玻璃效果。         第三种方式:降低Xcode版本到Xcode25及以下版本,然后再打包         第四种方式:使用兼容模式显示传统UI风格,也就是取消TabBar液态玻璃效果:         打开info.plist,添加一个Boolean键值对,取消液态玻璃效果,

若依(RuoYi)低代码框架全面分析

若依(RuoYi)低代码框架全面分析

文章目录 * 一、框架概述与技术背景 * 技术架构全景 * 二、核心特长分析 * 1. 完备的权限管理体系 * 2. 高度模块化的系统设计 * 3. 强大的代码生成器 * 4. 丰富的功能组件 * 三、显著短板与局限性 * 1. 技术栈相对保守 * 2. 代码生成器的局限性 * 3. 性能瓶颈与扩展性挑战 * 4. 学习曲线与定制成本 * 四、实际应用场景分析 * 适合场景 * 不适用场景 * 五、与其他框架对比 * 六、总结与展望 一、框架概述与技术背景 若依(RuoYi)是基于Spring Boot的权限管理系统,是中国Java低代码领域的代表性开源框架。其名称"若依"取自"若你"的谐音,体现了"

【保姆级教程】从零部署宇树 Unitree 机器人 ROS 2 环境 (Go2/B2/H1) (Humble + 真实硬件)

摘要 本文为希望在ROS 2 (Humble) 环境下开发宇树 (Unitree) 机器人(支持 Go2, B2, H1)的开发者提供了一篇详尽的、从零开始的部署指南。我们将首先在 Ubuntu 22.04 上安装 ROS 2 Humble,然后重点讲解如何配置 unitree_ros2 功能包,实现 ROS 2 节点与机器人底层 DDS 系统的直接通信。本教程基于官方文档,并针对 Humble 环境进行了优化,可跳过 Foxy 版本复杂的 CycloneDDS 编译步骤。 核心环境: * 操作系统: Ubuntu 22.04 (Jammy) * ROS 2 版本: Humble