1.03.2008

ADV7180 - about interrupt

ADV7180 有一個中斷輸出 pin : INTRQ.

先看一些縮寫好了 -____-

VDP : (VBI Data Processor).
VBI : Vertical Blanking Interval.

這是因為analog的電視把一些data (例如:字幕),放到畫面的 vertical blanking interval (就是畫面裡,上,下不會顯示出來的區域)。
所以需要額外的processor 來處理這一段的資料。

放在這個區域的資料可能會有:
  • teletext
  • CC/CCAP (Close Caption)
  • CGMS (Copy Generation Management System)
  • WSS (Wide Screen Signaling)
所以ADV7180 的 VDP (Vertical Blanking Interval Data Processor) 可以decode 這些standard
因為這些 VBI 的資料不是一直都有,VDP處理也需要時間,所以VDP 可以trigger Interrupt,programmer 可以設定,當VDP處理完哪些資料後,trigger interrupt。


Interrupt System Register Map : register 0x40 ~ 0x9C (不連續)

這一段 的register 好像都是設定 interrupt,開頭有個小小的 * mark:
To access the registers listed in Table, SUB_USER_EN in register 0x0E must be programed to 1.
所以說,要access interrupt 相關的register,要先把 register 0x0E 寫入 0x20 才行..
那寫完後要不要寫回0x00?

configure interrupt 的trigger source 要program interrupt mask,總共有4個interrupt mask.

但是有說明的部份,只有和VDP相關的部份,對於video detection 則沒有提,只有在register map 中的 bit name... (是要自己猜 ?)。

要偵測 video signal 是否存在,猜測幾個 interrupt status bit:
  • SD_LOCK_Q
  • SD_H_LOCK
  • SD_V_LOCK
使用一個 polling thread,polling reg 0x42 (先set reg 0x0E =0x20 再read reg 0x42)。

只read 0x42 : SD_LOCK, SD_UNLOCK:
  • Video 插入時,會有SD_LOCK
  • Video 移出時,會有SD_UNLOCK
這兩個interrupt 只有在"狀態變化" 時,才會動作。 ( edge-trigger)。
也就是說:
  1. Video 插入
  2. SD_LOCK = 1
  3. 寫入 reg 0x43 = 0x01 (clear SD_LOCK)
  4. SD_LOCK = 0 (雖然這時候 Video 依然插著)
  5. 拔出 Video
  6. SD_UNLOCK = 1
  7. 寫入 reg 0x43 = 0x02 (clear SD_UNLOCK)
  8. SD_UNLOCK = 0 (雖然這時候 Video 還沒插入)
  9. --- 回到 1---繼續
上面 "寫入 reg 0x43" 是 ADV7180 的interrupt 動作機制,意思ack interrupt。
!!發現 initstate 是 assume video in,所以啟動時若是Video In,則 SD_LOCK bit 不會set,
但是若是啟動時是 Video OUT,會有SD_UNLOCK bit。


5 則留言:

匿名 提到...

hi

方便請問一下嗎?

ADV7180,如果要設置成NTSC 系統,要設定那些暫存器呢

checko 提到...

有一堆register要設呢,我拿到的datasheet中一堆都沒有說明,但是sample code中都有用到。

所以目前ADV7180 的使用方法是...
先依照sample code設定一堆register,然後把結果mail 給FAE,
FAE會給另一組register設定值,之後,再把結果給FAE看...

如此 repeat!

很麻煩,而且有問題的話,也不知道是什麼問題。

所以我不喜歡用這種 "躲躲藏藏" 的chip。

為甚麼不把所有register的內容都說出來呢?

這樣 "東藏西藏" 的,會賣得比較好嗎?

下次選型的時候,ADV7180 這種一點都不open 的產品,我一定投反對票。

jerry72 提到...

你好想請問你是否可以給我 adv7180的rtl code範例呢?因為最近在弄video deocdr encoder在fpga版上,使用的ic剛好是adv7180和adv7179這兩顆,做的動作是從dvd播放器接上adv7180經過fpga再從adv7179解碼到tv上播放,因為身邊都沒有這些範例,可否參考一下您的 謝謝

checko 提到...

正如我comment所說的,就是一堆register要設,至於怎麼設?就要問 FAE了。
我也不知道每個 register 的內容,data sheet也不完全....

jerry72 提到...

請問你是用rtl code去設暫存器嗎,還是組語,因為已經把ADV7180和ADV7179做在FPGA版子上了,現在要將影像秀出來,因為是這方面的新手,完全不知該如何下手 謝謝。