Next Previous Contents

10. 巫术和同步脉冲

好,现在你已为你选的点时钟算出了 HFL / VFL ,找出了可接受的刷新率,检查了你有足够的显示内存.现在是真正的巫术 --- 你要知道什么时候在哪里放置同步脉冲.

同步脉冲实际上控制了显示器的行频和场频.你从技术规格表里查出的行频(HSF)和场频(VSF)是名义上的,近似的同步频率最大值.来自显示卡的同步脉冲信号告诉显示器实际以多快频率运行.

回忆起上面的两幅图吗?光栅扫描一帧需要的时间只有部分用于显示可视图象(即屏幕分辨率).

10.1 行同步:

根据之前的定义,水平扫描一行有HFL个点.让我们把可视点数目(屏幕水平分辨率)称为HR.因此根据定义显然 HR < HFL .具体地,让我们假设两者同时开始,如下所示:

  |___ __ __ __ __ __ __ __ __ __ __ __ __
  |_ _ _ _ _ _ _ _ _ _ _ _                |
  |_______________________|_______________|_____
  0                       ^               ^     单位:点数
                          |   ^       ^   |
                          HR  |       |  HFL
                          |   |<----->|   |
                          |<->|  HSP  |<->|
                          HGT1         HGT2

现在,我们想要在图示长度为HSP的位置,也就是在可视区域末点和整个帧末点之间的位置放置一个同步脉冲.为什么要这样?因为如果我们能这样放置的话,那么屏幕图象就不会偏移向左或右.它会在屏幕上期望的位置,方形地覆盖显示器的可视区域.

此外,在同步脉冲的每一边我们都要约30个点作为"防护时间".这由HGT1和HGT2表示.在一个典型的配置中HGT1不等于HGT2,但如果你正在从零建立一个配置,就要从两者相等开始你的试验(换言之,从同步脉冲居中开始试验).

同步脉冲放置错误的症状是图象在屏幕上偏移,一条边过分地宽,另一边图象在屏幕边缘回绕过来,产生一条白色边线和一条"叠影"带.一个位置不适当的场同步脉冲会使图象象一台错误调整了场同步控制的电视机一样滚动(实际上,这是相同的现象).

幸运的话,你的显示器同步脉冲宽度会在技术规格文档中.如果没有,真正的巫术开始了...

在这一部分,你将不得不反复试验.但大多数时候,我们可以安全地假定一个同步脉冲长度大约是3.5到4.0微秒.

具体起见,我们认为行同步脉冲(HSP)是3.8微秒(顺便说一句,这是一个不错的试验起始值).

现在,用上述的65MHz时序值,我们知道行同步脉冲(HSP)等于247个点(= 65 * 10**6 * 3.8 * 10^-6) [记得 M=10^6, micro=10^-6]

一些人喜欢引用他们的水平帧参数而不是点数宽度作为时序.你也许会看见下列术语:

活跃时间(HAT)

相当于HR,但按时间单位(通常用微秒)计算. HAT * DCF = HR.

消隐时间(HBT)

相当于(HFL - HR),但按时间单位(通常用微秒)计算. HBT * DCF = (HFL - HR).

上升沿(HFP)

这就是HGT1.

同步时间

这就是HSP.

下降沿(HBP)

这就是HGT2.

10.2 场同步:

回到上图,我们怎样能按图示放置这247个点呢?

用我们的例子,水平分辨率(HR)是944而水平帧长(HFL)是1176.两者之差是 1176 - 944 = 232 < 247 !显然这里我们不得不做些调整.我们怎么做呢?

首先把1176提高到1184,把944降低到936.现在差是 1184 - 936 = 248 .嗯,接近些了.

下一步,我们不用3.8而用3.5计算行同步脉冲(HSP);那么,我们得出 65 * 3.5 = 227 .看起来更好了.但248不比227高多少.通常在水平分辨率(HR)和同步脉冲(SP)的开始点之间要有约30个点,同步脉冲(SP)的结束点和水平帧长(HFL)之间也一样.而且它们必须是8的倍数!我们被卡住了吗?

不.让我们这么做, 936 % 8 = 0 ,而 (936 + 32) % 8 = 0 .但 936 + 32 = 968 , 968 + 227 = 1195 , 1195 + 32 = 1227 .嗯..这看起来还不算太坏.但它不是8的倍数,所以让我们把它向上舍入为1232.

但现在我们有潜在的麻烦了,同步脉冲不再位于h和H的正中.幸亏用计算器我们发现 1232 - 32 = 1200 也是8的倍数,而且 (1232 - 32) - 968 = 232 ,相应于使用3.57微秒长的同步脉冲,仍然合理.

另外, 936 / 1232   0.76或76%,仍然离80%不远,因此应该没问题.

此外,使用当前的水平帧长,我们要求显示器同步于52.7KHz(= 65MHz / 1232),在其承受范围之内.没问题.

用前面提过的经验法则, 936 * 75% = 702 ,这是我们新的垂直分辨率. 702 * 1.05 = 737 ,我们新的垂直帧长.

屏幕刷新率= 65MHz / (737 * 1232) = 71.6Hz .依然很好.

画出的场同步脉冲布局图是类似的:

   |___ __ __ __ __ __ __ __ __ __ __ __ __
   |_ _ _ _ _ _ _ _ _ _ _ _                |
   |_______________________|_______________|_____
   0                      VR              VFL     单位:点数
                           ^   ^       ^
                           |   |       |
                           |<->|<----->|
                            VGT    VSP

我们在垂直可视区刚结束时开始同步脉冲.VGT是同步脉冲的垂直防护时间.大部分显示器VGT为0(没有防护时间)时都没问题.我们在这个例子里就那样设定.少数需要两或三个点的防护时间,加上这个通常没有害处.

回到本例:根据帧长的定义,一个垂直点时钟是跟踪完整的一个水平帧的时间,因此在我们的例子里,它是 1232 / 65MHz = 18.95us .

经验告诉我们一个场同步脉冲应该在50us和300us范围之间.让我们用150us做一个例子,并换算成8个垂直点时钟(150us / 18.95us   8).

一些人喜欢引用他们的垂直帧参数而不是点数宽度作为时序.你也许会看见下列术语:

活跃时间(VAT)

相当于VR,但以毫秒为单位. VAT * VSF = VR .

消隐时间(VBT)

相当于 (VFL - VR) ,但以毫秒为单位. VBT * VSF = (VFL - VR) .

上升沿(VFP)

这就是VGT.

同步时间

这就是VSP.

下降沿(VBP)

这是在场同步脉冲后的又一个防护时间.它通常是零.


Next Previous Contents