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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > PC機和激光沒距雷達雙路高速數(shù)據(jù)通信接口卡

          PC機和激光沒距雷達雙路高速數(shù)據(jù)通信接口卡

          作者: 時間:2006-05-07 來源:網(wǎng)絡 收藏

          摘要:闡述了PC機和激光測距雷達雙路高速串行數(shù)據(jù)通訊接口卡的系統(tǒng)構成。重點介紹了RS-422A高速串行通訊接口及收發(fā)控制、接口卡和PC機通信緩沖區(qū)的共享、卡上資源分配等關鍵性問題。

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

          關鍵詞:RS-422 高速串行通信 接口卡 雙端口RAM FPGA

          在我們智能自主式移動機器人項目的研制中,采用了兩路二維激光雷達來完成障礙物檢測、路標檢測及地圖匹配等工作。我們采用的激光雷達均提供了一種RS-422串行通訊接口。雷達通過與PC機的握手通信完成初始化工作之后,便分別以40ms和80ms為工作周期將測距結果以500Kbps的速率發(fā)送至PC機。PC機收到每一幀數(shù)據(jù)后便開始隨后的處理工作。工作周期為80ms的激光雷達每幀數(shù)據(jù)長度為812字節(jié),工作周期為40ms的激光雷達每幀數(shù)據(jù)長度為412字節(jié)。

          若采用目前市面上能提供的普通串行數(shù)據(jù)通信卡來完成PC機與激光雷達的數(shù)據(jù)通信有三個缺點:

          ·商用通信卡很少能達到如此高的通訊速率;

          ·商用通信卡只能一個字節(jié)一個字節(jié)的接收,即使啟用卡上的FIFO一次也只能收?。保秱€字節(jié),這樣必然消耗PC機很多寶貴的數(shù)據(jù)處理時間;

          ·由于PC機運行的windows98系統(tǒng)是非任務搶斷型的操作系統(tǒng),在如此高的通訊速率要求下(兩路雷達數(shù)據(jù)同時到來時對PC機來說瞬時通訊速率為1Mbps,有時會導致系統(tǒng)丟失一幀數(shù)據(jù)中的某幾個字節(jié),從而使整幀數(shù)據(jù)成為廢幀,影響了系統(tǒng)的可靠工作。

          因此,必須根據(jù)應用要求,自行研制PC機和激光測距雷達雙路高速數(shù)據(jù)通信接口卡。

          1 接口卡研制目標和總體方案

          針對激光測距雷達在智能自主式移動機器人中的應用要求,我們對接口卡的設計提出了如下的總體目標:能夠順利地接收并存儲最多三幀的兩路雷達數(shù)據(jù),并按PC機命令要求,完成一定的簡單數(shù)據(jù)預處理后將結果轉(zhuǎn)送給PC機,由PC機做進一步的高級處理。

          根據(jù)系統(tǒng)要求,板卡上的CPU決定選用80C196KD單片機。80C196KD是Intel公司繼MCS-96之后的一種高性能16位單片機,它功能強、速度快、使用方便、抗干擾性能好,在、智能儀表、家電中都得到了廣泛應用[1]。系統(tǒng)總體方案見圖1。

          2 系統(tǒng)設計中的幾項關鍵技術

          2.1 RS-422通訊接口及收發(fā)控制

          RS-422A通信接口標準使用單一+5V電源供電,是一個平衡型接口。它采用差動發(fā)送、差動接收的工作方式,發(fā)送和接收電路使用各自獨立的平衡驅(qū)動器、接收器對,因而排除了各接收器地電勢差帶來的影響。使用RS-422A接口標準最大通信速率可達10Mb/s(對應通信距離12m),最大通信距離可達1200m(對應通信速率為10kb/s。

          對于500kb/s高速的串行通信,靠80C196KD自帶的串行通信接口已無法承擔,必須采用專用的異步串行通信收發(fā)器(UART)來實現(xiàn)。下面先簡要介紹一下系統(tǒng)中采用的TI公司的UART產(chǎn)品16C550C。

          TI公司生產(chǎn)的異步收發(fā)器(UART)TL16C550C是TL16C450的升級,它的主要功能與TL16C450完全相同,但是它片內(nèi)多了一塊16個字節(jié)的先進先出(FIFO)存儲部件,用于緩解高速通信場合下CPU的繁忙程度。當片內(nèi)的FIFO被激活時,最多允許在FIFO中存儲16個字節(jié)作為緩沖。為提高CPU讀數(shù)據(jù)的速度,該片支持DMA操作。

          16C550C在外設或MODEM接收到串行數(shù)據(jù)時能自動完成串并轉(zhuǎn)換并存儲,在收到CPU發(fā)來的數(shù)據(jù)時能自動完成并串轉(zhuǎn)換并發(fā)送。在UART工作過程中CPU能隨時查詢到UART此時的工作狀態(tài)。它最高可支持1Mbps的串行通訊速率[2]。

          RS-422接口通訊部分原理圖見圖2。

          差動發(fā)送器采用SN75174,差動接收器則采用SN75175。由于系統(tǒng)要求的通信速度很高,因此一般的光電隔離器件如TLP521系列不能滿足要求,而應采用高速光耦。美國General Instrument公司生產(chǎn)的高速光電耦合器6N137,由磷砷化鎵發(fā)光二極管和單片光敏集成檢測電路組成。通過光敏二極管接收信號并經(jīng)內(nèi)部高增益放大器把信號放大后,由集電極開路門作為輸出。該器件隔離電壓高,速度快,共模抑制性強,完全能勝任高速通訊工作。

          另外,為提高系統(tǒng)的抗干擾性,除了采取高速光電隔離以外,對每一路高速通訊口均采用了一個電源隔離模塊,這樣即使在外部通訊受到強干擾甚至短路的情況下,也能保證計算機的絕對安全。

          激光測距雷達的數(shù)據(jù)由TL16C550C接收后,向80C196KD發(fā)出數(shù)據(jù)有效信號,由80C196KD來取走其緩沖區(qū)內(nèi)的數(shù)據(jù)。

          2.2 接口卡和PC機通信緩沖區(qū)的共享

          接口卡和PC機共享RAM的實現(xiàn)方式一般有以下三種方案:

          · 采用雙端口RAM,該方式速度高,應用方便,適用于共享數(shù)據(jù)區(qū)兩側(cè)需要頻繁高速地交換數(shù)據(jù)的場合,但成本稍高;

          ·采用單口RAM,并附加以一定的控制邏輯以保證某一時刻RAM的總線只和一個宿主相連接,以避免發(fā)生總線沖突。這種方式適用于交換數(shù)據(jù)量較小,次數(shù)也不頻繁的場合,尤其是不能有RAM兩側(cè)的宿主同時要占用RAM的情況;

          ·采用兩片單口RAM做輪換郵箱,并附加以一定的控制邏輯。當郵箱一側(cè)的宿主向第一片RAM寫入數(shù)據(jù)時,郵箱另一側(cè)的宿主可從第二片RAM中讀數(shù)據(jù);當郵箱一側(cè)的宿主需要向第二片RAM寫入數(shù)據(jù)時,郵箱另一側(cè)的宿主可又從第一片RAM中讀數(shù)據(jù)。如此反復完成數(shù)據(jù)的交換過程,中間總線的切換由硬件控制邏輯來保證。這種方式克服了方案2不能有RAM兩側(cè)的宿主同時占用RAM的缺點,能實時地交換數(shù)據(jù),但控制邏輯較為復雜。

          在本接口卡中,由于RAM一方面要及時存放兩路激光雷達的數(shù)據(jù),一方面又要隨時準備PC機來獲取數(shù)據(jù),完全有可能發(fā)生PC機在讀RAM中某一路激光雷達數(shù)據(jù)的同時板卡必須接收另一路激光雷達的數(shù)據(jù)的情況,故而方案2顯然不行。而方案3的控制邏輯相對復雜而且芯片多,占用面積大。所以第一方案是最佳選擇。我們采用IDT公司的IDT7134雙端口RAM作為系統(tǒng)的共享數(shù)據(jù)存儲區(qū),容量為4KB[3]。

          板卡與ISA總線的接口模塊采用ALTERA公司的現(xiàn)場可編程門陣列(FPGA)芯片EFP6016-144來實現(xiàn)。內(nèi)部邏輯的構造采用ALTERA公司的硬件描述語言ADHL程序來實現(xiàn)。ADHL是一種模塊化的高級語言,它特別適合于描述復雜的組合邏輯、組運算和狀態(tài)機、真值表和參數(shù)化的邏輯[4]。

          參考PC機中IO端口使用情況可知,PC機中一般均為用戶板卡的使用留有端口,如2E0H~2EFH段和300H~30FH這一段均是用戶擴展板卡可使用的IO端口地址。故本通信卡中狀態(tài)寄存器使用2E2H,控制寄存器使用2E3H,2E0H作為共享RAM中的數(shù)據(jù)讀寫端口,2E1H作為數(shù)據(jù)讀寫時的地址預置端口。各端口指向的寄存器各位的意義如下:

          ·狀態(tài)讀取端口 (地址:2E2H)

          D0:L1-DATA,雷達1的數(shù)據(jù)有效;

          D1:L2-DATA,雷達2的數(shù)據(jù)有效;

          D2:196-BUSY,板卡CPU正忙;

          D3:恒為1

          D4:恒為1

          D5:L1-W-ACK,C196已收到PC機寫入的雷達1的數(shù)據(jù);

          D6:L2-W-ACK,C196已收到PC機寫入的雷達2的數(shù)據(jù);

          D7:恒為1。

          ·控制端口 (地址:2E3H)

          D0:L1-ACK,PC機對L1-DATA的應答信號;

          D1:L2-ACK,PC機對L2-DATA的應答信號;

          D2:L1-WR,PC機已對板卡寫入雷達1的控制信號;

          D3:L2-WR,PC機已對板卡寫入雷達2的控制信號;

          D4:WAKE-OUT,PC機給板卡CPU的喚醒信號;

          D5:恒為0;

          D6:PC-RESET,PC機對板卡的復位信號;

          D7:恒為0。

          ·地址預置端口 (地址:2E1H,)

          D7~D4:恒為0;

          D3~D0:為板卡RAM的12位地址總線中的高4位,板卡RAM的低八位地址初始值為00H。

          ·數(shù)據(jù)讀寫端口(地址:2E0H)

          PC機從該端口讀雷達數(shù)據(jù)或?qū)懤走_命令。

          2.3 接口卡資源分配及PC機命令

          板卡上4K的數(shù)據(jù)共享RAM的存儲區(qū)分配如下:

          0000H~09FFH:共2.5KB容量,為串口I的接收數(shù)據(jù)存儲區(qū);

          0A00H~0EFFH:共1.2KB容量,為串口II的接收數(shù)據(jù)存儲區(qū);

          0F00H~0F80H:共128B容量,為串口I的發(fā)送命令存儲區(qū);

          0F81H~0FFFH:共128B容量,為串口II的發(fā)送命令存儲區(qū)。

          板卡能接收并處理的命令有三種:

          命令存放地址 意 義
          命令區(qū)基地址
          命令區(qū)基地址+04H
          命令區(qū)基地址+08H
          外設初始化
          接收數(shù)據(jù)加窗處理
          接收數(shù)據(jù)平滑處理

          外設初始化命令格式如下:

          命令值(8bit) 外設類型(8bit)

          01H

          01H:雷達類型Ⅰ
          02H:雷達類型Ⅱ

          接收數(shù)據(jù)加窗處理命令如下:

          命令值(8bit) 起始角度 結束角度
          01H 8bit 8bit

          接收數(shù)據(jù)平滑處理命令如下:

          命令值(8bit)前后平滑幀數(shù)
          01H8bit

          所有命令都是01H有效,00H則無效。

          2.4 板卡與雷達的握手通信協(xié)議

          板卡與雷達的握手通信協(xié)議共分以下五個步驟:

          ·設定板卡自身的通訊波特率為9600;

          ·向雷達發(fā)送啟動安裝模式的命令,并等待雷達應答數(shù)據(jù)返回。

          ·向雷達發(fā)送命令,設置雷達的通訊波特率為500Kbps;

          ·設置板卡自身的通訊速率為500Kbps;

          ·向雷達發(fā)送命令,設置其為“連續(xù)發(fā)送測試數(shù)據(jù)模式”,并等待雷達應答數(shù)據(jù)返回。

          此后雷達便開始以一定的時間周期將測試數(shù)據(jù)以500Kbps的通訊速率發(fā)送至板卡。

          協(xié)議中具體的命令字節(jié)格式等跟雷達型號有關,篇幅所限,在此不再說明。

          3 接口卡工作過程

          PC機上電后,板卡自動復位并通過“IDLPD #2”指令進入掉電工作方式。當激光雷達將要被初始化時,PC機通過將控制端口寄存器的D4位置1來“喚醒”板卡工作。然后向?qū)诿顓^(qū)寫入雷達初始化命令,板卡將根據(jù)命令中雷達類型執(zhí)行相應的初始化操作。初始化應答過程如上所述。

          初始化成功后,板卡便開始接收數(shù)據(jù),接收完后依據(jù)校驗字對數(shù)據(jù)進行CRC校驗。正確無誤則去掉應答數(shù)據(jù)的頭和尾,只剩下總數(shù)據(jù)字節(jié)數(shù)(16bit)和數(shù)據(jù),并根據(jù)PC機的要求對雷達掃描數(shù)據(jù)進行數(shù)據(jù)平滑或數(shù)據(jù)加窗處理。處理后的數(shù)據(jù)存放在雙口RAM的相應存儲區(qū)中,然后通過將對應的L-DATA信號置高告知PC機前來取數(shù)據(jù)。

          PC機通過查詢端口檢測到雷達數(shù)據(jù)有效后,即以對應的L-ACK信號作為應答。然后板卡和PC機分別撤消各自的信號。PC機可開始讀取對應雷達的數(shù)據(jù)。當PC機想從板卡共享RAM的某一地址開始讀寫數(shù)據(jù)時,先向2E1H端口寄存器寫入12位共享RAM地址的高4位,低八位使其自動為零。當PC機讀寫完一個字節(jié)的數(shù)據(jù)時,通過FPGA構造的片內(nèi)計數(shù)器,該EISA接口能自動將地址加一,指向RAM中的下一個字節(jié)單元。這樣,PC機在讀寫板卡RS-422接收的數(shù)據(jù)時,只需在讀寫之前設定一次地址,然后就可以連續(xù)不斷地從板卡中讀取成塊的數(shù)據(jù),從而大大提高了端口傳送數(shù)據(jù)的速度。

          同樣,當PC機向板卡寫入命令時,除向?qū)诿顓^(qū)寫入命令外,置位相應的L-WR信號,以告知板卡。板卡即以對應L-WRACK信號作為應答。隨后PC機和板卡分別撤消各自的信號。板卡取出命令解釋并執(zhí)行相應的操作。

          綜上所述,本文所設計的PC機與激光測距雷達高速串行通信接口卡具有如下特點:

          ·具有雙路高達500Kbps的高速RS-422數(shù)據(jù)通信接口,可靠性好,通信效率極高;

          ·采用FPGA和雙端口RAM做ISA總線接口及高速共享數(shù)據(jù)緩沖區(qū),只占用很少的PC機端口資源就實現(xiàn)了板卡和PC機高速的數(shù)據(jù)通信和共享;

          ·劃分了主PC機和板卡的任務范圍,擬訂了命令代碼,能做到主從CPU一定程度地高速并行處理;

          ·上層PC機的接口軟件設計簡單方便,只需在WINDOWS下開一個線程監(jiān)視板卡的狀態(tài)端口即可,避免了編寫設備驅(qū)動程序的煩瑣工作。

          該接口卡已成功地應用在智能自主式移動機器人中主處理機和激光測距雷達的通信方面,取得了滿意的效果。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();