FPGA视频接口之Altera LVDS IP用法(上)

lvds全称为Low-Voltage Differential Signaling,即低电压差分信号,详细的理论知识在此就不多说了,大家随便搜索网上有很多。

之所以突然跳到了lvds接口,是因为笔者刚刚调试完一个lvds的视频接口,在此也是做一个总结。
初次接触lvds,我那个头疼啊,毕竟笔者也是个小白。网上搜索了很多lvds的协议去看,但都看得云里雾里一脸懵逼,当我真正开始调试lvds接口时,随着逐渐接触,终于才渐渐对它有了一定的认识。废话不多说,下面就进入正题吧。
首先,拿到lvds接口,笔者第一时间用signal tap抓取了他的信号。由于是4通道的lvds,因此解串之后的信号就有28根线,外加一根时钟线。不知道什么是4通道的同学,可以去网上搜索,这种最基本的东西都可以搜索到的。
说到解串,就必须要提soft-lvds ip核,因为笔者作为一个小白,是难以独立写出一个lvds解串模块的。
Altera提供的soft-lvds ip核非常好用,也很简单,如下图所示为ip核的配置页面:

FPGA视频接口之Altera  LVDS IP用法(上).png

如图所示,该页面主要配置电源供电模式、模块功能、通道数量和解串因子个数。一般选择单电源供电,如果是接收模块就选择RX,若是发送模块就选择TX,下面的通道数量就要根据实际去配置了,笔者这里是4通道的lvds,因此就选择了4。解串因子一般都是7位,笔者这里也是7位,因此选择7。

LVDS.png

如上图所示,该页面主要配置lvds的输入时钟频率和数据速率。输入时钟频率根据实际项目而定,笔者这里是74.25M,因此此处就填74.25。至于数据速率,由于每个时钟可以传送7个数据,而我们的时钟频率是74.25M,也就是说,我们实际的数据速率是74.25x7=519.75M,这个频率已经非常吓人了。
该页面下面的几个方框可选可不选,默认不选,笔者这里选了两个是因为调试用到了,有兴趣的同学可以自行了解一下他们的功能。

3.png

如上图所示,该页面实际中根据需求选择,笔者这里贴出来,后面再进行解释。
到此,一个lvds接收模块的ip核就配置完成了,此时,我们可以将其例化出来,如下所示:

lvds u1_lvds(
  .rx_inclock    (rx_inclock   ),
  .rx_outclock  (rx_outclk    ),
  .rx_in             (rx_in           ),
  .rx_out           (rx_out_r      )
 );

怎么样?是不是很简单?只需要将外来的四个通道信号外加一个时钟信号接进来直接怼上去就OK了!该模块输出的信号就已经是28位可以直接用的非差分信号啦!
当然,lvds高速差分信号在实际应用中还是有很多问题的,并非表面那么简单,笔者还会继续更新,分享自己的调试经验。

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除

提问于 2019-04-28 21:47:37 +0800

这个帖子被标记为一个社区wiki

这个帖子是一个wiki(维基). 任何一个积分 >500的人都可以完善它