异步复位同步释放:数字电路设计的核心技巧与工程实践

news2026/5/16 17:35:51
1. 项目概述一个看似简单却暗藏玄机的设计技巧在数字电路设计尤其是FPGA和ASIC开发中复位信号的处理是确保系统从确定状态启动和稳定运行的第一道也是最重要的一道防线。我们经常听到“异步复位同步释放”这个设计原则很多工程师手册和代码模板里也都会这么写。但当你真正深入去问为什么必须这么做不这么做会有什么后果具体实现时有哪些细节需要注意很多人可能就语焉不详了或者只能说出“避免亚稳态”这个笼统的答案。我自己在早期做项目时就曾在这个问题上栽过跟头。当时为了图省事直接用一个异步复位信号接到了所有触发器的复位端系统大部分时间运行正常但偶尔会在复位释放后出现一些寄存器状态异常问题复现率极低调试起来如同大海捞针。最后定位到问题正是复位信号释放时与时钟不同步导致的亚稳态传播。从那以后我对“异步复位同步释放”这个技术点进行了深入研究并形成了自己的一套设计和验证方法论。简单来说“异步复位同步释放”是一种混合复位策略。它利用异步复位的优势——确保复位立即生效不受时钟影响让系统在任何时候都能被强制拉入已知状态同时又通过同步释放的机制让复位信号的撤销de-assertion与系统时钟同步从而避免了复位撤销时刻可能引发的亚稳态问题。这个技术点虽小却贯穿了从RTL编码、综合约束到时序验证的整个流程是数字设计工程师必须掌握的核心技能之一。无论你是正在学习Verilog/VHDL的学生还是已经工作但想夯实基础的工程师理解其背后的原理和实现细节都至关重要。2. 复位策略的演进与核心问题剖析2.1 纯同步复位与纯异步复位的利弊权衡在深入“异步复位同步释放”之前我们必须先厘清两种基础复位方式的优缺点这样才能理解为什么需要一种混合方案。纯同步复位意味着复位信号只有在时钟有效边沿到来时才会被采样并生效。在RTL代码中它通常体现在敏感列表只有时钟且复位判断在时钟边沿内。always (posedge clk) begin if (!rst_n) begin q 1‘b0; end else begin q d; end end它的优点非常明显抗毛刺能力强由于复位动作与时钟同步短暂的复位毛刺只要不在时钟有效沿附近不会被触发器捕获系统稳定性高。利于静态时序分析STA复位信号被当作一个普通的数据路径来处理工具可以清晰地分析其建立时间和保持时间时序收敛路径明确。与基于时钟的扫描链测试兼容性好。但它的缺点同样致命复位生效慢复位信号必须等到下一个时钟上升沿才能起作用。这对于上电后需要立即将系统置于安全状态或者处理某些需要立即响应的致命错误场景来说是不可接受的。可能无法复位所有触发器如果时钟本身因为某些问题如PLL未锁定而丢失同步复位将完全失效系统无法恢复。需要时钟工作这形成了一个悖论——有时我们需要复位来初始化时钟电路本身。纯异步复位则直接将复位端连接到触发器的异步复位管脚如FPGA中的CLRASIC中的SD/SDN。只要复位信号有效触发器输出立即被强制为复位值与时钟无关。always (posedge clk or negedge rst_n) begin if (!rst_n) begin q 1‘b0; end else begin q d; end end它的优点直击同步复位的痛点即时生效复位优先级最高只要信号有效立即动作。不依赖时钟即使时钟不存在或不稳定也能保证系统进入确定状态。实现简单RTL描述直观综合工具能自动识别并映射到触发器的异步复位端。然而其缺点正是我们讨论的焦点——复位释放问题Reset Release Problem。当异步复位信号撤销时如果这个撤销时刻非常接近时钟的有效边沿就违反了触发器的恢复时间Recovery Time和移除时间Removal Time。这会导致触发器的输出端在复位释放后的一段时间内处于一个非0非1的亚稳态Metastable状态。更糟糕的是这个亚稳态会像病毒一样沿着后续的组合逻辑和时序路径传播下去导致整个系统行为不可预测。注意恢复时间Recovery Time是指异步控制信号如复位在时钟沿到来之前必须保持稳定的最短时间移除时间Removal Time是指异步控制信号在时钟沿到来之后必须继续稳定的最短时间。违反这两个时间要求就等同于数据信号违反了建立/保持时间。2.2 复位释放亚稳态的根源与危害为什么异步复位释放会产生亚稳态我们可以把触发器内部的复位通路想象成一个与时钟通路并行、且优先级更高的控制开关。当时钟沿和复位释放沿“撞车”时触发器内部的两个“命令”“开始采样数据”和“停止强制输出”同时到达内部电路不知道该听谁的从而进入一个中间电平的平衡态即亚稳态。这种亚稳态的危害是系统性的逻辑错误后续电路将不可预测的亚稳态值当作有效0或1进行运算产生错误结果。功耗激增处于亚稳态的节点会在高低电平间快速振荡导致短路电流显著增加动态功耗。故障传播单点的亚稳态可能通过多个扇出分支污染大量下游逻辑。难以调试由亚稳态引发的错误通常是随机的、不可重复的与复位释放时刻和时钟的相位关系紧密相关在仿真中可能无法复现只有在实际硬件中长时间运行才会偶然触发。因此纯异步复位在要求高可靠性的系统中是危险的。为了解决“生效快”和“释放稳”的矛盾“异步复位同步释放”技术应运而生。它的核心思想是复位信号的断言Assertion是异步的以保证速度复位信号的撤销De-assertion是同步的以保证稳定。3. 异步复位同步释放的经典电路实现与原理3.1 两级同步器电路解析最经典、最通用的实现方式是利用两级D触发器构成一个同步链。这个电路虽然简单但每一个细节都值得推敲。module async_reset_sync_release ( input wire clk, // 系统时钟 input wire async_rst_n, // 来自外部的低有效异步复位 output wire sync_rst_n // 经过同步释放处理的低有效复位输出 ); reg rst_n_meta; reg rst_n_sync; always (posedge clk or negedge async_rst_n) begin if (!async_rst_n) begin // 异步复位断言立即生效 rst_n_meta 1‘b0; rst_n_sync 1‘b0; end else begin // 同步释放过程 rst_n_meta 1‘b1; // 第一级同步 rst_n_sync rst_n_meta; // 第二级同步 end end assign sync_rst_n rst_n_sync; endmodule我们来逐行分析这个电路的工作过程异步断言阶段当外部输入的async_rst_n变为低电平时两个寄存器rst_n_meta和rst_n_sync会立即被清零不受clk时钟的影响。此时输出sync_rst_n也立即变为低电平迅速将整个系统复位。这是“异步”部分的体现。同步释放阶段当外部async_rst_n释放变为高电平后注意此时rst_n_meta和rst_n_sync仍然为0因为它们的赋值仍然在always块的异步复位控制下。直到下一个时钟上升沿到来always块才进入else分支。第一拍在释放后的第一个时钟上升沿rst_n_meta被赋值为1‘b1。但rst_n_sync此时采样的是rst_n_meta的旧值0所以输出sync_rst_n仍为0系统仍处于复位状态。第二拍在第二个时钟上升沿rst_n_sync才采样到已经变为1的rst_n_meta从而使sync_rst_n变为高电平系统正式退出复位状态。通过这样一个两拍延迟我们确保了最终输出的复位释放信号sync_rst_n的变化一定发生在一个稳定的时钟边沿之后且与这个时钟边沿同步。外部异步复位async_rst_n的任何释放时刻的抖动或与时钟沿的冲突都被第一级触发器rst_n_meta所吸收它可能进入亚稳态而第二级触发器rst_n_sync极大地降低了将亚稳态传播出去的概率。3.2 关键参数同步级数的选择与权衡为什么是两级为什么不是一级或三级这是一个经典的MTBF平均无故障时间计算问题。一级同步器理论上一级同步器可以将亚稳态发生的概率降低一个数量级。但对于复位这种全局性的、扇出极大的信号一级同步的可靠性往往不够。如果第一级触发器进入亚稳态并在一个时钟周期内未能稳定下来这个亚稳态会直接输出给整个系统风险太高。两级同步器这是工业界的黄金标准。第一级用于“捕捉”异步事件并承受亚稳态风险第二级用于“隔离”将第一级输出可能已稳定也可能仍是亚稳态再次采样。经过两级触发器的衰减亚稳态传播到系统内部的概率已经极低能够满足绝大多数应用对可靠性的要求。其带来的两周期延迟也在可接受范围内。三级或更多级同步器会进一步降低亚稳态传播概率但代价是复位释放延迟增加。通常只在极端高可靠性如航天、医疗或时钟频率非常高的场景下考虑。对于FPGA设计器件手册通常会给出针对特定速度和型号的推荐同步级数。实操心得在FPGA设计中我通常坚持使用两级同步除非设计规范有特别要求。增加级数带来的边际效益递减而增加的延迟可能会影响系统启动时间或与某些需要精确对齐的初始化序列产生冲突。务必查阅你所用FPGA型号的架构手册有些高端FPGA的触发器本身对亚稳态有更好的抑制特性。3.3 复位毛刺滤除与复位脉冲宽度要求一个健壮的复位同步电路还需要考虑两个“门前”问题复位毛刺滤除外部的异步复位信号可能来自按键、电源监控芯片或其它逻辑容易受到噪声干扰产生毛刺。一个短暂的毛刺如果触发异步复位会导致系统误复位。因此在异步复位信号进入同步器之前通常需要增加一个毛刺滤除电路或使用专用复位芯片。最简单的办法是使用一个低频时钟如32.768kHz对复位信号进行多次采样确认或者使用模拟RC电路进行延时滤波。最小复位脉冲宽度为了确保异步复位能可靠地覆盖整个电路复位信号的有效脉冲宽度必须大于最慢时钟域的一个周期加上所有同步器的延迟。例如如果你的系统有一个1MHz的慢速时钟域那么复位脉冲宽度至少应大于1us再考虑若干纳秒的触发器延迟和走线延迟通常设计时会留出数倍到数十倍的余量。这需要在复位发生器的设计或外部复位源的选择时予以保证。4. 跨时钟域复位同步的复杂场景处理4.1 多时钟域系统的复位同步架构在一个真实的SoC或FPGA项目中往往存在多个时钟域。每个时钟域都需要一个由全局异步复位信号生成的、本地同步释放的复位信号。直接用一个同步器产生的复位信号驱动所有时钟域是错误且危险的因为不同时钟域之间相位关系不确定复位释放的不同步会导致跨时钟域交互逻辑状态错乱。正确的架构是分布式同步一个全局的、低有效的异步复位信号global_async_rst_n被引入芯片。该信号分别送到各个时钟域如clk_a,clk_b,clk_c。在每个时钟域的入口都实例化一个独立的“异步复位同步释放”模块如前面介绍的async_reset_sync_release使用各自的时钟clk_x进行同步释放。每个时钟域使用自己同步后的复位信号sync_rst_n_x。这样每个时钟域内部的复位是同步的但不同时钟域之间的复位释放时刻可能存在几个时钟周期的偏差。这是可接受的因为跨时钟域的信号交互本来就需要通过专门的同步器如两级触发器来处理这些同步器在设计时已经考虑了两端复位可能不同步的情况。4.2 复位解除顺序与依赖关系管理在复杂系统中某些模块需要在另一些模块初始化完成之后才能解除复位。例如一个总线控制器必须在它所管理的存储器初始化完成后再开始工作。这就引出了复位解除顺序和复位依赖链的问题。一种常见的实现方式是使用“复位桥”或“复位状态机”。基本思路是创建一个主复位控制器它接收全局异步复位并生成一个“主同步复位”。然后通过一个简单的状态机或计数器在“主同步复位”释放后依次产生并释放各个子模块的复位信号。// 简化的复位序列生成示例 reg [7:0] rst_release_cnt; reg module_a_rst_n, module_b_rst_n, module_c_rst_n; always (posedge clk or negedge sync_rst_n) begin // sync_rst_n 是已同步的全局复位 if (!sync_rst_n) begin rst_release_cnt 8‘d0; {module_c_rst_n, module_b_rst_n, module_a_rst_n} 3‘b000; end else begin if (rst_release_cnt 8‘d10) module_a_rst_n 1‘b1; // 第10个周期释放A if (rst_release_cnt 8‘d20) module_b_rst_n 1‘b1; // 第20个周期释放B此时A已就绪 if (rst_release_cnt 8‘d30) module_c_rst_n 1‘b1; // 第30个周期释放C rst_release_cnt rst_release_cnt 1‘b1; end end这种方法的好处是逻辑清晰时序可控。但需要注意这些衍生出来的模块复位信号其释放过程也必须是同步的如上例所示在时钟沿控制下改变并且要确保它们之间的时序关系满足模块间的依赖要求。5. 实际工程中的验证、调试与常见陷阱5.1 仿真与形式验证中的注意事项在RTL仿真中异步复位同步释放电路的行为可能与综合后网表的行为存在细微差别需要特别注意。仿真初始化在仿真开始时time0所有寄存器都是‘X’未知状态。如果异步复位信号初始值为高无效那么第一个时钟沿到来时同步器第一级rst_n_meta采样到的是高电平第二级输出sync_rst_n也会立即变为高如果rst_n_meta初始不为X。这导致系统从未经历过复位状态这不符合硬件上电的实际情况。为了解决这个问题必须在仿真测试平台Testbench中在初始时刻就强制施加一个复位脉冲。或者在RTL代码中为相关寄存器添加初始化值Verilog中使用initial块但注意这不是可综合的仅用于仿真。X态传播在复位释放的瞬间如果第一级触发器rst_n_meta进入亚稳态在仿真中可能表现为‘X’。这个‘X’会被第二级触发器采样并传播。一个好的仿真测试应该检查在复位释放后经过足够多的时钟周期例如10个整个设计中是否还存在‘X’态这有助于发现潜在的复位同步问题。形式验证Formal Verification对于复位同步电路这类控制逻辑形式验证是非常强大的工具。你可以编写属性SVA来断言“当异步复位释放后在两个时钟周期内同步复位输出必须释放且保持稳定”或者“同步复位输出在任何时候都不能出现亚稳态在形式验证中可能表现为非确定性的布尔值”。形式验证工具可以穷举所有可能的输入序列确保这些属性在所有情况下都成立。5.2 硬件调试与实测问题排查当硬件行为异常怀疑是复位问题时可以按以下步骤排查测量复位信号质量使用示波器或逻辑分析仪测量到达关键器件如FPGA、CPU复位管脚的实际波形。检查电压幅值、上升/下降时间、是否有毛刺、最小脉冲宽度是否满足芯片手册要求。检查复位释放时序同时测量系统主时钟和同步后的复位信号。观察复位释放是否发生在时钟边沿之后并且是否稳定无回沟、无振荡。如果复位释放边沿太靠近时钟沿就可能违反恢复/移除时间。内嵌逻辑分析仪ILA/ChipScope在FPGA设计中可以将内部同步前后的复位信号、以及受其控制的关键状态寄存器连接到ILA核上。通过触发复位事件捕获复位释放前后多个周期的信号变化这是最直接的调试手段。重点关注复位释放后第一个时钟周期内相关寄存器的值是否如预期。电源序列检查复位问题常常与电源相关。确保芯片的供电电压在复位信号有效之前已经稳定。否则芯片可能在一个不稳定的电压下被复位导致内部状态异常。检查电源监控芯片Reset IC的时序是否符合要求。5.3 常见设计陷阱与避坑指南陷阱描述后果规避方法将同步后的复位信号用于时钟使能或门控时钟逻辑可能产生毛刺导致时钟门控错误引发灾难性后果。复位信号只用于触发器和部分同步寄存器的复位端绝不直接用于组合逻辑生成时钟或使能。时钟使能应由稳定的状态机控制。在低功耗设计中忽略复位网络在电源关断Power Gating域复位信号可能被隔离Isolation单元阻塞导致域内寄存器无法复位。为每个电源域设计独立的复位策略确保在域上电和断电序列中复位信号能正确穿越隔离单元。异步复位信号来源的扇出过大导致复位信号到达不同触发器的时间偏差skew过大部分电路已退出复位部分还在复位中造成状态不一致。在顶层对异步复位信号进行缓冲Buffer或使用全局时钟网络如果支持进行分发减少skew。误用“异步复位同步释放”于电平敏感复位该电路针对边沿敏感的复位释放。如果复位是电平敏感的且电平宽度不定电路行为会异常。明确复位类型。对于电平复位需确保复位信号在释放前已稳定足够长时间或者将其转换为边沿触发。仿真与综合行为不一致仿真时复位正常烧录后硬件异常。可能因综合工具未正确推断出异步复位端口或布局布线后时序违例。1. 检查综合报告确认触发器是否被推断为带有异步复位端。2. 进行时序仿真Post-layout Simulation包含实际延迟信息。3. 在时序约束SDC中添加对复位路径的set_false_path或set_clock_groups约束但需谨慎。踩坑实录我曾遇到一个案例系统在低温下偶发启动失败。排查后发现用于生成全局异步复位的电源监控芯片其输出复位信号的下降沿释放沿速度在低温下变慢导致其斜率不足以在时钟沿到来前满足FPGA输入管脚的建立时间要求本质上还是违反了恢复时间。解决方案是更换为边沿更陡峭的复位芯片并在FPGA输入端增加一个施密特触发器Schmitt Trigger整形电路。这个教训告诉我不仅要考虑数字逻辑还要关注模拟特性。6. 高级话题与最佳实践总结6.1 复位同步与时钟门控的协同设计在现代低功耗设计中时钟门控Clock Gating被广泛使用。当一个模块空闲时关闭其时钟以节省动态功耗。这给复位设计带来了新挑战如果模块的时钟被关闭那么其内部的“异步复位同步释放”电路也将停止工作。此时如果异步复位信号释放该模块将无法产生同步的复位释放信号导致时钟重新开启后模块仍停留在复位状态。解决方案是采用复位-时钟协同控制策略确保在释放一个模块的复位之前其时钟必须是活跃的。或者使用一种不依赖于本地时钟的全局复位同步方案然后将同步后的复位信号分发到各模块。但这种方法对复位网络的分布要求很高。更稳健的做法是为每个可门控时钟域设计一个简单的“复位唤醒”逻辑当检测到异步复位释放且本地时钟被门控时该逻辑会先请求打开时钟等待时钟稳定后再启动本地的复位同步释放流程。6.2 基于FPGA/ASIC底层原语的优化实现为了追求极致的可靠性和时序性能有时需要直接调用目标器件的底层原语Primitive来构建复位同步电路。在FPGA中Xilinx的器件库中有专用的同步器原语如xpm_cdc_sync_rst这些原语经过了厂家的充分验证和优化可能使用了特殊的触发器或布线资源来最大化MTBF。Altera/Intel也提供类似的宏功能如altera_std_synchronizer。在代码中直接实例化这些原语通常比写通用的RTL代码更可靠。在ASIC中标准单元库会提供带有高抗亚稳态特性的专用同步器单元Metastability Hardened Flip-Flop。后端设计时需要将这些单元例化在异步信号如复位进入时钟域的边界上并添加适当的布局约束将它们放置得尽量靠近。6.3 系统级复位策略规划对于一个大型项目复位设计需要在架构设计阶段就进行规划复位树Reset Tree设计像时钟树一样规划复位的分布网络。区分全局复位如上电复位、看门狗复位和局部复位如软件触发复位、模块功能复位。复位分区将系统划分为不同的复位域。哪些模块可以同时复位哪些必须有先后顺序哪些复位可以独立进行复位验证计划制定详细的验证场景包括上电复位、热复位、软件复位、复位释放顺序、复位过程中和复位后的总线交互、复位与低功耗模式的交互等。文档化绘制清晰的复位域和复位信号流向图编写复位序列说明文档。这对于团队协作和后续维护至关重要。“异步复位同步释放”远不止几行RTL代码。它是一个从理解底层电路原理开始贯穿RTL编码、综合约束、时序验证、板级调试直至系统架构设计的完整知识体系。掌握它意味着你真正理解了数字系统中“确定性”与“稳定性”的来源之一。每次在代码中写下那个简单的同步器模块时心里都应该清楚它背后所抵御的风险和承载的工程智慧。这或许就是数字设计工程师的匠心所在。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…