999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的HDMI轉SDI設計與實現

2020-10-09 10:10:17李雁
中國科技縱橫 2020年9期

李雁

摘 要:介紹了HDMI2.0的協議及通過FPGA編碼實現HDMI協議的DDC、解擾、解碼、音頻包提取、視頻數據提取的功能。使用IP SMPTE UHD-SDI和UHD SDI Audio實現SDI協議,自編接口適配程序完成SDI音頻嵌入接口實現以及SDI視頻DS流成幀器的實現。

關鍵詞:HDMI;SDI;IEC60958;EDID;I2C;HPD

中圖分類號:TN948.6 文獻標識碼:A 文章編號:1671-2064(2020)09-0062-03

0 引言

高清晰多媒體接口HDMI已經成為任何高清數字電視和多媒體設備之間的標準接口,目前廣泛應用在數字液晶電視、數碼相機、家用投影機、機頂盒、平板電腦等消費類電子中。在專業的數字電影投影機領域,串行數字接口SDI作為專業廣播室視頻設備中的數據傳輸接口,通過同軸電纜傳輸無壓縮的數字視頻信號,保證畫質無損。由于SDI接口的硬件成本比較高昂,且信號傳輸的數據量大,對信號質量要求度比較高,所以只有在一些專業的音視頻設備中才具有SDI接口,但由于一系列消費類電子產品目前已經能支持清晰度質量高的HDMI信號輸出,為了實現HDMI信號能夠輸出到具有SDI接口的設備中進行處理,所以需要進行HDMI轉SDI的信號轉換[1]。

1 FPGA內部實現架構

FPGA采用XILINX公司的XCKU035-FBVA676-2,該芯片的GTH高速串行收發器能支持12G SDI所需的11.88G速率,在接收端,HDP模塊上電后輸出高電平,使得源端檢測到HDMI在線,然后源端通過I2C訪問FPGA內部的EDID,獲取FPGA作為HDMI接收端的接收能力,例如分辨率,刷新率等,從而源端發送最適合接收端的視頻源數據。3路5.94G的HDMI信號CH0/1/2進入FPGA的GTH,GTH主要完成時鐘恢復,串并轉換,得到40bit位寬的并行數據輸出,對原始數據進行解擾后,識別出控制周期,數據島周期,視頻數據周期。從視頻數據周期數據提取出HS,VS,DEN,DATA,從數據島周期提取出AES格式音頻數據。

HDMI接收到的視頻數據一般為RBG格式,轉換成SDI的YCbCr格式后緩存,SDI成幀器根據前級數據的HS,VS,DEN產生行列計數及相應的前導數據,將YCbCr數據取出填充到幀結構的數據中形成DS數據流,使用XILINX的IPCORE SMPTE UHD-SDI完成12G-SDI信號合成,首先是在DS數據流中插入ST352,輸出的DS流進入XILINX的IPCORE UHD SDI Audio,該IP可以將音頻數據通過AXIS接口插入到DS中,插入音頻數據的DS再接回SMPTE UHD-SDI的DS_IN,形成40bit的并行數據后通過GTH發送出12G-SDI。模塊端內部框圖如圖1所示。

2 FPGA內部詳細設計

2.1 HPD

HDP是HDMI的熱插拔功能,當HDMI線纜沒有插入或者FPGA沒有上電的時候,該信號是0V,FPGA上電后固定輸出高電平,經過硬件器件變為5V,插上HDMI線纜后,源端就能檢測到HDMI從機在線。

2.2 EDID

EDID是源端通過I2C讀取從機ROM,獲取從機接收能力,從而發送相應的數據源。I2C的設計遵循I2C的標準協議。使用本地晶振25M作為系統時鐘,該時鐘遠大于400k的I2C速率,方便準確采集I2C的時鐘和數據邊沿以及判斷時鐘高電平的中間時刻。

使用狀態機進行從機設計,劃分9個狀態,分別是Idle(空閑),Start(開始),Saddr(從機地址),JudgeRW(讀寫判斷),Ark(應答),WrRegAddr(寫寄存器地址),WrData(寫數據),RdData(讀數據),WaitArk(等待應答)。狀態跳轉規則要符合I2C標準協議。

在時鐘高電平時檢測到數據出現下降沿,強制進入Start狀態,在時鐘高電平時檢測到數據上升沿,強制進入Idle狀態。每次檢測到時鐘高電平中間時刻,對狀態進行BIT計數,每次轉換狀態,BIT計數歸零。達到狀態預設的BIT值時,狀態跳變。各個狀態對應的BIT計數值如表1所示。

在WrRegAddr狀態,記錄主機要訪問的寄存器,在WaitArk狀態,檢測到主機應答后,寄存器地址自動+1。從而支持連續讀模式。在WaitArk狀態,根據寄存器地址將相應數據寄存到輸出移位寄存器,移位寄存器在時鐘高電平時刻將數據移位輸出,完成I2C的數據傳輸。

2.3 HDMI解擾

HDMI2.0版標準中定義了非加擾控制周期,占用8個時鐘周期,用于三個數據通道的同步對齊及復位加擾因子為初始值。加擾算法的線性反饋移位多項式為G(x)=1+x11+x12+x13+x16。數據通道0的初始值為0xFFFF,數據通道1的初始值為0xFFFE,數據通道2的初始值為0xFFFD。當接收器狀態為視頻數據周期時,將8bit視頻數據與解擾因子的高8bit進行異或運算,得到解擾后的視頻數據。當接收器狀態為數據島周期時,將4bit音頻及輔助數據與解擾因子的高4bit進行異或運算,得到解擾后的音頻及輔助數據。當接收器狀態為加擾控制周期時,將4bit控制矢量與解擾因子的高4bit進行異或運算,得到控制數據[2]。

2.4 信號段檢測

數據解擾后,需要識別出控制周期,數據島周期,視頻數據周期。識別的特征數據在HDMI2.0中,與以前的版本略有不同,不同之處在于:

(1)視頻數據周期保護帶,HDMI2.0采用的是視頻數據編碼,而HDMI1.4采用的是固定值;

(2)數據島周期保護帶,HDMI2.0通道0采用的是可糾錯編碼,通道1和2采用的是視頻數據編碼,而HDMI1.4采用的是固定值;

(3)控制周期,HDMI2.0中非加擾控制周期采用控制周期編碼,加擾控制周期采用查找表,而HDMI1.4只采用控制周期編碼。

根據各個周期的特征數據完成識別后,生成特征標致信號給后級模塊[3]。

2.5 視頻接收

從CH0中提取出HS,VS,在控制周期,HS,VS采用CTL編碼。在數據島周期,采用TERC4編碼。視頻數據使用TMDS編碼。CTL編碼和TERC4編碼分別又4種情況和16種情況,采用查找表完成,TMDS解碼根據協議中的解碼流圖進行設計。最高位為1時,低8位取反,否則保持不變,得到解碼中間數據。次高位為1時,解碼的bit[i]=解碼中間數據的bit[i]異或解碼中間數據的bit[i-1]。次高位為0時,解碼的bit[i]=解碼中間數據的bit[i]異或解碼中間數據的bit[i-1]后取反。上述操作i=7到1。解碼的bit[0]=解碼中間數據的bit[0]。

2.6 音頻接收

音頻數據位于數據島周期中,數據島周期除了傳遞音頻包,還可以傳遞各種控制包,在本次設計中,我們只提取數據島周期包類型值為0x02的音頻采樣包。首先數據先進行TERC4解碼,得到4bit的原始數據。每次數據島周期持續時間為32個時鐘周期的整數倍。連續32個CH0的bit[2]組合得到4個包頭字節,其中前三個字節是內容,最后一個字節是BCH(32,24)編碼后的校驗位。通過BCH解碼能夠實現序列的誤碼探測和誤碼糾錯,最多可糾正4個bit錯誤。我們需要提取第一字節為0x02的音頻采樣包,第二字節的bit[4]為0表示音頻包中有2個音頻通道,為1表示音頻包中有8個音頻通道。當2通道時,子包0/1/2/3分別傳遞音頻采樣channel 0/1的采樣點N,N+1,N+2,N+3。當8通道時,子包0/1/2/3分別傳遞音頻采樣channel 0~7的采樣點N。第二字節的bit[3∶0]表示音頻通道有效。第三字節的bit[3:0]在音頻通道有效的條件下,為1表示該通道此包的音頻采樣點是填充數據,解碼時應當刪除該填充采樣點。第三字節的bit[7∶4]各個bit為1時分別代表每個音頻通道對此時時IEC60958的幀頭第一個音頻采樣點。用于設置PCUV的幀同步計數器歸零。

CH1和CH2的bit位按一定規律結合成4個子包,每個子包有7個有效字節,1個字節的BCH(64,56)校驗位,能夠檢測錯誤并糾正最多4個bit的錯誤。bit組合規則是CH1和CH2的bit[N]交叉組合得到子包N。每個子包的內部結構相同。字節0~2傳遞IEC60958的子幀0的bit[27∶4],也就是左聲道音頻采樣,字節3~5傳遞IEC60958的子幀1的bit[27∶4],也就是右聲道音頻采樣,字節6的bit[3∶0]和[7∶4]傳遞IEC60958子幀0和1的bit[3∶0],即PCUV。P為校驗位,C為狀態位,U為用戶定義位,V為有效指示位。其中192個C組成一個控制幀,指示音頻的采樣速率,有效位等信息。

FPGA內收到前級的數據島周期指示信號后啟動數據計數器,每次計數到32的整數倍產生一個收包完成信號,在計數的同時,對CH1/2的數據bit[3∶0],CH0的bit[2]分別進行移位寄存。得到9組32bit的數據。收包完成信號有效時,按照前面所述的bit排列規則組合得到包頭和子包,同時啟動步驟計數器,分步對數據包進行解析。由于有可能出現連續兩個數據島周期,所以必須在32個步驟內完成解析。在步驟0判斷包頭第一個字節是0x02,產生音頻包指示信號,有效期設定為16個時鐘,則說明設計在16個步驟內完成解析。在步驟1解析出通道有效和通道填充位以及IEC60958的幀起始標致。在步驟2~9中,分別解析出4個子包中的8個音頻采樣點和對應通道號以及相應的PCUV。

2.7 RGB轉YCbCr

HDMI一般默認傳遞的是RGB信號,這是協議中要求必須支持的視頻格式,SDI傳遞的則是YCbCr格式的視頻數據,因此兩者之間需要進行格式轉換。實現公式如下:

Y=0.299R+0.587G+0.114B

Cb=-0.1687R-0.3313G+0.5B

Cr=0.5R-0.4187G-0.0813B

FPGA中的乘法位寬位18位,本次設計實現采用Q16實現,轉換后的公式為:

Y=19595R+38470G+7471B

Cb=-11056R-21712G+32768B

Cr=32768R-27440G-5328B

得到的結果右移16位即可。

轉換的結果需存入8個緩存,以便生成12G-SDI的8個DS流。奇數行的采樣點Y0,1存入DS1,采樣點Y3,4存入DS3,依次逐個存入DS1,3。奇數行的采樣點Cb0,Cr1,存入DS2,采樣點Cb2,Cr3存入DS4。依次逐個存入DS2,4。偶數行的采樣點Y0,1存入DS5,采樣點Y3,4存入DS7,依次逐個存入DS5,7。偶數行的采樣點Cb0,Cr1,存入DS6,采樣點Cb2,Cr3存入DS8,依次逐個存入DS6,8。

2.8 SDI音頻緩存

HDMI解碼的音頻數據格式與SDI是基本一致的,只需將IEC60958的子幀0幀頭指示標志轉譯成0x1,其余子幀0標志轉譯成0x2,所有子幀1標志轉譯成0x3即可和PCUV,音頻數據一起組合成32bit存入音頻緩存,使用AXIS接口的緩存,AXIS入口的ID信號繼續使用前級的TID表示通道號。當后級有效后,寫使能置1,從而才能將前級音頻數據寫入緩存。寫入緩存達到緩存量的一半時,讀使能置1,FPGA內部對主時鐘進行分頻計數得到48kHz的讀時鐘使能,在該使能的作用下,產生通道有效計數器,將輸出給后級AXIS的valid信號拉高,當后級AXIS接口的ready信號有效時,通道計數器加1,當通道計數器的值大于設定的N通道時,valid信號拉低。結束本次采樣使能的AXIS傳輸。當AXIS的valid和ready都有效時,產生AXIS緩存Master接口的ready,更新下一個通道數據。

主站蜘蛛池模板: 亚洲天堂网在线观看视频| 亚洲精品无码抽插日韩| 日韩毛片在线播放| 少妇极品熟妇人妻专区视频| 波多野衣结在线精品二区| 夜夜拍夜夜爽| 澳门av无码| 婷婷亚洲视频| 婷婷99视频精品全部在线观看| 日韩成人午夜| 欧美在线视频不卡| 国产成人精品免费视频大全五级 | 成人欧美日韩| 国产高潮流白浆视频| 波多野结衣一二三| 色婷婷色丁香| 国产精品白浆在线播放| 欧美精品成人一区二区在线观看| 无码高潮喷水在线观看| 国产成人乱无码视频| 国产高清色视频免费看的网址| 情侣午夜国产在线一区无码| 亚洲色欲色欲www网| 国产成人做受免费视频| 亚洲国产在一区二区三区| 国产激情影院| 国产小视频a在线观看| 欧美一区二区自偷自拍视频| 激情综合图区| 国产福利免费视频| 亚洲综合精品香蕉久久网| 亚洲中文字幕无码爆乳| 久久久久亚洲AV成人人电影软件| 91在线国内在线播放老师| 在线人成精品免费视频| 欧美日韩在线第一页| 久久这里只精品热免费99| 国产精品护士| 日韩欧美成人高清在线观看| 日韩精品专区免费无码aⅴ| 欧美福利在线| 精品91自产拍在线| 欧美综合在线观看| a级毛片一区二区免费视频| 宅男噜噜噜66国产在线观看| 国产欧美日韩在线一区| 一本无码在线观看| 久久99蜜桃精品久久久久小说| 在线中文字幕网| 亚洲精品自拍区在线观看| 婷婷六月综合网| 九色国产在线| 欧美精品伊人久久| 最近最新中文字幕免费的一页| 亚洲日韩精品伊甸| 欧美日韩综合网| 免费国产黄线在线观看| 国产手机在线小视频免费观看| 欧美午夜小视频| 一本大道在线一本久道| 国产日韩精品欧美一区喷| 日韩精品免费一线在线观看| 美女免费黄网站| 国产chinese男男gay视频网| 亚洲第一区精品日韩在线播放| 她的性爱视频| 免费在线观看av| 日韩在线影院| 18禁色诱爆乳网站| 国产免费网址| 午夜无码一区二区三区在线app| 波多野结衣在线一区二区| 伊人久久婷婷| 国产成人无码综合亚洲日韩不卡| 不卡午夜视频| 成人一级免费视频| 国产微拍一区二区三区四区| 欧美一级夜夜爽www| 国产在线专区| 国产成人艳妇AA视频在线| 亚洲天堂成人在线观看| 欧美色视频网站|