chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于FPGA的TMDS編碼簡析

FPGA技術(shù)江湖 ? 來源:FPGA技術(shù)江湖 ? 2024-03-26 09:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在我們之前的學(xué)習(xí)中,了解到HDMI是一種全數(shù)字化視頻和聲音發(fā)送接口,可以發(fā)送音頻以及視頻信號。HDMI向下兼容DVI,DVI只能傳輸視頻信號。HDMI和DVI接口協(xié)議在物理層均使用TMDS標(biāo)準(zhǔn)來傳輸音頻或視頻信號,接下來就著重了解一下TMDS編碼。

TMDS(最小化傳輸差分信號)中,有四個(gè)通道,其中包含了三個(gè)數(shù)據(jù)通道和一個(gè)時(shí)鐘通道。其中數(shù)據(jù)通道用來傳輸顏色、音頻、控制等信號。HDMI默認(rèn)使用RGB(RGB888)三個(gè)數(shù)據(jù)通道,當(dāng)然也可以是亮度和色度信息(YCrCb,44或者42)。

681ba772-eb09-11ee-a297-92fbcf53809c.png

上圖為HDMI的鏈接框架;

通道0傳輸?shù)臄?shù)據(jù)為:B分量的視頻數(shù)據(jù)、行場同步信號、音頻信號。

通道0傳輸?shù)臄?shù)據(jù)為:G分量的視頻數(shù)據(jù)、控制信號、音頻信號。

通道0傳輸?shù)臄?shù)據(jù)為:R分量的視頻數(shù)據(jù)、控制信號、音頻信號。

不同的數(shù)據(jù)在TMDS數(shù)據(jù)通道中在三種不同的周期中發(fā)送。

682af9de-eb09-11ee-a297-92fbcf53809c.png

在TMDS傳輸標(biāo)準(zhǔn)中,不論是視頻信號、控制信號還是輔助信號,都是以10bit的數(shù)據(jù)傳輸,所以需要對這三個(gè)信號進(jìn)行編碼,分別采用不同的編碼方式。

683e9c82-eb09-11ee-a297-92fbcf53809c.png

在此,我們著重說一下視頻編碼,在Xilinx官方給出的一個(gè)編碼示意圖中,我們可以清楚整個(gè)的編碼流程:

684ab846-eb09-11ee-a297-92fbcf53809c.png

圖中也體現(xiàn)出了控制信號的編碼方式:

6867d462-eb09-11ee-a297-92fbcf53809c.png

會(huì)對應(yīng)特定的四個(gè)值中的一個(gè)。

編碼如下:

1    `timescale 1 ps / 1ps
2  
3    module dvi_encoder (
4      input            clkin,    // pixel clock input
5      input            rstin,    // async. reset input (active high)
6      input      [7:0] din,      // data inputs: expect registered
7      input            c0,       // c0 input
8      input            c1,       // c1 input
9      input            de,       // de input
10     output reg [9:0] dout      // data outputs
11   );
12 
13     ////////////////////////////////////////////////////////////
14     // Counting number of 1s and 0s for each incoming pixel
15     // component. Pipe line the result.
16     // Register Data Input so it matches the pipe lined adder
17     // output
18     ////////////////////////////////////////////////////////////
19     reg [3:0] n1d; //number of 1s in din
20     reg [7:0] din_q;
21 
22   //計(jì)算像素?cái)?shù)據(jù)中“1”的個(gè)數(shù)
23     always @ (posedge clkin) begin
24     n1d <=#1 din[0] + din[1] + din[2] + din[3] + din[4] + din[5] + din[6] + din[7];
25 
26     din_q <=#1 din;
27     end
28 
29     ///////////////////////////////////////////////////////
30     // Stage 1: 8 bit -> 9 bit
31     // Refer to DVI 1.0 Specification, page 29, Figure 3-5
32     ///////////////////////////////////////////////////////
33     wire decision1;
34 
35     assign decision1 = (n1d > 4'h4) | ((n1d == 4'h4) & (din_q[0] == 1'b0));
36 
37     wire [8:0] q_m;
38     assign q_m[0] = din_q[0];
39     assign q_m[1] = (decision1) ? (q_m[0] ^~ din_q[1]) : (q_m[0] ^ din_q[1]);
40     assign q_m[2] = (decision1) ? (q_m[1] ^~ din_q[2]) : (q_m[1] ^ din_q[2]);
41     assign q_m[3] = (decision1) ? (q_m[2] ^~ din_q[3]) : (q_m[2] ^ din_q[3]);
42     assign q_m[4] = (decision1) ? (q_m[3] ^~ din_q[4]) : (q_m[3] ^ din_q[4]);
43     assign q_m[5] = (decision1) ? (q_m[4] ^~ din_q[5]) : (q_m[4] ^ din_q[5]);
44     assign q_m[6] = (decision1) ? (q_m[5] ^~ din_q[6]) : (q_m[5] ^ din_q[6]);
45     assign q_m[7] = (decision1) ? (q_m[6] ^~ din_q[7]) : (q_m[6] ^ din_q[7]);
46     assign q_m[8] = (decision1) ? 1'b0 : 1'b1;
47 
48     /////////////////////////////////////////////////////////
49     // Stage 2: 9 bit -> 10 bit
50     // Refer to DVI 1.0 Specification, page 29, Figure 3-5
51     /////////////////////////////////////////////////////////
52     reg [3:0] n1q_m, n0q_m; // number of 1s and 0s for q_m
53     always @ (posedge clkin) begin
54     n1q_m  <=#1 q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7];
55     n0q_m  <=#1 4'h8 - (q_m[0] + q_m[1] + q_m[2] + q_m[3] + q_m[4] + q_m[5] + q_m[6] + q_m[7]);
56     end
57 
58     parameter CTRLTOKEN0 = 10'b1101010100;
59     parameter CTRLTOKEN1 = 10'b0010101011;
60     parameter CTRLTOKEN2 = 10'b0101010100;
61     parameter CTRLTOKEN3 = 10'b1010101011;
62 
63     reg [4:0] cnt; //disparity counter, MSB is the sign bit
64     wire decision2, decision3;
65 
66     assign decision2 = (cnt == 5'h0) | (n1q_m == n0q_m);
67     /////////////////////////////////////////////////////////////////////////
68     // [(cnt > 0) and (N1q_m > N0q_m)] or [(cnt < 0) and (N0q_m > N1q_m)]
69     /////////////////////////////////////////////////////////////////////////
70     assign decision3 = (~cnt[4] & (n1q_m > n0q_m)) | (cnt[4] & (n0q_m > n1q_m));
71 
72     ////////////////////////////////////
73     // pipe line alignment
74     ////////////////////////////////////
75     reg       de_q, de_reg;
76     reg       c0_q, c1_q;
77     reg       c0_reg, c1_reg;
78     reg [8:0] q_m_reg;
79 
80     always @ (posedge clkin) begin
81     de_q    <=#1 de;
82     de_reg  <=#1 de_q;
83     
84     c0_q    <=#1 c0;
85     c0_reg  <=#1 c0_q;
86     c1_q    <=#1 c1;
87     c1_reg  <=#1 c1_q;
88 
89     q_m_reg <=#1 q_m;
90     end
91 
92     ///////////////////////////////
93     // 10-bit out
94     // disparity counter
95     ///////////////////////////////
96     always @ (posedge clkin or posedge rstin) begin
97     if(rstin) begin
98       dout <= 10'h0;
99       cnt <= 5'h0;
100    end else begin
101      if (de_reg) begin
102      if(decision2) begin
103        dout[9]   <=#1 ~q_m_reg[8]; 
104        dout[8]   <=#1 q_m_reg[8]; 
105        dout[7:0] <=#1 (q_m_reg[8]) ? q_m_reg[7:0] : ~q_m_reg[7:0];
106
107        cnt <=#1 (~q_m_reg[8]) ? (cnt + n0q_m - n1q_m) : (cnt + n1q_m - n0q_m);
108      end else begin
109        if(decision3) begin
110        dout[9]   <=#1 1'b1;
111        dout[8]   <=#1 q_m_reg[8];
112        dout[7:0] <=#1 ~q_m_reg[7:0];
113
114        cnt <=#1 cnt + {q_m_reg[8], 1'b0} + (n0q_m - n1q_m);
115        end else begin
116        dout[9]   <=#1 1'b0;
117        dout[8]   <=#1 q_m_reg[8];
118        dout[7:0] <=#1 q_m_reg[7:0];
119
120        cnt <=#1 cnt - {~q_m_reg[8], 1'b0} + (n1q_m - n0q_m);
121        end
122      end
123      end else begin
124      case ({c1_reg, c0_reg})
125        2'b00:   dout <=#1 CTRLTOKEN0;
126        2'b01:   dout <=#1 CTRLTOKEN1;
127        2'b10:   dout <=#1 CTRLTOKEN2;
128        default: dout <=#1 CTRLTOKEN3;
129      endcase
130
131      cnt <=#1 5'h0;
132      end
133    end
134    end
135    
136  endmodule

編碼完成后,對數(shù)據(jù)我們需要進(jìn)行并串轉(zhuǎn)換,此操作我們可以使用原語OSERDES2實(shí)現(xiàn)10-to-1的過程。最后用OBUFDS將串行數(shù)據(jù)轉(zhuǎn)換為差分信號輸出即可。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1644

    文章

    22007

    瀏覽量

    616375
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    806

    瀏覽量

    59750
  • HDMI接口
    +關(guān)注

    關(guān)注

    1

    文章

    136

    瀏覽量

    34767
  • TMDS
    +關(guān)注

    關(guān)注

    1

    文章

    22

    瀏覽量

    15759
  • 信號編碼
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    6337

原文標(biāo)題:基于FPGA的TMDS編碼

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術(shù)江湖】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    新能源電池產(chǎn)業(yè)鏈及投資機(jī)會(huì)-磷酸亞鐵鋰

    新能源電池產(chǎn)業(yè)鏈及投資機(jī)會(huì)-磷酸亞鐵鋰  一、前言
    發(fā)表于 12-25 09:34 ?1086次閱讀

    基于FPGATMDS編碼

    音頻或視頻信號,接下來就著重了解一下TMDS編碼。 TMDS(最小化傳輸差分信號)中,有四個(gè)通道,其中包含了三個(gè)數(shù)據(jù)通道和一個(gè)時(shí)鐘通道。其中數(shù)據(jù)通道用來傳輸顏色、音頻、控制等信號。HDMI默認(rèn)
    發(fā)表于 04-09 15:45

    【至設(shè)計(jì)案例系列】基于FPGA的曼徹斯特編碼解碼設(shè)計(jì)

    案例系列基于FPGA的曼徹斯特編碼解碼設(shè)計(jì)實(shí)驗(yàn)簡述將輸入的數(shù)據(jù)流經(jīng)過曼徹斯特編碼編碼后經(jīng)過解碼器恢復(fù)為原來的輸入序列。1.1 曼徹斯特
    發(fā)表于 04-24 14:22

    基于ATM理念的UTRAN傳輸架構(gòu)

    基于ATM理念的UTRAN傳輸架構(gòu):UTRAN(UMTS無線接入網(wǎng))系統(tǒng)傳輸網(wǎng)承載其內(nèi)部業(yè)務(wù)傳送及至CN(核心網(wǎng))側(cè)的業(yè)務(wù)匯聚功能,考慮3G網(wǎng)絡(luò)內(nèi),話音、媒體流及Internet等數(shù)據(jù)業(yè)務(wù)的多樣
    發(fā)表于 10-22 10:49 ?15次下載

    電動(dòng)汽車用鋰離子電池技術(shù)的國內(nèi)外進(jìn)展

    電動(dòng)汽車用鋰離子電池技術(shù)的國內(nèi)外進(jìn)展
    發(fā)表于 11-10 13:53 ?859次閱讀

    PCB線路板電鍍銅工藝

    PCB線路板電鍍銅工藝   一.電鍍工藝的分類:   酸性光亮銅電鍍電鍍鎳/金電鍍錫   二.工藝流程:
    發(fā)表于 11-17 14:01 ?4299次閱讀

    EPON技術(shù)

    EPON技術(shù) EPON是一個(gè)新技術(shù),用于保證提供一個(gè)高品質(zhì)與高帶寬利用率的應(yīng)用。   EPON在日本、韓國、中國大陸、中國臺灣及其它以以太網(wǎng)絡(luò)為基礎(chǔ)的地區(qū)都
    發(fā)表于 01-22 10:43 ?984次閱讀

    筆記本屏幕亮度與反應(yīng)速度

    筆記本屏幕亮度與反應(yīng)速度 屏幕亮度   筆記本TFT-LCD的亮度值一般都在150~200 cd/m2(極少數(shù)可以
    發(fā)表于 01-23 09:34 ?856次閱讀

    BGA封裝技術(shù)與質(zhì)量控制

    BGA封裝技術(shù)與質(zhì)量控制  ?。樱停裕⊿urface Mount Technology)表面安裝技術(shù)順應(yīng)了電子產(chǎn)品小型化、輕型化的潮流趨勢,為實(shí)現(xiàn)電子
    發(fā)表于 03-30 16:49 ?1628次閱讀

    FPGA運(yùn)行模式

    FPGA 有兩種運(yùn)行模式,即下載模式和燒寫模式。下載模式是在上電的情況下通過 JTAG 接口直接把程序( Altera 平臺下是.sof文件,SRAM Object File)下載到FPGA中。因?yàn)?b class='flag-5'>FPGA是基于SRAM結(jié)構(gòu)的,
    發(fā)表于 05-12 13:17 ?2851次閱讀

    鼠標(biāo)HID例程(中)

    鼠標(biāo) HID 例程 緊接《鼠標(biāo) HID 例程(上)》一文,繼續(xù)向大家介紹鼠 標(biāo) HID 例程的未完的內(nèi)容。
    發(fā)表于 07-26 15:18 ?0次下載

    籠型三相異步電動(dòng)機(jī)噪聲故障

    籠型三相異步電動(dòng)機(jī)噪聲故障_陳金剛
    發(fā)表于 01-01 15:44 ?1次下載

    比較器的原理及應(yīng)用資料下載

    電子發(fā)燒友網(wǎng)為你提供比較器的原理及應(yīng)用資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-14 08:40 ?27次下載
    <b class='flag-5'>簡</b><b class='flag-5'>析</b>比較器的原理及應(yīng)用資料下載

    5G AAU 功放控制和監(jiān)測模塊

    5G AAU 功放控制和監(jiān)測模塊
    發(fā)表于 10-28 12:00 ?2次下載
    5G AAU 功放控制和監(jiān)測模塊<b class='flag-5'>簡</b><b class='flag-5'>析</b>

    AFE8092幀同步特性

    AFE8092幀同步特性
    的頭像 發(fā)表于 08-24 13:37 ?932次閱讀
    AFE8092幀同步特性<b class='flag-5'>簡</b><b class='flag-5'>析</b>