<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計應(yīng)用 > 通信技術(shù)在三坐標(biāo)測量系統(tǒng)中的應(yīng)用

          通信技術(shù)在三坐標(biāo)測量系統(tǒng)中的應(yīng)用

          作者: 時間:2009-04-14 來源:網(wǎng)絡(luò) 收藏

            1、引言

          本文引用地址:http://www.ex-cimer.com/article/195903.htm

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

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

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

            本采用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ā)送線)

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


            (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ù),低位在前,高位在后):

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


            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:

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


           ?、贗2C發(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。

          I2C發(fā)送模塊的FPGA實(shí)現(xiàn)
            I2C_outScl:發(fā)送時鐘;I2C_inScl:檢測時鐘

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

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

            RAM_Addr:RAM的地址信號。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();