0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

Hx ? 作者:工程師陳翠 ? 2018-06-30 10:23 ? 次閱讀

LVDS即Low-Voltage Differential Signaling。FPGA的selecteIO非常強(qiáng)大,支持各種IO接口標(biāo)準(zhǔn),電壓電流都可以配置。其接口速率可以達(dá)到幾百M(fèi)甚至上千M。使用lvds來接收高速ADC產(chǎn)生的數(shù)據(jù)會(huì)很方便。像ISERDES,IDDR,IDELAY,OSERDES,ODDR這種資源在FPGA的IOB中多得是(每個(gè)IO都對(duì)應(yīng)有,最后具體介紹),根本不擔(dān)心使用。最近剛在項(xiàng)目中用到,提供一個(gè)思路,具體的器件使用參考FPGA手冊(cè)。

使用的AD芯片ADI的AD9653,125M16bit高精度高速ADC,用到的采樣速率是80M。其SPI配置會(huì)單獨(dú)開一篇來講,SPI配置里面有個(gè)大坑,本來以為調(diào)好了的,后來又發(fā)現(xiàn)了問題,調(diào)了三天才定位到問題在哪,這就是硬件的魅力(坑爹)所在了吧。這里主要介紹FPGA的接收部分。

接收ADC數(shù)據(jù)的時(shí)序圖,

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

有幾點(diǎn)需要注意:

0 , 可以看出分成三種信號(hào),數(shù)據(jù)采樣時(shí)鐘DCLK,幀同步信號(hào)FCLK,和輸入數(shù)據(jù)DATA

1,輸入數(shù)據(jù)采樣時(shí)鐘默認(rèn)是已經(jīng)對(duì)齊了輸入數(shù)據(jù)的中點(diǎn),但幀時(shí)鐘是和數(shù)據(jù)字節(jié)邊緣對(duì)齊的。

2,使用Iserdes接收數(shù)據(jù),Idelay調(diào)整時(shí)鐘延遲。

1,對(duì)數(shù)據(jù)采樣時(shí)鐘的處理如下

通過控制延時(shí),使得CLK和經(jīng)過IBUFDS的BitClk對(duì)齊,從而消除IBUFIO和BUFR還有net的延時(shí)。這樣所有的輸入信號(hào)都只經(jīng)過了一個(gè)IBUFDS,延時(shí)相等。對(duì)Idelay的控制,可以手動(dòng)調(diào)節(jié),也可以用自動(dòng)算法。(參考xapp254)

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

IBUFDS #(

.DIFF_TERM(“TRUE”), // Differential Termination

.IBUF_LOW_PWR(“TRUE”), // Low power=“TRUE”, Highest performance=“FALSE”

.IOSTANDARD(“DEFAULT”) // Specify the input I/O standard

) IBUFDS_inst10 (

.O(W0_dc_clk), // Buffer output

.I(I_AD_FPGA_DC_p), // Diff_p buffer input (connect directly to top-level port)

.IB(I_AD_FPGA_DC_n) // Diff_n buffer input (connect directly to top-level port)

);

wire W_delay_rdy;

wire [4:0] W_delay_cnt;

wire [7:0] W_allign_word;

vio_0 vio_u (

.clk(W_fc_clk), // input wire clk

.probe_in0(W_delay_rdy), // input wire [0 : 0] probe_in0

.probe_in1(W_allign_word),// input wire [7 : 0] probe_in1

.probe_out0(W_delay_cnt) // output wire [4 : 0] probe_out0

);

(* IODELAY_GROUP = “delay1” *)

IDELAYCTRL IDELAYCTRL_inst1 (

.RDY(W_delay_rdy), // 1-bit output: Ready output

.REFCLK(I_ref_clk_200m), // 1-bit input: Reference clock input

.RST(~I_reset_n) // 1-bit input: Active high reset input

);

(* IODELAY_GROUP = “delay1” *)

IDELAYE2 #(

.CINVCTRL_SEL(“FALSE”), // Enable dynamic clock inversion (FALSE, TRUE)

.DELAY_SRC(“IDATAIN”), // Delay input (IDATAIN, DATAIN)

.HIGH_PERFORMANCE_MODE(“TRUE”), // Reduced jitter (“TRUE”), Reduced power (“FALSE”)

.IDELAY_TYPE(“VAR_LOAD”), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE

.IDELAY_VALUE(0), // Input delay tap setting (0-31)

.PIPE_SEL(“FALSE”), // Select pipelined mode, FALSE, TRUE

.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz (190.0-210.0, 290.0-310.0)。

.SIGNAL_PATTERN(“CLOCK”) // DATA, CLOCK input signal

IDELAYE2_inst1 (

.CNTVALUEOUT(), // 5-bit output: Counter value output

.DATAOUT(W1_dc_clk), // 1-bit output: Delayed data output

.C(W_fc_clk), // 1-bit input: Clock input

.CE(1‘b0), // 1-bit input: Active high enable increment/decrement input

.CINVCTRL(1’b0), // 1-bit input: Dynamic clock inversion input

.CNTVALUEIN(W_delay_cnt), // 5-bit input: Counter value input

.DATAIN(1‘b0), // 1-bit input: Internal delay data input

.IDATAIN(W0_dc_clk), // 1-bit input: Data input from the I/O

.INC(1’b0), // 1-bit input: Increment / Decrement tap delay input

.LD(1‘b1), // 1-bit input: Load IDELAY_VALUE input

.LDPIPEEN(1’b0), // 1-bit input: Enable PIPELINE register to load data input

.REGRST(1‘b0) // 1-bit input: Active-high reset tap-delay input

);

BUFIO BUFIO_p (

.O(W_dc_clk), // 1-bit output: Clock output (connect to I/O clock loads)。

.I(W2_dc_clk) // 1-bit input: Clock input (connect to an IBUF or BUFMR)。

);

BUFR #(

.BUFR_DIVIDE(“4”), // Values: “BYPASS, 1, 2, 3, 4, 5, 6, 7, 8”

.SIM_DEVICE(“7SERIES”)// Must be set to “7SERIES”

BUFR_inst (

.O(W_fc_clk), // 1-bit output: Clock output port

.CE(1’b1), // 1-bit input: Active high, clock enable (Divided modes only)

.CLR(1‘b0), // 1-bit input: Active high, asynchronous clear (Divided modes only)

.I(W2_dc_clk) // 1-bit input: Clock buffer input driven by an IBUF, MMCM or local interconnect

);

ISERDESE2 #(

.DATA_RATE(“SDR”), // DDR, SDR

.DATA_WIDTH(8), // Parallel data width (2-8,10,14)

.DYN_CLKDIV_INV_EN(“FALSE”), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)

.DYN_CLK_INV_EN(“FALSE”), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)

.INIT_Q1(1’b0),

.INIT_Q2(1‘b0),

.INIT_Q3(1’b0),

.INIT_Q4(1‘b0),

.INTERFACE_TYPE(“NETWORKING”),// MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE

.IOBDELAY(“IBUF”), // NONE, BOTH, IBUF, IFD

.NUM_CE(2), // Number of clock enables (1,2)

.OFB_USED(“FALSE”), // Select OFB path (FALSE, TRUE)

.SERDES_MODE(“MASTER”), // MASTER, SLAVE

.SRVAL_Q1(1’b0),

.SRVAL_Q2(1‘b0),

.SRVAL_Q3(1’b0),

.SRVAL_Q4(1‘b0)

ISERDESE2_inst0 (

.O(W2_dc_clk), // 1-bit output: Combinatorial output

.Q1(W_allign_word[0]), // Q1 - Q8: 1-bit (each) output: Registered data outputs

.Q2(W_allign_word[1]),

.Q3(W_allign_word[2]),

.Q4(W_allign_word[3]),

.Q5(W_allign_word[4]),

.Q6(W_allign_word[5]),

.Q7(W_allign_word[6]),

.Q8(W_allign_word[7]),

.SHIFTOUT1(),

.SHIFTOUT2(),

.BITSLIP(),

.CE1(1’b1),

.CE2(1‘b1),

.CLKDIVP(1’b0), // 1-bit input: TBD

.CLK(W_dc_clk), // 1-bit input: High-speed clock

.CLKB(~W_dc_clk), // 1-bit input: High-speed secondary clock

.CLKDIV(W_fc_clk), // 1-bit input: Divided clock

.OCLK(1‘b0), // 1-bit input: High speed output clock used when INTERFACE_TYPE=“MEMORY”

.DYNCLKDIVSEL(1’b0), // 1-bit input: Dynamic CLKDIV inversion

.DYNCLKSEL(1‘b0), // 1-bit input: Dynamic CLK/CLKB inversion

.D(W0_dc_clk), // 1-bit input: Data input

.DDLY(W1_dc_clk), // 1-bit input: Serial data from IDELAYE2

.OFB(1’b0), // 1-bit input: Data feedback from OSERDESE2

.OCLKB(1‘b0), // 1-bit input: High speed negative edge output clock

.RST(~I_reset_n), // 1-bit input: Active high asynchronous reset

.SHIFTIN1(1’b0),

.SHIFTIN2(1‘b0)

);

1.1手動(dòng)調(diào)節(jié)對(duì)齊

首先來看看手動(dòng)調(diào)節(jié)算法,用vivado的vio可以很方便的輸入輸出,可手動(dòng)在線修改觀察現(xiàn)象,對(duì)后面的自動(dòng)訓(xùn)練算法也有一定的啟發(fā)作用。

默認(rèn)R_delay_cnt=0時(shí),可以看到輸入的正弦波形很亂

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

慢慢的增加R_delay_cnt,當(dāng)R_delay_cnt=12時(shí),開始出現(xiàn)穩(wěn)定的正弦波,實(shí)驗(yàn)發(fā)現(xiàn)R_delay_cnt=14,15,16時(shí)恰好采到時(shí)鐘的邊緣,也就是跟輸入的原始時(shí)鐘對(duì)齊了,可以看到采到邊緣是allign_word一直在跳變,有的是0,有的是1。一直到R_delay_cnt=18,正弦波都很穩(wěn)定。有效窗口可以準(zhǔn)確計(jì)算出來,200M的Idelay參考時(shí)鐘,78ps/tap。7tap*78ps=546ps。說明數(shù)據(jù)的有效窗口很小,畢竟是320M的DDR,半個(gè)周期都才1.56ns.

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

繼續(xù)增加R_delay_cnt,當(dāng)R_delay_cnt=20時(shí),正弦波又變得不規(guī)則了。

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

最后取R_delay_cnt=15,可以在代碼里面寫死。

1.2自動(dòng)訓(xùn)練算法

既然有了手動(dòng)調(diào)節(jié)的算法,為什么還要用自動(dòng)訓(xùn)練對(duì)齊的算法呢?在高低溫測(cè)試的時(shí)候,器件的延遲會(huì)受溫度的影響發(fā)生變化,特別是在時(shí)鐘頻率很高,數(shù)據(jù)有效窗口很小的時(shí)候,這時(shí)候就需要能夠動(dòng)態(tài)的改變R_delay_cnt的值去自適應(yīng)delay的變化,增加了魯棒性。

有了上面的手動(dòng)調(diào)節(jié)算法,自動(dòng)訓(xùn)練的思路也很簡(jiǎn)單了。上電復(fù)位后R_delay_cnt一直自加,記下最后一個(gè)全0和第一個(gè)全1的值,取中點(diǎn)。這里只考慮了一種情況,還可能是從全1到全0的情況。代碼如下

wire W_delay_rdy ;

reg [4:0] R_delay_cnt ;

reg R_allign_down;

reg [4:0] R_cnt_low ;

reg [4:0] R_cnt_high ;

reg [5:0] R_cnt_sum ;

wire [4:0] W_half_cnt ;

wire [4:0] W_delay_cnt ;

wire [7:0] W_allign_word;

//auto allign fsm

//00000000-》11111111

// |

// half

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_allign_down 《= 0;

end

else if(&R_cnt_tx)

begin

R_allign_down 《= 0;

end

else if(W_allign_word==8’hff)

begin

R_allign_down 《= 1;

end

end

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_delay_cnt 《= 0;

end

else if(&R_cnt_tx)

begin

R_delay_cnt 《= 5‘b1;

end

else if(~R_allign_down)

begin

R_delay_cnt 《= R_delay_cnt + 1’b1;

end

end

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_cnt_low 《= 0;

end

else if(W_allign_word==8‘h00)

begin

R_cnt_low 《= R_delay_cnt;

end

end

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_cnt_high 《= 0;

end

else if(W_allign_word==8’hff)

begin

R_cnt_high 《= R_delay_cnt;

end

end

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_cnt_sum 《= 0;

end

else if(R_allign_down)

begin

R_cnt_sum 《= {{R_cnt_low[4],R_cnt_low} + {R_cnt_high[4],R_cnt_high}};

end

end

assign W_half_cnt = R_cnt_sum[5:1];

assign W_delay_cnt = R_allign_down? W_half_cnt: R_delay_cnt;

2,對(duì)幀同步信號(hào)和數(shù)據(jù)的處理

用上面產(chǎn)生的數(shù)據(jù)采樣時(shí)鐘同時(shí)去采樣FCLK和DATA,使用Iserdes可以1:8進(jìn)行串并轉(zhuǎn)換。但是我們不知道字節(jié)的邊界在哪里,所以要使用一個(gè)bit_slip對(duì)串轉(zhuǎn)并的結(jié)果進(jìn)行移位,移位的同時(shí)檢測(cè)FCLK轉(zhuǎn)換的輸出,當(dāng)輸出是8’b11110000的時(shí)候就停止移位。

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

利用FC找到字節(jié)邊界的代碼如下

//-------------------------------------FC handle bit_slip-------------------------------------

IBUFDS #(

.DIFF_TERM(“TRUE”), // Differential Termination

.IBUF_LOW_PWR(“TRUE”), // Low power=“TRUE”, Highest performance=“FALSE”

.IOSTANDARD(“DEFAULT”) // Specify the input I/O standard

) IBUFDS_inst9 (

.O(W_fc_refclk), // Buffer output

.I(I_AD_FPGA_FC_p), // Diff_p buffer input (connect directly to top-level port)

.IB(I_AD_FPGA_FC_n) // Diff_n buffer input (connect directly to top-level port)

);

ISERDESE2 #(

.DATA_RATE(“DDR”), // DDR, SDR

.DATA_WIDTH(8), // Parallel data width (2-8,10,14)

.DYN_CLKDIV_INV_EN(“FALSE”), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)

.DYN_CLK_INV_EN(“FALSE”), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)

.INIT_Q1(1‘b0),

.INIT_Q2(1’b0),

.INIT_Q3(1‘b0),

.INIT_Q4(1’b0),

.INTERFACE_TYPE(“NETWORKING”),// MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE

.IOBDELAY(“NONE”), // NONE, BOTH, IBUF, IFD

.NUM_CE(2), // Number of clock enables (1,2)

.OFB_USED(“FALSE”), // Select OFB path (FALSE, TRUE)

.SERDES_MODE(“MASTER”), // MASTER, SLAVE

.SRVAL_Q1(1‘b0),

.SRVAL_Q2(1’b0),

.SRVAL_Q3(1‘b0),

.SRVAL_Q4(1’b0)

ISERDESE2_inst9 (

.O(), // 1-bit output: Combinatorial output

.Q1(W_fc_patten[0]), // Q1 - Q8: 1-bit (each) output: Registered data outputs

.Q2(W_fc_patten[1]),

.Q3(W_fc_patten[2]),

.Q4(W_fc_patten[3]),

.Q5(W_fc_patten[4]),

.Q6(W_fc_patten[5]),

.Q7(W_fc_patten[6]),

.Q8(W_fc_patten[7]),

.SHIFTOUT1(),

.SHIFTOUT2(),

.BITSLIP(R_bit_slip),

.CE1(1‘b1),

.CE2(1’b1),

.CLKDIVP(1‘b0), // 1-bit input: TBD

.CLK(W_dc_clk), // 1-bit input: High-speed clock

.CLKB(~W_dc_clk), // 1-bit input: High-speed secondary clock

.CLKDIV(W_fc_clk), // 1-bit input: Divided clock

.OCLK(1’b0), // 1-bit input: High speed output clock used when INTERFACE_TYPE=“MEMORY”

.DYNCLKDIVSEL(1‘b0), // 1-bit input: Dynamic CLKDIV inversion

.DYNCLKSEL(1’b0), // 1-bit input: Dynamic CLK/CLKB inversion

.D(W_fc_refclk), // 1-bit input: Data input

.DDLY(1‘b0), // 1-bit input: Serial data from IDELAYE2

.OFB(1’b0), // 1-bit input: Data feedback from OSERDESE2

.OCLKB(1‘b0), // 1-bit input: High speed negative edge output clock

.RST(~I_reset_n), // 1-bit input: Active high asynchronous reset

.SHIFTIN1(1’b0),

.SHIFTIN2(1‘b0)

);

always @(posedge W_fc_clk or negedge I_reset_n)

begin

if(~I_reset_n)

begin

R_bit_slip 《= 0;

R_wait 《= 0;

end

else

begin

if (R_wait==2’d3 && W_fc_patten!=8‘b11110000)

begin

R_bit_slip 《= 1;

R_wait 《= 2’d1;

end

else

begin

R_bit_slip 《= 0;

R_wait 《= R_wait + 1‘d1;

end

end

end

數(shù)據(jù)采樣代碼和上面的差不多

IBUFDS #(

.DIFF_TERM(“TRUE”), // Differential Termination

.IBUF_LOW_PWR(“TRUE”), // Low power=“TRUE”, Highest performance=“FALSE”

.IOSTANDARD(“DEFAULT”) // Specify the input I/O standard

) IBUFDS_inst1 (

.O(W_data_in1[0]), // Buffer output

.I(I_ad_lvds_d0_p[0]), // Diff_p buffer input (connect directly to top-level port)

.IB(I_ad_lvds_d0_n[0]) // Diff_n buffer input (connect directly to top-level port)

);

ISERDESE2 #(

.DATA_RATE(“DDR”), // DDR, SDR

.DATA_WIDTH(8), // Parallel data width (2-8,10,14)

.DYN_CLKDIV_INV_EN(“FALSE”), // Enable DYNCLKDIVINVSEL inversion (FALSE, TRUE)

.DYN_CLK_INV_EN(“FALSE”), // Enable DYNCLKINVSEL inversion (FALSE, TRUE)

.INIT_Q1(1’b0),

.INIT_Q2(1‘b0),

.INIT_Q3(1’b0),

.INIT_Q4(1‘b0),

.INTERFACE_TYPE(“NETWORKING”),// MEMORY, MEMORY_DDR3, MEMORY_QDR, NETWORKING, OVERSAMPLE

.IOBDELAY(“NONE”), // NONE, BOTH, IBUF, IFD

.NUM_CE(2), // Number of clock enables (1,2)

.OFB_USED(“FALSE”), // Select OFB path (FALSE, TRUE)

.SERDES_MODE(“MASTER”), // MASTER, SLAVE

.SRVAL_Q1(1’b0),

.SRVAL_Q2(1‘b0),

.SRVAL_Q3(1’b0),

.SRVAL_Q4(1‘b0)

ISERDESE2_inst1 (

.O(), // 1-bit output: Combinatorial output

.Q1(W_ad_data1[0]), // Q1 - Q8: 1-bit (each) output: Registered data outputs

.Q2(W_ad_data1[1]),

.Q3(W_ad_data1[2]),

.Q4(W_ad_data1[3]),

.Q5(W_ad_data1[4]),

.Q6(W_ad_data1[5]),

.Q7(W_ad_data1[6]),

.Q8(W_ad_data1[7]),

.SHIFTOUT1(),

.SHIFTOUT2(),

.BITSLIP(R_bit_slip),

.CE1(1’b1),

.CE2(1‘b1),

.CLKDIVP(1’b0), // 1-bit input: TBD

.CLK(W_dc_clk), // 1-bit input: High-speed clock

.CLKB(~W_dc_clk), // 1-bit input: High-speed secondary clock

.CLKDIV(W_fc_clk), // 1-bit input: Divided clock

.OCLK(1‘b0), // 1-bit input: High speed output clock used when INTERFACE_TYPE=“MEMORY”

.DYNCLKDIVSEL(1’b0), // 1-bit input: Dynamic CLKDIV inversion

.DYNCLKSEL(1‘b0), // 1-bit input: Dynamic CLK/CLKB inversion

.D(W_data_in1[0]), // 1-bit input: Data input

.DDLY(1’b0), // 1-bit input: Serial data from IDELAYE2

.OFB(1‘b0), // 1-bit input: Data feedback from OSERDESE2

.OCLKB(1’b0), // 1-bit input: High speed negative edge output clock

.RST(~I_reset_n), // 1-bit input: Active high asynchronous reset

.SHIFTIN1(1‘b0),

.SHIFTIN2(1’b0)

);

當(dāng)數(shù)據(jù)率不是很高的IDDR數(shù)據(jù),使用DDR替代Iserdes接收。IDDR和Iserdes使用的資源相同(待驗(yàn)證)

附:用到的FPGA資源詳解

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

HR Bank真實(shí)的器件如下,一對(duì)IOB,可單獨(dú)使用,可差分使用。后面的資源從上到下依次是ISERDES(ILOGIC),IDELAY,OLOGIC(OSERDES),ILOGIC,IDELAY,OLOGIC。(ILOGIC可作為IDDR,OLOGIC可作為ODDR)。左上角的是一個(gè)clock region(如X0Y2)的中間分布的四個(gè)BUFIO和BUGR(局部時(shí)鐘驅(qū)動(dòng),局部時(shí)鐘分頻,二者延時(shí)相等)。后面是一個(gè)IDELAYCTRL。

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

下面分別詳細(xì)介紹:

IDEALY,

經(jīng)過IDELAY必須要經(jīng)過ISERDES,可直通。

ISERDES,

ISERDES和ILOGIC使用相同的資源,可互換

ILOGIC,

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

OLOGIC,

LVDS高速ADC接口_Xilinx FPGA實(shí)現(xiàn)

OSERDES,和OLOGIC使用相同的資源,可互換

功能描述

? Edge triggered D type flip-flop(FF)

? DDR mode (SAME_EDGE or OPPOSITE_EDGE)

? Level sensitive latch(Latch)

? Asynchronous/combinatorial(直通)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600465
  • lvds
    +關(guān)注

    關(guān)注

    2

    文章

    1028

    瀏覽量

    65554
  • ADC接口
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    3075
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA | Xilinx ISE14.7 LVDS應(yīng)用

    今天給大俠帶來 Xilinx ISE14.7 LVDS應(yīng)用,話不多說,上貨。 最近項(xiàng)目需要用到差分信號(hào)傳輸,于是看了一下FPGA上差分信號(hào)的使用。Xilinx
    發(fā)表于 06-13 16:28

    基于FPGA高速LVDS數(shù)據(jù)傳輸

    高速LVDS數(shù)據(jù)傳輸方案和協(xié)議基于FPGA高速LVDS數(shù)據(jù)傳輸本人在北京工作6年,從事FPGA
    發(fā)表于 03-01 18:47

    如何尋找使用XILINX FPGA高速ADC評(píng)估套件?

    嗨,我正在尋找使用XILINX FPGA高速ADC(分辨率8到14位,速度從50MSPS到200MSPS)評(píng)估套件。這將是偉大的如果我可以使用ISE webpack軟件運(yùn)行板。如果有
    發(fā)表于 08-30 09:10

    雙通道14位、500 MSPS采樣率的AD9684 高速并行LVDS ADC接口介紹

    工程,已經(jīng)使用Xilinx kintex-7實(shí)現(xiàn)這個(gè)ADC接口數(shù)據(jù)接收驅(qū)動(dòng)與后續(xù)信號(hào)處理。 由于AD9684需要外部觸發(fā)時(shí)鐘輸入,需要板卡上的外部基準(zhǔn)時(shí)鐘輸入,通過
    發(fā)表于 12-06 15:33

    如何將高速ADC與串行LVDS輸出連接到virtex 7 fpga?

    親愛的大家,我希望將高速ADC與串行LVDS輸出連接到virtex 7 fpga。我使用的ADC評(píng)估板是AD9635_125EBZ。我想知道
    發(fā)表于 07-26 18:27

    利用FPGA 實(shí)現(xiàn)與TS201 的LinkPort 高速數(shù)據(jù)

    隨著技術(shù)的發(fā)展, 往往需要在不同的系統(tǒng)之間實(shí)現(xiàn)高速通信, 現(xiàn)介紹了一種基于LVDS高速數(shù)據(jù)傳輸?shù)?b class='flag-5'>接口LinkPort , 給出了在
    發(fā)表于 09-22 08:26 ?98次下載

    基于FPGALVDS接口應(yīng)用

    介紹了LVDS技術(shù)的原理,對(duì)LVDS接口高速數(shù)據(jù)傳輸系統(tǒng)中的應(yīng)用做了簡(jiǎn)要的分析,著重介紹了基于FPGA
    發(fā)表于 01-11 10:46 ?101次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>LVDS</b><b class='flag-5'>接口</b>應(yīng)用

    XilinxFPGALVDS差分高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)

    XilinxFPGALVDS差分高速傳輸?shù)?b class='flag-5'>實(shí)現(xiàn)
    發(fā)表于 03-01 13:12 ?66次下載

    基于FPGALVDS過采樣技術(shù)研究并用Xilinx評(píng)估板進(jìn)行驗(yàn)證

    針對(duì)LVDS接口,研究并實(shí)現(xiàn)了一種基于FPGALVDS過采樣技術(shù),重點(diǎn)對(duì)LVDS過采樣技術(shù)中系
    發(fā)表于 11-18 05:13 ?7289次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>LVDS</b>過采樣技術(shù)研究并用<b class='flag-5'>Xilinx</b>評(píng)估板進(jìn)行驗(yàn)證

    如何設(shè)計(jì)實(shí)現(xiàn)Xilinx FPGA高速串行接口

    在數(shù)字系統(tǒng)互連設(shè)計(jì)中,高速串行/O技術(shù)取代傳統(tǒng)的并行/O技術(shù)成為當(dāng)前發(fā)展的趨勢(shì)。與傳統(tǒng)并行丨/技術(shù)相比,串行方案提供了更大的帶寬、更遠(yuǎn)的距離、更低的成本和更高的擴(kuò)展能力,克服了并行l(wèi)/O設(shè)計(jì)存在的缺陷在實(shí)際設(shè)計(jì)應(yīng)用中,采用現(xiàn)場(chǎng)可編程門陣列FPGA
    發(fā)表于 08-24 17:28 ?15次下載
    如何設(shè)計(jì)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b><b class='flag-5'>高速</b>串行<b class='flag-5'>接口</b>

    Xilinx FPGA的SerDes接口詳細(xì)說明

    因?yàn)閿z像頭輸出的LVDS信號(hào)速率會(huì)達(dá)到600Mbps,我們將不能夠通過FPGA的I/O接口直接去讀取這么高速率的信號(hào)。因此,需要使用Xilinx
    發(fā)表于 12-30 17:24 ?43次下載
    <b class='flag-5'>Xilinx</b> <b class='flag-5'>FPGA</b>的SerDes<b class='flag-5'>接口</b>詳細(xì)說明

    如何使用XilinxFPGA對(duì)高速PCB信號(hào)實(shí)現(xiàn)優(yōu)化設(shè)計(jì)

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用XilinxFPGA對(duì)高速PCB信號(hào)實(shí)現(xiàn)優(yōu)化設(shè)計(jì)。
    發(fā)表于 01-13 17:00 ?26次下載
    如何使用<b class='flag-5'>Xilinx</b>的<b class='flag-5'>FPGA</b>對(duì)<b class='flag-5'>高速</b>PCB信號(hào)<b class='flag-5'>實(shí)現(xiàn)</b>優(yōu)化設(shè)計(jì)

    具有LVDS輸出的LTM9011 ADC的AN147-Altera Stratix IV FPGA接口

    具有LVDS輸出的LTM9011 ADC的AN147-Altera Stratix IV FPGA接口
    發(fā)表于 05-09 21:19 ?15次下載
    具有<b class='flag-5'>LVDS</b>輸出的LTM9011 <b class='flag-5'>ADC</b>的AN147-Altera Stratix IV <b class='flag-5'>FPGA</b><b class='flag-5'>接口</b>

    LVDS高速ADC接口, xilinx FPGA實(shí)現(xiàn)

    使用的AD芯片是ADI的AD9653,125M16bit高精度高速ADC,用到的采樣速率是80M。其SPI配置會(huì)單獨(dú)開一篇來講,SPI配置里面有個(gè)大坑,本來以為調(diào)好了的,后來又發(fā)現(xiàn)了問題,調(diào)了三天才定位到問題在哪,這就是硬件的魅力(坑爹)所在了吧。這里主要介紹
    的頭像 發(fā)表于 04-03 10:28 ?5214次閱讀

    高速ADCFPGALVDS數(shù)據(jù)接口中避免時(shí)序誤差的設(shè)計(jì)考慮

    電子發(fā)燒友網(wǎng)站提供《高速ADCFPGALVDS數(shù)據(jù)接口中避免時(shí)序誤差的設(shè)計(jì)考慮.pdf》資料免費(fèi)下載
    發(fā)表于 10-15 09:50 ?4次下載
    <b class='flag-5'>高速</b><b class='flag-5'>ADC</b>與<b class='flag-5'>FPGA</b>的<b class='flag-5'>LVDS</b>數(shù)據(jù)<b class='flag-5'>接口</b>中避免時(shí)序誤差的設(shè)計(jì)考慮