在XILINX中差分输入信号到单端信号的转换
0赞在XILINX中差分输入信号到单端信号的转换
一 理论基础:
1理论:
差分传输是一种信号传输技术,区别于传统的一根信号线一根地线的做法,差分传输如图所示,在这两根线上都传输信号,这两个信号的振幅相等,相位相反,在这两根线上的传输的信号就是差分信号。信号的接收端比较这两个电压的差值来判断发送端发送的是0还是1。在电路板上,差分走线必须是等长、等宽、紧密靠近,且在同一层面的两根线。
2好处:
1) 能够很容易地识别小信号,从差分信号恢复信号值在很大程度上与“地”的精确值无关,而在某一范围内。
2) 差分信号对外部电磁干扰是高度免疫。一个干扰源几乎相同程度地影响差分信号的每一端,电压差异决定信号值,将忽略在两个导体上出现的任何同样干扰。
3) 在一个单电源系统中能够精确地处理‘双极’信号。
在fpga中采用的差分信号应用的比较多。
二 XILINX FPGA中差分信号的使用方法
在一个module模块中讲述差分信号转换到单端信号的方法
1 在代码中的定义
module chafen(
clk_p,
clk_n
iin_p,
iin_n,
qin_p,
qin_n,
…
);
Input clk_p;
Input clk_n;
Input [2:0] iin_p;
Input [2:0] iin_n;
Input [2:0] qin_p;
Input [2:0] qin_n;
Wire [1:0]iin;
Wire [1:0]qin;
Wire clk;
//对差分时钟采用IBUFGDS IP核去转换
IBUFGDS CLK_U(
.I(clk_p),
.IB(clk_n),
.O(clk)
);
//对差分信号采用IBUFDS IP核去转换
IBUFDS Iin_u0 (
.I(iin_p[0]),
.IB(iin_n[0]),
.O(iin[0])
);
IBUFDS Iin_u1 (
.I(iin_p[0]),
.IB(iin_n[0]),
.O(iin[0])
);
IBUFDS Qin_u0 (
.I(qin_p[0]),
.IB(qin_n[0]),
.O(qin[0])
);
IBUFDS Qin_u1 (
.I(qin_p[1]),
.IB(qin_n[1]),
.O(qin[1])
);
…
Endmodule
这个模块的时钟差分信号和数据差分信号在xilinx提供的IP下转换成单端信号以供后面的数据处理使用。
三 XILINX FPGA中差分信号在planAhead使用方法
在工程中编译完代码后,对管脚进行约束,点击
后进入planAhead界面,你会发现这些差分信号和普通的信号有一定差异的,差分信号的输入是成对分配的,并且I/O标准是默认LVDS模式,(注意:要是不对差分信号进行IP核的差分信号转化,I/O标准下拉框是没有LVDS模式),如下图所示;
在对iin_p[13], iin_n[13]在同一行中,根据自己板子的原理图对iin_p[13]进行管脚分配,分配完后发现iin_n[13]也自动按照原理图分配了引脚,所以只需要对iin_p[13]进行分配就可以了,差分的管脚分配是成对分配的,只要分配好了一个,另一个会自动分配好,所以不用担心另一个信号iin_n[13]怎么分配的问题。
在分配好三个管脚后,在package界面看到下图的样子,显示已经分配了这留个引脚。
在这里就讲述完差分信号的在ISE软件中的转换问题,生成单端信号可供使用,信号的抗干扰性能也提高了,所以FPGA中使用差分信号也增多了,这些是在项目实践遇到的问题,在网上的可供查阅的资料也不多,借此机会将自己的遇到的问题和解决的方法 记录下来可供后续遇到这类问题的学习者参考,能够快速解决此类问题,快速进步。有什么好的建议请回信haitun200@126.com.