《電子技術應用》
您所在的位置:首頁 > 模拟设计 > 业界动态 > 工控系统平台串行通信接口的设计与实现

工控系统平台串行通信接口的设计与实现

2009-12-07
作者:梁 婕 高德远 张盛兵 段 然

摘   要: 提出了一種基于狀態(tài)機且內部帶有16字節(jié)緩沖FIFO的異步串行通信接口的設計思路和實現(xiàn)方法。
關鍵詞: 工業(yè)控制系統(tǒng)  異步串行通信接口  狀態(tài)機

  近幾年來工控機產業(yè)的飛速發(fā)展,使工控產品的應用范圍由原工業(yè)自動化行業(yè)的運用,迅速地轉向制造業(yè)自動化。相對于商用PC而言,工控機具有抗惡劣環(huán)境、結構擴充性能好、電壓適用范圍寬等優(yōu)點,可充分滿足企業(yè)運行的特殊需求,其發(fā)展已進入到嵌入式智能平臺(Embedded Intelligent Platform)階段。
由于串行通信結構簡單、可靠性強、實現(xiàn)及使用成本低、通信標準統(tǒng)一,且信道成本低,使其在測控系統(tǒng)和工程中應用十分廣泛。因此,在工業(yè)控制中,串行接口是常用的計算機與外部串行設備之間的首選數據傳輸通道。許多設備和計算機都可以通過串行接口對外設進行控制和檢測。因此,串行接口通信日益成為計算機和外設進行通信、獲取由外設采集到的監(jiān)測數據的一種非常重要的手段。
  本文介紹了一種基于工業(yè)控制系統(tǒng)平臺的全雙工、內部帶有16字節(jié)緩沖FIFO的異步串行通信接口(Universal Asynchronous Receiver/Transmitter)的設計思路和實現(xiàn)方法。該方法具有可編程的串行接口特性和完整的狀態(tài)信息報告功能、獨立的中斷優(yōu)先級控制能力,以及自動奇偶校驗、溢出和數據幀出錯等檢測標志。
1  工控系統(tǒng)平臺結構
  為了滿足市場對工業(yè)型計算機的要求,除了VME總線工控機外,產生了一系列基于PC、與ISA/PCI總線標準兼容的嵌入式工控機,其中比較有代表性的是Compact PCI/PXI總線、AT96總線、STD總線、STD32總線、PC/104和PC/104-Plus總線嵌入式工業(yè)控制機。
  由于軟件的兼容性這一重要原因,目前的工業(yè)控制機已經由過去的專用封閉式架構變?yōu)镻C技術的開放式架構。由桌面PC技術衍生的ISA總線加固型計算機在工業(yè)上得到了相當廣泛的應用。本設計所基于的工控系統(tǒng)平臺即采用ISA總線協(xié)議,以高性能的32位微處理器作為核心處理器,其結構如圖1所示。

  本系統(tǒng)可分為系統(tǒng)控制器和外設控制器二大部分。系統(tǒng)控制器包括控制主存的DRAM控制器、完成總線仲裁的總線控制器、實現(xiàn)與ISA總線協(xié)議相關操作的ISA控制器,以及可編程中斷控制器、定時器、鍵盤控制器、實時時鐘RTC和DMA控制器。外設控制器則由硬盤控制器、軟盤控制器(包括軟盤驅動器)、串行通信接口和并行通信接口組成。此外,再加上BIOS ROM就構成了一個完整的工業(yè)控制系統(tǒng)。其中,串行通信接口直接連接在ISA總線上,系統(tǒng)利用該接口輸入由采集卡采集的數據以及輸出遠程控制信息。更為重要的是,由于本工控系統(tǒng)不包含顯卡,因而必須利用串行接口來進行整個系統(tǒng)的調試。由此可見,串行接口的設計是整個系統(tǒng)至關重要的一部分。
2  異步串行通信接口的設計
  根據工控系統(tǒng)要求,設計中將UART分為如下幾個子模塊[1][2]:傳輸速率控制電路即波特率發(fā)生器、讀/寫控制邏輯、接收控制電路、發(fā)送控制電路、MODEM控制邏輯、中斷控制邏輯、線路控制邏輯。UART結構原理如圖2所示,各子模塊功能如下。

  (1)讀/寫控制邏輯:對片選、讀寫等信號進行譯碼,以訪問內部寄存器。
  (2)波特率發(fā)生器:對輸入的基準時鐘分頻,以產生所需要的波特率,并將符合要求的發(fā)送時鐘送給發(fā)送器。同時還送出分頻后的時鐘,以作為接收時鐘。
  (3)發(fā)送控制邏輯:把寫入發(fā)送保持寄存器的數據進行格式化并送到移位寄存器,然后按選定的時鐘頻率進行串行輸出。
  (4)接收控制邏輯:采樣串行數據輸入信號,按格式化對數據進行校驗后,轉換成并行數據送往CPU。
  (5)線路控制邏輯:用來寄存發(fā)送字符的編程格式、間斷點設置等參數,并記錄接收和發(fā)送時的狀態(tài)信息。
  (6)MODEM控制邏輯:為MODEM提供控制信號,記錄MODEM、數據裝置輸入給UART的狀態(tài)信息及變化信息。
  (7)中斷控制邏輯:實現(xiàn)中斷優(yōu)先權管理,允許在符合條件時發(fā)出中斷請求,或禁止在符合條件時發(fā)中斷請求。
  UART是可編程的異步串行通信接口,共有11個內部寄存器,用戶可通過對這些寄存器編程,實現(xiàn)所需的通信。各寄存器的讀寫端口地址分配如表1所示。表中DLAB是線路控制寄存器的D7位,對于COM1,BA為3F8H;對于COM2,BA為2F8H。

  下面就其中一些模塊作簡要介紹。
2.1 數據接收單元
  數據接收單元如圖3所示。接收數據的過程如下:當編程初始化后即進入允許接收和準備好接收數據狀態(tài),監(jiān)視串行數據輸入線SIN。在無字符傳送時,SIN線上為高電平,即處于Mark狀態(tài);當在接收時鐘的上升沿采樣,SIN線上出現(xiàn)低電平時,就認為數據接收單元是起始位,于是啟動一個內部計數器。由于接收時鐘頻率為16倍的波特率,當計數器計到8(對SIN連續(xù)采樣8次,即到1個數據位寬度的一半)時,若發(fā)現(xiàn)SIN這時已變?yōu)楦唠娖剑瑒t剛才的低電平可能是一個噪聲干擾,而不是真正的起始位,或者接收器是在發(fā)送方發(fā)送1個字符的中間被允許接收。在這二種情況下接收器并不開始接收數據,而是繼續(xù)尋找新的起始位,直到連續(xù)采樣到8個低電平,才認為是正確的起始位。此后每隔1位(16個脈沖),即在對應的每個數據位中間的1個接收時鐘的上升沿處采樣SIN線,并把采樣到的信息以移位方式送入移位寄存器。在串行輸入的數據流中,字符的低位在前,高位在后。接收到1幀數據位后,接收控制電路根據初始化編程選定的數據格式,把串行數據轉化成并行數據,并進行奇偶校驗、對停止位的檢查等,且自動刪除起始位、奇偶校驗位和停止位。然后移位寄存器內的數據以并行方式送到接收數據緩沖寄存器或接收FIFO中保存。同時將線路狀態(tài)寄存器LSR的Data Ready位置1,供CPU查詢用,且將管腳RXRDY_n置為有效的低電平。若允許發(fā)中斷,此時還會發(fā)出中斷請求信號,請求CPU讀取接收到的數據。

  接收數據過程由一個3位狀態(tài)機來實現(xiàn)。其狀態(tài)有Idle(空閑)、Start(接收起始位)、Shift(接收數據位)、Parity(接收奇偶校驗位)以及Stop(接收停止位)。每一個狀態(tài)表明了當前正在接收的數據屬于哪一種字符,并且根據當前接收字符的狀態(tài),驅動其他部件進行合適的操作。接收狀態(tài)機狀態(tài)轉換如圖4所示。

2.2 數據發(fā)送單元
  數據發(fā)送單元如圖5所示。對于由CPU送來的待發(fā)送的并行數據先寫入發(fā)送保持寄存器或發(fā)送FIFO,按照編程規(guī)定的格式,在發(fā)送時鐘的控制下,經發(fā)送移位寄存器變成串行數據流,然后從串行輸出SOUT管腳發(fā)送出去。在串行輸出的數據流中,字符的低位在前,高位在后。發(fā)送時自動加上起始位,并根據編程規(guī)定的校驗要求,加上1個校驗位以及加上編程規(guī)定的停止位。當沒有數據發(fā)送時,SOUT保持高電平。由于在前一個數據幀發(fā)送過程中發(fā)送保持寄存器或發(fā)送FIFO被寫入數據,所以只要發(fā)送保持寄存器或發(fā)送FIFO不為空,則發(fā)送保持寄存器或發(fā)送FIFO中的數據將自動并行地送入發(fā)送移位寄存器,在發(fā)送完1個數據幀后立即發(fā)送下一幀。

  發(fā)送數據過程由一個3位狀態(tài)機控制,通過狀態(tài)的轉換來實現(xiàn)起始位、數據位、奇偶校驗位以及停止位的發(fā)送。其狀態(tài)有Idle(空閑)、Start(發(fā)送起始位)、Shift(發(fā)送數據位狀態(tài))、Parity(發(fā)送奇偶校驗位)以及Stop_1bit(發(fā)送1位停止位)、Stop_halfbit(發(fā)送半個停止位)、Stop_2bit(發(fā)送第2個停止位)。發(fā)送狀態(tài)機狀態(tài)轉換如圖6所示。

2.3 線路控制邏輯
  線路控制邏輯以線路控制寄存器和線路狀態(tài)寄存器為核心,用于寄存發(fā)送字符的編程格式、間斷點設置等參數,并記錄接收和發(fā)送時的狀態(tài)信息。接收發(fā)送狀態(tài)標志如表2所示。


  接收控制電路在接收串行數據的同時對接收數據的正確性和接收過程進行監(jiān)視。若發(fā)現(xiàn)接收過程出現(xiàn)如表2所示的狀態(tài),則將相應的狀態(tài)信息送往線路狀態(tài)寄存器LSR。而發(fā)送時,UART也是通過LSR的D5和D6位指明發(fā)送保持寄存器和發(fā)送移位寄存器的狀態(tài)[1]。
3  仿真與驗證
  本設計采用Altera公司的集成開發(fā)軟件QuartusⅡ3.0,并用該公司的Cyclone系列芯片進行FPGA驗證(因Cyclone系列芯片是一種低成本、高密度的FPGA芯片系列,所以是首選的中規(guī)模器件產品)。Cyclone系列芯片采用0.13?滋m工藝制造,1.5V核心電壓供電,功耗低,最高集成有20 060個邏輯部件和高達288Kb的RAM,支持多種I/O標準以及支持多個IP核,包括Altera MegaCore功能和Altera Megafuncitons Partners Program(AMPP)宏功能[4]。通過QuartusⅡ3.0綜合、布局布線后,可以達到180MHz以上的時鐘頻率,完全可滿足系統(tǒng)時序的要求。本設計下載到FPGA中進行仿真驗證后,可以很好地實現(xiàn)串行接口收發(fā)控制功能。
參考文獻
1   National Semiconductor Corp.PC16550D Universal Asynchronous Receiver/Transmitter with FIFOs.1995
2   Texas Instruments.TL16C550C,TL16C550CI Asynchronous Communications Element With Autoflow Control. 1998
3   EXAR.ST16C550 UART with 16-Byte FIFO′s.2000
4   Gilluwe F V著,精英科技譯.PC技術內幕:I/O、CPU和固定內存區(qū)程序員指南.北京:中國電力出版社,2001
 

本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯(lián)系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關內容