精选聊城做网站的公司,苏州品牌网站制作公司,wordpress标签3d,广州住房和城乡建设部网站首页本篇主要介绍HDMI常见接口以及TMDS传输技术。 文章目录 一、HDMI简介二、TMDS传输技术1.编码(encoder)2.并转串#xff08;serializer#xff09;——OSERDESE2原语3.单端转差分——OBUFDS源语 三、常见的几种信号传输方式 一、HDMI简介
HDMI(High-Definition Multimedia I…本篇主要介绍HDMI常见接口以及TMDS传输技术。 文章目录 一、HDMI简介二、TMDS传输技术1.编码(encoder)2.并转串serializer——OSERDESE2原语3.单端转差分——OBUFDS源语 三、常见的几种信号传输方式 一、HDMI简介
HDMI(High-Definition Multimedia Interface)高清多媒体接口 能够同时传输视频和音频简化了设备的接口和连线; 提供了更高的数据传输带宽可以传输无压缩的数字音频及高分辨率视频信号 可以向下兼容DVI接口数字视频接口
常见接口 其中Type A型接口最常见,下面对A型接口展开介绍 DVI 和 HDMI 接口协议在物理层使用 TMDS 标准传输音视频数据。
TMDS最小化传输差分信号在DVI和HDMI视频接口中使用差分信号传输高速串行数据。TMDS差分传输技术使用两个引脚来传输一路信号利用这两个引脚间的电压差的正负极性和大小来决定传输数据的数值0或1。
二、TMDS传输技术
TMDS传输技术包括三部分 “编/解码”(encoder) 、 “并/串转换”(serializer)、差分输出
1.编码(encoder)
在编码阶段编码器将视频源中的像素数据、HDMI的音频附加数据以及行同步和场同步信号分别编码成10位的字符流。 在视频数据传输期间:TMDS编码器将图像的RGB数据转换为10位TMDS码并插入HSYNC和VSYNC信号的状态。 在控制模式期间:TMDS编码器传输特定的控制符号来表示HSYNC和VSYNC信号。这些符号被编码成10位TMDS码并通过数据通道传输到接收端。 注目前的HDMI显示项目中仅对三个颜色通道进行编码即可
2.并转串serializer——OSERDESE2原语
注意这里需要并转串的数据包括rgb数据、时钟信号 其中10bit的时钟信号定义为assign clk_10bit 10’b1111100000
这里需要使用OSERDESE2源语接口如下图所示 一个oserdese2最大实现8:1的并串转换那如何实现10:1的并串转换呢 答通过使用两个oserdese2位扩展实现10:1的转换。 两个oserdese2的连接方式如上一个(master)oserdese2一个(slave)oserdese2。 源语使用方式如下
OSERDESE2 #(.DATA_RATE_OQ (DDR), // 设置双倍数据速率.DATA_RATE_TQ (SDR), // DDR, BUF, SDR.DATA_WIDTH (10), // 输入的并行数据宽度为10bit.SERDES_MODE (MASTER), // 设置为Master用于10bit宽度扩展.TBYTE_CTL (FALSE), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC (FALSE), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH (1) // 3-state converter width (1,4)
)
OSERDESE2_Master (.CLK (serial_clk_5x), // 串行数据时钟,5倍时钟频率.CLKDIV (paralell_clk), // 并行数据时钟.RST (reset), // 1-bit input: Reset.OCE (1b1), // 1-bit input: Output data clock enable.OQ (serial_data_out), // 串行输出数据.D1 (paralell_data[0]), // D1 - D8: 并行数据输入.D2 (paralell_data[1]),.D3 (paralell_data[2]),.D4 (paralell_data[3]),.D5 (paralell_data[4]),.D6 (paralell_data[5]),.D7 (paralell_data[6]),.D8 (paralell_data[7]),.SHIFTIN1 (cascade1), // SHIFTIN1 用于位宽扩展.SHIFTIN2 (cascade2), // SHIFTIN2.SHIFTOUT1 (), // SHIFTOUT1: 用于位宽扩展.SHIFTOUT2 (), // SHIFTOUT2.OFB (), // 以下是未使用信号.T1 (1b0), .T2 (1b0),.T3 (1b0),.T4 (1b0),.TBYTEIN (1b0), .TCE (1b0), .TBYTEOUT (), .TFB (), .TQ ()
);//例化OSERDESE2原语实现并串转换,Slave模式
OSERDESE2 #(.DATA_RATE_OQ (DDR), // 设置双倍数据速率.DATA_RATE_TQ (SDR), // DDR, BUF, SDR.DATA_WIDTH (10), // 输入的并行数据宽度为10bit.SERDES_MODE (SLAVE), // 设置为Slave用于10bit宽度扩展.TBYTE_CTL (FALSE), // Enable tristate byte operation (FALSE, TRUE).TBYTE_SRC (FALSE), // Tristate byte source (FALSE, TRUE).TRISTATE_WIDTH (1) // 3-state converter width (1,4)
)
OSERDESE2_Slave (.CLK (serial_clk_5x), // 串行数据时钟,5倍时钟频率.CLKDIV (paralell_clk), // 并行数据时钟.RST (reset), // 1-bit input: Reset.OCE (1b1), // 1-bit input: Output data clock enable.OQ (), // 串行输出数据.D1 (1b0), // D1 - D8: 并行数据输入.D2 (1b0),.D3 (paralell_data[8]),.D4 (paralell_data[9]),.D5 (1b0),.D6 (1b0),.D7 (1b0),.D8 (1b0),.SHIFTIN1 (), // SHIFTIN1 用于位宽扩展.SHIFTIN2 (), // SHIFTIN2.SHIFTOUT1 (cascade1), // SHIFTOUT1: 用于位宽扩展.SHIFTOUT2 (cascade2), // SHIFTOUT2.OFB (), // 以下是未使用信号.T1 (1b0), .T2 (1b0),.T3 (1b0),.T4 (1b0),.TBYTEIN (1b0), .TCE (1b0), .TBYTEOUT (), .TFB (), .TQ ()
);
需要注意的是该源语需要使用两个时钟信号 其中Pixel clk为并行数据时钟Pixel clk x5为串行数据时钟是Pixel clk的5倍。 问将10位的并行数据转换成串行数据串行时钟为什么不是并行时钟的10倍而是五倍呢 答OSERDESE2通常工作在DDR模式下在这种模式下数据在时钟的上升沿和下降沿都被传输因此串行数据时钟只需要并行数据时钟的5倍即可。 3.单端转差分——OBUFDS源语 原语使用方式如下
三、常见的几种信号传输方式