0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

電子設(shè)計 ? 來源:郭婷 ? 作者:電子設(shè)計 ? 2019-04-30 08:25 ? 次閱讀

1、引言

三坐標(biāo)測量機(jī)做為一種高精度測量儀器,在機(jī)械工業(yè)、汽車工業(yè)、航空航天等領(lǐng)域具有廣泛的應(yīng)用。本套通訊系統(tǒng)采用FPGA為主要通訊芯片,使用FPGA實(shí)現(xiàn)各通訊模塊對數(shù)據(jù)的收發(fā),配合單片機(jī)對數(shù)據(jù)進(jìn)行編碼、解碼、重封裝,實(shí)現(xiàn)了計算機(jī)和控制系統(tǒng)的通訊;由于FPGA程序的并行執(zhí)行結(jié)構(gòu)和高的執(zhí)行速度,因此大大保證了數(shù)據(jù)傳輸?shù)臏?zhǔn)確性和快速性。

2、通訊模塊的實(shí)現(xiàn)

2.1 計算機(jī)與橋接卡的通訊

本系統(tǒng)采用RS232總線實(shí)現(xiàn)計算機(jī)和橋接卡之間的通訊。計算機(jī)發(fā)送的數(shù)據(jù),經(jīng)過RS232總線傳輸?shù)綐蚪涌?,通過MAX3232芯片實(shí)現(xiàn)電平轉(zhuǎn)換。FPGA檢測到起始位后接收數(shù)據(jù),接收完數(shù)據(jù)后,將其存于UART接收FIFO[2]中;待接收到結(jié)束位時,F(xiàn)PGA產(chǎn)生中斷信號,觸發(fā)單片機(jī)讀取接收FIFO中的數(shù)據(jù)并對其解碼,判斷數(shù)據(jù)中的目的地址,根據(jù)目的地址決定是否處理或發(fā)送到控制板;橋接卡與計算機(jī)通訊時,首先將數(shù)據(jù)進(jìn)行編碼,然后將數(shù)據(jù)置于發(fā)送FIFO中,啟動發(fā)送模塊,發(fā)送模塊自動將數(shù)據(jù)發(fā)出,數(shù)據(jù)經(jīng)MAX3232發(fā)送到總線上等待計算機(jī)的接收。

(1)串口發(fā)送模塊的FPGA實(shí)現(xiàn)

串口發(fā)送模塊從發(fā)送FIFO讀出數(shù)據(jù)后,根據(jù)串口通信協(xié)議,數(shù)據(jù)在向外發(fā)送時,低位在前,高位在后,所以將八位的數(shù)據(jù)重新進(jìn)行編輯:前加停止位‘1’,后加起始位‘0’,變?yōu)槭粩?shù)據(jù)包,將十位數(shù)據(jù)按照設(shè)置波特率逐位發(fā)送即可,使用Modelsim進(jìn)行仿真,仿真圖見圖1(data位要發(fā)送的數(shù)據(jù),tx為發(fā)送線)

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

(2)串口接收模塊的FPGA實(shí)現(xiàn)

總線空閑時當(dāng)檢測到由高到低變化時,表明數(shù)據(jù)開始傳輸,接收模塊準(zhǔn)備接收數(shù)據(jù),接收數(shù)據(jù)時低位在前,高位在后,當(dāng)接收到起始位后,每隔一個數(shù)據(jù)傳輸周期接收一次數(shù)據(jù),待接收到八位數(shù)據(jù)后將數(shù)據(jù)置于接收FIFO中,使用Modelsim進(jìn)行對發(fā)送模塊仿真見圖2(rxBuf為接收到的數(shù)據(jù),低位在前,高位在后):

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

2.2 橋接卡與控制卡及控制卡之間的通訊

由于橋接卡需要和多個控制卡進(jìn)行信息的交換,且不同的控制卡之間也需要數(shù)據(jù)傳輸,因此在進(jìn)行總線選擇時,必須保證各個器件都具有主控的權(quán)利,可以占用總線,本系統(tǒng)中橋接卡和控制卡及控制卡之間采用I2C[3][4]總線進(jìn)行通訊。

I2C總線是一種兩線式串行雙向總線,是多主控的總線,由時鐘線和數(shù)據(jù)線構(gòu)成,數(shù)據(jù)傳輸時,時鐘信號由主控器件產(chǎn)生。當(dāng)SCL為高電平時,SDA出現(xiàn)由高電平到低電平變化,表明開始傳送數(shù)據(jù);當(dāng)SCL為高電平時,SDA出現(xiàn)低電平到高電平變化,表示數(shù)據(jù)傳送結(jié)束;接收方收到數(shù)據(jù)后,需向發(fā)送方發(fā)出應(yīng)答信號;為了防止總線上數(shù)據(jù)沖突,總線有仲裁機(jī)制,當(dāng)總線同時被多個發(fā)送方占用時,首先出現(xiàn)高電平的發(fā)送方被仲裁掉,因此,最長低電平周期的器件占用總線,成為主控器件;被仲裁掉的器件,放棄總線,改為接收。

使用FPGA實(shí)現(xiàn)I2C總線時,需要建立三個模塊:總線監(jiān)視模塊,總線發(fā)送模塊,總線接收模塊。

①總線監(jiān)視模塊[5]的實(shí)現(xiàn)

總線監(jiān)視模塊用來為發(fā)送和接收模塊提供總線狀態(tài),總線分為空閑、忙、等待三種狀態(tài)。當(dāng)總線上沒有數(shù)據(jù)傳輸時,保持高電平,稱為空閑態(tài);數(shù)據(jù)傳輸期間,總線為忙的狀態(tài),如果主控方占用總線后沒有數(shù)據(jù)發(fā)送,則為等待狀態(tài),如果總線等待時間超過設(shè)定時間,總線由等待轉(zhuǎn)為空閑態(tài)。發(fā)送、接收模塊需要得到的信號為起始信號、結(jié)束信號和狀態(tài)信號,由總線監(jiān)視模塊實(shí)現(xiàn)這些信號。使用Modelsim進(jìn)行仿真,得到波形如圖3:

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

②I2C發(fā)送模塊[6]的FPGA實(shí)現(xiàn)

發(fā)送模塊主要實(shí)現(xiàn)對數(shù)據(jù)的發(fā)送;首先發(fā)送地址,發(fā)送完地址后,等待應(yīng)答信號,如果沒有響應(yīng),則放棄總線;如果出現(xiàn)響應(yīng),I2C發(fā)送模塊輸出RAM地址,讀取RAM的數(shù)據(jù),依次發(fā)送數(shù)據(jù),每發(fā)送完一個字節(jié),等待響應(yīng)信號,發(fā)送模塊根據(jù)RAM中的數(shù)據(jù)長度,將RAM數(shù)據(jù)讀完。為了防止多個主機(jī)同時占用總線,應(yīng)根據(jù)仲裁機(jī)制將總線上的非主控方仲裁掉,禁止其繼續(xù)占用總線。為了防止總線傳輸中信號延遲,當(dāng)向總線上發(fā)送下一數(shù)據(jù)時對總線上的狀態(tài)進(jìn)行判斷,如果正確,再發(fā)送下一位數(shù)據(jù)。否則,放棄總線。使用Modelsim對I2C發(fā)送模塊進(jìn)行仿真如圖4。

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

I2C_outScl:發(fā)送時鐘;I2C_inScl:檢測時鐘

I2C_outSda:發(fā)送數(shù)據(jù);I2C_inSda:檢測數(shù)據(jù)

desAddr:目的地址;msgData:發(fā)送數(shù)據(jù)

RAM_Addr:RAM的地址信號。

③I2C接收模塊[7]的FPGA實(shí)現(xiàn)

接收模塊接收到總線監(jiān)視模塊發(fā)送來的起始位信號后,準(zhǔn)備接收總線上的數(shù)據(jù),接收到的地址后,判斷接收到的地址和電路板地址是否一致;當(dāng)兩者一致時,向總線置應(yīng)答信號ACK,繼續(xù)接收下面的數(shù)據(jù),收到的數(shù)據(jù)置于接收FIFO中;如果地址不一致,則放棄總線。使用Modelsim對I2C接收模塊進(jìn)行仿真如圖4。

I2CbusIsBusy:總線狀態(tài);I2C_start:起始信號

myAddr:電路板的地址; rxBuf:接收寄存器

rxFIFO_wr:接收FIFO的寫信號

3、通訊協(xié)議

上位機(jī)和橋接板之間采用RS232總線進(jìn)行數(shù)據(jù)傳輸,橋接卡和控制卡以及各個控制卡之間采用I2C總線進(jìn)行數(shù)據(jù)的傳輸,通訊采用主叫和應(yīng)答方式,數(shù)據(jù)傳輸中使用單片機(jī)進(jìn)行解碼[8]。

主叫方發(fā)出指令后,等待對方響應(yīng),如果主叫方寫指令到被叫方,則被叫方收到指令執(zhí)行操作后返回確認(rèn)信號;如果從主叫方讀指令,則被叫方在下一時刻占用總線后發(fā)送數(shù)據(jù)到主叫方,主叫方在0.5s內(nèi)沒有收到響應(yīng)包,表明傳輸失敗。若連續(xù)3次沒有響應(yīng),則與對方通信連接失敗。

為了實(shí)現(xiàn)數(shù)據(jù)的一致性,RS-232和I2C總線采用相同的通信協(xié)議。

數(shù)據(jù)傳輸時以“包”進(jìn)行封裝,中間加入長度位和奇偶校驗(yàn)位。封裝格式:起始字符+長度字符 +序列號+源地址+目的地址包類型+傳輸數(shù)據(jù)+包校驗(yàn)+結(jié)束字符;數(shù)據(jù)傳輸均采用ASCII碼。

包的定義:起始位定義為‘#’,占用一個字節(jié),接收方接收到‘#’時,表明數(shù)據(jù)開始傳輸;長度字符定義為除起始字符、結(jié)束字符和校驗(yàn)字符的所有原始字符的長度,占用一個字節(jié);源地址:發(fā)送方地址,占用一個字節(jié);目的地址:接收方地址,占用一個字節(jié),當(dāng)為‘00’時,定義為廣播地址;包類型:占用一個字節(jié),表明數(shù)據(jù)的類型,接收方根據(jù)包類型執(zhí)行對應(yīng)操作;傳輸數(shù)據(jù):控制量的大?。话r?yàn):定義為長度字符,源地址,目的地址,包類型和數(shù)據(jù)之和,占用兩個字節(jié);結(jié)束位:定義為‘~’,當(dāng)接收方接收到結(jié)束字符時,表明本包傳輸結(jié)束,對數(shù)據(jù)包進(jìn)行處理,長度位和校驗(yàn)位正確時執(zhí)行指令,否則,放棄改數(shù)據(jù)包。

4、實(shí)驗(yàn)結(jié)果

使用該通訊系統(tǒng)實(shí)現(xiàn)和四控制卡之間的通訊控制,使用串口助手進(jìn)行數(shù)據(jù)收發(fā),在發(fā)送數(shù)據(jù)間隔為5us的情況下對該通訊系統(tǒng)進(jìn)行測試,在進(jìn)行8小時的測試中,系統(tǒng)沒有出現(xiàn)數(shù)據(jù)丟失、錯誤、死機(jī)現(xiàn)象;使用廣播地址進(jìn)行數(shù)據(jù)發(fā)送,返回信號正確,沒出現(xiàn)死機(jī)現(xiàn)象。

使用該通訊系統(tǒng)對四個電機(jī)進(jìn)行控制,電機(jī)實(shí)際輸出情況如表1:

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

本實(shí)驗(yàn)數(shù)據(jù)證明了該通訊系統(tǒng)的可用性及數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。

使用該系統(tǒng)采用廣播地址實(shí)現(xiàn)四個電機(jī)同步聯(lián)動,各個軸的運(yùn)動情況如表2:

采用RS232總線與FPGA實(shí)現(xiàn)三坐標(biāo)測量系統(tǒng)的設(shè)計應(yīng)用

本實(shí)驗(yàn)數(shù)據(jù)證明了各個電機(jī)實(shí)現(xiàn)了指定的轉(zhuǎn)動角度;各個軸運(yùn)動期間,電機(jī)的狀態(tài)經(jīng)過I2C總線[9]及RS-232總線通訊系統(tǒng)成功的發(fā)送到了上位機(jī),通訊系統(tǒng)沒有出現(xiàn)死機(jī)和數(shù)據(jù)丟失,經(jīng)過該實(shí)驗(yàn),證明了數(shù)據(jù)傳輸?shù)恼_性。

4、結(jié)論

本系統(tǒng)采用FPGA進(jìn)行通訊系統(tǒng)的設(shè)計,提高了數(shù)據(jù)的傳輸率和準(zhǔn)確性,實(shí)現(xiàn)了對控制機(jī)構(gòu)及時、快速的控制,有效防止突發(fā)事件的處理,經(jīng)實(shí)驗(yàn)證明,本系統(tǒng)快速、準(zhǔn)確的實(shí)現(xiàn)了數(shù)據(jù)的傳輸,可以有效快速的實(shí)現(xiàn)對電機(jī)的速度、位置控制、準(zhǔn)確的讀取電機(jī)的編碼器信號。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21636

    瀏覽量

    601315
  • 計算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7383

    瀏覽量

    87641
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2861

    瀏覽量

    87923
收藏 人收藏

    評論

    相關(guān)推薦

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第十一章RS232實(shí)驗(yàn)

    AN3485模塊的RS232接口采用MAX3232芯片實(shí)現(xiàn)RS232和+3.3V TTL電平的轉(zhuǎn)換。TTL電平的串口接收和發(fā)送信號(RXD, TXD)連接到40針的連接器上跟外面的
    的頭像 發(fā)表于 01-23 11:22 ?5076次閱讀
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第十一章<b class='flag-5'>RS232</b>實(shí)驗(yàn)

    一文詳解RS232、RS485、CAN總線

    、FlexRay并稱大汽車總線。采用數(shù)據(jù)位仲裁的方式來替代傳統(tǒng)的站地址輪詢方式,因此可以支持多主多從的工作方式。CAN底層協(xié)議比RS232/RS
    發(fā)表于 09-22 10:32 ?8218次閱讀

    RS232、RS485、CAN總線隔離方案

    和數(shù)據(jù)鏈路層。 RS-232總線RS-232總線標(biāo)準(zhǔn)是最常見的串行通信總線標(biāo)準(zhǔn)之一,最初制定于1962年,用于計算機(jī)和調(diào)制解調(diào)器之間的通信。
    發(fā)表于 11-22 09:30

    如何采用RS232總線實(shí)現(xiàn)計算機(jī)和橋接卡之間的通訊?

    如何采用RS232總線實(shí)現(xiàn)計算機(jī)和橋接卡之間的通訊?使用FPGA實(shí)現(xiàn)I2C
    發(fā)表于 05-07 06:01

    如何去實(shí)現(xiàn)一種CAN總線轉(zhuǎn)RS232設(shè)計?

    CAN總線是什么?RS232協(xié)議又是什么?如何去實(shí)現(xiàn)一種CAN總線轉(zhuǎn)RS232設(shè)計?
    發(fā)表于 05-18 06:49

    怎么實(shí)現(xiàn)RS232通信網(wǎng)絡(luò)與CAN總線通信網(wǎng)絡(luò)互聯(lián)的設(shè)計?

    本文采用ATMega16、SJAl000、MCP2551和MAX232,設(shè)計開發(fā)了CAN總線轉(zhuǎn)232的接口,完成了兩種協(xié)議的轉(zhuǎn)換,實(shí)現(xiàn)了CA
    發(fā)表于 06-02 06:30

    CAN與RS232轉(zhuǎn)換節(jié)點(diǎn)的設(shè)計與實(shí)現(xiàn)

    CAN與RS232轉(zhuǎn)換節(jié)點(diǎn)的設(shè)計與實(shí)現(xiàn) 介紹將CAN總線接口與RS232總線接口相互轉(zhuǎn)換的設(shè)計方法和2種
    發(fā)表于 03-30 16:39 ?75次下載

    基于FPGARS232設(shè)計

    基于FPGARS232設(shè)計,可以擴(kuò)展更多 的串口
    發(fā)表于 10-29 17:18 ?9次下載

    RS232 協(xié)議

    RS232 協(xié)議
    發(fā)表于 10-24 10:15 ?81次下載
    <b class='flag-5'>RS232</b> 協(xié)議

    基于采用SJAl000的CAN/RS232智能電平轉(zhuǎn)換器設(shè)計方案

    由于PC機(jī)無CAN接口,因此,PC機(jī)與智能節(jié)點(diǎn)構(gòu)成CAN總線系統(tǒng)采用RS232/CAN、并口/CAN、USB/CAN、ISA卡/CAN以及PCI卡/CAN方式接入。而
    的頭像 發(fā)表于 12-30 07:29 ?2428次閱讀
    基于<b class='flag-5'>采用</b>SJAl000的CAN/<b class='flag-5'>RS232</b>智能電平轉(zhuǎn)換器設(shè)計方案

    實(shí)現(xiàn)RS232串口通信的資料合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是實(shí)現(xiàn)RS232串口通信的資料合集包括了:MAX232和PL2303與max485芯片的數(shù)據(jù)手冊,RS232發(fā)送程序,RS
    發(fā)表于 07-17 08:00 ?38次下載
    <b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>RS232</b>串口通信的資料合集

    RS232串口的缺點(diǎn)有哪些

    RS232串口是計算機(jī)和通信行業(yè)應(yīng)用最廣泛的串口類型。該系統(tǒng)采用全雙工制,要求有種線路:地線、發(fā)送線和接收線。只有RS232才能
    發(fā)表于 06-08 15:03 ?5320次閱讀

    實(shí)現(xiàn)RS232轉(zhuǎn)PROFIBUS的功能

    小疆智控RS232轉(zhuǎn)PROFIBUS網(wǎng)關(guān): 訂貨號:GW-PB5002 ?應(yīng)用廣泛:RS232轉(zhuǎn)PROFIBUS網(wǎng)關(guān)凡具有RS232接口、用戶能夠得到接口通信協(xié)議的現(xiàn)場設(shè)備,都可以使用本產(chǎn)品實(shí)
    發(fā)表于 03-11 14:08 ?1654次閱讀

    電腦主板RS232串口硬件設(shè)計

    ? ? ? ? ?RS232屬于一種電平標(biāo)準(zhǔn),采用UART異步通信串行數(shù)據(jù)總線協(xié)議。工業(yè)電平標(biāo)準(zhǔn)RS422和RS485同樣
    發(fā)表于 11-07 10:06 ?18次下載
    電腦主板<b class='flag-5'>RS232</b>串口硬件設(shè)計

    如何使用RS232轉(zhuǎn)SPI實(shí)現(xiàn)串口和SPI接口的轉(zhuǎn)換?

    如何使用RS232轉(zhuǎn)SPI實(shí)現(xiàn)串口和SPI接口的轉(zhuǎn)換? RS232轉(zhuǎn)SPI是一種將串口和SPI接口進(jìn)行轉(zhuǎn)換的技術(shù),通常在需要將串口設(shè)備連接到SPI控制器的情況下使用。串口和SPI接口之間的轉(zhuǎn)換可以
    的頭像 發(fā)表于 09-14 17:52 ?2000次閱讀