馮軍波
(中航工業西安航空計算技術研究所,陜西西安,710068)
串行通訊接口(俗稱COM 接口或串口),是采用串行通訊方式的擴展接口。數據一位一位地順序傳送,最少只需一根傳輸線即可完成,成本低但傳送速度慢。其通信方式分為同步串行(Serial Peripheral interface)、異步串行(UART)。同步通信是指通信雙方由統一時標控制數據傳送。異步通信要求統一操作時間,采用應答方式,即主模塊發出請求,一直等待從模塊反饋回來的“響應”后,才開始通信。
常用的串行通訊接口包括以下幾種:
RS-232:不平衡傳輸方式,即單端通訊,為點對點通訊而設計,適合本地設備間通訊,最大傳輸速率20kb/s。
RS-422:平橫傳輸方式,點對多雙向通訊,即一個主設備,多個從設備,從設備之間不能通訊。最多接10 個節點,最大傳輸速率10Mb/s。
RS-485:在RS-422 的基礎上發展而來,可多接32 個設備,最大傳輸速率10Mb/s。
國微電子的串行通訊接口芯片SMHK381 是雙通道,圖中用通道A、通道B 標識。該芯片兼容EXAR 公司XR-88C681、Motorola 公 司MC2681 以 及Signetics 公 司SCC2692。其內部結構如圖1 所示。

圖1 SMHK381 芯片內部結構圖
通道A 和通道B 分別包含全雙工異步接收器和發送器,兩個通道可以獨立地選擇工作頻率和工作方式進行數據的收發。
輸入/輸出端口可以作為通用的輸入/輸出端口,也可以作為特殊功能使用。如將輸入端口作為外部時鐘輸入,將輸出端口用來輸出發送器就緒信號。
數據總線緩沖器在(芯片)內部與外部的數據總線之間提供數據緩沖,由操作控制單元控制,允許數據再CPU 與DUART 之間轉移。
操作控制模塊從CPU 收到操作命令,產生合適的信號到DUART 中的各個部分。具體而言,它負責進行DUART內部寄存器地址譯碼和命令譯碼。所有的命令,包括設置波特率、奇偶校驗、通信協議參數、啟動或停止Counter/Timer、或通過讀狀態寄存器監視數據通信性能。
中斷控制塊允許用戶將DUART 應用到中斷驅動的環境中。DUART 提供了一個中斷請求輸出信號(-INTR),在發生下列任何事件的情況下可發出中斷請求信號:
(1)通道的接收或發送保持寄存器就緒;
(2)通道的接收先進先出隊列滿;
(3)在通道A 或B 中收到Break 開始或結束;
(4)Counter/Timer 計數完成;
(5)輸入引腳(IP0,IP1,IP2,IP3)發生變化。
SMHK381 通道的接收器(由接收移位寄存器RSR 和接收保持寄存器RHR 組成)從RxDn 接收串行數據,經過RSR 轉換成并行的數據格式,送到RHR(RHR 實際上是一個深度為三個字節的FIFO )。然后,這個字符將通過FIFO進行處理。一旦接收的字符被送到FIFO 的頂部,當CPU讀RHR 時就可以讀取這個字符[1]。接收器示意如圖2 所示。

圖2 接收器RSR 和RHR 示意圖
SMHK381 芯片支持中斷方式接收數據,接收中斷的觸發條件如下:
RXRDY(接收器準備好):RHR 里至少有一個字符等待CPU 讀取。
FFULL :接收FIFO 已滿。
軟件可通過設置MR(通道模式寄存器)來選擇RXRDY滿足時發出中斷還是FFULL 條件滿足時發出中斷。
在設置了中斷掩碼寄存器IMR[1](A 通道)和IMR[5](B通道)位后,將會使能上述中斷,一旦滿足上述條件,串口將向CPU 發送中斷請求,軟件可通過中斷服務函數將數據從串口取走。
CPU 把并行數據傳給SMHK381 通道的發送器(發送移位寄存器TSR 和發送保持寄存器THR),發送器將其轉換成串行數據流,并根據異步通信協議要求,加上用于通知接收器操作的起始位、停止位及可選的校驗位(最高有效位和停止位之間,可通過模式寄存器配置),然后從TxDn 引腳輸出。發送器示意如圖3 所示。

圖3 發送器THR 和TSR 示意圖
發送器可以通過命令寄存器CR 來使能和禁止。當在THR 和TSR 中還有字符時發出命令禁止發送器,發送器仍將繼續發送THR 和TSR 中剩余的字符,直到THR 和TSR完全空為止。一旦執行了禁止發送器命令,就不能再向THR 中寫入新的數據。
SMHK381 芯片同樣支持中斷方式發送數據,工作機制是每發送完一個字節的數據后會觸發中斷條件,串口向CPU 產生一次中斷,中斷處理程序再發送下一個字節,直到數據發送完成。這里有兩點需要注意:一個是在發送數據之前并沒有發送字節完成來觸發中斷,那么第一個字節是如何發出的;另一個是怎樣才算數據發送完成。第一個問題涉及中斷在硬件層面的觸發方式:若為電平觸發的中斷,當發送緩沖區為空時,其所處的電平狀態就會在中斷被使能后直接觸發,導致第一個字節在中斷服務函數中被發出;如果是電平跳變觸發的中斷,為了印發中斷,只好把第一個字節先手動發出,由此引發一個中斷“多米諾”效應,把后面的字節依次發送出去[2]。第二個問題的解決是用參數指定欲發送字節數決定的,待發送字節達到指定數目,在中斷處理函數禁止相應中斷,于是多米諾效應就會停止。
試驗中將SMHK381 芯片應用在PPC755 處理器上,實現了兩路RS232 接口,按8位數據寬度進行訪問,接口的工作時鐘采用3.6864MHz,兩路接口采用三線制傳輸,最大速率115kbps。應用場景連接框圖如圖4 所示。

圖4 SMHK381 芯片應用場景連接框圖
在線路連接上PPC755 處理器通過107 橋片連接FPGA 芯片,FPGA 內部設計PCILBE 橋邏輯,實現PPC750 對LBE 總線上的SMHK381 串口的訪問與控制。SMHK381 芯片引出兩路RS232,一路用于連接PC 的超級終端,用于輸出打印信息,一路用于連接PC 機上的開發環境,用于軟件開發人員進行程序的下載調試。使用超級終端輸出打印信息時設置每秒位數為115200,數據位為8,奇偶校驗為無,停止位為1,數據流控制選擇無。當模塊供電后,超級終端上會顯示啟動信息,表明第一路RS232 工作正常,待啟動完畢后,可使用PC機上的軟件開發環境通過第二路RS232 連接模塊并下載和調試應用程序,表明第二路RS232 也工作正常。
現代科技離不開芯片,我國在芯片技術領域起步晚且落后于歐美國家,研究芯片結構和原理有助于改變這種現狀。發展科技的必由之路就是模仿、趕追并且超越,掌握扎實的基礎工藝,弄清復雜的工作原理,才能設計和制造屬于我們的國產芯片。