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

          新聞中心

          EEPW首頁 > 設(shè)計(jì)應(yīng)用 > 基于Intel8274的機(jī)載同步通訊系統(tǒng)設(shè)計(jì)

          基于Intel8274的機(jī)載同步通訊系統(tǒng)設(shè)計(jì)

          作者:中國(guó)航空計(jì)算技術(shù)研究所,姜運(yùn)生 時(shí)間:2003-06-13 來源:電子設(shè)計(jì)應(yīng)用 收藏
          摘 要: 本文介紹了某機(jī)載雷達(dá)智能系統(tǒng)的硬件設(shè)計(jì)和軟件算法。該系統(tǒng)滿足了機(jī)載航空雷達(dá)數(shù)據(jù)通訊、處理和保存的需要,成本低、速度快。在系統(tǒng)設(shè)計(jì)中具有典型性和實(shí)用性。

          關(guān)鍵詞: ;;;

          異步串行通訊,諸如RS232、RS485等以簡(jiǎn)單實(shí)用而眾所周知。同步串行通訊以異步不可比擬的高速度而應(yīng)用在許多速度要求較高的通訊網(wǎng)絡(luò)。同步通信無需開始位和停止位,直接由對(duì)數(shù)據(jù)采樣,數(shù)據(jù)傳輸率等同于時(shí)鐘速率。其顯著特點(diǎn)就是兩端必須共享同一時(shí)鐘,發(fā)送方必須將時(shí)鐘和數(shù)據(jù)同時(shí)發(fā)送,接收方才能正確采樣。同步模式分為字節(jié)同步和位同步。國(guó)際標(biāo)準(zhǔn)化組織的HDLC(高級(jí))協(xié)議是應(yīng)用最普遍的同步協(xié)議,幀結(jié)構(gòu)如表1所示,其中標(biāo)志字節(jié)值為7EH。

          Intel8274簡(jiǎn)介
          Intel8274是實(shí)現(xiàn)HDLC同步通信協(xié)議的最佳接口芯片,圖1是其管腳定義,有以下顯著特點(diǎn):
          ?有異步、字節(jié)同步和位同步工作模式;
          ?2個(gè)獨(dú)立的、全雙工的接收器和發(fā)送器;
          ?和許多CPU接口兼容;
          ?4個(gè)獨(dú)立的DMA通道;
          ?波特率可達(dá)880K;
          ?異步模式下,具備通用串口的所有信號(hào);
          ?在位同步時(shí),自動(dòng)產(chǎn)生并識(shí)別HDLC的開標(biāo)志和關(guān)標(biāo)志、自動(dòng)進(jìn)行和刪除、自動(dòng)為發(fā)送數(shù)據(jù)產(chǎn)生CRC校驗(yàn)碼并自動(dòng)對(duì)接收數(shù)據(jù)進(jìn)行CRC校驗(yàn)、和CCITT的X.25兼容。
          Intel8274的是為了把標(biāo)志字節(jié) 7EH和正式數(shù)據(jù)中的7EH( 0111.1110B)區(qū)分開來。在發(fā)送一方,除標(biāo)志字節(jié)之外的所有發(fā)送字節(jié),每碰到有五個(gè)連續(xù)的“1”就自動(dòng)插入一個(gè)“0”,從而保證了兩個(gè)標(biāo)志字節(jié)之間的其它字節(jié)沒有7EH。在接收一方,接收到標(biāo)志字節(jié)之后,每碰到字節(jié)中有五個(gè)連續(xù)的“1”后的一個(gè)“0”,將這個(gè)“0”刪除掉,恢復(fù)字節(jié)原值。發(fā)送方和接收方的CRC校驗(yàn)都不包含這個(gè)額外插入的“0”和被刪除的“0”。硬件實(shí)現(xiàn)時(shí)很容易用鎖相環(huán)電路檢測(cè)出標(biāo)志字節(jié),方便地判斷同步數(shù)據(jù)幀的開始和結(jié)束。

          圖1 Intel8274管腳定義

          圖2 智能通訊板結(jié)構(gòu)

          系統(tǒng)硬件結(jié)構(gòu)
          Intel8274不僅性能優(yōu)越,而且和各種CPU接口比較簡(jiǎn)單?;谠撔酒哪硻C(jī)載雷達(dá)設(shè)計(jì)的同步通信系統(tǒng)如圖2所示,整個(gè)系統(tǒng)采用二級(jí)CPU結(jié)構(gòu),將主CPU從煩瑣的通訊管理中解放出來。主CPU和通訊CPU共享雙口RAM,在此交換數(shù)據(jù)。主CPU只需將發(fā)送的同步數(shù)據(jù)幀填入發(fā)送緩沖區(qū),由通訊CPU監(jiān)控同步幀發(fā)送。當(dāng)通訊CPU正確接收到完整的數(shù)據(jù)幀時(shí)直接放入接收緩沖區(qū),然后通過中斷通知主CPU取走即可。
          硬件細(xì)化設(shè)計(jì)時(shí)應(yīng)該注意:
          ?時(shí)鐘
          在圖2中,Intel8274的工作時(shí)鐘由3.6864MHz的時(shí)鐘直接輸入,而2個(gè)通道的發(fā)送時(shí)鐘由8254對(duì)工作時(shí)鐘進(jìn)行分頻后給出。這樣可以由軟件對(duì)8254進(jìn)行設(shè)置,靈活配置出各種適當(dāng)?shù)牟ㄌ芈?。特別注意,經(jīng)過差分驅(qū)動(dòng)的信號(hào)應(yīng)包括發(fā)送時(shí)鐘,而接收時(shí)鐘應(yīng)該和接收數(shù)據(jù)一起由外部提供。
          ?中斷
          同步通信不能使用查詢的方法,只能使用中斷驅(qū)動(dòng)。必須把Intel8274的中斷請(qǐng)求信號(hào)/INT(Pin28)和中斷應(yīng)答/INTA(Pin27)各自上拉10KW電阻,而將菊花鏈的中斷輸入/IPI(Pin29)接地。/INT未上拉時(shí),Intel8274不能產(chǎn)生有效的低電平,CPU不可能響應(yīng)中斷。/INTA未上拉時(shí)Intel8274可能向的數(shù)據(jù)線輸出中斷向量,擾亂CPU工作。而/IPI未接地時(shí)Intel8274的中斷請(qǐng)求有可能被抑制,時(shí)有時(shí)無,破壞系統(tǒng)的穩(wěn)定性。

          軟件設(shè)計(jì)
          通信軟件主要使用TMS320的匯編語言實(shí)現(xiàn),精華在于對(duì)Intel8274的中斷處理上。軟件初始化8274為同步模式時(shí),應(yīng)選擇CCITT的CRC,而不是CRC-16。為準(zhǔn)確簡(jiǎn)潔,我們采用最通用的算法描述語言。
          同步數(shù)據(jù)幀發(fā)送算法
          為了開始同步幀的發(fā)送,在所有情況下(包括DMA)都應(yīng)該由CPU向8274寫入第一個(gè)字符。在HDLC協(xié)議中,第一個(gè)字符就是接收站點(diǎn)的節(jié)點(diǎn)地址,而不是開標(biāo)志。開、關(guān)標(biāo)志由8274自動(dòng)插入。
          Const // 常量定義
          DONE = ... // 表示發(fā)送或接收過程已結(jié)束
          DONE; // 幀發(fā)送過程尚未結(jié)束,正在運(yùn)行,
          RxDone := NOT_DONE; // 幀接收過程尚未結(jié)束
          Reset Tx Intterrupt; // 復(fù)位發(fā)送中斷
          Reset Tx CRC; // 復(fù)位CRC發(fā)生器。
          Send Addr; // 發(fā)送幀地址,引爆幀發(fā)送開始。
          Reset TxUnder-Run/EOM; // 立即復(fù)位下溢中斷,保證正確產(chǎn)生CRC
          {此后,幀發(fā)送的實(shí)際過程由中斷完成,I8274硬件接口應(yīng)該在規(guī)定的最大時(shí)間內(nèi)應(yīng)產(chǎn)生“下溢/幀結(jié)束”中斷,否則發(fā)生錯(cuò)誤,應(yīng)復(fù)位8274 }
          while not TimeOut do
          begin
          if TxDone = DONE then // 由中斷過程設(shè)置 TxDone標(biāo)志
          begin
          Wait CRC; // 等待CRC發(fā)送結(jié)束
          Check TxResult; // 檢查發(fā)送結(jié)果是否正確。
          Exit;
          end;
          end;
          Reset 8274; // 至此,則超時(shí)退出,發(fā)生錯(cuò)誤,復(fù)位8274。
          end;
          Intel8274中斷響應(yīng)算法
          HDLC協(xié)議的同步通訊必須由中斷驅(qū)動(dòng),主要是同步通訊的協(xié)議和校驗(yàn)由硬件完成,軟硬件必須配合得當(dāng)。中斷主要處理4類情況,一是利用“發(fā)送緩沖器空”中斷來發(fā)送幀數(shù)據(jù),二是用“外部狀態(tài)變化”中斷來判斷幀發(fā)送結(jié)束,三是用“數(shù)據(jù)接收”中斷來接收數(shù)據(jù)幀,四是用“接收到特殊條件”中斷來判斷幀接收的開始和結(jié)束。在使用多個(gè)接收幀緩沖時(shí),中斷處理要注意緩沖區(qū)切換正確。
          procedure IntrruptTxRxFrame
          begin
          Read Interrpt Type; // 從8274讀中斷類型
          case Interrpt Type of // 檢查中斷類型
          1:Tx Empty: // “發(fā)送緩沖器空”中斷
          if 數(shù)據(jù)未發(fā)送完 then
          Send One byte // 從發(fā)送緩沖區(qū)讀取、并發(fā)送1字節(jié)
          else
          Reset Tx Empty Interrupt; // 復(fù)位此中斷,迫使產(chǎn)生下溢中斷;
          2:External Status Chang // “外部狀態(tài)變化”中斷
          if 是下溢中斷 then
          TxDone := DONE // 幀發(fā)送結(jié)束,結(jié)果正確
          else begin
          TxDone := DONE; // 幀發(fā)送結(jié)束
          TxResult := FAIL; // 但結(jié)果不正確
          end;
          3:RxChar // “接收到幀數(shù)據(jù)字符”
          讀入并存到接收幀緩沖區(qū);
          4:RxSpecial: // "接收到特殊條件" 中斷
          if End of Frame then // 幀接收結(jié)束
          RxDone := DONE // 接收過程完成,結(jié)果正確
          else begin
          RxDone := DONE // 接收過程完成
          RxResult := FAIL; // 但結(jié)果不正確.
          Reset Error Interrupt
          end;
          else // 其余中斷忽略掉。
          Ignore;
          end;
          Send EOI; // 發(fā)中斷結(jié)束命令.
          end;

          結(jié)語
          同步通訊技術(shù)在不斷地發(fā)展,席卷全球的Internet網(wǎng)就是采用同步協(xié)議X..25連接了不同類型的計(jì)算機(jī)。同步通訊和異步通訊相對(duì)立而存在,相比較而發(fā)展。這里只是拋磚引玉,介紹了我們實(shí)際工作的一點(diǎn)體會(huì)和做法。同步通訊將向更高速率發(fā)展,應(yīng)用在更多的日常電子設(shè)備中。

          參考文獻(xiàn)
          1 Intel: 《8274 Multi-Protocol Serial Controller》
          2 TI: 《TMS320F240 DSP Controllers Refence Guide》




          評(píng)論


          技術(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); })();