色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

電子設計 ? 來源:郭婷 ? 作者:電子設計 ? 2019-05-23 08:09 ? 次閱讀

在比較簡單的未大量使用過孔的四層或六層 PCB上,可能很難對 LVDS 或 LVPECL 這類差分信號布線。其原因是,驅動器上的正極引腳必須驅動接收器上的相應正極引腳,而負極引腳則必須驅動接收器的負極引腳。有時跡線以錯誤的方向結束,這實際上是向電路中添加了一個倒相器。本應用指南說明 Spartan- 3 FPGA 系列如何僅通過在接收器數據通路中加入一個倒相器即可避免大量使用過孔,并且在不要求 PCB 重新設計的情況下即可解決意外的 PCB 跡線交換問題。這項技術同樣適用于將 FPGA 用作驅動器的情況,而且交換跡線可使得在其他器件或連接器上的 PCB 布線更容易。

圖1 所示為一個 PCB 示例,其中正極引腳驅動接收器的正極引腳,負極引腳驅動接收器的負極引腳。如果引腳被意外交換,那么 PCB 跡線實際上就變成了一個倒相器,這就可能需要電路板重新設計。

圖2 說明 Spartan-3 FPGA 系列如何通過在接收器數據通路中加入必要的倒相器來解決這一問題。有此功能,設計人員便可以為簡化布線而任意交換跡線。因此,PCB 設計人員可以為實現最大信號完整性而自由布置差分對;所發生的任何交換都可以在 FPGA 內部得到校正。如果使用 DCM (請參閱“異步輸入”),則這一布線的自由僅適用于數據線,而“不”適用于時鐘線。交換線路絕對不會損壞器件。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

吸收倒相器示例

在兩種情況下,可以向前吸收倒相器:

1. 當直接驅動觸發器輸入時

2. 當驅動到邏輯函數中時

在第一種情況下,Spartan-3 FPGA 系列在 CLB 觸發器的直接 (D) 輸入路徑上有一個多路復用器(如圖3 所示)。此多路復用器在真實輸入信號和補充輸入信號之間進行選擇。它通過一個配置單元進行配置,該單元由加載到此器件中的比特流進行初始化。用戶在操作過程中不能訪問多路復用器。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

在第二種情況下,倒相器直接就被吸收了。例如,如果一個執行“B = ~A”的倒相器后面緊跟著一個執行“D = B 與 C”的與門,那么一種簡單的替代方式就是一個無倒相器的執行“D =~A 與 C”的與門;換句話說,就邏輯的利用和延遲而言,倒相器吸收永遠是“自由”的。

這種倒相器吸收的機制也適用于 IOB 輸出觸發器。同樣,如果是為簡化 PCB 布局所需,這種吸收可以“自由”地在 FPGA 的輸出通路中加入倒相器。如果 FPGA 驅動某接插件,而此接插件帶有與此 FPGA 的 N 和 P 兩個 LVDS 輸出直接匹配的預定義引腳,則此機制可以起到幫助作用。

異步輸入

圖2 是可以考慮的最簡單的示例。接收到的經過交換的 LVDS 信號將用在 FPGA 內部的組合邏輯中。在此例中,只需將一個簡單的倒相器添加到代碼中。此倒相器的代碼以 Verilog 和 VHDL語言表述如下:

Verilog: assign rx_input_fix = ~rx_input;

VHDL: rx_input_fix 《= not rx_input;

可以將此倒相器吸收到由輸入信號驅動的組合邏輯中,也可以將其吸收到 FPGA 內部的某個觸發器的 D 輸入中,但不能將其吸收到 FPGA 的 IOB 內的觸發器、DCM 或 BUFGMUX 時鐘緩沖器中。因此,引腳交換的靈活性無法用到將用于數據時鐘的時鐘信號上。如果上述時鐘只是系統的振蕩器,那么可以交換線路并且不需要再倒相,這樣做不會產生任何負面效應。

圖4 所示示例中的輸入實際上是一條由“n”個信號對組成的總線。其中某些信號對是正確的,而其他信號對則為了方便而進行了交換。此例中,在設計中最好定義一個對應這“n”個輸入的掩碼。該掩碼用來有選擇地反轉(事實上不包括“與”)那些需要校正的位,但不反轉接收無誤的位。在圖4 中,位 0 和 2 是正確的,而位 1 需要倒相。在代碼中處理校正的最好方式是使用生成環,它們可以例化輸入緩沖器并且有選擇地逐位執行倒相。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

以下 Verilog 代碼用生成環來執行接收倒相:

parameter [2:0] SWAP_MASK = 3‘b010;

genvar i;

generate

for (i = 0; i 《= 2; i = i + 1)

begin: loop0

IBUFDS

#(.IOSTANDARD(“LVDS_25”), .IBUF_DELAY_VALUE(“0”), .DIFF_TERM(“FALSE”))

ibuf_d (.I(datain_p[i]), .IB(datain_n[i]), .O(rx_input[i]));

assign rx_input_fix[i] = rx_input[i] ^ SWAP_MASK[i];

end

endgenerate

以下 VHDL 代碼用生成環來執行接收倒相:

constant SWAP_MASK : std_logic_vector(2 downto 0):= “010”;

loop0: for i in 0 to 2 generate

ibuf_d: ibufds generic map

(IOSTANDARD =》 “LVDS_25”, IBUF_DELAY_VALUE =》 “0”, DIFF_TERM =》 FALSE)

port map

(i =》 datain_p(i), iB =》 datain_n(i), o =》 ; rx_input(i));

rx_input_fix(i) 《= rx_input(i) xor SWAP_MASK(i);

end generate;

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

IOB 輸入觸發器的同步使用

通常,輸入信號寄存在 IOB 觸發器中,因為高速數據傳輸是使用 LVDS 的最常見的原因。可使用下列技術之一來寄存數據:

單數據速率 (SDR) 技術,這種技術在 IOB 中只使用一個(通常是正沿觸發的)觸發器或者

雙數據速率 (DDR) 技術,這種技術使用正沿和負沿都觸發的觸發器對輸入數據線進行采樣

在兩種情況下都不可能在輸入放大器和觸發器之間反轉輸入信號,因為 IOB 模塊中的觸發器沒有可倒相的輸入。倒相器需要添加到 IOB 輸入觸發器后,它們可以被吸收到其后的寄存邏輯或組合邏輯中。

SDR 示例

圖5 所示為 IOB 中帶有一個觸發器的 SDR 方案。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

以下代碼說明針對相同生成環示例的 SDR 寄存情況。唯一的變化是增加了觸發器例示。

Verilog 語言代碼:

parameter [2:0] SWAP_MASK = 3’b010;

genvar i;

generate

for (i = 0; i 《= 2; i = i + 1)

begin: loop0

IBUFDS#(.IOSTANDARD(“LVDS_25”), .IFD_DELAY_VALUE(“0”), .DIFF_TERM(“FALSE”))

ibuf_d (.I(datain_p[i]), .IB(datain_n[i]), .O(rx_input[i]));

FD fd_d (.C(clkin), .D(rx_input[i]), .Q(rx_input_reg[i]));

assign rx_input_fix[i] = rx_input_reg[i] ^ SWAP_MASK[i];

end

endgenerate

VHDL 語言代碼:

constant SWAP_MASK : std_logic_vector(2 downto 0):= “010”;

loop0: for i in 0 to 2 generate

ibuf_d: ibufds

generic map (IOSTANDARD =》 “LVDS_25”, IFD_DELAY_VALUE =》 “0”, DIFF_TERM =》 FALSE)

port map (i =》 datain_p(i), iB =》 datain_n(i), o =》 rx_input(i));

fd_d: fd port map (c =》 clkin, d =》 rx_input(i), q =》 rx_input_reg(i));

rx_input_fix(i) 《= rx_input_reg(i) xor SWAP_MASK(i);

end generate;

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

輸入 DDR 示例

圖 6 所示為接收 DDR 方案,其中每條輸入線生成兩條可能需要倒相的內部數據線。對于Spartan-3E FPGA 的 DDR 輸入,推薦使用新型的 IDDR2 輸入觸發器結構。這種結構去除了從下降沿到下一上升沿的所有通路,從而可以使內部邏輯更容易設計。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

以下代碼說明針對相同生成環示例的 DDR 寄存接收器情況。唯一的變化是增加了 Spartan-3E FPGA 的 IDDR2 例示。原 Spartan-3 器件需要略微不同的代碼,因為它不包含 IDDR2 結構。

所附 ZIP 文件包含完整細節(請參閱“設計文件”)。

Verilog 語言代碼:

parameter [2:0] SWAP_MASK = 3‘b010;

genvar i;

generate

for (i = 0; i 《= 2; i = i + 1)

begin: loop0

IBUFDS#(.IOSTANDARD(“LVDS_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 語言代碼:

constant SWAP_MASK : std_logic_vector(2 downto 0):= “010”;

loop0: for i in 0 to 2 generate

ibuf_d : ibufds

generic map (IOSTANDARD =》 “LVDS_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);

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

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

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

輸出 DDR 示例

圖8 所示為發射器的 DDR 方案,其中每對發送數據線由 Spartan-3E FPGA 中的 ODDR2(在Spartan-3 FPGA 中是 FDDRRSE)機制進行多路復用。這種情況下,在與極性需要倒相的LVDS 輸出相關聯的每條線路中都增加了倒相器。因為這些倒相器在上述實現過程中被吸收到輸出觸發器中,所以它們不會改變電路的時序。

利用Spartan-3 FPGA系列在PCB布局中進行LVDS倒相設計

以下代碼說明生成環示例的發射器 DDR 寄存情形。原 Spartan-3 器件需要略微不同的代碼,因為它不包含 ODDR2 結構。所附 ZIP 文件包含完整細節(請參閱“設計文件”)。

Verilog 語言代碼:

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 語言代碼:

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 發射器來說也是如此,但輸入時鐘引腳除外;輸入時鐘引腳必須具有正確的極性。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1629

    文章

    21748

    瀏覽量

    603988
  • pcb
    pcb
    +關注

    關注

    4319

    文章

    23111

    瀏覽量

    398327
  • 接收器
    +關注

    關注

    14

    文章

    2473

    瀏覽量

    71959
收藏 人收藏

    評論

    相關推薦

    Xilinx Spartan-3系列FPGA的配置電路

    特權同學為大家介紹市面上最常見的Xilinx spartan-3的xc3s400的配置電路...
    發表于 05-31 14:07 ?4442次閱讀
    Xilinx <b class='flag-5'>Spartan-3</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的配置電路

    淺談spartan-3系列FPGA配置電路設計方案

    這里要列出一個市面上最常見的spartan-3的xc3s400的配置電路,所有spartan-3FPGA配置電路的鏈接方式都是一樣的。
    發表于 02-04 09:47 ?3566次閱讀
    淺談<b class='flag-5'>spartan-3</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>配置電路設計方案

    Spartan3系列FPGA用戶指南(中文版)

    本帖最后由 lpc2292 于 2013-2-27 20:24 編輯 “部分 I: 用 Spartan-3 系列 FPGA 進行設計”第 1 章 “概述”第 2 章 “使用全局時
    發表于 02-27 20:20

    基于Spartan-3 FPGA的高性能DSP功能實現

    特性。 Spartan-3 FPGA的面世改變了嵌入式DSP的應用前景。雖然Spartan-3系列器件的價位可能較低,但它們同樣具有DSP設計所需的平臺特性。這些平臺特性能夠以較高的面
    發表于 06-27 06:12

    如何在IOB中為spartan-3生成FPGA使用TFF?

    親愛的大家! 如何在IOB中為spartan-3生成FPGA使用TFF(TFF1和TFF2三態觸發器)? 我想在spartan-3 FPGASpa
    發表于 06-28 09:53

    什么是Xilinx Spartan-3系列FPGA的配置電路?

      這里要談的是Xilinx的spartan-3系列FPGA的配置電路。當然了,其它系列FPGA配置電路都是大同小異的,讀者可以類推,重點
    發表于 10-10 06:16

    什么是基于Spartan-3 FPGA的DSP功能優化方案?

    本文闡述了Spartan-3 FPGA針對DSP而優化的特性,并通過實現示例分析了它們性能和成本上的優勢。
    發表于 10-18 07:11

    為什么利用Spartan-3 FPGA來實現DSP系統?

    為什么利用Spartan-3 FPGA來實現DSP系統?Spartan-3系列器件平板顯示器中
    發表于 04-29 06:32

    為什么利用Spartan-3 FPGA來實現DSP系統?

    為什么利用Spartan-3 FPGA來實現DSP系統?Spartan-3系列器件平板顯示器中
    發表于 04-30 07:12

    如何利用Spartan-3 FPGA進行LVDS信號設計?

    Spartan-3 FPGA系列如何僅通過接收器數據通路中加入一個器即可避免大量使用過孔?
    發表于 05-06 07:30

    如何采用Spartan-3 FPGA實現通用視頻采集系統的設計?

    本文介紹了采用Xilinx公司的Spartan-3 FPGA實現通用視頻采集系統的設計方案。
    發表于 06-08 06:34

    Spartan-3 Generation FPGAs應用資料

    Spartan-3 Generation FPGAs應用資料 DDR2 SDRAM Interface for Spartan-3 Generation FPGA
    發表于 05-13 13:57 ?27次下載

    基于Spartan-3 FPGA的DSP功能實現方案

      Spartan-3FPGA能以突破性的價位點實現嵌入式DSP功能。本文闡述了Spartan-3 FPGA
    發表于 12-17 11:31 ?766次閱讀
    基于<b class='flag-5'>Spartan-3</b> <b class='flag-5'>FPGA</b>的DSP功能實現方案

    Spartan-3系列FPGA的用戶指南

    本用戶指南為客戶使用 Spartan?-3 FPGA 系列各平臺 (Spartan-3Spartan-
    發表于 03-05 08:00 ?17次下載
    <b class='flag-5'>Spartan-3</b><b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的用戶指南

    Spartan-3 FPGA的用戶指南免費下載

    Spartan-3 FPGA包括擴展的斯巴達-3A系列(斯巴達-3A、斯巴達-3AN和斯巴達-
    發表于 01-23 08:00 ?27次下載
    <b class='flag-5'>Spartan-3</b> <b class='flag-5'>FPGA</b>的用戶指南免費下載
    主站蜘蛛池模板: 欧美九十老太另类| 午夜久久影院| 52av我爱| 欧美特黄99久久毛片免费| bt天堂午夜国产精品| 三级黄色片免费观看| 国产一级特黄aa毛片| 最新高清无码专区在线视频| 欧美一区二区三区播放| 国产视频精品免费| 24小时日本在线| 色 花 堂 永久 网站| 精品性影院一区二区三区内射| 91香蕉福利一区二区三区| 色色色五的天| 久久毛片免费看一区二区三区| RAPPER性骚扰大开黄腔| 亚洲AV无码一区二区三区乱子伦| 琉璃美人煞在线观看| 边做边爱播放3免费观看| 亚洲国产精品自在自线观看 | 色情www日本欧美| 精品久久久噜噜噜久久久app| FREE乌克兰嫩交HD| 亚洲欧洲精品A片久久99| 精品视频网站| 成人短片迅雷下载| 瑜伽牲交AV| 我强进了老师身体在线观看 | 中国xxxxx69| 理论片午午伦夜理片影院| 扒开她的黑森林让我添动态图| 亚洲黄色大片| 日本 一二三 不卡 免费| 精品国产自在现线拍国语| 成人无码在线超碰视频 | 欧美16一17sex性hd| 国自产精品手机在线视频| 第九色区av天堂| 97精品免费视频| 亚洲午夜久久久精品影院|