最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用。Xilinx FPGA中,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF)。
注意在分配引脚时,只需要分配SIGNAL_P的引脚,SIGNAL_N会自动连接到相应差分对引脚上;若没有使用差分信号原语,则在引脚电平上没有LVDS的选项(IO Planning PlanAhead)。
测试代码:
//
modulelvds_test( sys_clk,
sys_rst,
signal_in_p,
signal_in_n,
signal_out_p,
signal_out_n,
led_signal
);inputsys_clk,sys_rst;inputsignal_in_p,signal_in_n;outputsignal_out_p,signal_out_n;outputled_signal;wiresignal_out_temp;reg[31:0] clk_cnt;always @ (posedge sys_clk) begin
if(!sys_rst) clk_cnt <= 32'd0;
else begin
if(clk_cnt == 32'd10_000_000) clk_cnt <= 32'd0;else clk_cnt <= clk_cnt+1'b1;
end
end
assign signal_out=(clk_cnt >= 32'd5_000_000) ? 1 : 0;
OBUFDS signa