新聞中心

EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > Spartan-3 FPGA系列中高效PCB布局的LVDS信號(hào)倒相

Spartan-3 FPGA系列中高效PCB布局的LVDS信號(hào)倒相

作者:Nick Sawyer等 時(shí)間:2008-07-24 來(lái)源:賽靈思公司 收藏

  輸入 DDR 示例

本文引用地址:http://m.butianyuan.cn/article/86182.htm

  圖 6 所示為接收 DDR 方案,其中每條輸入線生成兩條可能需要倒相的內(nèi)部數(shù)據(jù)線。對(duì)于Spartan-3E 的 DDR 輸入,推薦使用新型的 IDDR2 輸入觸發(fā)器結(jié)構(gòu)。這種結(jié)構(gòu)去除了從下降沿到下一上升沿的所有通路,從而可以使內(nèi)部邏輯更容易設(shè)計(jì)。要了解有關(guān) IDDR2 的詳情,請(qǐng)參閱 DS312 《Spartan-3E 系列數(shù)據(jù)手冊(cè)》。


  以下代碼說(shuō)明針對(duì)相同生成環(huán)示例的 DDR 寄存接收器情況。唯一的變化是增加了 Spartan-3E 的 IDDR2 例示。原 Spartan-3 器件需要略微不同的代碼,因?yàn)樗话?IDDR2 結(jié)構(gòu)。
所附 ZIP 文件包含完整細(xì)節(jié)(請(qǐng)參閱“設(shè)計(jì)文件”)。

  Verilog 語(yǔ)言代碼:
.
parameter [2:0] SWAP_MASK = 3'b010;
.
.
genvar i;
generate
for (i = 0; i <= 2; i = i + 1)
begin: loop0
IBUFDS#(.IOSTANDARD("_25"), .IFD_DELAY_VALUE("0"), .DIFF_TERM("FALSE"))
ibuf_d (.I(datain_p[i]), .IB(datain_n[i]), .O(rx_input[i]));
IDDR2 #(.DDR_ALIGNMENT("C0")) fd_ioc(.C0(clkin), .C1(notclk), .D(rx_input[i]),
.CE(1'b1), .R(1'b0), .S(1'b0), .Q0(rx_input_reg[i+3]),
.Q1(rx_input_reg[i]));
assign rx_input_fix[i] = rx_input_reg[i] ^ SWAP_MASK[i];
assign rx_input_fix[i+3] = rx_input_reg[i+3] ^ SWAP_MASK[i];
end
endgenerate


  VHDL 語(yǔ)言代碼:
.
constant SWAP_MASK : std_logic_vector(2 downto 0):= "010";
.
.
loop0: for i in 0 to 2 generate
ibuf_d : ibufds
generic map (IOSTANDARD => "_25", IFD_DELAY_VALUE => "0", DIFF_TERM => FALSE)
port map (i => datain_p(i), iB => datain_n(i), o => rx_input(i));
fd_d : iddr2
generic map (DDR_ALIGNMENT => "C0")
port map (c0 => clkin, c1 => notclock, d => rx_input(i), ce => '1', r => '0',
s => '0', q0 => rx_input_reg(i+3), q1 => rx_input_reg(i));
rx_input_fix(i) <= rx_input_reg(i) xor SWAP_MASK(i);
rx_input_fix(i+3) <= rx_input_reg(i+3) xor SWAP_MASK(i);

  通過(guò)修改紅色的粗體字符,可以方便地將此機(jī)制擴(kuò)展到不同的位寬。

  在使用 DDR 技術(shù)時(shí),位操作可能很重要。DDR 生成環(huán)示例生成一條總線,總線的低階位聚集在時(shí)鐘的下降沿,而其高階位則聚集在下一個(gè)上升沿。圖7 是 DDR 設(shè)計(jì)模擬運(yùn)行的屏幕截圖,其中顯示了這種位集中現(xiàn)象。此模擬運(yùn)行假設(shè)所有跡線都是正確的(即沒(méi)有進(jìn)行引腳交換),以清楚地顯示具體位的結(jié)束位置。

  輸出 DDR 示例

  圖8 所示為發(fā)射器的 DDR 方案,其中每對(duì)發(fā)送數(shù)據(jù)線由 Spartan-3E FPGA 中的 ODDR2(在Spartan-3 FPGA 中是 FDDRRSE)機(jī)制進(jìn)行多路復(fù)用。這種情況下,在與極性需要倒相的 輸出相關(guān)聯(lián)的每條線路中都增加了。因?yàn)檫@些在上述實(shí)現(xiàn)過(guò)程中被吸收到輸出觸發(fā)器中,所以它們不會(huì)改變電路的時(shí)序。

  以下代碼說(shuō)明生成環(huán)示例的發(fā)射器 DDR 寄存情形。原 Spartan-3 器件需要略微不同的代碼,因?yàn)樗话?ODDR2 結(jié)構(gòu)。所附 ZIP 文件包含完整細(xì)節(jié)(請(qǐng)參閱“設(shè)計(jì)文件”)。

  Verilog 語(yǔ)言代碼:

  parameter [2:0] SWAP_MASK = 3'b010 ;
genvar i ;
generate
for (i = 0 ; i <= 2 ; i = i + 1)
begin : loop0
OBUFDS #(.IOSTANDARD("LVDS_25"))
obuf_d (.I(tx_output_reg[i]), .O(dataout_p[i]), .OB(dataout_n[i]));
ODDR2 #(.DDR_ALIGNMENT("NONE")) fd_ioc (.C0(clkin), .C1(notclk),
.D0(tx_output_fix[i+3]), .D1(tx_output_fix[i]), .CE(1'b1), .R(1'b0),
.S(1'b0), .Q(tx_output_reg[i])) ;
assign tx_output_fix[i] = tx_output[i] ^ SWAP_MASK[i] ;
assign tx_output_fix[i+3] = tx_output[i+3] ^ SWAP_MASK[i] ;
end
endgenerate


  VHDL 語(yǔ)言代碼:

  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 ;


  通過(guò)修改紅色的粗體字符,可以方便地將此機(jī)制擴(kuò)展到不同的位寬。

  如上所述,在使用 DDR 技術(shù)時(shí),位操作可能很重要。DDR 生成環(huán)示例生成一條總線,總線的低階位在時(shí)鐘的下降沿上發(fā)送,而其高階位則在下一個(gè)上升沿上發(fā)送。

  設(shè)計(jì)文件

  本應(yīng)用指南介紹的各種接收器和發(fā)射器示例的設(shè)計(jì)文件是針對(duì)所有 Spartan-3 器件和
Spartan-3E 系列器件編寫(xiě)的。可從 Xilinx 網(wǎng)站 (xapp491.zip) 獲得 Verilog 和 VHDL 兩種語(yǔ)言的設(shè)計(jì)文件。所附 readme.txt 文件提供了最新詳情。

  結(jié)論

  用 LVDS 進(jìn)行設(shè)計(jì)時(shí),有計(jì)劃地謹(jǐn)慎使用 Spartan-3 FPGA 系列資源,可以大幅度降低 布局的復(fù)雜性,同時(shí)可以提高整體電路板信號(hào)的完整性。對(duì)于器件中集成的 LVDS 接收器和LVDS 發(fā)射器來(lái)說(shuō)也是如此,但輸入時(shí)鐘引腳除外;輸入時(shí)鐘引腳必須具有正確的極性。


 


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: PCB LVDS 倒相器 FPGA SDR

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉