zoukankan      html  css  js  c++  java
  • [笔记]8组LVDS_TX和LVDS_RX的调试心得

    2014-04-02  13:55:22周三

    DownScaling记录:

    RX:FHD120,UHD30,UHD60。每组LVDS的输出是480X1080X4, 960X2160X4, 480X2160X8

    TX:FHD120,FHD30,FHD60。每组LVDS的输出是480X1080X2, 1920X1080X1, 960X1080X2

    当RX-FHD120进行无FRC处理得到TX-FHD60时,输出的是960X540X2,叫540P半屏是一帧。

    FPGA的LVDS OUT接6509屏时, 要注意输出线上要有12V的电压,TCON打开后才能显示。

    FPGA板子C与E的8个LED灯位置不一致。

    当不知道R,B的组合是什么颜色时,可以借用PC上的颜色管理器查看,GOOD!

    Altera Arria5板子的DownScaling test,特别注意Xilinx和Altera的LVDS格式对应不同,因此在提取和合并LVDS的数据时,要注意DE/V/H的位置。          

                 

    Altera中LVDS格式排列:28位和35位一致。

    RX4

    34

    33

    32

    31

    30

    29

    28

    RX3

    27

    26

    25

    24

    23

    22

    21

    RX2

    20

    19

    18

    17

    16

    15

    14

    RX1

    13

    12

    11

    10

    9

    8

    7

    RX0

    6

    5

    4

    3

    2

    1

    0

    Xilinx中LVDS格式排列: 35位

    RX4

    4

    9

    14

    19

    24

    29

    34

    RX3

    3

    8

    13

    18

    23

    28

    33

    RX2

    2

    7

    12

    17

    22

    27

    32

    RX1

    1

    6

    11

    16

    21

    26

    31

    RX0

    0

    5

    10

    15

    20

    25

    30

    Xilinx中LVDS格式排列: 28位

    RX3

    3

    7

    11

    14

    18

    22

    27

    RX2

    2

    6

    10

    13

    17

    21

    26

    RX1

    1

    5

    9

    12

    16

    20

    25

    RX0

    0

    4

    8

    14

    15

    19

    24

    来源:F:\2014\2014_task\Xilinx\Spartan6\downscaling_rx4_tx2_2\doc

    和F:\2014\2014_task\Xilinx\Spartan6\downscaling_rx4_tx2_3

    这两个工程都已经测试通过了,实现的功能是

    输入信号源可能是CMI屏中两种信号(UHD30和FHD120)和CSOT屏中一种信号(UHD60),要做到可以自动识别这三种信号且做相应的DownScaling功能。

     一、CMI屏的特点是

    80板子上--需要外接转接线板子。。

    1、4K2K@30HZ  做DownScaling到FHD@30HZ

    4K2K@30HZ相关参数是4 组LVDS INPUT 960*2160

    FHD@30HZ相关参数是1组LVDS INPUT 1920*1080

    行上像素少一半,场上行少一半。。。

    1、  FHD@120HZ 直接做LVDS Bypass两路到工厂的仪器K-2715上,该仪器能识别到且可以FRC到FHD@60HZ的HDMI输出。

    FHD@120HZ相关参数是4组LVDS INPUT  480*1080

    2、  FHD@120HZ做DownScaling到FHD@60HZ,而没有做FRC功能。

    场上行少一半,帧上场少一半。。。体现在1080P到540P,半屏是一帧。。

    二、CSOT屏的特点是

    81板子上Source (input) 2580进入CSOT的工厂模式。。。

    818板子出来的时钟只有72MHZ左右,达不到74.25MHZ。。。主要是H_Total只有533。时钟是如何计算了。。。。

    4K2K@60HZ  做DownScaling到FHD@60HZ

    UHD60---4K2K@60的相关参数是8组LVDS INPUT 480*2160。。。

    //CSOT V_TOTAL  此时HDMI子板不支持,分析原因是单组LVDS的H_TOTAL只有533,而一般FHD60要达到550.

    parameter H_SYNC=11,H_FRONT=22,H_BACK=20,H_VISIBLE=480;// 4K2K@60Hz---8 lvds groups

    parameter V_SYNC=10, V_FRONT=8,V_BACK=72,V_VISIBLE=2160;//2160--2250

    1、4K2K@60HZ有8路LVDS,LVDS1234和LVDS5678

    LVDS1234的数据格式是1-2-3-4,5-6-7-8,9-10-11-12,。。。

    LVDS5678的数据格式是1990+     1-2-3-4,5-6-7-8,9-10-11-12,。。。

    2、LVDS的格式中没有V,H的参数,V,H始终为低电平。。。。

    调试方案一:

    FPGA板子信号出来直接接PANEL,不经过LVDS转HDMI子板。因为PANEL对行消隐区没那么严格(一般变动范围比较大)。确实如我所想的。因为我当初在FPGA内部观察信号都正确,可是HDMI子板出来的信号不对,就觉得是行消隐区为奇数的影响。

    后面验证外部接信号源,出现颜色不对的现象,RX的信号源是10bit的JEATA格式,而PANEL端是8bit的VESA格式。因此需要进行LVDS格式转换。。。

    由于8bit的VESA是采用LVDS 4组格式,因此我仍然用LVDS 5组格式,最高两位会被丢掉。分析结果是正确的。。终于将这路打通了,不容易啊!!!!其实也可以采用LVDS 5组进行发送,只要5组中的4组是严格按照LVDS 4组的信号格式发送的就好。

    问题解决:

        由于8组LVDS外部信号是通过两个独立的芯片进来的,因此数据会不同步,1234与5678(1990+1234)的数据需要同步处理,采用DE来判断。。。当5678组LVDS的数据是(1990+1,2,3,4)时,需要进行Conv处理,

    LVDS的TX只能位于BANK0或者BANK2,而LVDS的RX可以位于任何BANK。

    2012-12-13  周四 晴

    今天开始研究LVDS的TX和RX均采用外部PLL的情况。

    2012-10-23  周二 晴

    今天用ArriaV开发板调试1080P的PANEL,需要用到2组4通道7位的LVDS,RGB分别是8位。由于原理图的原理有很多组线的信号需要取反。有时我自己也搞晕了。对于LVDS_TX的测试一直都没有输出,我也觉得无计可施,后来Master说你可以将DE所在通道赋给其他通道,即所有通道都选用DE的通道,这样至少可以先保证DE、HD、VD这些关键信号是正确的。我觉得很有道理,因此也尝试了下结果就真的能输出了,只是屏幕显示的东西可能不是如你所愿。现在要分析原因了。

    后面才发现我用的是8组5通道7位的LVDS,RGB分别是10位。这样要转化成组4通道7位的LVDS,RGB分别是8位时,需要注意DATA[34:0]与DATA[27:0]间的对应关系。即LVDS在4通道和5通道的映射是不同的。

     

     

    键盘上Alt+-->可以返回上一层。(在PDF文件中方便用)

     

    在signal_gen中当R=G=3FFB=000时,对应的35位数据是6F7BD8C3D

    1、工程名:ArriaV_lvds_tx_1g,在lvds_tx_5ch_1中接收到的5ch_7bit对应如下:14,1d,0f,1b,1d,14,19。时序仿真波形如下所示:由于《arriav_handbook.pdf》第157/426页可知差分信号在时钟的上升沿开始输出,而在PANNELLVDS是从第三个小时钟才开始输出。因此,在Ronnie的建议下,我采用了他的方,即将输出时钟也当成一个通道来传输,只是给定的数据是(4:3)7'b1100011或者(3:4)7'b1100001,此时就不需要tx_outclock信号。这个想法非常好,我也想不到的。学习了。

     

     2、工程名:ArriaV_lvds_tx2_1g,在lvds_tx_5ch_2中采用洪鸿榕的方案,得到的时序仿真波形如下所示:时序仿真结果正确!! 

     32LVDS_TX时序仿真情况:综合后占用一个PLL 

    44LVDS_TX时序仿真情况及综合情况:

    38LVDS_TX出现如下错误信息:

    出现下图错误的原因是我将发送模块的时钟端口直接与FPGA上的27MHZ引脚锁定,如果不锁定该引脚就可以编译通过,解决这个问题的方案还在思考中。 

    在这步进行了好久,由于一直找不到原因。因此,我改变了想法。从8LVDS_RX8ALT_FIFO再送给8组的LVDS_TX的工程。在编写完整个工程后,我对它进行功能仿真可以出结果,进行时序仿真时发现DPA信号锁不住,结果不对。

    这步出错的主要原因是因为我在写激励文件时,都是发送同一个35位数据,应该使发送的35位数据有变化,这样DPA信号才可以锁住。其实顶层模块是没错的。难怪自己找不到原因。不过不明白要发送不同数据的我,也是对文档研究的不够导致的,要吸取这个教训。

    我发现它跟我直接将一组的ArriaV_lvds_rx2tx复用8次所有进行的动作一样。因此,我又卡在这边了。后来,我就想这么说8组的LVDS_TX可以编译通过了,这才反应过来还开心了一会儿。后面我就针对这个8LVDS_TX编写了个激励文件,这个文件结合的8signal_gen来实现的。在功能仿真和时序仿真上,我都遇到一个很奇怪的问题,是关于库的编译顺序,还是Ronnie帮我解决的。我觉得他很有想法,也很有调试手段,他能沉得住。发现signal_gen编译时,一定要将work库放在第一个,否则会提示找不到它的端口。嗯,后来洪鸿榕说将signal_gen重新命名试下,我也试了,不过我还发现我程序中有个端口是[4:0],而我写成[34:0],这是复制而欠缺思考的下场。在百般克服之下,我顺利地测试了8LVDS_TX程序。

    还有我晚上跟他们(rain and ronnie)调试了4K2K PANNEL,很厉害,居然将变化的参数稳住了。现在就看明天别人的答复。如果55寸的PANNEL能点亮,我觉得大家都会很开心的。 

    Dear KEVIN:

              针对下方的第一个问题:在编写了8组的LVDS_RX2TX程序,编译可以通过且功能仿真可以出来,但时序仿真中DPA锁不住即时序仿真不通过。

    这个问题出错的原因是我在写顶层模块的激励时,发现差分信号的输入必须是变化的,不能一直都是同一个35位数据,否则DPA会锁不住。

      针对下方的第一个问题:单独的8组LVDS_TX程序在编译时却出现PLL方面的错误。

    这个问题出错的原因是8组LVDS_TX的PLL输入时钟不能直接锁定到时钟引脚上,必须通过中间信号才可以。

         目前,我想实现8组LVDS_TX的PLL输入时钟直接锁定到时钟引脚上,应该如何做才能实现?

         能否请您再帮忙确认下LVDS外部来的数据差分对能否对换。按照我们的理解是LVDS的差分对电气性能一样,因此可以进行对调。时钟差分对不能对换是可以理解的。

         还有一个问题是LVDS_RX在功能仿真上是将7位拆分成4-3,而在时序仿真上却是拆分成3-4,导致需要调整的位数不一致,想请您帮忙确认下哪种才是对的,为什么会出现这种现象?

    期待您的回复,谢谢!

    PS:附件是当LVDS_TX的PLL输入时钟锁定在时钟引脚上时,超过4组就会报错的工程。如果LVDS_TX的PLL输入时钟不锁定在时钟引脚上时,可以满足8组的需求。但我们需要的是锁定在时钟引脚上且达到8组的情况,能否帮忙解答。

  • 相关阅读:
    Docker
    Orleans MultiClient 多个Silo复合客户端
    Docker
    C# 动态创建实例化泛型对象,实例化新对象 new()
    .net core UseHttpsRedirection() 正式环境无效
    .NET Core 版本不支持的问题
    Swift 编译时间优化
    test chemes
    Mac下开发常用目录
    文字高度问题
  • 原文地址:https://www.cnblogs.com/zlh840/p/2683975.html
Copyright © 2011-2022 走看看