VHDL 语言代码:
constant SWAP_MASK : std_logic_vector(2 downto 0) := "010" ;
loop0 : for i in 0 to 2 generate
ibuf_d : obufds generic map (IOSTANDARD => "LVDS_25")
port map (i => tx_output_reg(i), o => dataout_p(i ), oB =>
dataout_n(i));
fd_d : oddr2 generic map (DDR_ALIGNMENT => "NONE")
port map (c0 => clkin, c1 => notclock, d0 => tx_output_fix(i),
d1 => tx_output_fix(i+3), ce => '1', r => '0', s => '0', q =>
tx_output_reg(i));
tx_output_fix(i) <= tx_output(i) xor SWAP_MASK(i) ;
tx_output_fix(i+3) <= tx_output(i+3) xor SWAP_MASK(i) ;
end generate ;
通过修改红色的粗体字符,可以方便地将此机制扩展到不同的位宽。
如上所述,在使用 DDR 技术时,位操作可能很重要。DDR 生成环示例生成一条总线,总线的低阶位在时钟的下降沿上发送,而其高阶位则在下一个上升沿上发送。
设计文件
本应用指南介绍的各种接收器和发射器示例的设计文件是针对所有 Spartan-3 器件和
Spartan-3E 系列器件编写的。可从 Xilinx 网站 (xapp491.zip) 获得 Verilog 和 VHDL 两种语言的设计文件。所附 readme.txt 文件提供了最新详情。
结论
用 LVDS 进行设计时,有计划地谨慎使用 Spartan-3 FPGA 系列资源,可以大幅度降低 PCB 布局的复杂性,同时可以提高整体电路板信号的完整性。对于器件中集成的 LVDS 接收器和LVDS 发射器来说也是如此,但输入时钟引脚除外;输入时钟引脚必须具有正确的极性。