博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[笔记]8组LVDS_TX和LVDS_RX的调试心得
阅读量:5013 次
发布时间:2019-06-12

本文共 4811 字,大约阅读时间需要 16 分钟。

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组的情况,能否帮忙解答。

转载于:https://www.cnblogs.com/zlh840/archive/2012/09/13/2683975.html

你可能感兴趣的文章
Static 与 new 的问题【待解决】
查看>>
xml
查看>>
在 mvc4 WebApi 中 json 的 跨域访问
查看>>
敏捷开发文章读后感
查看>>
xposed获取context 的方法
查看>>
html5 canvas 图像处理
查看>>
He who hesitates is Lost
查看>>
php中引用&的真正理解-变量引用、函数引用、对象引用
查看>>
关于<form> autocomplete 属性
查看>>
OutOfMemory
查看>>
LeetCode:组合总数III【216】
查看>>
Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
查看>>
虚函数的效率问题
查看>>
POJ 1860 Currency Exchange(SPFA 判断有无“正”环)
查看>>
广告地址屏蔽
查看>>
收缩SqlServer数据库日记方法
查看>>
每日英语:15 places to find inspiration
查看>>
学习方法--提问
查看>>
【转】每天一个linux命令(3):pwd命令
查看>>
merge-two-sorted-lists
查看>>