一種高可靠性的計(jì)算機(jī)與FPGA串行通信的實(shí)現(xiàn)
摘要:主要介紹以FPGA為硬件平臺(tái)的下位機(jī)與計(jì)算機(jī)(上位機(jī))進(jìn)行串行通信,將串口功能集成到單片FPGA內(nèi),運(yùn)行中波特率可調(diào),經(jīng)過適當(dāng)?shù)谋丁⒎诸l實(shí)現(xiàn)了零誤差的波特率發(fā)生器,提高了數(shù)據(jù)傳輸?shù)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/可靠性">可靠性。上位機(jī)上編寫VB程序負(fù)責(zé)主設(shè)備的發(fā)送命令并接收顯示來自FPGA回發(fā)的數(shù)據(jù),實(shí)驗(yàn)結(jié)果表明通信可行,可靠性高。
關(guān)鍵詞:FPGA;串行通信;VB;可靠性
串行通信廣泛應(yīng)用于數(shù)字通信和工業(yè)控制領(lǐng)域,傳統(tǒng)的專用串口通信芯片接口復(fù)雜,體積較大,隨著微電子技術(shù)的發(fā)展,F(xiàn)PGA的等效門數(shù)迅速增加,可以完全將串口功能集成在單片F(xiàn)PGA內(nèi),減少了外圍電路的體積,降低了設(shè)計(jì)的復(fù)雜性,同時(shí)也提高通信的可靠性。
1 串行通信的原理
串行通信是指通信的發(fā)送和接收方之間數(shù)據(jù)信息的傳輸是在單根數(shù)據(jù)線上完成,以每次一個(gè)二進(jìn)制的0或1為最小單位逐位進(jìn)行傳輸,本文采用異步的全雙工通信方式,數(shù)據(jù)傳輸是以字符為單位,如圖1所示為異步通信的幀格式。
其中,一幀數(shù)據(jù)包括起始位、數(shù)據(jù)位、校驗(yàn)位和停止位。線路空閑狀態(tài)下,發(fā)送和接收端均保持高電平;通信開始時(shí),通信一方發(fā)送一個(gè)起始位(低電平),表示通信的開始,緊接著發(fā)送有效的數(shù)據(jù)位,通常約定的數(shù)據(jù)位有5,6,7或者8位,根據(jù)用戶需要進(jìn)行設(shè)定,然后發(fā)送校驗(yàn)位,這里選用偶校驗(yàn),最后發(fā)送停止位,可以是1,1.5或2位不等,用戶自行約定即可。本文選用8位數(shù)據(jù)位、偶校驗(yàn)、1位停止位,可以實(shí)現(xiàn)所有字符的收、發(fā)。
串行通信傳送數(shù)據(jù)是按位順序進(jìn)行,最少只需要一根傳輸線即可完成,要實(shí)現(xiàn)全雙工的通信共需要2根數(shù)據(jù)線和1根接地線即可,通信雙方可以在同一時(shí)刻進(jìn)行發(fā)送和接收的操作。本文采用的是RS 232C串行接口標(biāo)準(zhǔn),是目前PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。但計(jì)算機(jī)的串口是用正負(fù)電壓來表示邏輯狀態(tài),與FPGA電路板上以高低電平表示的邏輯狀態(tài)的標(biāo)準(zhǔn)不同。因此,為了能夠同計(jì)算機(jī)進(jìn)行通信,必須在兩者之間進(jìn)行電平的邏輯關(guān)系轉(zhuǎn)換,本文采用集成電路芯片MAX232來完成兩種電平的雙向轉(zhuǎn)換。如圖2所示。
評(píng)論