王劍博,胡曉吉
(華北計(jì)算技術(shù)研究所加固計(jì)算機(jī)產(chǎn)品事業(yè)部,北京100083)
基于FPGA的智能串行通信板卡的設(shè)計(jì)與實(shí)現(xiàn)
王劍博,胡曉吉
(華北計(jì)算技術(shù)研究所加固計(jì)算機(jī)產(chǎn)品事業(yè)部,北京100083)
串行通信模塊是每臺計(jì)算機(jī)所必須的對外通信模塊的一部分,但由于串行通信協(xié)議較多,串行接口也較多,所以,往往這部分模塊需要占用較多的體積和資源。將RS 232,RS 422和RS 485三種串行協(xié)議和同異步兩種串行傳輸方式通過FPGA兼容于一塊智能通信板卡上,通過上位機(jī)控制界面的控制,完成對8路串行通道的配置,并介紹了板卡的總體結(jié)構(gòu)及硬件設(shè)計(jì),展示了上位機(jī)控制界面的通信效果。結(jié)果表明,該智能串行通信卡能夠很好地完成多協(xié)議多方式的串行通信之間的切換,達(dá)到了預(yù)期的效果。
串行通信;串行協(xié)議;串行方式;FPGA;智能串行通信卡
串行通信作為計(jì)算機(jī)與其他設(shè)備之間廣泛使用的一種通信方式,具有開發(fā)簡單,抗干擾性強(qiáng),傳輸距離遠(yuǎn)的特點(diǎn)。作為現(xiàn)在應(yīng)用比較廣泛的串行通信協(xié)議RS 232[1],RS 422[2]和RS 485[3]三種標(biāo)準(zhǔn)各有特點(diǎn),應(yīng)用于不同的方面,但是在實(shí)際應(yīng)用中,對于需要與應(yīng)用不同標(biāo)準(zhǔn)的設(shè)備實(shí)現(xiàn)通信,卻必須添加相應(yīng)的轉(zhuǎn)換模塊,這種方法既繁瑣又很麻煩,而且浪費(fèi)不必要的資源。在需要實(shí)現(xiàn)多標(biāo)準(zhǔn)多設(shè)備同時(shí)與主控計(jì)算機(jī)通信時(shí),以上述的傳統(tǒng)方式,除非主控機(jī)同時(shí)具有三種標(biāo)準(zhǔn)接口,否則幾乎無法實(shí)現(xiàn)這樣的功能,將會(huì)導(dǎo)致某些設(shè)備與主控機(jī)通信受阻,無法實(shí)現(xiàn)特定的性能要求,所以提出一種能夠智能化轉(zhuǎn)化上述三種串行傳輸標(biāo)準(zhǔn)的通信系統(tǒng)勢在必行。
本文所設(shè)計(jì)的多協(xié)議串行通信模塊的總體結(jié)構(gòu)圖如圖1所示,由于本模塊有8路串行傳輸?shù)耐ǖ?,各通道所?zhí)行的傳輸協(xié)議由上位機(jī)控制界面通過FPGA對各路通道進(jìn)行配置,因此由外接設(shè)備所發(fā)出的各通道信號經(jīng)電平轉(zhuǎn)換電路進(jìn)入FPGA,F(xiàn)PGA內(nèi)的接收/發(fā)送緩存模塊在緩存后,各路通過調(diào)用RS 232/422/485相應(yīng)的處理模塊進(jìn)行處理。而后經(jīng)串/并轉(zhuǎn)換后,由協(xié)議轉(zhuǎn)換控制模塊傳輸給上位機(jī),完成與外接設(shè)備的實(shí)時(shí)通信。
本系統(tǒng)的硬件部分主要是由具有SCSI(Small Com?puter System Interface)標(biāo)準(zhǔn)[4]接口的板卡來實(shí)現(xiàn),板卡上總共有8路串行通道,每路通道的RS 232,RS 422及RS 485的標(biāo)準(zhǔn)協(xié)議的轉(zhuǎn)換控制、同異步串行方式的轉(zhuǎn)換選擇均由Xilinx Spartan6系列的FPGA芯片XC6SLX45完成,F(xiàn)PGA通過PCI9030與上位機(jī)控制程序完成通信。PCI9030將復(fù)雜的PCI總線轉(zhuǎn)換為簡單的Local Bus總線[5],F(xiàn)PGA通過對Local Bus的讀寫完成與上位機(jī)的通信。由于FPGA芯片的管腳電平一般為標(biāo)準(zhǔn)的TTL電平,與RS 232,RS 422和RS 485串行協(xié)議的輸入電壓的電平不符,故還需要相應(yīng)的電壓轉(zhuǎn)換芯片進(jìn)行電平轉(zhuǎn)換。同時(shí),為了使8路串行通道能夠兼容多種串行接口標(biāo)準(zhǔn),每路通道需要有一款通道轉(zhuǎn)換芯片完成RS 232/RS 422/RS 485協(xié)議的電路轉(zhuǎn)換工作,F(xiàn)PGA通過對通道轉(zhuǎn)換芯片進(jìn)行控制從而配置每路通道所支持的通信協(xié)議[6]。圖2是串行通信卡的硬件結(jié)構(gòu)圖。
圖1 多協(xié)議串行通信模塊的總體結(jié)構(gòu)
圖2 智能串行通信卡硬件結(jié)構(gòu)圖
3.1 FPGA片內(nèi)程序設(shè)計(jì)
FPGA內(nèi)部程序大致分為三大模塊:異步UART處理模塊、同步HDLC處理模塊和協(xié)議轉(zhuǎn)換控制模塊,如圖3所示,其中異步UART和同步HDLC模塊各自又可劃分為發(fā)送和接收兩個(gè)部分,如圖4,圖5所示。接收流程如下,首先,8路串行通道所選擇的同異步通信方式及通信協(xié)議由上位機(jī)控制界面已經(jīng)設(shè)定,8路串行數(shù)據(jù)進(jìn)入FPGA后,分別由各路相應(yīng)的處理模塊進(jìn)行處理,而后存入各自的接收緩存(FIFO)中,等待PCI9030進(jìn)行讀取,最后發(fā)送給上位機(jī)。發(fā)送流程則是首先由上位機(jī)選定各通道的配置協(xié)議及方式,而后分別將8路通道上所要傳輸?shù)男畔⑼ㄟ^PCI9030寫入FPGA內(nèi)各自通道的發(fā)送緩存(FIFO),然后經(jīng)過相應(yīng)的處理發(fā)送給各通道接口電路直至外接設(shè)備。
圖3 FPGA片內(nèi)程序框圖
圖4 各通道接收程序流程圖
3.2 UART方式
UART(Universal Asynchronous Receiver/Transmit?ter)協(xié)議作為一種低速全雙工通信協(xié)議[7],是異步串行通信協(xié)議的一種,廣泛應(yīng)用于通信領(lǐng)域等各個(gè)場合。它工作于數(shù)據(jù)鏈路層,其工作原理是以串行方式一位接一位地傳輸數(shù)據(jù)字符的每個(gè)比特。
UART具有如下的協(xié)議特點(diǎn):
(1)UART協(xié)議是設(shè)備之間實(shí)現(xiàn)低速數(shù)據(jù)通信的標(biāo)準(zhǔn)協(xié)議。UART字符格式為1位起始位,5~8位數(shù)據(jù)位,1位奇偶校驗(yàn)位(可選),1位停止位。由于是異步通信,所以在數(shù)據(jù)發(fā)送時(shí),不需要同時(shí)發(fā)送時(shí)鐘。接收器接收數(shù)據(jù)的時(shí)候,用幾倍于波特率的時(shí)鐘對輸入數(shù)據(jù)流過采樣,通常采樣時(shí)鐘為波特率的16倍,然后使用16個(gè)采樣值的中間三個(gè)值。
圖5 各通道發(fā)送程序流程圖
(2)串行異步數(shù)據(jù)傳輸時(shí),發(fā)送方通過在字符幀之間插入任意個(gè)空閑位使得幀與幀之間的時(shí)間間隔各不相同,也就是每個(gè)字符幀的傳送都是隨機(jī)的。
(3)通過起始位來實(shí)現(xiàn)收發(fā)雙方的同步,起始位開啟一個(gè)字符幀的傳送,同時(shí)通知接收方數(shù)據(jù)傳送開始。在傳送每個(gè)幀之前,收發(fā)雙方都可以根據(jù)要求改變通信設(shè)置,例如改變傳輸?shù)乃俾剩úㄌ芈剩⒏淖償?shù)據(jù)位的個(gè)數(shù)、改變校驗(yàn)類型、改變停止位的長度,但發(fā)送和接收雙方的字符格式和波特率必須統(tǒng)一。
UART處理模塊按照邏輯功能可以劃分為六個(gè)小模塊:發(fā)送緩存、接收緩存、波特率產(chǎn)生模塊、邏輯控制模塊、發(fā)送模塊和接收模塊。其中發(fā)送模塊和接收模塊是整個(gè)邏輯電路最核心的功能模塊,它們要完成協(xié)議的轉(zhuǎn)換和數(shù)據(jù)的發(fā)送接收。波特率產(chǎn)生模塊根據(jù)設(shè)定好的波特率產(chǎn)生相應(yīng)的分頻因子,然后對系統(tǒng)時(shí)鐘進(jìn)行相應(yīng)分頻得到波特率時(shí)鐘。采用數(shù)據(jù)緩存模塊FIFO主要有兩個(gè)考慮:一是為了解決FPGA和PCI9030的Local Bus跨時(shí)鐘域通信問題而設(shè)立的,F(xiàn)PGA的內(nèi)部時(shí)鐘與Local Bus上的時(shí)鐘并不一致,數(shù)據(jù)不能直接傳輸,需要一個(gè)緩存地帶來解決存入和取出的速度不同的問題;二是為了很好地解決8路串行通道的向上傳輸競爭問題,由于8路通道同時(shí)工作,各路相互獨(dú)立,而向上傳輸?shù)穆窂絽s只有32位的Local Bus,所以每路設(shè)立FIFO一方面先把數(shù)據(jù)緩存起來,另一方面等待PCI9030對每路FIFO進(jìn)行讀取,由于讀取速度遠(yuǎn)遠(yuǎn)快于數(shù)據(jù)的存儲速度,所以可以保證8路通道與上位機(jī)的即時(shí)通信。邏輯控制模塊則是通過對上位機(jī)的控制信息的讀取,對本通道的相應(yīng)協(xié)議的配置等進(jìn)行控制,同時(shí)也對整個(gè)處理過程進(jìn)行控制。
3.3 HDLC方式
高級數(shù)據(jù)鏈路控制規(guī)程HDLC(High?level Data Link Control)是一個(gè)同步傳輸數(shù)據(jù)、面向比特的數(shù)據(jù)鏈路層協(xié)議[8]。IBM公司在70年代初期的時(shí)候首先提出了面向比特的數(shù)據(jù)鏈路層協(xié)議。該協(xié)議包括主站、從站和復(fù)合站三種類型的站點(diǎn)。主站主要負(fù)責(zé)命令幀的發(fā)送、響應(yīng)幀的接收,同時(shí)還負(fù)責(zé)初始化鏈路、控制流程、檢測差錯(cuò)和恢復(fù)鏈路。從站的主要職責(zé)是接收由主站發(fā)來的命令幀,向主站發(fā)送響應(yīng)幀,同時(shí)從站還配合主站進(jìn)行鏈路控制,比如參與差錯(cuò)恢復(fù)等。復(fù)合站將主站和從站的功能集于一身,既能發(fā)送命令幀又能接收響應(yīng)幀,并且負(fù)責(zé)控制整個(gè)鏈路。
HDLC協(xié)議根據(jù)通信雙方的傳輸響應(yīng)類型和鏈路結(jié)構(gòu),提供了正常響應(yīng)方式、異步響應(yīng)方式和異步平衡方式三種操作方式。本文中的HDLC即采用這種方式,正常響應(yīng)方式(NRM)適用于點(diǎn)?點(diǎn)和點(diǎn)?多點(diǎn)的不平衡鏈路結(jié)構(gòu),特別是點(diǎn)?多點(diǎn)的鏈路。這種方式中,整個(gè)鏈路的控制由主站負(fù)責(zé),主站主要工作包括初始化鏈路、控制數(shù)據(jù)流、恢復(fù)鏈路等。從站操作簡單,只有在主站明確允許的情況下,它才可以作出響應(yīng)。
HDLC處理模塊主要分為七個(gè)小模塊:發(fā)送數(shù)據(jù)幀緩存模塊、接收數(shù)據(jù)幀緩存模塊、時(shí)鐘生成接收模塊、CRC校驗(yàn)碼生成模塊、CRC碼檢驗(yàn)?zāi)K,發(fā)送模塊、接收模塊。其中發(fā)送模塊主要完成HDLC協(xié)議的發(fā)送處理、標(biāo)志字的生成及插入“0”[9]。接收模塊主要完成標(biāo)志字檢測及刪除“0”,HDLC協(xié)議的接收處理等工作。數(shù)據(jù)幀緩存模塊的功能與UART模式下相同。時(shí)鐘生成接收模塊則是負(fù)責(zé)產(chǎn)生每路的發(fā)送同步時(shí)鐘和接收外設(shè)所傳輸?shù)慕邮胀綍r(shí)鐘,該模塊利用FPGA自身的全局時(shí)鐘資源,并不占用邏輯資源。CRC校驗(yàn)碼的生成和檢驗(yàn)則是為了保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,提高線上資源的利用率。
3.4 協(xié)議轉(zhuǎn)換控制模塊
該模塊主要完成與上位機(jī)的通信,讀取上位機(jī)的控制信息,集中控制各通道RS 232/422/485協(xié)議的配置和同異步傳輸方式的配置,對數(shù)據(jù)的傳輸以及各通道相應(yīng)狀態(tài)信息的讀取進(jìn)行簡單的控制,該模塊可以對各通道的傳輸協(xié)議以及方式進(jìn)行設(shè)置以期符合外接設(shè)備的通信要求。
圖6是PCI9030寫入FPGA的部分配置寄存器,其作用一是儲存記錄上位機(jī)控制界面所錄入的配置信息,二是FPGA通過對每路配置寄存器信息的讀取完成對各路的配置。
圖6 部分配置寄存器
表1是兩種寄存器部分標(biāo)志位的定義。
表1 部分配置寄存器標(biāo)志位定義
上位機(jī)控制界面如圖7所示,其功能是對每通道串口都可進(jìn)行通信方式(HDLC/UART)、通信協(xié)議(RS 232/ 422/485)、校驗(yàn)方式及波特率、停止位、數(shù)據(jù)位等進(jìn)行相應(yīng)的選擇及配置,波特率設(shè)置在當(dāng)通信方式為UART下可用;在通信方式為HDLC下,接收時(shí)通過同步時(shí)鐘接收數(shù)據(jù),發(fā)送時(shí)可設(shè)置波特率選擇所需要的同步時(shí)鐘,停止位、數(shù)據(jù)位均不可用。在所有通道配置完畢后,點(diǎn)擊配置按鈕,則將各通道配置信息傳送至FPGA的協(xié)議轉(zhuǎn)換控制模塊完成配置,配置完成后,彈出配置完成對話框,點(diǎn)擊確定后即可進(jìn)行每路通道的接收發(fā)送顯示,接收發(fā)送效果如圖7所示。
圖7 上位機(jī)串行通信效果圖
本文設(shè)計(jì)并實(shí)現(xiàn)了基于FPGA的多協(xié)議串行通信模塊,通過將三種通信協(xié)議集成于一塊板卡上,大大提高了通信模塊的高密度和集成度。FPGA通過接收上位機(jī)控制界面所設(shè)置的配置信息對各通道進(jìn)行配置,使應(yīng)用該模塊的通信板卡能良好的兼容三種通信協(xié)議及同異步通信方式,解決了接口板接口過多、體積過大的問題。目前該板卡已在多套嵌入式系統(tǒng)中得到應(yīng)用,運(yùn)行良好,具有較好的安全性和可靠性。
[1]ANSITIA.ANSITIA?232?F interface between data terminal equipment and data circuit?terminating equipment employing serial binary data interchange[S].[S.l.].ANSITIA,1997.
[2]EIATIA.EIATIA/EIA?422?B electrical characteristics of ba?lanced voltage digital interface circuits[S].[S.l.]:EIATIA,1994.
[3]EIA.EIA TSB?89?A application guidelines for TIA/EIA?485?A [S].USA:EIA,2006.
[4]ANSI.ANSI SCSI X3.131?1986 standard[S].USA:ANSI,1986.
[5]PLX Technology,Inc.SDK user manual[M].USA:PLX Tech?nology,Inc,2006.
[6]吳德銘.基于PCI總線的高速串行通信研究與實(shí)現(xiàn)[D].廈門:廈門大學(xué),2006.
[7]朱勤,錢敏,楊翠軍.嵌入式UART的設(shè)計(jì)及FPGA驗(yàn)證[J].通信技術(shù),2012,45(1):150?153.
[8]張必英.基于FPGA的HDLC協(xié)議控制器的設(shè)計(jì)[D].哈爾濱:哈爾濱工程大學(xué),2005.
[9]高希權(quán).異步傳輸方式的HDLC協(xié)議的實(shí)現(xiàn)[J].通信技術(shù),2008,41(11):78?80.
Design and implementation of intelligent serial communication card based on FPGA
WANG Jian?bo,HU Xiao?ji
(North China institute of computer technology,Business Unit of ruggedized computer product,Beijing,100083,China)
Serial communication module is a part of external communication module which is necessary for every computer. However,because of too many serial communication protocols and interfaces,more resources and volumes are always occupied by the serial communication module.In this paper,three serial communication protocols(RS?232,RS 422 and RS 485)are com?patible with two serial communication modes(UART and HDLC)into an intelligent communication board through FPGA.The configuration of eight serial communication channels is completed under the control of the control interface of upper computer. The overall structure and the hardware design of the communication board are introduced in this article.At last,the communica?tion result of the upper computer control interface is displayed.The conclusion proves that this intelligent serial communication board can execute the switching between multi?protocol and multi?mode,and meet the requirements of different kinds of serial communication as expected.
serial communication;serial protocol;serial mode;FPGA;intelligent serial communication card
TN911?34
A
1004?373X(2015)07?0039?04
王劍博(1988—),男,碩士研究生。主要研究方向?yàn)橛?jì)算機(jī)加固技術(shù)及嵌入式系統(tǒng)。
胡曉吉(1962—),男,正研級高級工程師。主要研究領(lǐng)域?yàn)橛?jì)算機(jī)加固技術(shù)。
2014?10?26