久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

HDMI介紹與流程

 caorr1980 2016-07-21

HDMI,全稱為(High Definition Multimedia Interface)高清多媒體接口,,主要用于傳輸高清音視頻信號,。

 

HDMI引腳:

HDMI有A,B,C,D,E五種引腳類型,目前市面中比較常見的就是Type A:

其中

  • 1-9 都是TMDS數(shù)據(jù)傳輸實際上用到的引腳,,分為0,1,2三組
  • 10-12 為TMDS時鐘信號,,如當前Video Timing為480p@60Hz(Htotal:800,Vtotal:525),,則TMDS clock = 800x525x60 = 25.2MHz,。TMDS clock就像是對像素的打包,一個clock分別在三個Channel傳輸一個像素的R,、G,、B(8bit)信號。
  • 13 為CEC(consumer electronic control)類似一種擴展的HDMI功能,,供廠家自己定制HDMI消息,,(比如說你有一臺sony的DVD與TV,,兩者用HDMI線接上,如果你用TV的遙控器可以控制DVD,,另DVD執(zhí)行某種功能,,那么該功能的命令信號就是通過TV與DVD間的CEC引腳傳輸?shù)模?/li>
  • 14 為保留引腳,未使用(或者也可以為CEC提供多一個引腳)
  • 15-16 為I2C引腳,,用于DDC(Display Data Channel,,主要用于EDID與HDCP的傳輸)傳輸,具體可以查看,。在HDMI的流程中,,DDC通信幾乎是最先做的(前有Hotplug),因為HDMI的主從兩個設(shè)備需要通過DDC來獲得他們對方設(shè)備的EDID,,從而得到各種信息,,并且通過比較timming以確定以后送出來的timming為最合適的
  • 17 為接地引腳
  • 18 為5v的AC引腳
  • 19 為Hotplug(熱拔插)引腳(用于監(jiān)測HDMI設(shè)備有沒有存在,如果存在(Hotplug為high)那么可以通過DDC去讀EDID),,HDMI有規(guī)定在HDMI 5vAC斷電時source device可以讀reciever device的EDID,,也就是需要Hotplug為High。其中有兩種Hotplug相關(guān)的情況會導致HDMI被識別為DVI:
    1. Hotplug為High,,不過EDID并沒有準備好,,那么信號源設(shè)備會由于無法讀到EDID而認為接收設(shè)備為DVI,這樣會導致HDMI有圖像無聲的問題,。
    2. Hotplug為Low,,也會導致信號源無法讀到EDID而認為接收設(shè)備為DVI,從而導致HDMI有圖無聲
    3. 在TV這種有多個HDMI通道的情況下,,有時會在多個HDMI通道進行切換,,切換后HDMI通道應當先初始化,即先把Hotplug拉低,,通知HDMI source device之前所用的EDID已經(jīng)改變,,需要重新讀取,那么source device在Hotplug被拉高的時候會去讀取新的EDID,,但是拉低這個過程至少需要100ms,,否則source device有可能不會去讀取新的EDID,從而輸出DVI信號

 

傳輸流程

HDMI TMDS傳輸?shù)臄?shù)據(jù)類型有三種(加上Hsync與Vsync就算4種):

  1. Preamble(控制信息),,主要用于控制接下來傳輸?shù)臄?shù)據(jù)是Data Island或者Video Data
  2. Data Island(數(shù)據(jù)包),,各種類型的包信息,包括音頻數(shù)據(jù)包,,圖像信息包等
  3. Video Data (視頻信息),,視頻像素數(shù)據(jù),HDMI可以傳輸RGB與YUV兩種格式的像素數(shù)據(jù)
  4. 還有Hsync與Vsync

HDMI的數(shù)據(jù)傳輸有TMDS0,TMDS1,,TMDS2三個通道,,每個通道的傳輸流程都是一樣的:

  

如果是8bit的數(shù)據(jù)進入TMDS編碼器,得到抗干擾性強的10bit TMDS信號,,然后再進行串行化輸出,;在接收端收到串行的HDMI信號后,進行信號復原,,得到10bit的TMDS信號,,最后用TMDS解碼器解碼得到原來的8bit數(shù)據(jù)。

總體傳輸流程如下:

  

  

  1. 如果傳輸?shù)氖荲ideo Data,,并且格式為RGB,,那么會占用三個通道的所有24bit輸入,Channel0[7:0]用于傳輸B,,Channel1[7:0]用于傳輸G,,Channel2[7:0]用于傳輸R。
  2. 如果傳輸?shù)氖荄ata Island,,則占用三個通道共10bit輸入,,Channel0[3:2]用于傳輸Data Island Header(包頭),Channel1[0:3]與Channel2[0:3]用于傳輸Data Island Content(包內(nèi)數(shù)據(jù)),。
  3. 如果傳輸?shù)氖荘reamble,,則占用1,2兩個通道共4bit輸入,,Channel1[1:0]與Channel2[1:0]分別為CTL0,CTL1,CTL2,CTL3,用于判斷接下來輸入的是Video Data或者Data Island

對于Hsync與VSync,,會占用Channel0通道的兩個bit輸入,,Channel0[0]為Hsync,Channel0[1]為Vsync

 

傳輸周期

HDMI的TMDS數(shù)據(jù)傳輸可以分為三個傳輸周期:

  1. Control Period期間會傳輸Hsync,,Vsync,,并且在該時期的最后階段會傳輸Preamble
  2. Data Island Period期間會傳輸Data Island(數(shù)據(jù)包),也會有Hsync與Vsync
  3. Video Data Period期間會傳輸Video Data(視頻像素數(shù)據(jù))

某幀的總體周期如下:

  

三個傳輸周期的過渡如下:

  

  1. 左邊是Control Period,,傳輸有Hsync,,Vsync與Preamble
  2. 中間是Data Island Period,傳輸有Hsync,,Vsync,,以及兩個Packet Header與Packet(每32個clock 一個packet);另外Data Island的兩端會用Guard Band保護并隔開Data Island的數(shù)據(jù),,因為這個階段傳輸?shù)臄?shù)據(jù)大多是非常重要的,,比如其中就有圖像分辨率,決定后面的Video Data數(shù)據(jù)的顯示方式
  3. 右邊是Video Data Island,傳輸視頻像素數(shù)據(jù),,在該時期的開頭也有Guard Band

 

Data Island Packet結(jié)構(gòu)

  

所有Data Island Packet都以32個時鐘脈沖為一個周期,,也就是說每32 clk傳輸一個包。

以上圖為例,,

  1. 包頭部是BCH block 4,,由Channel0[2]傳輸,32clk表示有32bit,,則為4byte,,前三個byte為包頭,最后一byte為校驗碼
  2. 包體為BCH block 0,1,2,3,,分別由Channel1,,Channel2共8根線傳輸,共有24byte與6byte的校驗碼
  3. Parity Bits校驗碼是用于檢驗HDMI Cable傳輸過程中是否發(fā)生了錯誤,,如果該Packet在HDMI接收端校驗錯誤,,如果只有一個bit的錯誤,那么可以修正,,超過1bit的錯誤會被判別為無效Packet(由于HDMI是一直在發(fā)送數(shù)據(jù)因此無法重發(fā)錯誤Packet,?)

所以說,在接收端,,在解完包之后,,需要取出各個BCH block的Parity bit,進行Calibration(校驗)

Packet類型各種各樣,,詳細請看HDMI Spec

 

Audio Clock

Audio的采樣率有44100,48000,,192000等,是各種各樣,,在HDMI傳輸時,,Audio是PCM級(無壓縮)傳輸,把PCM數(shù)據(jù)打散到各個包內(nèi),,為了得到每個音頻幀的數(shù)據(jù),,也需要知道Audio的采樣率。HDMI中規(guī)定Audio的傳輸方式:

Audio采樣率fs重建依靠的主要參數(shù)為:

  1. TMDS Clock
  2. CTS
  3. N

在發(fā)送設(shè)備這端,,已知參數(shù)有采樣率fs,,視頻時鐘Video Clock(TMDS clock),以及預先設(shè)定好的參數(shù)N,,求CTS:

CTS=N?fTMDS128×fx

在接收設(shè)備這端,,TMDS clock通過硬件設(shè)備可以得到,N,,與CTS通過Audio Packet傳輸過來,,求fs:

128?fs=N×fTMDSCTS

在接收端為了保持fs的穩(wěn)定與精確,需要進行鎖相,即用VCO(Voltage-controlled oscillator壓控振蕩器,,通過電壓控制產(chǎn)生的頻率)產(chǎn)生合適的頻率,,然后用PFD(Phase Frequency Detector)來鎖頻

 

  1. 首先,由于VCO有個最佳的工作區(qū)域如(200MHz~500MHz),,那么為了保證VCO在最佳工作頻率內(nèi),,我們可以從后倒推回來,先對輸出的fa128做乘法得到
    fvco=fa128×S×S2
    由于fa128只有那么幾種(44.1k,,48k等),,所以比較容易得到SS2
  2. 然后,為了更快進行頻率匹配,,需要對近來的頻率fx(就是晶振時鐘fcrystal)或者fv(pixel clock)做除法,,也對fvco做除法,令兩個趨向相等,。對于細微的區(qū)別可以用D Code 進行修正
    fvcoM=fxK
  3. 最后做PFD鎖相
  4. 第2,3步的反饋操作循環(huán)地進行,,最后可以得出比較穩(wěn)定的fvco
  5. 最終得到
    fa128=fvcoS×S2

 

HotPlug

HotPlug即熱拔插,當接上接口時就可以判定設(shè)備是否存在,,以進行后續(xù)工作,。

HDMI source device(HDMI HPD)會監(jiān)測sink device的Hotplug端口,如果Hotplug為High,,則證明設(shè)備可以工作,,然后去讀取DCC,如果為low,,則證明設(shè)備已斷開,。

HDMI sink device應該通過把Hotplug拉低,來通知source device EDID已經(jīng)被改變,,那么source device在Hotplug被拉高后,,就會重新來讀取新的EDID,拉低這段時間應該多于100ms,。

HDMI規(guī)定,,HDMI 的5v引腳通電時,,可以通過DCC去讀取EDID,,即需要保證Hotplug為high,有些Hotplug是直接接到5V上的(如下),。

Hotplug接法:(HDMI HPD(Hotplug detect ?)檢測sink的Hotplug端)

上面用5V引腳進行供電,,并接上Hotplug,這樣做就能保證每次source device接上sink device時,,都可以去讀取到EDID,。但是這樣做有一個缺點,當5V電源斷開時,會有5v的電壓回灌給HDMI HPD與Hotplug,,5V電壓會沖擊Hotplug,,一旦Hotplug引腳無法承受5V電壓的回灌,會被打穿,。

下面有個較好的Hotplug接法:

 

上面用的是額外的GPIO引腳加上三極管控制HDMI HPD為0還是1,,如果HDMI0_HPD_CTL輸出0,那么三極管斷開,,HDMI0_HPD偵測到High,,如果HDMI0_HPD_CTL輸出1,那么三極管打通,,HDMI0_HPD偵測到low,。

 

HDMI Sink

例如像TV這種就是HDMI的接收端,那么HDMI接收端需要做些什么東西,。

HDMI可以接收到的有三個通道的TMDS Data,,TMDS Clock,可以設(shè)置Hotplug,,還有DCC傳輸用的I2C引腳,。上面已經(jīng)講了TMDS Data,與設(shè)置Hotplug,,接下來分析TMDS Clock,。

TMDS Clock 就是Pixel Clock,即一個像素點所用的時鐘頻率,。TMDS Clock通過clk 引腳傳輸?shù)浇邮斩?,但是接收端并不清楚發(fā)送端發(fā)過來的TMDS Clock 頻率為多少,因此需要通過Phy(PHY是模擬數(shù)字轉(zhuǎn)換部分,,不同于ADC,,PHY是不知道采樣頻率的,需要自己鎖頻,、鎖相,,偵測確切的輸入頻率)來進行鎖相得到。但是由于HDMI頻寬太寬(480P@60Hz為25.2MHz,,1080P@60Hz為162MHz,,甚至還有高達340MHz的),一般VCO(壓控振蕩器,,通過電壓控制產(chǎn)生的頻率)無法覆蓋這么大的范圍,,因此需要分頻帶來設(shè)置Phy:

先偵測輸入頻率落在哪個頻帶,然后根據(jù)不同頻帶做不同設(shè)置,。

用TV產(chǎn)生的晶振來數(shù)count,,數(shù)得count后就知道TDMS Clock了

fcrystal=count×fTMDS,??

或者用1024個TMDS Clock來數(shù)晶振個數(shù)

1024×fTMDS=count×fcrystal,?,?

 

由于視頻信號從RGB個8bit通過TMDS編碼后變成了10bit,然后又串行化,,所以實際用于接收TMDS Data所用的時鐘應該為:

fReceiveClock=10×fTMDS

另外ReceiveClock也可以不用直接采用上面的乘法,,而是采用TMDSClock為參考、硬件鎖相的方法來得到,。

得到ReceiveClock后就可以去設(shè)置頻率PLL,,然后對三個通道進行采樣得到TMDS Data。

 

Timming Detect

在Sink端還有需要進行Timming Detect,,因為如果設(shè)備可以支持(如chroma),,HDMI可以自由更換Timming,而當Timming更換了之后,,Sink需要重新設(shè)定Phy,。因此,通過偵測頻率的改變來檢測是否更換了Timing是必要的,。一般會有一個中斷服務(或循環(huán))線程來偵測頻率的改變,,一旦頻率改變后,該進程會通知重新設(shè)定Phy,,保證HDMI的正確運行 

  

 

HDMI版權(quán)內(nèi)容保護之HDCP

HDCP通過DDC傳輸

HDCP主要用于版權(quán)視頻的保護,,舉例來說,如果有一臺藍光DVD播放機可以播放blueray DVD,,并且該DVD已經(jīng)獲得HDCP授權(quán),,你現(xiàn)在想把該DVD影像輸出到某臺TV,但是該TV沒有獲得HDCP授權(quán),,那么該TV可能就沒法播放影像,,或者播放質(zhì)量下降,如出現(xiàn)雪花,,圖像從1080p變?yōu)?80p,,或者沒有聲音,都有可能,。

HDCP是靠兩個設(shè)備的交互進行HDCP授權(quán)認證的,,認證流程如下

 

  1. Transmitter會發(fā)送一個key An(64bit)與Aksv(key selection vector 40bit)給Receiver
  2. Receiver接收到An后,也會發(fā)送一個Bkvs以及REPEATER(表明B設(shè)備是否為Repeater設(shè)備)給Transmitter
  3. Transmitter開始HDCP認證碼算法:

    要理解算法,,首先我們需要知道ksv是用來干嘛的

    1. 在每個HDMI設(shè)備內(nèi)部,,都會保存40組64bit的key,,key[40]
    2. 40bit的kvs,,每一個bit都是一個索引,,當kvs的某一位n為1時,會把key[n]取出來,,
    3. 把所有的key[n]相加,,得到km,
  4. Receiver也會做HDCP認證碼算法這個步驟得到km'
  5. Transmitter與Receiver都會用km\km'去做hdcpBlkCipher,,得到一個值R0與R0'
  6. 100ms后Receiver把R0'發(fā)送到Transmitter與R0做比較,,相等則認為認證完畢。當然km = km'才能保證R0 = R0',。
  7. 此后的每一幀,,Transmitter與Receiver都會運行一次hdcpBlockCipher,不過參數(shù)為上次生成的Ks與M,,生成的新參數(shù)為Ks,M,T
  8. 在第128幀的時候,,另R = T
  9. 在間隔第一次通信的2s后,再次進行認證
  10. 后續(xù)都采用7,8,9這三個步驟進行迭代認證

 

此外HDMI自1.1后還支持一個更快速與頻繁的認證方式,,就是上方設(shè)備通信圖的下半部分

  1. 在每第16的倍數(shù)幀,,用T與當前幀的Channel0的0像素做異或得到Pj
  2. Channel0的0像素到達Sink后,也與Sink的T‘做異或得到P'j
  3. Sink把P'j發(fā)送到Source,,與Pj做比較,,相同則通過認證

了解HDCP對于處理HDMI的異常現(xiàn)象很有幫助,,比如說如果時而出現(xiàn)雪花,,有可能是信號不好導致Channel0的0像素出錯,從而第二階段的認證有時會不成功...

 

HDMI Sink總流程

 

  1. 提取與分割10bit的TMDS串行數(shù)據(jù)
  2. 10bit的數(shù)據(jù),,通過不同線路進來的,,判斷是那種類型的:DE,Data Island,,RGB,,Hs,Vs,,Ctrl
  3. TMDS解碼
  4. HDCP解碼,,同時Hs,Vs,,DE做delay
  5. RGB與DE,,Hs,Vs...
  6. BCH解碼得到Packet,,錯誤驗證
  7. Packet含義解析
  8. 如果是信息,,則存到內(nèi)存
  9. 如果是Audio Data,生成采樣頻率
  10. Audio輸出

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多