使用PLL的lock信号作为复位信号

复制代码
外部时钟 → PLL → 产生系统时钟 clk_sys
              → 产生锁定信号 locked(异步)

你想把 locked 直接连到各个模块的复位端。那么上电后的流程是:

  1. PLL 开始锁定,locked = 0clk_sys 不稳定

  2. 一段时间后 PLL 锁定,locked = 1clk_sys 稳定

  3. 各模块复位释放,开始工作

看起来逻辑很顺,但问题就出在 第2步到第3步的切换过程


⚠️ 主要问题(在你这种结构下更明显)

1. 异步释放导致的亚稳态(依然存在,甚至更隐蔽)

locked 信号的上升沿与 clk_sys 之间没有固定相位关系

  • 有可能 locked 的变化正好发生在 clk_sys 的采样沿附近

  • 此时用 clk_syslocked 的寄存器会进入亚稳态

  • 这个寄存器通常是你第一个状态机或控制逻辑的复位判断点

结果:整个系统的启动行为可能随机失败,偶尔上电能工作,偶尔不行。

2. 复位释放后,第一拍数据不可靠

即使没有明显亚稳态,也可能出现:

  • 复位释放的时钟周期内,locked 还未完全稳定

  • 部分寄存器提前退出复位,部分还卡在复位

  • 组合逻辑路径上出现短时冒险

这类问题极难复现和定位

3. PLL 短暂失锁会复位整板(设计上不想要)

你的系统时钟完全依赖这个 PLL。如果:

  • 输入电源抖动

  • 温度变化

  • 输入时钟短暂异常

导致 PLL 重新锁定,locked 会短暂变低再变高。此时:

  • 整板复位

  • 系统时钟一直存在(但短暂不稳定)

  • 系统状态被清空

这在很多产品里是不可接受的(例如正在传输数据、正在控制电机)。


✅ 正确做法(对你这个结构是最匹配的)

因为你系统时钟就来自这个 PLL,最标准、最安全的做法是:

用一个简单的同步器,把 locked 变成同步复位释放

电路结构:

text

复制

下载

复制代码
locked ──┬──→ DFF1 ──→ DFF2 ──→ 全局复位输出
         │          ↑               ↑
         └─ 异步清零 │               │
                    └─ 都用 clk_sys ┘

效果:

  • 复位释放与 clk_sys 完全同步

  • 消除亚稳态

  • PLL 短暂失锁不会立刻复位(取决于你设计)

代码示例(直接可用)

verilog

复制

下载

复制代码
module pll_reset_sync (
    input  wire clk_sys,      // 来自同一个PLL的系统时钟
    input  wire locked,       // PLL的锁定信号
    output wire sys_rst_n     // 安全、同步的复位信号
);

reg rst_meta, rst_sync;

always @(posedge clk_sys or negedge locked) begin
    if (!locked) begin
        rst_meta <= 1'b0;
        rst_sync <= 1'b0;
    end else begin
        rst_meta <= 1'b1;
        rst_sync <= rst_meta;
    end
end

assign sys_rst_n = rst_sync;

endmodule

然后你把 sys_rst_n 给所有模块用,而不是直接给 locked


🔁 和"外部复位 + PLL"的区别

你可能见过另一种常见方案:

  • 外部复位芯片 / 按钮 → 异步复位

  • PLL 锁定 → 释放复位

那种场景下,复位源不是 PLL 自身,问题轻一些。

但在你的情况下:

  • 复位源 = PLL

  • 时钟源 = PLL

  • 两者高度耦合

异步释放风险 + 复位 / 时钟同时建立 → 更容易出问题。

相关推荐
1560820721910 小时前
关于国微SQM7VX690T和复旦微JFM7VX690T调试
fpga开发
minglie11 天前
简易寄存器接口SMMR---正交编码器
fpga开发
神电测控1 天前
新品发布:32通道50MS/s同步并行14位采集模块PG-FMC9249(支持任意FPGA/ZYNQ,兼容LabVIEW FPGA软件开发)
fpga开发·labview·ni·神电测控·王电令·ad9249·32通道
Drgfd1 天前
半导体国产替代进入“深水区”:决战设备、材料、IP三大高地
网络·fpga开发
国产HT1621B1 天前
YL1650 LED驱动芯片详解:从原理到实战应用(附51单片机驱动代码)
stm32·单片机·嵌入式硬件·mcu·fpga开发·lcd驱动
szxinmai主板定制专家1 天前
驱控一体新范式:RK3576+FPGA+CODESYS工业实时AI控制架构全解
人工智能·嵌入式硬件·计算机视觉·fpga开发·架构·工业ai·驱控一体
国科安芯1 天前
ASC0101S自动双向电平转换原理深剖
单片机·嵌入式硬件·fpga开发·云计算·信息与通信
落chen1 天前
7 Series FPGAs Clocking Resources
fpga开发
落chen2 天前
基于FPGA的IIC协议通信-强化篇
fpga开发
梦开始的地方 �2 天前
实例化和句柄
fpga开发