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=3FF,B=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页可知差分信号在时钟的上升沿开始输出,而在PANNEL中LVDS是从第三个小时钟才开始输出。因此,在Ronnie的建议下,我采用了他的方,即将输出时钟也当成一个通道来传输,只是给定的数据是(4:3)7'b1100011或者(3:4)7'b1100001,此时就不需要tx_outclock信号。这个想法非常好,我也想不到的。学习了。
2、工程名:ArriaV_lvds_tx2_1g,在lvds_tx_5ch_2中采用洪鸿榕的方案,得到的时序仿真波形如下所示:时序仿真结果正确!!
3、2组LVDS_TX时序仿真情况:综合后占用一个PLL
4、4组LVDS_TX时序仿真情况及综合情况:
3、8组LVDS_TX出现如下错误信息:
出现下图错误的原因是我将发送模块的时钟端口直接与FPGA上的27MHZ引脚锁定,如果不锁定该引脚就可以编译通过,解决这个问题的方案还在思考中。
在这步进行了好久,由于一直找不到原因。因此,我改变了想法。从8组LVDS_RX到8组ALT_FIFO再送给8组的LVDS_TX的工程。在编写完整个工程后,我对它进行功能仿真可以出结果,进行时序仿真时发现DPA信号锁不住,结果不对。
这步出错的主要原因是因为我在写激励文件时,都是发送同一个35位数据,应该使发送的35位数据有变化,这样DPA信号才可以锁住。其实顶层模块是没错的。难怪自己找不到原因。不过不明白要发送不同数据的我,也是对文档研究的不够导致的,要吸取这个教训。
我发现它跟我直接将一组的ArriaV_lvds_rx2tx复用8次所有进行的动作一样。因此,我又卡在这边了。后来,我就想这么说8组的LVDS_TX可以编译通过了,这才反应过来还开心了一会儿。后面我就针对这个8组LVDS_TX编写了个激励文件,这个文件结合的8组signal_gen来实现的。在功能仿真和时序仿真上,我都遇到一个很奇怪的问题,是关于库的编译顺序,还是Ronnie帮我解决的。我觉得他很有想法,也很有调试手段,他能沉得住。发现signal_gen编译时,一定要将work库放在第一个,否则会提示找不到它的端口。嗯,后来洪鸿榕说将signal_gen重新命名试下,我也试了,不过我还发现我程序中有个端口是[4:0],而我写成[34:0],这是复制而欠缺思考的下场。在百般克服之下,我顺利地测试了8组LVDS_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组的情况,能否帮忙解答。