Xilinx 差分信号 LVDS传输实战

目录

1.LVDS的概念    

2.XILINX FPGA 差分信号解决方案

(1)IBUFDS

(2)OBUFDS

(3)IOBUFDS(三态差分输入输出)

3.LVDS中的终端电阻

4.LVDS 电气特性

(1)LVDS25

(2)LVDS25

5.LVDS 自环测试


 

1.LVDS的概念    

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

2.XILINX FPGA 差分信号解决方案

(1)IBUFDS

(2)OBUFDS

(3)IOBUFDS(三态差分输入输出)

3.LVDS中的终端电阻

注:如果要使用内部的终端电阻,对于 HP 的 LVDS 信号 BANK 电压必须是 1.8V,而对于 HR 的 LVDS25 BANK 信号必须是 2.5V,否则可以使用外部终端电阻。

4.LVDS 电气特性

(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)LVDS25


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 的差分电 气特性是兼容的。

5.LVDS 自环测试

module lvds_loop(
	// sysclk input 系统时钟
	input 	clk_i_p	,
	input 	clk_i_n	,


	// TTL输入输出
	input 	rx_i	,
	output 	tx_o	,
	
	//lvds loop input  输入的LVDS时钟
	input 	dclki_p	,
	input 	dclki_n	,
	input 	din_p	,
	input 	din_n	,
	
	//lvds loop output 输出的LVDS时钟
	output dclko_p	,
	output dclko_n	,
	output dout_p	,
	output dout_n
);

 
wire clk50m,dclki,din; 
reg rx_lvds = 1'b0;

wire clk_i;

// 得到单端系统时钟,对差分时钟采用 IBUFGDS IP 核去转换
IBUFGDS CLK_U(
	.I	(	clk_i_p	),
	.IB	(	clk_i_n	),
	.O	(	clk_i	)
);

//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_in1(clk_i));

// lvds out, 把 rx 接收到的数据,通过LVDS发送出去
// 输出50M的差分时钟
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  (	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
    rx_lvds <= din;
end

assign tx_o = rx_lvds;
 
endmodule

 

FPGA和高速ADC的接口设计是数字信号处理系统中重要的一环。在实现高速数据采集、处理和传输时,ADC的接口设计对系统性能有着至关重要的影响。本文将介绍使用FPGA实现250MSPS采样率ADC9481的接口设计实战。 一、ADC9481简介 ADC9481是ADI公司推出的一款高速模数转换器(ADC),工作在250MSPS采样率下,采用14位分辨率,支持LVDS和CMOS输出,主要应用于雷达、通信、医疗等领域。 二、接口设计 ADC9481的接口设计包括时钟、数据和控制信号。其中,时钟信号是系统的时钟源,数据信号是从ADC传输数据的信号,控制信号用于控制ADC的工作模式和数据格式。 1. 时钟信号 ADC9481采用差分时钟输入,需要提供一个与采样率匹配的时钟信号。在本例中,我们使用了一块XilinxFPGA开发板,采用了一颗125MHz的晶振作为时钟源,并将其分别输入到ADC的CLKP和CLKN引脚。 2. 数据信号 ADC9481的数据输出信号为LVDS或CMOS格式,可以选择不同的数据输出模式。在本例中,我们选择了LVDS输出模式。因此,需要将ADC的LVDS数据输出信号通过一对差分线路传输FPGALVDS输入端口。由于ADC的数据位宽为14位,因此需要使用一对16位的LVDS输入端口。 3. 控制信号 ADC9481的控制信号包括数据使能、复位、模式选择等。其中,数据使能信号用于控制ADC的数据输出,复位信号可将ADC恢复到初始状态,模式选择信号用于选择数据格式和采样模式。在本例中,我们使用了ADC默认的数据格式和采样模式,因此只需要将数据使能和复位信号连接到FPGA的GPIO端口即可。 三、实验结果 我们使用了Xilinx的Vivado软件对FPGA进行了编程,并将编程结果下载到FPGA开发板上。通过串口终端软件可以观察到ADC在工作时输出的数据,如下图所示: ![ADC数据输出示意图](https://img-blog.csdnimg.cn/20211102154838539.png) 可以看到,ADC输出的数据符合预期,且没有出现严重的抖动和失真。这表明ADC的接口设计和FPGA的编程都是正确的。 四、总结 ADC的接口设计对于数字信号处理系统来说是至关重要的。在本文中,我们介绍了使用FPGA实现250MSPS采样率ADC9481的接口设计实战,并取得了良好的实验结果。希望本文对需要进行高速数据采集和处理的工程师们有所帮助。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个早起的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值