OpenModelica中PFD电路DFFR输出异常问题求助
解决OpenModelica中PFD电路DFFR输出异常问题
问题核心
自带digitalclock模块输出电压在3V-4V区间切换,而DFFR的逻辑识别阈值为2.5V——当输出3V时仍高于阈值,会被判定为逻辑1,无法触发复位或状态切换,最终导致输出始终锁定为1。
可行解决方案
1. 插入电平转换电路
在digitalclock输出与DFFR时钟输入之间添加分压电路,将3V-4V的信号转换为适配DFFR阈值的电平范围:
- 分压示例:用1kΩ和2kΩ电阻串联,取中间节点电压输入DFFR,可将4V信号降至约2.67V、3V降至2V,刚好跨过2.5V的阈值线,实现逻辑高低电平的正确识别。
- 可直接用
Modelica.Electrical.Analog.Basic库的电阻组件搭建该电路,无需自定义复杂模块。
2. 替换为自定义时钟源
放弃自带digitalclock,用基础组件搭建符合电平要求的时钟:
- 组合
Modelica.Blocks.Sources.Step和Modelica.Electrical.Analog.Sources.SignalVoltage,设置低电平为0V、高电平为3.3V,按需配置周期和相位差,直接输出匹配DFFR阈值的逻辑信号。 - 示例代码片段:
model CustomPLLClock Modelica.Blocks.Sources.Step clkAStep(startTime=0, height=3.3, offset=0); Modelica.Blocks.Sources.Step clkBStep(startTime=0.1, height=3.3, offset=0); // 带相位差的B时钟 Modelica.Electrical.Analog.Sources.SignalVoltage clkA(voltage=clkAStep.y); Modelica.Electrical.Analog.Sources.SignalVoltage clkB(voltage=clkBStep.y); end CustomPLLClock;
3. 调整DFFR阈值参数(若支持)
检查DFFR组件的参数配置项,若允许修改逻辑阈值,可将低电平阈值调高至3V以上、高电平阈值保持低于4V,让3V被识别为逻辑0、4V识别为逻辑1。注意:修改阈值可能影响组件其他逻辑功能,需单独验证DFFR的复位、状态切换逻辑是否正常。
4. 使用数字库适配时钟
尝试切换到OpenModelica数字库中与DFFR同属一套的时钟组件(如Modelica.Digital.Sources.Clock),这类组件的输出电平通常会与同库触发器的阈值预设匹配,避免电平不兼容问题。
验证步骤
修改后先单独测试时钟信号与DFFR的交互,确认输出波形符合预期后,再整合进整个PLL电路进行完整功能测试。
内容的提问来源于stack exchange,提问作者funderdown
相关产品推荐
相关产品推荐

