朱靜 蔡昌勇
摘要:數(shù)據(jù)在高速傳輸時(shí)會(huì)出現(xiàn)信號(hào)誤碼風(fēng)險(xiǎn)、EMC風(fēng)險(xiǎn)、信號(hào)串?dāng)_衰減和失真問(wèn)題,而LVDS低壓差分信號(hào),可減少上述風(fēng)險(xiǎn),提高數(shù)據(jù)傳輸?shù)木嚯x與可靠性。針對(duì)以上問(wèn)題,本文設(shè)計(jì)了一種基于STM32和LVDS的數(shù)據(jù)傳輸系統(tǒng),讀取TTL并行數(shù)據(jù)并轉(zhuǎn)換成串行數(shù)據(jù),輸出給LVDS電平轉(zhuǎn)換電路轉(zhuǎn)換為L(zhǎng)VDS信號(hào)經(jīng)過(guò)LVDS傳輸線纜進(jìn)行傳輸。然后接收端接收LVDS信號(hào)轉(zhuǎn)換為串行TTL電平,由單片機(jī)轉(zhuǎn)換為并行數(shù)據(jù)輸出,借助LVDS可完成信號(hào)的高速傳輸。經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證,信號(hào)傳輸沒(méi)有明顯的失真和衰減,信號(hào)傳輸速率較高。
關(guān)鍵詞:低壓差分傳輸技術(shù);嵌入式系統(tǒng);高速信號(hào)傳輸;STM32
中圖分類號(hào):TP391? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)14-0025-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
隨著計(jì)算機(jī)技術(shù)和微電子技術(shù)發(fā)展,人們對(duì)數(shù)據(jù)的傳輸速率要求越來(lái)越高,于是傳統(tǒng)的TTL電平和CMOS電平由于其相對(duì)較低的傳輸帶寬和可靠性,已經(jīng)不能滿足高速數(shù)字信號(hào)傳輸?shù)囊蟆榇?,在目前常?jiàn)的高速傳輸協(xié)議(如USB、HDMI、DP)中都采用差分信號(hào)傳輸[1]。低壓差分信號(hào)傳輸技術(shù)LVDS(Low Voltage Differential Signaling)也是一種常見(jiàn)的差分?jǐn)?shù)字信號(hào)傳輸方案,其廣泛用于視頻信號(hào)傳輸中,是一種成熟可靠的高速信號(hào)傳輸方案[2]。
在電子設(shè)備中經(jīng)常需要使用較長(zhǎng)的導(dǎo)線傳輸數(shù)字信號(hào),由于走線較長(zhǎng),導(dǎo)致傳輸線的阻抗增大,從而導(dǎo)致信號(hào)衰減,增大信號(hào)誤碼風(fēng)險(xiǎn),EMC風(fēng)險(xiǎn)也會(huì)提高,信號(hào)串?dāng)_衰減和失真問(wèn)題也會(huì)更惡劣[3]。而LVDS技術(shù)由于其為低壓差分信號(hào),減少了由衰減引起的誤碼問(wèn)題,由于差分對(duì)兩線之間信號(hào)反相,減少了差模信號(hào)輻射,很好地抑制了串?dāng)_風(fēng)險(xiǎn),并且由于差分信號(hào)較高,共模抑制比的特性降低EMC風(fēng)險(xiǎn)[4]。
將傳統(tǒng)的TTL并行信號(hào)轉(zhuǎn)換為L(zhǎng)VDS串行信號(hào)傳輸,可以減小因傳輸時(shí)延造成的誤碼,減少傳輸線線束數(shù)量,提高穩(wěn)定性和傳輸速率。在數(shù)據(jù)量較大、傳輸距離較長(zhǎng)的使用場(chǎng)景下,用LVDS代替一些TTL或CMOS電平傳輸?shù)臄?shù)字通信接口,提高設(shè)備性能和可靠性。本文利用STM32設(shè)計(jì)了一種基于LVDS的數(shù)據(jù)傳輸系統(tǒng),實(shí)現(xiàn)TTL與LVDS電平的互相轉(zhuǎn)換,數(shù)據(jù)可通過(guò)LVDS進(jìn)行高速傳輸。
1 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)讀取TTL并行數(shù)據(jù)并轉(zhuǎn)換成串行數(shù)據(jù),輸出給LVDS電平轉(zhuǎn)換電路轉(zhuǎn)換為L(zhǎng)VDS信號(hào),經(jīng)過(guò)LVDS傳輸線纜進(jìn)行傳輸。然后接收端接收LVDS信號(hào),轉(zhuǎn)換為串行TTL電平,由單片機(jī)轉(zhuǎn)換為并行數(shù)據(jù)輸出,借助LVDS可完成信號(hào)的高速傳輸。
2 硬件電路設(shè)計(jì)
2.1 信號(hào)讀取轉(zhuǎn)換電路
信號(hào)讀取轉(zhuǎn)換電路具有TTL并行邏輯時(shí)序讀取、數(shù)據(jù)緩存、串行邏輯時(shí)序產(chǎn)生三個(gè)主要功能。要實(shí)現(xiàn)以上功能大致有兩種備選方案,一種是完全由數(shù)字邏輯電路實(shí)現(xiàn)以上功能,數(shù)字邏輯電路具有實(shí)時(shí)性高、運(yùn)行效率高、數(shù)據(jù)傳輸速率高等優(yōu)點(diǎn)。數(shù)字邏輯電路可以選用分立的邏輯器件搭建,也可以選用現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(FPGA)。如果選用FPGA可以方便調(diào)試,遇到邏輯問(wèn)題可以馬上更改,F(xiàn)PGA系統(tǒng)時(shí)鐘一般在200MHz以上,假設(shè)每個(gè)字節(jié)串行信號(hào)發(fā)送需要200個(gè)時(shí)鐘周期,理論上數(shù)據(jù)傳輸速率可以達(dá)到1Mbyte/s[5]。FPGA是一種比較昂貴的元器件,而MCU方案成本較低,方便調(diào)試,可以使用SWD接口進(jìn)行在線調(diào)試,實(shí)時(shí)讀取內(nèi)存中的數(shù)據(jù),MCU邏輯處理能力相比一般的單片機(jī)要高出很多,I/O口讀寫(xiě)速度較快,滿足本系統(tǒng)需求[6]。最終選擇了意法半導(dǎo)體(ST)生產(chǎn)的STM32F103C8,原理圖如下所示。
電路包括MCU、時(shí)鐘電路、復(fù)位電路、電源電路、下載調(diào)試電路、串口電路以及并行接口電路。電路工作電壓為3.3V,并行接口電路,包含一路時(shí)鐘信號(hào)和8位并行信號(hào)。在信號(hào)通路上添加一個(gè)22R電阻,限制信號(hào)通路上的電流大小,在一定程度上保護(hù)了MCU的I/O口,并且此電阻還可作為端接匹配電阻,當(dāng)信號(hào)波形出現(xiàn)振鈴或其他因?yàn)樽杩蛊ヅ鋯?wèn)題時(shí),可以修改此電阻大小實(shí)現(xiàn)阻抗匹配。調(diào)試過(guò)程中還可以通過(guò)取下這一電阻斷開(kāi)某一連接。
2.2 電平轉(zhuǎn)換電路
MCU讀取并行信號(hào)后,將讀取到的信號(hào)轉(zhuǎn)換成串行信號(hào),信號(hào)傳輸?shù)诫娖睫D(zhuǎn)換電路后,將MCU發(fā)出的TTL串行信號(hào)轉(zhuǎn)換成LVDS串行信號(hào)再發(fā)出,接收端收到LVDS信號(hào)后,需要將LVDS信號(hào),轉(zhuǎn)換成TTL信號(hào),發(fā)送給接收端MCU讀取。電平轉(zhuǎn)換電路基于SN65LVDM176D LVDS收發(fā)芯片實(shí)現(xiàn),芯片中集成了接收與發(fā)送兩種模式,可以實(shí)現(xiàn)改變電路元器件設(shè)置電路工作模式。由此發(fā)送端和接收端可以使用同一PCB,通過(guò)不同的焊接方式實(shí)現(xiàn)發(fā)送或接收功能。通過(guò)設(shè)置芯片的2腳和3腳兩個(gè)腳的高低電平,即可設(shè)置工作模式,如果是發(fā)送端電路,則焊接R5和R7兩個(gè)電阻,如果是接收端,則焊接R1和R2兩個(gè)電阻。
SN65LVDM176D芯片與一般LVDS芯片結(jié)構(gòu)有所不同,此芯片輸出負(fù)載為50Ω,輸出端和輸入端各需要一個(gè)100Ω電阻。LVDS接口和傳輸線需要有屏蔽層,保證信號(hào)傳輸過(guò)程中不受干擾,屏蔽層還能提供信號(hào)回流路徑,讓整個(gè)傳輸回路阻抗連續(xù)。差分信號(hào)需要使用雙絞線傳輸,選擇傳輸線時(shí)需要注意傳輸線是否雙絞線。
3 軟件設(shè)計(jì)
3.1 TTL并行信號(hào)時(shí)序軟件實(shí)現(xiàn)
本系統(tǒng)輸入信號(hào)為T(mén)TL并行信號(hào),讀取并行信號(hào)需要按照一定時(shí)序進(jìn)行讀取,在設(shè)計(jì)軟件時(shí)需要設(shè)計(jì)并行數(shù)據(jù)收發(fā)時(shí)序。硬件設(shè)計(jì)的并行接口中包括一路時(shí)鐘線和8路信號(hào)線,在每個(gè)時(shí)鐘上升沿時(shí)讀取8路數(shù)據(jù)線上的并行數(shù)據(jù)。A770A41B-28F9-47F0-8DC2-DE44C06F6493
在實(shí)際傳輸過(guò)程中,如果并行信號(hào)還沒(méi)有完全建立時(shí)鐘線就置1,接收端檢測(cè)到上升沿后,讀取到未建立完成的并行信號(hào),讀到的數(shù)據(jù)可能會(huì)是錯(cuò)誤的,所以在軟件設(shè)計(jì)的時(shí),需要設(shè)計(jì)合適的建立時(shí)間。如果建立時(shí)間太短,會(huì)影響數(shù)據(jù)傳輸準(zhǔn)確率,建立時(shí)間太長(zhǎng),會(huì)降低傳輸速率。合適的建立時(shí)間只有在軟件實(shí)際調(diào)試的時(shí)才能確定,需要在軟件調(diào)試的時(shí)多次嘗試,從而確定在不影響傳輸準(zhǔn)確性前提下的最小建立時(shí)間。
并口發(fā)送軟件主要內(nèi)容是先設(shè)置I/O口D0~D7輸出,需要發(fā)送的8位并行數(shù)據(jù),軟件延時(shí)適當(dāng)時(shí)間作為建立時(shí)間,再將CLK設(shè)置1,輸出上升沿,最后再延時(shí)一段時(shí)間后CLK設(shè)置為0,完成一次并行數(shù)據(jù)發(fā)送。接收軟件開(kāi)始運(yùn)行后,先等待CLK為0,然后等待CLK拉高,即CLK輸出上升沿,然后讀取D0~D7并行數(shù)據(jù),最后返回讀取的數(shù)據(jù)。
3.2 TTL串行數(shù)據(jù)時(shí)序軟件實(shí)現(xiàn)方案
軟件讀取到并行數(shù)據(jù)輸入后,需要將讀取到的數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)發(fā)送,軟件設(shè)計(jì)時(shí)需要設(shè)計(jì)串行發(fā)送時(shí)序,并且用程序?qū)崿F(xiàn)串行時(shí)序的發(fā)送和讀取。每個(gè)數(shù)據(jù)需要有一個(gè)起始信號(hào),接收端通過(guò)檢測(cè)起始信號(hào)判斷是否開(kāi)始讀取數(shù)據(jù)。起始信號(hào)之后每一CLK上升沿時(shí),DATA高低電平代表1bit數(shù)據(jù),數(shù)據(jù)發(fā)送順序是從最低有效位(LSB)開(kāi)始發(fā)送,以最高有效位(MSB)結(jié)束。
發(fā)送端軟件先將DATA置1延時(shí)一段時(shí)間再拉低,延時(shí)時(shí)間不能太短,太短接收端將檢測(cè)不到起始信號(hào),然后循環(huán)發(fā)送每一位數(shù)據(jù)。串行信號(hào)發(fā)送也存在建立時(shí)間,發(fā)送每1bit數(shù)據(jù)都要先將DATA置位,然后延時(shí)一定時(shí)間再將CLK置1。
接收端軟件先等待DATA為低電平,再等待DATA置1,此時(shí)檢測(cè)到起始信號(hào),然后循環(huán)讀取串行數(shù)據(jù)每一位并保存,最后函數(shù)返回讀取到的串行數(shù)據(jù)。
4 系統(tǒng)驗(yàn)證
將發(fā)射電路、接收電路、STM32最小系統(tǒng)共同構(gòu)成調(diào)試系統(tǒng),STM32最小系統(tǒng)作為并行信號(hào)發(fā)生器。將最小系統(tǒng)與發(fā)送端電路的并行接口,發(fā)送端電路與接收端電路通過(guò)LVDS接口通信,用一根SCSI-14連接線連接兩電路板的SCSI-14端口。
電平轉(zhuǎn)換電路輸入信號(hào)為T(mén)TL電平,給電平轉(zhuǎn)換電路輸入方波,如果電路正常工作,接收端100Ω電阻兩端信號(hào)幅度應(yīng)該為350mV左右。在發(fā)送端電路SN65LVDM176D芯片4腳輸入峰值為3.3V,最小值為0V的方波,連接好SCSI-14傳輸線,用示波器測(cè)試接收端電路SN65LVDM176D芯片6、7引腳。測(cè)得LVDS信號(hào)峰值VP-P為800mV,幅度為[VP-P2] = 400mV。測(cè)試結(jié)果屬于官方數(shù)據(jù)手冊(cè)中的幅度范圍,電路工作正常。最后測(cè)試SN65LVDM176D芯片1腳連接的22Ω電阻遠(yuǎn)離芯片一側(cè)的TTL信號(hào),確認(rèn)信號(hào)沒(méi)有失真,可以進(jìn)行系統(tǒng)聯(lián)合測(cè)試。
發(fā)送端和接收端分別燒錄測(cè)試模式軟件開(kāi)始測(cè)試,用示波器兩通道測(cè)試接收端LVDS差分信號(hào)D-和D+,并且將示波器設(shè)置為math->ch1-ch2模式,并測(cè)試math通道上升時(shí)間、下降時(shí)間、幅度。測(cè)得差分信號(hào)測(cè)試波形如圖6所示。由測(cè)量結(jié)果可以計(jì)算本系統(tǒng)硬件最大支持的時(shí)鐘頻率為1/(10×RT)= 1.23MHz。再分別用示波器兩個(gè)通道測(cè)試接收端由LVDS轉(zhuǎn)換的TTL電平DATA與CLK波形,測(cè)量傳輸1byte數(shù)據(jù)所需時(shí)間,由測(cè)試結(jié)果可得傳輸周期為171.0us。
經(jīng)過(guò)測(cè)試,在系統(tǒng)工作頻率下LVDS和TTL信號(hào)都沒(méi)有明顯的失真和衰減,如果需要更高的傳輸速率,需要使用更高級(jí)的處理器作為邏輯轉(zhuǎn)換單元。
5 總結(jié)
本文分別從LVDS數(shù)據(jù)傳輸系統(tǒng)的總體設(shè)計(jì)、硬件設(shè)計(jì)、軟件設(shè)計(jì)與系統(tǒng)測(cè)試方面進(jìn)行了描述,基于STM32與SN65LVDM176D設(shè)計(jì)了一套基于LVDS的數(shù)據(jù)傳輸系統(tǒng)。結(jié)合軟硬件聯(lián)合測(cè)試結(jié)果,在系統(tǒng)工作頻率下LVDS和TTL信號(hào)都沒(méi)有明顯的失真和衰減,為數(shù)據(jù)的高速傳輸提供了一種靈活可靠、可移植性強(qiáng)的方案。
參考文獻(xiàn):
[1] 熊光陽(yáng).基于FPGA的高速圖像傳輸系統(tǒng)設(shè)計(jì)[D].桂林:桂林電子科技大學(xué),2020.
[2] 謝詹奇.高速LVDS收發(fā)器的研究與設(shè)計(jì)[D].上海:上海交通大學(xué),2008.
[3] 鄢玲玲,文豐,李輝景.一種基于LVDS高速傳輸?shù)慕涌趦?yōu)化設(shè)計(jì)[J].電測(cè)與儀表,2016,53(20):80-83.
[4] 薛棟,李杰,張德彪,等.基于LVDS的高速數(shù)據(jù)回讀系統(tǒng)設(shè)計(jì)[J].中北大學(xué)學(xué)報(bào)(自然科學(xué)版),2021,42(2):135-139.
[5] 張波,李杰,張海鵬,等.基于FPGA的LVDS傳輸鏈路的可靠性設(shè)計(jì)[J].電子器件,2018,41(5):1237-1241.
[6] 羅瑤,魏忠義,朱磊,等.STM32CubeMX的高速USB通信模塊設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017,17(9):46-48,54.
收稿日期:2021-12-30
基金項(xiàng)目:本文得到了四川省教育廳科研項(xiàng)目(編號(hào):17ZB0038)資助
作者簡(jiǎn)介:朱靜(1987—),通信作者,男,主要研究方向?yàn)殡娮蛹夹g(shù)、機(jī)器學(xué)習(xí);蔡昌勇(1980—),男,研究方向?yàn)榍度胧郊夹g(shù)。A770A41B-28F9-47F0-8DC2-DE44C06F6493