在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2337|回复: 7

[求助] 关于ALTLVDS RX IP的问题。

[复制链接]
发表于 2021-6-25 09:14:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请教各为一下,最近在仿真ALTLVDS RX,IP核的配置比较简单,通道数为2,转换因子为10。以下是我的代码:

`timescale 1ns/10ps
module lvds_rx_top(

    input                      sclk            ,
    input                      rst_n            ,   
    output  [19:0]            rx_out            ,
    output                    rx_outclock

);

wire     clk_29M        ;
wire    clk_297M    ;
wire    locked        ;
reg [1:0]    rx_in   ;

pll u_pll(
    .areset ( ~rst_n       ),
    .inclk0 ( sclk           ),
    .c0     ( clk_29M      ),
    .c1     ( clk_297M     ),
    .locked ( locked       )
);

always @(posedge clk_297M or negedge rst_n) begin
    if(rst_n == 1'b0)
        rx_in    <=    2'd0    ;
    else if(locked == 1'b1)
        rx_in    <=    2'd3  + rx_in    ;
end

lvds_rx u_lvds_rx(
    .rx_in      ( rx_in      ),
    .rx_inclock ( clk_29M ),
    .rx_out     ( rx_out     ),
    .rx_outclock ( rx_outclock )
);
endmodule

以下是我的功能仿真图:
Screenshot from 2021-06-25 09-10-59.png

以我的理解,lvds ip开始有初始阶段,不是真正的采样值输出,图中在第三个红线才开始稳定输出。但是,我觉得输出的数据高10位数据有问题,低十位就是r[0]的输出,只不过是先发低位,所以是0101010101共10bit,高位的话为什么不是0110011001,而是仿真中的那个结果?难道每一个通道的其实采样点不一样?希望有人能帮忙解答下,谢谢


 楼主| 发表于 2021-6-25 10:01:54 | 显示全部楼层
就是说,怎么确定采样的第一个点在哪里?
发表于 2021-6-26 16:27:12 | 显示全部楼层
本帖最后由 bloodtea 于 2021-6-26 16:33 编辑

看了你这个仿真波形,其实就是lvds从串行数据,解出来并行数据时,寻找解串边界的问题。比如串行通道上一个bit串: b0b1b2b3……bn,解串得到并行数据时,可以是"b0……b9”,也可能是"b1……b10",也可能是“b2……b11”,……
lvds接收时,需要通过确定解串边界,得到正确的解串结果。
一般确定解串边界的方法,都是寻找同步字,即sync code。
至于更详细的细节,可以看看关于lvds上的 sync code相关的东西。

如果想进一步,深究技术细节,可以私聊。
头像里有联系方式。
 楼主| 发表于 2021-6-27 16:31:30 | 显示全部楼层


bloodtea 发表于 2021-6-26 16:27
看了你这个仿真波形,其实就是lvds从串行数据,解出来并行数据时,寻找解串边界的问题。比如串行通道上一个 ...


谢谢您的回答,我很疑惑的是,我选了两个通道,每个通道的解串边界居然是不一样的。不确定是不是因为我没有确定解串边界,而导致的结果。
发表于 2021-6-30 12:34:27 | 显示全部楼层


yuanqidefeng 发表于 2021-6-27 16:31
谢谢您的回答,我很疑惑的是,我选了两个通道,每个通道的解串边界居然是不一样的。不确定是不是因为我没 ...


多个通道的lvds,即使串行数据是对齐的,转并行出来之后,发现解串的边界也是不一样的。为了调整解串的边界,xilinx的底层原语都设计了bitslip功能。bitslip就是用来调整每个串并转换模块的边界的。


 楼主| 发表于 2021-7-1 14:46:22 | 显示全部楼层


bloodtea 发表于 2021-6-30 12:34
多个通道的lvds,即使串行数据是对齐的,转并行出来之后,发现解串的边界也是不一样的。为了调整解串的边 ...


本人写了四路的LVDS RX加对齐功能,已验证成功。谢谢
发表于 2021-7-2 18:18:45 | 显示全部楼层


yuanqidefeng 发表于 2021-7-1 14:46
本人写了四路的LVDS RX加对齐功能,已验证成功。谢谢



恭喜恭喜~
发表于 2021-7-2 18:20:18 | 显示全部楼层


yuanqidefeng 发表于 2021-7-1 14:46
本人写了四路的LVDS RX加对齐功能,已验证成功。谢谢


如果是demo,或者是做实验的话,基本就差不多了。
如果是做产品,需要进工厂产线批量生产,稳定性和一致性也需要花一些时间弄一弄~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-15 09:38 , Processed in 0.022809 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表