第一部分 設計概述 /Design IntroducTIon
本次的設計為多路UART/SPI通信系統(tǒng),,可以實現(xiàn)一對多的通信,。系統(tǒng)可以運行在UART模式,也可以運行在SPI模式,。我選擇這一課題的原因主要是目前我所在的實驗室需要寫基于UART的快速通信,。這一課題既可以幫助我鞏固之前學習的知識,,又可以為我后面的項目做準備。在完成課題的過程中,,主要用到了FPGA狀態(tài)機,、總線等方面的知識。這一課題可以應用在需要高速異步串行或同步串行通信的應用場合,,如實時控制,、監(jiān)測等。
當系統(tǒng)運行在UART模式下,,可以實現(xiàn)一個發(fā)送端最多向四個接收端發(fā)送信息,,且有效信息中包含地址碼,接收端可以根據(jù)發(fā)送端發(fā)送的地址碼判斷該信息是否是發(fā)送給自己的,,實現(xiàn)信號線復用,。UART通信簡單,僅需要一根信號線,,但是其缺點是只能實現(xiàn)單向通信,,接收端無法給發(fā)送端反向發(fā)送數(shù)據(jù)。但是這一缺點也可以通過采用兩個UART系統(tǒng)來彌補,。
當系統(tǒng)運行在SPI模式下,,可以實現(xiàn)一個主機與多個從機之間的通信,且在通信過程中,,系統(tǒng)是全雙工的,。主機通過選擇性拉低某一個或者某幾個從機的片選信號,實現(xiàn)對于從機的選擇,。
第二部分 系統(tǒng)組成及功能說明 /System ConstrucTIon & FuncTIon DescripTIon
計劃功能
程序?qū)崿F(xiàn)UART和SPI的通信,,并可以通過按鍵的方式在兩種模式之間切換。在UART模式下,,發(fā)送端給接收端發(fā)送一串數(shù)據(jù),,接收端判斷是否和已知數(shù)據(jù)相符,。如果相符則點亮LED,如果不符則不點亮,。在SPI模式下,,主機給從機、從機給主機同時發(fā)送數(shù)據(jù),,若接收到的數(shù)據(jù)和已知數(shù)據(jù)相符,,則點亮LED,如果不符,,則不點亮,。同時,UART和SPI均有尋址功能,。UART的尋址方式是在數(shù)據(jù)位前面加兩位地址位,,實現(xiàn)對最多四個接收端的區(qū)分;SPI的尋址方式是通過拉低需要選定的從機的SS信號,,實現(xiàn)對最多四個接收端的區(qū)分,。
目前所有的功能均已實現(xiàn)。最初計劃通信系統(tǒng)在兩個不同的FPGA板上實現(xiàn),,但是另外一塊板出了問題,,目前只能在一塊板上驗證。發(fā)送端和接收端,、主機和從機均寫在一塊板子里,,內(nèi)部的通信線也直接用FPGA內(nèi)部的線連接??偟目驁D如下,。其中,inst_clkwiz是系統(tǒng)自帶的分頻器,,將外部100M的始終編程10M,,降低了通信速率,但是可以使通信系統(tǒng)更加穩(wěn)定,;inst_SPIpart是SPI通信模塊,;inst_UART是UART通信模塊;inst_modeselection是通信模式選擇模塊,。
SPI內(nèi)部的構造如下,。其中,inst_SPItop為從機,;inst_SPItop1為主機,。當主機的信號選擇信號為0111時系統(tǒng)中的從機被選中。在主機,、從機內(nèi)部,, inst_SPImaster為SPI主機端口,,inst_SPIslave為SPI從機端口,inst_leddriver為led驅(qū)動電路,,負責判斷接收到的信號和已知信號是否一致,當接收到的信號和一直信號一致時,,驅(qū)動LED點亮,。
UART部分的框圖如下。其中,,inst_UARTtop1為發(fā)送端,;inst_UARTtop為接收端。發(fā)送端給接收端發(fā)送數(shù)據(jù),。當接收端接收到的數(shù)據(jù)和已知數(shù)據(jù)相同,,驅(qū)動LED點亮。
第三部分 完成情況及性能參數(shù) /Final Design & Performance Parameters
除了兩塊板相互通信以外,,所有的功能均可以在一塊板子上實現(xiàn),。
測試方法:
接通電源后,首先按動RST,,對板卡進行復位,,復位后的通信模式默認為UART模式。紅色的LED被點亮,。這證明在該模式下,,接收端已經(jīng)完整接收到了十位信號,完成了地址的判斷,。將接收到的信號傳送給LED驅(qū)動模塊后,,經(jīng)過判斷符合已知的8'hbb。LED2信號置位,,點亮紅色LED2,,而在UART模式下,綠色的LED1不被點亮,。綜合以上現(xiàn)象,,UART模式可以運行。
按動KEY1,紅色和綠色的LED均被點亮,,且綠色LED亮度弱于紅色LED,。紅色LED點亮證明主機成功選中從機、發(fā)送給從機數(shù)據(jù)且從機已經(jīng)接收到主機發(fā)來的數(shù)據(jù),,且經(jīng)過LED驅(qū)動模塊的判斷,,和已知數(shù)據(jù)相符。綠色LED燈點亮證明從機給主機也成功發(fā)送數(shù)據(jù),,且也和已知數(shù)據(jù)相符,。綠色LED亮度弱于紅色LED的原因是,,主機只接了一個從機,因此只有1/4的時間,,接收到的信號和已知信號相同,,在其他3/4時間中接收到的均為8'bzz,和已知信號不符,,不點亮LED,。因此亮度更弱。
KEY1,,系統(tǒng)又轉(zhuǎn)換到UART模式,,綠色LED熄滅,紅色LED點亮,。
更多信息可以來這里獲取==>>電子技術應用-AET<<