基于Altera FPGA的LVDS配置应用一例

在特权同学发表博文《Cyclone III的LVDS接口注意事项》后,不少网友发邮件询问LVDS具体应用的一些问题。这些网友,归根到底,估计是文档看得太少了,或许还缺少动手实践的摸索。做原型开发的知识储备,无外乎两种方式,要么理论,要么实践。理论上前面说的文档是一方面,但是说理论不要被文档框住了,以为理论就是书本和文字。其实换一个角度来理解理论,你也可以认为是间接获得知识的手段,包括一些可用的论坛资源、博文资源,甚至FAE资源等等。不要金口难开,发个邮件打个电话,可能那些吃这个饭的FAE们一句话就帮你搞定问题了。当然了,在你什么都没搞明白前,还是不建议你一通瞎问。比较合适的方式是先自己去消化官方提供的文档,然后动手实践过程中实在是遇到百思不得其解的问题时再通过请教他人的方式得以解决。

而可能很多“菜鸟”百思不得其解的是文档到底从哪里找,茫茫网络浩如烟海,找个对口文档岂非易事?呵呵,其实,这个文档正可谓“众里寻他千百度,蓦然回首,那人却在灯火阑珊处”。瞧,有心的朋友早已发现这个不是秘密的秘密了。当我们使用Quartus II的MegaWizard选择并进入某个IP核的配置界面后,如图1所示,我们总能够在右上角看到一个名为“Documentation”的按钮,他就是传说中的“灯火阑珊处”了,点击后有两个二级子按钮,“On the Web”指向三级菜单的两个网络链接,“altlvds_tx Megafunction User Guide”则直接链接打开本地的帮助文档。

图1

关于文档,除此以外,特权同学比较习惯的做法是在Quartus II handbook或Help中搜索关键词,如这里的altlvds_tx或LVDS,从而找到相关内容的介绍说明。在实践前,这些理论知识的储备是必须的,否则咱的“高楼”很可能就是建立在“空穴”之上,指不定哪天就像咱上海前些年那座莲花河畔景苑一样在风雨过后居然楼体完整的“体面”倒下了。

这里的altlvds_tx/ altlvds_rx实际上不过是一个并串/串并转换器而已,但由于LVDS速度比较高,而且接口上使用了差分信号,所以不是用户随便用逻辑就能“模拟”出来的,因此势必要有官方在FPGA器件上硬件级和Quartus II上软件级的双重支持。那么到用户这边,一切都变得“傻瓜”化配置操作了,而用户真正要关心的,只是要实现的LVDS接口的时序需求,并把这些需求都转化为IP核配置上的参数。

下面简单的说一下整个IP核的配置和例化使用。具体的配置说明还望大家仔细研究官方的User Guider,特权同学这里的一些内容充其量不过是一个简化版的快速入门教程。

如图2所示,先创建一个新的ALTLVDS核,然后进入相关配置页面。

图2

参数设置共有3个配置页面,分别如图3、图4和图5所示。

如图3所示,这里选择LVDS transmitter,然后设置3个LVDS通道(channels);每个通道对应7个解串因子,即7并1串处理。最下面的Use External PLL如果勾选上,则这个IP核内的其他两个配置页面不可设置,用户的时序频率方面的配置主要在外部的PLL时钟上下文章了;若不勾选上,我们接着来看后面两个配置页面。

图3

如图4所示,在Frequency/PLL settings中,需要配置好LVDS串行数据传输速率(此处为245Mbps),而输入时钟速率通常为LVDS串行传输速率除以解串因子得到(245/7=35)。其他几个选项一般使用默认设置,大家可以参考altlvds_tx Megafunction User Guide中有详细说明。

图4

如图5所示,Transmitter settings中有多个Transmitter outclock配置选项,主要是LVDS输出时钟与输出差分信号的时钟以及相位设置,具体如何配置还是需要根据用户本身这个LVDS信号的传输需求而定。

图5

配置完成后,可以在工程目录下的*_inst.v中找到新配置IP核的例化模板,本实例如下:

lcdlvds      lcdlvds_inst (

.pll_areset ( pll_areset_sig ),

.tx_in ( tx_in_sig ),

.tx_inclock ( tx_inclock_sig ),

.tx_out ( tx_out_sig ),

.tx_outclock ( tx_outclock_sig )

);

这些信号接口的简单说明如下,方向为相对于LVDS内部模块而言。

信号名

方向

位宽

描述

pll_areset

Input

1

异步复位信号,复位LVDS内部所有计数器

tx_in

input

21

待解串的数据,3个通道的7bit即21bit

tx_inclock

Input

1

传输PLL的输入参考时钟,即设置好的35MHz

tx_out

Output

3

LVDS输出数据

tx_outclock

Output

1

LVDS输出时钟

最后,在管脚分配时,需要选择I/O Standard为LVDS,然后会自动参数另一个*(n)的配对差分管脚,如图6所示。

图6

lvds配置的更多相关文章

  1. 全志A33 lichee lvds屏幕配置

    开发平台 * 芯灵思SinlinxA33开发板 淘宝店铺: https://sinlinx.taobao.com/ 嵌入式linux 开发板交流 QQ:641395230 芯灵思SinlinxA33开 ...

  2. ZYNQ7000 LVDS接口输出配置

    xilinx 7系列芯片不再支持LVDS33电平,在VCCO电压为3.3V的情况下无法使用LVDS25接口. 有些设计者想通过在软件中配置为LVDS25,实际供电3.3V来实现LVDS33也是无效的, ...

  3. A20VGA和lvds显示的切换-

    ./fex2bin sys_config_lvds.fex /boot/script.bin sys_config_lvds.fex的作用:配置各种外设,端口,I/O针脚信息的文件 生成 script ...

  4. imx6 uboot lvds clock

    在uboot中添加logo,lvds接口的lcd显示不正常,出现波动.网上说是lvds时钟频率的问题. 使用示波器测量之后,发现频率是60M,而lcd最大频率才46.8M. 因此就需要更改uboot中 ...

  5. I.MX6 lcd lvds hdmi bootargs

    /********************************************************************* * I.MX6 lcd lvds hdmi bootarg ...

  6. 液晶常用接口“LVDS、TTL、RSDS、TMDS”技术原理介绍

    液晶常用接口“LVDS.TTL.RSDS.TMDS”技术原理介绍 1:Lvds Low-Voltage Differential Signaling 低压差分信号 1994年由美国国家半导体公司提出之 ...

  7. I.MX6 Linux kernel LVDS backlight enable

    /*************************************************************************** * I.MX6 Linux kernel LV ...

  8. lvds接口介绍

    1.项目简介 用索尼的imx264 sensor采集图像,在内部模数转换之后,由lvds接收,然后解码,最后送给后端显示 2.框图 imx264配置成从模式,由spi总线配置,需要由FPGA提供 行. ...

  9. LVDS时序分析

    LVDS时序分析 2012年05月07日 11:48:08 Walle 阅读数:3355 标签: 平台工作   最近在调试基于telechip平台的LVDS驱动,一开始对该平台的LVDS时序不是很了解 ...

随机推荐

  1. SVN使用—高级用法

    一.SVN分支 Branch 选项会给开发者创建出另外一条线路.当有人希望开发进程分开成两条不同的线路时,这个选项会非常有用. 情景: 比如项目 demo 下有两个小组,svn 下有一个 trunk ...

  2. mysql数据库导入、导出、数据传输

    Navicat数据库之间导入导出1.双击要导出的数据库,右键选转储SQL文件...,选择要保存的文件夹. 2.点击开始后,开始导出. 数据库导入1.新建数据库,数据库的名字必须和导入的数据库文件一致. ...

  3. golang解析json报错:invalid character '\x00' after top-level value

    golang解析json报错:invalid character '\x00' after top-level value 手动复制字符串:{"files":["c:/t ...

  4. java-json与js-json转化

    js中将字符串转换成json的三种方式http://www.jb51.net/article/25987.htm JAVA对象转换为JSON字符串 http://blog.163.com/zzf_fl ...

  5. 并发-ThreadLocal源码分析

    ThreadLocal源码分析 参考: http://www.cnblogs.com/dolphin0520/p/3920407.html https://www.cnblogs.com/coshah ...

  6. JavaWeb -- Struts 自定义拦截器, 登录权限拦截

    1. 自定义拦截器, 登录权限拦截 login.jsp 登录JSP <%@ page language="java" contentType="text/html; ...

  7. JNI简单HelloWorld

    1.编写Java代码 建立hello目录,编写HelloWorld.java: class HelloWorld { public native void displayHelloWorld(); s ...

  8. BZOJ 1492 [NOI2007]货币兑换Cash:斜率优化dp + cdq分治

    传送门 题意 初始时你有 $ s $ 元,接下来有 $ n $ 天. 在第 $ i $ 天,A券的价值为 $ A[i] $ ,B券的价值为 $ B[i] $ . 在第 $ i $ 天,你可以进行两种操 ...

  9. 报错cannot be cast to javassist.util.proxy.Proxy

    出现这种错误还有一个原因:hibernate和struts中都有javassit的jar包,把其中的低版本删除就行了.

  10. Shell 运算符 if

    Shell 支持多种运算符,包括: 算术运算符 原生bash不支持简单的数学运算,可以使用 expr,let 关系运算符 布尔运算符 字符串运算符 文件运算符 算术运算符 包括加减乘除,取余(%).赋 ...