這里以鈦金的LVDS為例。
LVDS RX 時(shí)鐘選擇
LVDS時(shí)鐘的接收要連接名字為GPIOx_P_y_PLLINz名字的差分對,這樣的管腳直接驅(qū)動(dòng)PLL,產(chǎn)生LVDS接收需要的fast_clk和slow_clk,這種主要是用于數(shù)據(jù)和時(shí)鐘的速率不是1:1,比如大家常見的1:7,1:8和1:10等,這時(shí)就要使用串化/解串器;如果時(shí)鐘和數(shù)據(jù)的速率比是1:1并且速率不高,也可以考慮用GCLK走時(shí)鐘來采集數(shù)據(jù)。
以Ti60F225為例,它共有4個(gè)PLL,分別為PLL_BL,PLL_BR,PLL_TR和PLL_TL4個(gè)PLL,在要求解串器的情況下,最大只能接收4組LVDS,這是在不考慮PLL作為別的用途的前提下的。
LVDS的PLL的復(fù)位信號的處理
有些時(shí)候LVDS并不是連續(xù)的,這就要對PLL進(jìn)行復(fù)位處理。在處理方式上我們可以檢測PLL_LOCKED信號是否鎖定,如果隔一段時(shí)間沒有鎖定就對PLL進(jìn)行一次復(fù)位。然后再循環(huán)檢測鎖定信號和復(fù)位的過程,直到PLL_LOCKED信號為高。目前遇到一些LVDS接收異常的問題很多是通過這樣的方式來解決的。這是為了排除PLL假鎖的情況。
interface設(shè)置
(1)rx clock設(shè)置
Enable Common Mode Driver:當(dāng)使用交流耦合時(shí)。要勾選Enable Common Mode Driver。
(2) data 設(shè)置
Enable Deserialization使能解串因子,Enable Half Rate Deseralization:是指雙沿采樣 。在帶有解串器的設(shè)置中要指定解串時(shí)鐘和并行的時(shí)鐘。對于發(fā)送設(shè)置也是大致相同的,只不過要指定的是串化因子。
(3)發(fā)送時(shí)鐘的設(shè)置
發(fā)送時(shí)鐘不同于接收時(shí)鐘,發(fā)送與數(shù)據(jù)的設(shè)置比較相近。把發(fā)送時(shí)鐘按如下設(shè)置。
assign lvds_tx_clk_TX_DATA = 8'hAA;
經(jīng)過串化之后,時(shí)鐘波形就變成了如下的樣子。如果發(fā)送的數(shù)據(jù)是8'hF0時(shí)鐘又會(huì)是什么樣子呢?大家可以自己思考下。
當(dāng)然LVDS輸出時(shí)鐘選擇serial data output 如果設(shè)置為clk輸出,時(shí)鐘速率最大為數(shù)據(jù)速率的1/8.具體使用可以先試試。
信號控制
對于數(shù)據(jù)一般不會(huì)出錯(cuò),大家可能會(huì)忘記的是設(shè)置使能和復(fù)位。注意使能和復(fù)位都是高有效。所以正常運(yùn)行時(shí)要把使能設(shè)置為高,復(fù)位設(shè)置為低。
assign lvds_rx_clk_RX_ENA = 1'b1;assign lvds_rx_d0_RX_ENA = 1'b1;assign lvds_rx_d1_RX_ENA = 1'b1; assign lvds_rx_d2_RX_ENA = 1'b1;assign lvds_rx_d3_RX_ENA = 1'b1;assign lvds_rx_d0_RX_RST = 1'b0;assign lvds_rx_d1_RX_RST = 1'b0; assign lvds_rx_d2_RX_RST = 1'b0;assign lvds_rx_d3_RX_RST = 1'b0; assign lvds_tx_d0_TX_RST = 1'b0;assign lvds_tx_d1_TX_RST = 1'b0; assign lvds_tx_d2_TX_RST = 1'b0;assign lvds_tx_d3_TX_RST = 1'b0;assign lvds_tx_d0_TX_OE = 1'b1;assign lvds_tx_d1_TX_OE = 1'b1;assign lvds_tx_d2_TX_OE = 1'b1;assign lvds_tx_d3_TX_OE = 1'b1;
PLL的設(shè)置
接收的fast_clk是否要移相,由源端時(shí)鐘與數(shù)據(jù)的相位關(guān)系來決定,如果源是邊沿對應(yīng),fast_clk可以移相90或者135;如果是中心對齊,則可以設(shè)置相位為0或者為45。
發(fā)送數(shù)據(jù)如果與時(shí)鐘有相位差,比如中心,那邊需要產(chǎn)生三個(gè)時(shí)鐘,fast_tx_clk_c,fast_tx_clk_d及slow_tx_clk.fast_tx_clk_c用于時(shí)鐘的fast_clk,為90度,而fast_tx_clk_d為0度,用于數(shù)據(jù)的fast_clk.
當(dāng)然大家也可以根據(jù)產(chǎn)生的波形或者數(shù)據(jù)的延時(shí)進(jìn)行適當(dāng)?shù)恼{(diào)整。
串化/解串?dāng)?shù)據(jù)的排列
如下圖所示,發(fā)送時(shí)LSB先發(fā)送,當(dāng)然接收也是LVDS先接收。
所以要注意發(fā)送端與接收端的大小端問題。以下圖為例,如果發(fā)送端是高位先發(fā)送,那接收端的數(shù)據(jù)剛好是反的。處理上應(yīng)該是先把數(shù)據(jù)位對調(diào),比如
A_RX_ALIGN = {A_RX[0],A_RX[1],A_RX[2],A_RX[3],A_RX[4],A_RX[5],A_RX[6],A_RX[7]}
在幫助客戶調(diào)試HDMI的時(shí)候發(fā)現(xiàn),LVDS不能夠進(jìn)行動(dòng)態(tài)調(diào)節(jié)相位。解決方案是:
(1)在工程目錄下建議pt_rule.ini文件;
(2)在文件中輸入想要開放權(quán)限的rule,以下圖為例,報(bào)錯(cuò)的Rule是lvds_rule_rx_clock。效果如下。
約束添加
需要再次強(qiáng)調(diào)的是,Result --> interface --> xx.pt.sdc文件中會(huì)有相關(guān)的約束模板;我們可以復(fù)制該文件到工程目錄下,根據(jù)實(shí)際需要進(jìn)行調(diào)整
里面關(guān)于LVDS的約束部分如下,大家可以自己打開仔細(xì)查看
并添加到Project -->Constraint下。
Trion的LVDS也有相似的操作,這里先只給出一些注意事項(xiàng),如果需要補(bǔ)充會(huì)再次更新。
1. 如果需要在LVDS IO里差分信號同單端信號混用,須最少隔開2對差分IO;例如:使用RXP09/RXN09就不能使用RX07/08/10/11作為差分信號
2. 關(guān)于LVDS設(shè)備間的互連,要求LVDS RX端的 Vid,Vicm 與LVDS TX端的Vod,Vocm電平標(biāo)準(zhǔn)匹配即可互連
3、LVDS RX源同步時(shí)鐘管腳只能通過GPIOx_RXP/Ny_CLKP/Nz經(jīng)對應(yīng)PLL輸入。
4、每一個(gè)LVDS Bank中的IO用作單端輸出,不能超過14個(gè),引起同步開關(guān)噪聲(SSN)風(fēng)險(xiǎn),輸入沒有限制
T20的GPIOB_CLKN0/GPIOB_CLKP0,用做LVDS時(shí)只能作為LVDS RX時(shí)鐘直接進(jìn)入鎖相環(huán),不能進(jìn)入內(nèi)部邏輯
Trion LVDS常用經(jīng)驗(yàn)
(1)post-divider要修改成2,反饋時(shí)鐘用slow_clock.
(2)客戶測試LVDS發(fā)送時(shí)鐘lvds輸出改3pf,數(shù)據(jù)改10pf,暫時(shí)沒問題。后續(xù)生產(chǎn)小批量看下一致性
(3)添加LVDS約束
現(xiàn)象:(1)pll鎖不定,時(shí)鐘路徑由FPGA給出到sensor,再由sensor的LVDS給到FPGA進(jìn)入pll;
(2)把VCC電壓從1.2V抬到1.25V可以解決一部分問題;
(3)常溫下FPGA PLL不能鎖定,但是如果用風(fēng)槍加熱一下到40度左右PLL就能鎖定;
(4)客戶第一次做了10多塊板不存在該問題,第二次做了100塊,有10塊左右出現(xiàn)了上面的PLL鎖不定問題。
(5)該現(xiàn)象會(huì)跟隨芯片走。
解決思路:
(1)目前已經(jīng)確認(rèn)客戶都沒有控制LVDS接收PLL的復(fù)位,目前要求客戶在PLL參考時(shí)鐘穩(wěn)定之后再重新復(fù)位一下再重新鎖定。
審核編輯 黃宇
-
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1856瀏覽量
132639 -
lvds
+關(guān)注
關(guān)注
2文章
1076瀏覽量
66862
發(fā)布評論請先 登錄
相關(guān)推薦

怎么使用LVDS IO引腳作為1位ADC?
FPGA跟一個(gè)ADC通過LVDS進(jìn)行通信,LVDS信號的共模電壓在1.2V左右
SN65LVDS179-Q1,SN65LVDS180-Q1,
65LVDS95-Q1,pdf(LVDS SERDES Tr
ADN4667 3 V LVDS Quad CMOS Dif
LVDS信號電平特性
SN65LVDS93A-Q1 SN65LVDS93A-Q1 Flatlink 發(fā)送器

SN65LVDS95-Q1 汽車類 LVDS SERDES 收發(fā)器

SN65LVDS84AQ-Q1 SN75LVDS84A-Q1, SN65LVDS84AQ-Q1

SN65LVDS1 單路 LVDS 發(fā)送器

如何解決FPGA引腳與LVDS信號相連時(shí)兼容性的問題

TTL轉(zhuǎn)LVDS芯片1.8V低功耗LVDS概述
FPGA與LVDS信號兼容性分析方法
電蜂淺談LVDS插頭安裝規(guī)定

評論