闲的无聊,测了一个250M的时钟信号,50%和75%占空比的区别。
时序约束
说明一点,对于晶振出来的信号可以不用时序约束,但是一旦经过逻辑,连线之后的信号,必须用时序约束,因为时序约束会告诉软件应该把变量(reg,LUT ,DFF)放到足够近的地方,这样保证布局布线的时间能满足时序要求。如果不做时序约束,则可能一个50M的信号最后因为放的特别远,导致走线延时很长,信号最后只有20M或者更少。如果提高时序约束(create_clock)的频率,软件会尽力去约束变量的位置,从而提高时序的性能。(前提是代码描述足够良好,没有进位链太长等等问题)
Lvds:
Lvds和lvcmos的区别就是,lvds是用电流来传输信号的,能传输地更远(20M)且信号失真小,功耗低。
对于高频信号:
1. 频率200M之后,方波变得更像正弦波
2. 占空比实际上没有那么明显,精确;设置75%和50%实际上只有10%左右的差别。并且幅值也会下降,设置的LVDS25实际上只有500mv-1V 的幅度,如果是多个lvds还可能相互影响导致幅度下降。
3. Lvcmos在传输200M以上的时钟时信号不稳定。需要用lvds。
4. 单端走线可以做差分输出(lvds),但是信号不佳;因此要用差分输出。
5. 高频不要使用杜邦线来连接
6. 选择更好的时钟信号,如sma(开发板上的金黄色的小头)
7. 引脚约束的时候,只需要约束差分输出的一端即可(另一端软件会自动绑定)
8. 两个lvds信号,切记要注意是n,p一致性。如果不一致,那么在示波器上需要对采样通道进行反相。不然占空比看起来是错的。(若50%占空比,则看起来是相反的信号)
9. 示波器的使用,调节scale到采样的频率附近。如果输入频率是300M,但是scale却是2us,则会欠采样,示波器得到的频率将会是100Hz左右或者其他。
10.
每个高频信号都应该单独使用gnd,两个示波器的通道的gnd接到一个开发板的地上时,会对信号本身有干扰。
11.
多个通道同时使用时,如果两者频率差别很大,但是想看那个密密麻麻的通道,这时候可以通过trig的menu来选择触发的通道。
12.
如果两个通道的信号上升沿没有对齐,可以调节信号,微调相位使之对齐。
其他
-
关于oddr,因为要使用时钟,因此如果是采样最高频率的时钟的占空比,是用不了oddr的(真的吗?)。对于高频信号,是可以分频(比如降低10倍),然后用oddr来采样的。低频时更加精确,降频来测试占空比不科学。
-
Oddr在xilinx里是元语,如果要把时钟当做输出,则要把这个时钟经过oddr才能输出,因为外部的信号会通过这条线反过来影响内部的信号。
-
Fifo、ram是有频率上限的,250M左右或者更多一点。(300M以上不确定了)
-
时钟信号约束到Gclk接口 ,但是整个开发板没有晶振的话,Gclk是没有信号的(理论上来说)。如果不下板,只是看能不能编译通过+时序报告看时钟频率,可以不用加晶振。(使用sdc约束STA是可以分析得到时钟频率的)