FPGA 高速接口(LVDS)

差分信号环路测试

1 概述

LVDS(Low Voltage Differential Signalin)是一种低振幅差分信号技术。它使用幅度非常低的信号(约350mV)通过一对差分PCB走线或平衡电缆传输数据。大部分高速数据传输中,都会用到LVDS传输。
目前FPGA开发板资料中涉及LVDS通信的方案并不多,但是LVDS实际上有大量的应用,特别是在高速ADC,
高分辨率摄像头,液晶屏显示技术等应用领域。所以掌握LVDS通信也是我们FPGA开发者的必备基本技能。本文首先简要介绍一些XILINXFPGA的LVDS解决方案,然后再通过一个简单的环路测试对LVDS通信做一个简单的验证测试。

2 XILINX FPGA 差分信号解决方案

2.1 IBUFDS

在这里插入图片描述
对应原语:

IBUFDS #(
 .DIFF_TERM("FALSE"), // Differential Termination
 .IBUF_LOW_PWR("TRUE"), // Low power="TRUE", Highest performance="FALSE"
 .IOSTANDARD("DEFAULT")// Specify the input I/O standard
 ) IBUFDS_inst (
 .O(O), // Buffer output
 .I(I), // Diff_p buffer input (connect directly to top-level port)
 .IB(IB) // Diff_n buffer input (connect directly to top-level port)
 );

2.2 OBUFDS

在这里插入图片描述
对应原语:

OBUFDS#(
 .IOSTANDARD("DEFAULT"), // Specify the output I/O standard
 .SLEW("SLOW")// Specify the output slew rate
 ) OBUFDS_inst (
 .O(O), // Diff_p output (connect directly to top-level port)
 .OB(OB), // Diff_n output (connect directly to top-level port)
 .I(I) // Buffer input
 );

2.3 IOBUFDS

在这里插入图片描述
对应原语:

IOBUFDS #(
 .DIFF_TERM("FALSE"),// Differential Termination ("TRUE"/"FALSE")
 .IBUF_LOW_PWR("TRUE"), // Low Power- "TRUE", High Performance = "FALSE"
 .IOSTANDARD("BLVDS_25"), // Specify the I/O standard
 .SLEW("SLOW") // Specify the output slew rate
 ) IOBUFDS_inst (
 .O(O),// Buffer output
 .IO(IO),// Diff_p inout (connect directly to top-level port)
 .IOB(IOB), // Diff_n inout (connect directly to top-level port)
 .I(I),// Buffer input
 .T(T) // 3-state enable input, high=input, low=output
 );

2.3 LVDS 中的终端电阻

在这里插入图片描述
如果要使用内部的终端电阻,对于HP的LVDS信号BANK电压必须是1.8V,而对于HR的LVDS25BANK
信号必须是2.5V,否则可以使用外部终端电阻。

2.4 LVDS 电气特性

2.4.1 LVDS25

在这里插入图片描述
VCCO是2.5V
VOH是高电平最大1.675V
VOL 低电平最小0.7V
VODIFF 差模电压最大600mv,最小247mv,典型值350mv
VOCM 输出共模电压,最小1V最大1.425V,典型值1.25V
VIDIFF 输入差模电压,最大600mv,最小100mv,典型350mv
VICM输入共模电压,最大1.5V,最小0.3V,典型1.2V

2.4.2 LVDS18

在这里插入图片描述
VCCO是1.8V
VOH是高电平最大1.675V
VOL 低电平最小0.825V
VODIFF 差模电压最大600mv,最小247mv,典型值350mv
VOCM 输出共模电压,最小1V最大1.425V,典型值1.25V
VIDIFF 输入差模电压,最大600mv,最小100mv,典型350mv
VICM输入共模电压,最大1.5V,最小0.3V,典型1.2V
LVDS器件电气特性是否兼容主要看,VODIF,VOCM,VIDIFF,VICM,可以看到,LVDS25 和LVDS的差分电气特性是兼容的。

5LVDS 电平兼容

对于HPBANK 即便是BANK电压VCCO不是1.8V,也可以使用LVDS输入,但是LVDS输出或者双向LVDS
通信,BANK电压必须是1.8V
对于HR或者HDBANK即便是BANK电压VCCO不是2.5V也可以使用LVDS_25输入,但是LVDS_25输出
或者双向LVDS_25通信,BANK电压必须是2.5V
如果电平标准无法满足要求,可以采用外部电路实现差分信号的电平转换,下图就是典型的方案,该电路使用交流耦合,并且对输入信号直流偏置,通过RBIAS的电阻产生VCCO/2的VICM电平。电容的典型值时100nF,电阻的范围为10K~100K。

在这里插入图片描述
以下两张图来自于XILINX官网,用户在硬件设计的时候可以用于评估LVDS的兼容特性
在这里插入图片描述
在这里插入图片描述
当和其他LVDS外设通信时,可以通过以上两张表以及本文4LVDS电气特性小节,判断电气特性是否兼容。

源码

module lvds_loop(
//sytem clk input
//input clk_i,
input clk_i_p,
input clk_i_n,

output card_en_o,
//uart
input uart_rx_i,
output uart_tx_o,
//lvds loop input
input dclki_p,
input dclki_n,
input din_p,
input din_n,
//lvds loop output
output dclko_p,
output dclko_n,
output dout_p,
output dout_n
);

assign card_en_o = 1'b1;    
wire clk50m,clk5m,dclki,din; 
reg uart_rx_r=1'b0;

clk_wiz_0 uclk(.clk_out1(clk50m),.clk_out2(clk5m), .clk_in1_p(clk_i_p),.clk_in1_n(clk_i_n));
//clk_wiz_0 uclk(.clk_out1(clk50m),.clk_out2(clk5m), .clk_in1(clk_i));
//lvds out
OBUFDS #(
.IOSTANDARD("DEFAULT"), // Specify the output I/O standard
.SLEW("SLOW") 
)     
dclko_OBUFDS
(
.O  (dclko_p ),
.OB (dclko_n ),
.I  (clk50m   ) 
);

OBUFDS #(
.IOSTANDARD("DEFAULT"), // Specify the output I/O standard
.SLEW("SLOW") 
)  
dout_OBUFDS
(
.O  (dout_p ),
.OB (dout_n ),
.I  (uart_rx_i) 
);


//lvds in
IBUFDS 
#(
.DIFF_TERM("TRUE"),       // Differential Termination
.IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
.IOSTANDARD("DEFAULT")     // Specify the input I/O standard
)
dclki_IBUFDS
(
.O(dclki),   // 1-bit output: Buffer output
.I(dclki_p),   // 1-bit input: Diff_p buffer input (connect directly to top-level port)
.IB(dclki_n)  // 1-bit input: Diff_n buffer input (connect directly to top-level port)
);    

IBUFDS 
#(
.DIFF_TERM("TRUE"),       // Differential Termination
.IBUF_LOW_PWR("TRUE"),     // Low power="TRUE", Highest performance="FALSE" 
.IOSTANDARD("DEFAULT")     // Specify the input I/O standard
)
ddatai_IBUFDS
(
.O(din),   // 1-bit output: Buffer output
.I(din_p),   // 1-bit input: Diff_p buffer input (connect directly to top-level port)
.IB(din_n)  // 1-bit input: Diff_n buffer input (connect directly to top-level port)
); 

always @(posedge dclki)begin
    uart_rx_r <= din;
end

assign uart_tx_o = uart_rx_r;

ila_0 ila_dg (
	.clk(clk50m),
	.probe0({clk5m,uart_rx_i,din,uart_tx_o}) 
);    
endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/394885.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化测试之异常处理机制知识讲解

一、前言 今天笔者还是想要讲python中的基础&#xff0c;主要讲解Python中异常介绍、捕获、处理相关知识点内容&#xff0c;只有学好了这些才能为后续自动化测试框架搭建及日常维护做铺垫&#xff0c;废话不多说我们直接进入主题吧。 二、异常处理合集 2.1 异常处理讲解 在…

数据库||数据库的安全性

1.实验题目&#xff1a;数据库的安全性 2.实验目的和要求&#xff1a; 掌握SQL Server 2008的安全控制机制掌握SQL Server2008的身份验证模式理解数据库用户帐户的基本概念理解角色的概念 3.实验步骤&#xff1a; 按实验内容要求完成各项操作根据题目要求给出解决方案提交实…

如何找回丢失照片? 7 种免费照片恢复方法分享

照片可以勾起回忆&#xff0c;让我们想起与最亲近的人一起度过的时光&#xff0c;这就是为什么仅仅丢失一张重要照片就会让人感觉完全毁灭性的——几乎就像你失去了记忆本身一样。好消息是&#xff0c;大多数丢失或意外删除的照片都可以使用照片恢复软件恢复&#xff0c;而且我…

appium实现自动化测试原理

目录 1、Appium原理 1.1、Android Appium原理图文解析 1.1.2、原理详解 1.1.2.1、脚本端 1.1.2.2、appium-server 1.1.2.3、中间件bootstrap.jar 1.1.2.4、驱动引擎uiautomator 1.2、 IOS Appium原理 1、Appium原理 1.1、Android Appium原理图文解析 执行测试脚本全过…

IDEA-常用插件

1、Mybatis Log Free 当我们使用mybatis log在控制台输出sql 内容&#xff0c;输出内容将语句与参数分开打印&#xff0c;还需要手动将参数替换到指定位置。 使用对应插件后&#xff0c;自动将输出内容组装成完整的可直接执行的SQL 在插件市场 查看对应名称&#xff0c;并安装。…

Postman路径修改

默认安装好Postman之后&#xff0c;默认路径在&#xff1a;C:\Users\用户名\AppData\Local\Postman。 修改路径只需要将整个文件夹拷贝到需要移动的位置即可&#xff0c;然后重新创建一个快捷方式。再删除原来路径的文件夹。

【Java EE初阶十八】网络原理(三)

3. 网络层 网络层要做的事情主要是两方面&#xff1a; 1)、地址管理&#xff1a;制定一系列的规则,通过地址,描述出网络上一个设备的位置&#xff1b; 2)、路由选择&#xff1a;网络环境是比较复杂的&#xff0c;从一个节点到另一个节点之间&#xff0c;存在很…

2024阅读AOSP源码的正确打开姿势

2024阅读AOSP源码的正确打开姿势 在Android系统开发中&#xff0c;阅读AOSP&#xff08;Android Open Source Project&#xff09;源码是非常重要的环节。然而&#xff0c;如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿…

渲染效果图为什么都选择使用云渲染,优势有哪些?

随着3D技术在动画、电影、游戏、建筑等领域的广泛应用&#xff0c;渲染作为3D制作流程中的重要环节&#xff0c;其效率和成本直接影响着项目的最终成果。 近年来&#xff0c;云渲染技术的兴起为3D创作者提供了一种全新的选择&#xff0c;与传统的本地渲染相比&#xff0c;云渲…

【Wio Terminal】输入/输出

输入/输出 一、概述1、硬件原理图Terminal引脚分布及功能Wio Terminal Grove端口引脚分配 二、使用Wio Terminal上的Grove模拟端口1、RPI 模拟引脚2、Grove引脚配置3、示例 三、使用 Wio Terminal上的Grove数字端口1、RPI 数字引脚2、Grove引脚配置将 Grove I2C 端口用作数字端…

数据结构1.0(基础)

近java的介绍&#xff0c; 文章目录 第一章、数据结构1、数据结构 &#xff1f;2、常用的数据结构数据结构&#xff1f; 逻辑结构and物理结构 第二章、数据结构基本介绍2.1、数组&#xff08;Array&#xff09;2.2、堆栈&#xff08;Stack&#xff09;2.3、队列&#xff08;Que…

2024阿里云云服务器ECS价格表出炉

2024年最新阿里云服务器租用费用优惠价格表&#xff0c;轻量2核2G3M带宽轻量服务器一年61元&#xff0c;折合5元1个月&#xff0c;新老用户同享99元一年服务器&#xff0c;2核4G5M服务器ECS优惠价199元一年&#xff0c;2核4G4M轻量服务器165元一年&#xff0c;2核4G服务器30元3…

C++之Easyx——图形库的基本准备工作

什么是Easyx&#xff1f; EasyX Graphics Library 是针对 Visual C 的免费绘图库&#xff0c;支持 VC6.0 ~ VC2022&#xff0c;简单易用&#xff0c;学习成本极低&#xff0c;应用领域广泛。目前已有许多大学将 EasyX 应用在教学当中。 它比Red PandaDev C上的图形库功能要强…

海外大带宽服务器连接失败:原因与解决策略

​随着全球互联网的发展&#xff0c;越来越多的企业和个人选择使用海外大带宽服务器来满足数据传输和业务需求。然而&#xff0c;在实际使用中&#xff0c;有时会出现服务器连接失败的问题。本文将为您分析原因并提供相应的解决策略。 一、海外大带宽服务器连接失败的原因 网络…

Feign 第一次调用为什么会很慢?

前言 首先要了解 Feign 是如何进行远程调用的&#xff0c;这里面包括&#xff0c;注册中心、负载均衡、FeignClient 之间的关系&#xff0c;微服务通过不论是 eureka、nacos 也好注册到服务端&#xff0c;Feign 是靠 Ribbon 做负载的&#xff0c;而 Ribbon 需要拿到注册中心的…

libgdx的完整教程

概述&#xff1a;如果大家想用java做游戏&#xff0c;那么libgdx可能是一个好的选择。LibGDX是一个强大的跨平台2D/3D游戏开发框架。 LibGDX的主要特点包括&#xff1a; 强兼容性&#xff1a;LibGDX能够运行在多种平台上&#xff0c;包括但不限于Mac、Linux、Windows以及Andr…

零基础学编程从哪开始,中文编程工具免费版下载及构件用法教程

一、前言 零基础学编程从哪开始&#xff0c;中文编程工具免费版下载及构件用法教程 今天给大家分享的中文编程开发语言工具资料如下&#xff1a; 编程入门视频教程链接 http://​ https://edu.csdn.net/course/detail/39036 ​ 编程工具及实例源码文件下载可以点击最下方…

酷开会员丨春节回家,用酷开系统欢聚K歌,唱出团圆喜乐

每当春节临近&#xff0c;总会在大街小巷听到熟悉的旋律&#xff0c;比如《恭喜发财》、比如《好运来》……这些氛围感满满的歌曲&#xff0c;代表着年味&#xff0c;寓示着团圆。 春节&#xff0c;是万家团圆的喜庆时刻&#xff0c;也是亲朋好友欢聚一堂的日子。亲友聚会&…

找座位 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 在一个大型体育场内举办了一场大型活动,由于疫情防控的需要,要求每位观众的必须间隔至少一个空位才允许落座。 现在给出一排观众座位分布图,座位中存在已落座的观众,请计算出,在不移动现有观众座位…

阿里云香港轻量应用服务器是什么线路?

阿里云香港轻量应用服务器是什么线路&#xff1f;不是cn2。 阿里云香港轻量服务器是cn2吗&#xff1f;香港轻量服务器不是cn2。阿腾云atengyun.com正好有一台阿里云轻量应用服务器&#xff0c;通过mtr traceroute测试了一下&#xff0c;最后一跳是202.97开头的ip&#xff0c;1…