OpenEdv-开源电子网
标题: Aritex7 差分IO实现LVDS LCD的驱动 [打印本页]
作者: Winkawaks 时间: 2021-8-28 13:29
标题: Aritex7 差分IO实现LVDS LCD的驱动
Aritex7 差分IO实现LVDSLCD的驱动
帖子字数有限,可以看附件完整版:
最近用正点原子的Aritex7 核心板调试LVDS LCD,经验问题分享下;
首先需要将U4 LDO换成5V—2.5V的;就可以在BANK16实现LVDS接口了;
发送LVDS需要用到OSERDES
Selection IP核可以满足功能要求;
Data Rate 选择SDR,因为这里的serdes因子是7,使用DDR麻烦;
Serlallzation Factor 就是串化因子;
External Data Width 就是通道的个数,这里选4通道;
IO Signaling 选择差分,但压标准使用LVDS 25;
CLK 设置这里也是选择差分LVDS 25;
Clock策略选择内部;
发送模式没有DELAY,默认即可
这里生成的IP直接使用不太方便,因为它的数据顺序不是按照data[6:0]给通道0,data[6:0]给通道1…
而是data[3:0]给通道[3:0]的D1, data[7:4]给通道[3:0]的D2….
大家可以从IP内部的数据图看到;
打开IP文件里的文件 可以看到最终使用的文件就是LVDS_TXIP_selectio_wiz.V文件;
就是OSERDES2和OBUFDS的原语例化;
想要达到自己想要的数据发送结构就得自己修改下这个文件就行了;
在工程里面新建lvds_tx_selectIO.v文件,将LVDS_TXIP_selectio_wiz直接copy过来做修改即可;
因为OSERDES2是按照LSB—LSB发送的,LVDS LCD要求是MSB--LSB,所以需要将数据顺序在OSERDES2这里处理下
使得数据按照data[6:0]给通道0,data[6:0]给通道1…的格式给到每个通道;
这样修改后的数据顺序就满足我们的要求了:
大家仔细观察CLK和数据的时序,我第一次看这个图感觉很奇怪;
以前认为发送出去的数据和CLK是边沿对其的;1111000
但其实不是这样的;
而是按照1100011的CLK对齐的;这个是为了接受端IC解串用的;关于LVDS LCD接受端解串也困扰了我很久,因为数据通道是没有TOKEN值来进行align功能的,
当时就考虑是通过CLK1100011的特殊时序来进行bitalign功能的;
后来看了XILINX官方文档xapp585-lvds-source-synch-serdes-clock-multiplication才搞清楚;
要想满足LCD的时序要求,lvds的差分clk也需要通过和数据通道一样的OSERDES发送出去;
wire[6:0]xclk_out_from_device=7'b1100011;//这里的时钟时序和LCD要求要一致;
这个工程在公司是正常点亮LVDSLCD模组的;
分享到这里就结束了,有问题请留言讨论;,,,
附上参考文档
作者: QinQZ 时间: 2021-8-30 08:57
谢谢分享
| 欢迎光临 OpenEdv-开源电子网 (http://www.openedv.com/) |
Powered by Discuz! X3.4 |