[转]FPGA使用LVDS差分信号的一些注意事项
最近在調(diào)試一個LVDS的屏顯功能,涉及到了一些LVDS的東東,簡單地整理如下,后續(xù)會再補充。
(1)對于altera FPGA(CYCLONE III)
1、對于作為LVDS傳輸?shù)腂ANK必須接2.5V的VCCIO;
2、左右BANK(即1/2/5/6 BANK)的LVDS發(fā)送差分對信號無需外接匹配電阻,而上下BANK(即3/4/7/8 BANK)則需要,如果硬件工程師忘了,還可以在FPGA的IO引腳分配時里加端接電阻設(shè)置;
3、分配管腳時,左右BANK的LVDS差分信號腳在IO分配時選擇的IO電平標準是LVDS,而上下BANK的LVDS差分信號腳在IO分配時選擇的IO電平標準是LVDS_E_3R;
4、分配管腳時,只要指定LVDS信號的p端(+),則n端(-)會自動分配。在verilog代碼中只要一個信號接口即可,無需在代碼中定義一個差分對接口;
5、速度高時需用IP核(200MHz或400Mbps以上,串并轉(zhuǎn)換器),在altera FPGA內(nèi)使用的LVDS收發(fā)IP核是altlvds_rx和altlvds_tx,相應(yīng)的IP使用說明在megawizard里有。
LVDS是一種高速串行接口。速度一般都是幾百MHZ以上。Altera低端的Cyclone IVE/Cyclone III的LVDS速度都可以達到800Mbps以上,高端的更能上到1.6Gbps。因此,IO的性能是遠遠比FPGA內(nèi)部的LE性能要好的。這么高的速率情況下,你如果是用內(nèi)部的LE來移位再輸出到LVDS IO上,頂多能上到400Mbps(如果上DDIO的話)就已經(jīng)不錯了,再大的話是移不出來的。
這種情況下,你只有調(diào)用專用的串轉(zhuǎn)并/并轉(zhuǎn)串模塊,也就是LVDS RX/TX模塊。這個模塊是專用的解串電路,跟Tranceiver有點像,但是功能沒有Tranceiver多,性能沒有它好。
了解上面一點后,你的問題其實就是數(shù)據(jù)對齊的問題了。你輸入的是并行的數(shù)據(jù),轉(zhuǎn)成串行的數(shù)據(jù)以后,必然會有一個數(shù)據(jù)位對齊的問題。說來話有點多了,這個是高速鏈路的知識了。數(shù)據(jù)對齊有很多方式,Altera的LVDS模塊就是用bitslip來控制的,bitslip是移位控制,在LVDS上電訓練鏈路的那個時間,用bitslip來控制移位,發(fā)現(xiàn)如果不是訓練碼型的話就移一位直到能接收到正確的碼型為止。
數(shù)據(jù)對齊還有另外一種方法。做LVDS接口的一般都有一個隨路時鐘,這個時鐘是跟TX,RX的同源/同步的。移動這個時鐘的相位也能起到數(shù)據(jù)對齊的作用。但是前提是時鐘頻率跟數(shù)據(jù)頻率的比例和串行因子一定要是相等的。例如,數(shù)據(jù)頻率是800Mbps,串行因子是8,那么參考時鐘頻率需要是100MHZ。
(2)對于xilinx FPGA
區(qū)別altera的地方在于首先在Verilog的代碼里,xilinx的LVDS信號需要定義一對差分對信號,通過xilinx的原語進行差分對轉(zhuǎn)單端或者單端轉(zhuǎn)成差分對信號。另外在IO引腳分配時,xilinx的電平標準都是一樣的,比如都是LVDS_33。
下圖1是altera下的LVDS信號引腳分配,可見用戶只需要分配p端(+)引腳即可。
圖1 altera LVDS引腳分配情況
下圖2是xilinx的LVDS信號引腳分配,xilinx的LVDS引腳區(qū)分p端和n端。當然在vivado下引腳分配可以只分配P端腳號,N端腳號會自動分配。而在代碼里都需要寫明差分對信號,再通過原語轉(zhuǎn)成單端信號。
圖2 xilinx下LVDS的引腳分配情況
總結(jié)
以上是生活随笔為你收集整理的[转]FPGA使用LVDS差分信号的一些注意事项的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 系统倒计时显示时间,An
- 下一篇: 小程序实现GBK编码数据转为Unicod