系统中抖动的理解与分析

需积分: 14 0 下载量 196 浏览量 更新于2024-07-10 1 收藏 1.75MB PDF 举报
"理解系统中的抖动——PCI SIG PPT" 在深入探讨PCI-E技术的抖动问题时,首先需要理解抖动(Jitter)的基本概念。"Understanding Jitter in System"是一个由PCI特殊兴趣小组(PCI-SIG)的演讲主题,主要由FuturePlus Systems Corporation的副总裁Barbara P. Aichinger进行讲解。该演讲旨在帮助开发者更好地理解抖动对系统性能的影响,并提出新的测量方法。 在介绍中,我们看到"Jitter Overview"作为演讲的第一个部分,这是对抖动的初步阐述。抖动被定义为相对于期望位置的时间偏差,简单来说,就是信号在理想时间点之外的变化。这种偏差对于高速串行架构(如PCI-E)的性能具有重大影响,因为它会缩小接收端的"眼图"(Eye Diagram),使数据获取的准确性受到压力。眼图是评估数字信号质量的重要工具,它描绘了信号在时间上的波动情况。当抖动增加时,眼图会变得更窄,这增加了误码率的可能性,从而限制了系统的性能。 接着,演讲提到了“一个提议中的新方法来测量抖动”。这可能是指更先进的分析技术或工具,用于更精确地评估系统中抖动的影响,可能是通过更复杂的数学模型或者实时监测手段。 在"Measuring Jitter with compliance patterns versus live traffic"这一环节,Aichinger可能会讨论使用合规模式(Compliance Patterns)与实际数据流量(Live Traffic)两种不同情况下测量抖动的差异。合规模式是专门为测试和验证设计的特定信号序列,而实际数据流量则反映了系统在正常运行时的情况。这两种方法的比较有助于了解抖动在真实世界应用中的表现。 此外,演讲中还提到了将抖动注入到一个活生生的系统中,比如9x4视频卡和9x1以太网卡的实验。这种方法通常用来模拟和测试系统在高抖动环境下的行为,以评估其容忍度和稳定性。 最后,结论部分可能总结了抖动对系统性能的影响,以及如何通过改进设计和使用更有效的测量方法来优化系统性能,确保在有显著抖动的情况下仍能保持稳定运行。 这个演讲涵盖了抖动的定义、重要性、测量方法以及在实际应用中的影响,对于理解和解决PCI-E等高速串行接口的抖动问题具有重要的指导价值。

module Duty_Period_Adjust_module ( CLK, RSTn, AddDuty_In, SubDuty_In, AddPeriod_In, SubPeriod_In, Duty, Count_P ); input CLK; input RSTn; input AddDuty_In; //Add Duty Ratio input SubDuty_In; //Subtract Duty Ratio input AddPeriod_In; //Add Period input SubPeriod_In; //Subtract Period output reg [7:0]Duty; //Duty Ratio of PWM output reg [23:0]Count_P; //period of PWM = Count_P/50_000_000 wire neg_AddDuty; wire neg_SubDuty; wire neg_AddPeriod; wire neg_SubPeriod; Jitter_Elimination_module U1 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( AddDuty_In ) , //While AdjtDuty_In from 1 to 0, neg_AddDuty = 1 .Button_Out( neg_AddDuty ) ); Jitter_Elimination_module U2 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( SubDuty_In ) , //While SubDuty_In from 1 to 0, neg_SubDuty = 1 .Button_Out( neg_SubDuty ) ); Jitter_Elimination_module U3 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( AddPeriod_In ) , //While AddPeriod_In from 1 to 0, neg_AddPeriod = 1 .Button_Out( neg_AddPeriod ) ); Jitter_Elimination_module U4 ( .CLK( CLK ) , .RSTn( RSTn ) , .Button_In( SubPeriod_In ) , //While SubPeriod_In from 1 to 0, neg_SubPeriod = 1 .Button_Out( neg_SubPeriod ) ); always @ ( posedge CLK or negedge RSTn ) begin if( !RSTn ) Duty <= 'd50; else if( neg_AddDuty == 1'b1 ) if( Duty == 'd100 ) Duty <= 'd0; else Duty <= Duty + 'd10; else if( neg_SubDuty == 1'b1 ) if( Duty == 'd0 ) Duty <= 'd100; else Duty <= Duty - 'd10; else Duty <= Duty; end /******************* While Count_P = 500_000, Period of PWM = 10ms, Frequency of PWM = 100HZ ; While Count_P = 250_000, Period of PWM = 5ms, Frequency of PWM = 200HZ ; While Count_P = 50_000, Period of PWM = 1ms, Frequency of PWM = 1000HZ ; *******************/ always @ ( posedge CLK or negedge RSTn ) begin if( !RSTn ) Count_P <= 'd250_000; else if( neg_AddPeriod == 1'b1 ) begin if( Count_P == 'd500_000 ) Count_P <= 'd50_000; else Count_P <= Count_P + 'd50_000; end else if( neg_SubPeriod == 1'b1 ) begin if( Count_P == 'd50_000 ) Count_P <= 'd500_000; else Count_P <= Count_P - 'd50_000; end else Count_P <= Count_P; end endmodule

2023-06-11 上传