最近调试芯片遇到一个选择题,需要决定数据接口的接口标准,是选用lvds差分接口还是cmos单端接口。说实话,之前接触多的还是cmos单端接口,只是看到过很多资料介绍过lvds差分接口。
官方说法里,它的主要优点有:
抗干扰能力强,具有更高的数据传输速率更好的信号完整性降低了电平幅度和电路功耗既然有这么多优点,这次我们就选用lvds差分接口,看看我们能不能感受到lvds的优势。
每对lvds信号是一个差分信号对,一个信号用两个相反的p,n信号线表示,通过差值 |vp - vn|传输数据,这样可以有效减小共模噪声的干扰,信号线传输如下图:
图中含有data_clk, rx_frame两个lvds信号对
而fpga内部处理信号肯定还是需要使用单端信号,这时就需要经过一个差分转单端的“工具”,将差分信号转换为fpga更方便处理的单端信号。
在xilinx中,我们可以用ibufds原语,可以在language template中找到这个原语的示例,经过修改一番后,可以将差分的data_clk转换为单端的data_clk, 原语如下:
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(data_clk_tmp), // buffer output .i(data_clk_p), // diff_p buffer input (connect directly to top-level port) .ib(data_clk_n) // diff_n buffer input (connect directly to top-level port) );将需要转换的data_clk p端和n端接入ibufds的i和ib端口,就可以在o端口得到转换的单端信号。
除了clk时钟信号,其他信号的输入转换基本结束了;而clk时钟信号还需要接入bufg,因为clk时钟只有接入bufg才能接入全局时钟网络,这对于减小时序问题有帮助。
同样在language template中找到这个原语的示例,修改后如下:
bufg bufg_i0 ( .o(data_clk), // 1-bit output: clock output, 36mhz. .i(data_clk_tmp) // 1-bit input: clock input, 36mhz. );一个输入一个输出,非常简单的原语调用!
另一边,有输入就会有输出,输出的问题也好解决,同样使用一个obufds原语实现单端转差分,在language template中找到原语,修改后如下:
obufds #( .iostandard(lvds18), // specify the output i/o standard .slew(slow) // specify the output slew rate ) obufds_inst ( .o(tx_frame_p), // diff_p output (connect directly to top-level port) .ob(tx_frame_n), // diff_n output (connect directly to top-level port) .i(tx_frame) // buffer input );设置好相应的参数之后,将单端信号接入obufds的i端口,o端口输出差分信号的p端,ob端口输出差分信号的n端。
最后一个小问题就是在xdc设置中,因为一个信号对有两个管脚,比单端信号多了一倍的管脚绑定工作量;但其实我们可以只需要绑定p端的管脚,软件会自动帮我们绑定n端的管脚。
在设置输入输出端口的“iostandard”中,遇到了些许问题,这里写出来记录一下,也让后面遇到这个问题的人有个参考;最初设置差分信号的“iostandard”时,我想当然的使用了“lvds”,“lvds18”等参数,但是这些参数都不能最终生成比特流;
在查了一些资料以及vivado本身的i/o port界面里参数后发现,差分信号的iostandard需要这样设置:
set_property iostandard diff_hstl_ii_18 [get_ports tx_frame_p]因为我的io电压是1.8v,所以最终使用了“diff_hstl_ii_18”,如果有更好的方案,可以一起探讨探讨。
总结:
输入信号需要用到ibufds实现差分转单端,输入时钟还需要加bufg输出信号使用obufds实现单端转差分差分信号只需要绑p端管脚,“iostandard”设置需要注意输入输出端口的简单处理之后,这些信号为了提高传输数据的效率,还使用了ddr(double data rate)技术传输数据。
基于GPRS的水文信息远程监测系统的设计方案
华为发布声明:强烈反对美国商务部仅针对华为的直接产品规则修改
片上网络(noc)技术发展现状及其趋势浅析
4G网络建设中的Fronthaul微波传输解决方案
兰州正式发布《大数据产业发展“十三五”规划》
LVDS差分信号输入输出的处理方法
华为任正非内部讲话文稿披露:一文点醒
小米对讲机开箱图赏:颜值实力并存,和厚、黑、重说拜拜!
变频器控制电路设计及其原理分析
如何向Arduino添加实时时钟
从4G时代看未来网络测试
汽车USB 2.0和5V Type-C解决方案用于充电和强大的数据线保护
新式降压转换设计并实现PWM升压转换器
自动驾驶领域第三个超级独角兽出现,那么哪家中国公司会是下一个呢
Amazfit在印度市场推出GTS 2 mini智能手表
Mach-NX:可信系统的基石
PTS + ARMS打造性能和应用诊断利器
颜色传感器的类型有哪些 如何选择颜色传感器
���˲���������,Poor posture reminder
中国联通新一代智慧客服平台正式启用