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