摘要:首先簡要介紹了CompactPCI異步串口板的通常設(shè)計(jì)方法,并且提出了這些方法的不足之處,重點(diǎn)闡述了基于FPGA狀態(tài)機(jī)和片上總線的新設(shè)計(jì)方案,以及該方案的技術(shù)優(yōu)勢,隨后公布了基于該方案的異步串口板達(dá)到的性能指標(biāo)。通過比較有關(guān)應(yīng)答延遲的試驗(yàn)數(shù)據(jù),提出了基于FPGA狀態(tài)機(jī)和基于DSP處理器的異步串口板卡存在明顯的處理速度差異問題,并基于兩種設(shè)計(jì)方案,解釋了形成差異的原因。最后提出了FPGA狀態(tài)機(jī)對外部總線存儲(chǔ)器或端口的訪問管理性能大幅超越了任何一款DSP處理器的觀點(diǎn),并對同行提出了類似研發(fā)項(xiàng)目的設(shè)計(jì)建議。本文網(wǎng)絡(luò)版地址:http://www. eepw.com.cn/article/248894.htm
關(guān)鍵詞:狀態(tài)機(jī);片上總線;異步串口板;片上系統(tǒng)
DOI: 10.3969/j.issn.1005-5517.2014.6.009
引言
CompactPCI異步串口板安裝在工業(yè)計(jì)算機(jī)CompactPCI擴(kuò)展槽內(nèi),可實(shí)現(xiàn)工業(yè)計(jì)算機(jī)與外圍多路設(shè)備串口之間的異步串行通訊。異步串口板有多種設(shè)計(jì)方案,不同的設(shè)計(jì)方案決定了板卡具有不同的通訊性能和可靠性。根據(jù)任務(wù)要求,某重要設(shè)備的測試平臺(tái)必須達(dá)到36路通道、11種通訊協(xié)議、波特率4/19.2/38.4/57.6/115.2(kbps)、小于1ms的處理時(shí)間、通訊模式可配置和高可靠性的試驗(yàn)要求,因此測試平臺(tái)內(nèi)異步串口板的設(shè)計(jì)方案要面向上述試驗(yàn)要求而制定。
1 背景技術(shù)
1.1 現(xiàn)有技術(shù)
目前CompactPCI異步串口板一般采用以下兩類方法實(shí)現(xiàn)。
1.1.1 使用嵌入式處理器作數(shù)據(jù)處理單元
采用獨(dú)立的嵌入式處理器作為數(shù)據(jù)處理單元,異步串口單元要么使用嵌入式處理器自身的2到3個(gè)異步串口,要么使用連接到FPGA片內(nèi)總線的通用異步收發(fā)器或異步收發(fā)邏輯,從而建立起一主多從式總線結(jié)構(gòu)。
1.1.2 使用FPGA芯片集成收發(fā)邏輯和處理邏輯
采用FPGA芯片集成了若干獨(dú)立的異步串口通路,每個(gè)通路均有一對處理邏輯和收發(fā)邏輯,其中收發(fā)邏輯實(shí)現(xiàn)了一路串行數(shù)據(jù)的接受、發(fā)送和并串轉(zhuǎn)換,處理邏輯實(shí)現(xiàn)了一路串行數(shù)據(jù)的讀取、處理和存儲(chǔ)。
2 設(shè)計(jì)方案
2.1 設(shè)計(jì)思路
為便于性能比較,在采用第一類設(shè)計(jì)方案的總線式系統(tǒng)結(jié)構(gòu)基礎(chǔ)上,分別用TMS320C6416 DSP處理器和FPGA狀態(tài)機(jī)作處理單元,實(shí)現(xiàn)了兩塊異步串口板(兩者系統(tǒng)結(jié)構(gòu)、程序流程、通訊功能和軟硬件接口均相同)。每塊均在FPGA片上總線集成了36個(gè)UART軟核、1個(gè)雙口SDRAM接口邏輯、地址譯碼器、配置狀態(tài)寄存器區(qū),以及串口接收濾波邏輯等,兩者不同之處在于FPGA狀態(tài)機(jī)作處理單元的串口板在FPGA上實(shí)現(xiàn)了一個(gè)完整的片上系統(tǒng)。下文重點(diǎn)介紹了后者的實(shí)現(xiàn)方法、性能指標(biāo),并對兩者的處理速度進(jìn)行了比較和分析。
2.2 實(shí)現(xiàn)方法
2.2.1 板卡設(shè)計(jì)
基于FPGA狀態(tài)機(jī)和WISHBONE片上總線(圖中簡稱為WB總線)的36通路CompactPCI異步串口板系統(tǒng)架構(gòu)如圖1所示。
(1)雙口SDRM
采用IDT7132芯片作為數(shù)據(jù)緩沖區(qū),容量2k×8bit,讀寫周期均為20ns。為了避免上位機(jī)正在更新某數(shù)據(jù)區(qū),而與該數(shù)據(jù)區(qū)對應(yīng)的異步串口要求發(fā)送該數(shù)據(jù)區(qū)的情況,在設(shè)計(jì)中將雙口SDRAM的存儲(chǔ)空間分為兩部分,即上位機(jī)可寫訪問的一級(jí)緩沖區(qū)和WB總線處理邏輯可寫訪問的二級(jí)緩沖區(qū)。對應(yīng)36通路,一級(jí)和二級(jí)緩沖區(qū)均分成了72個(gè)子區(qū),每路異步串口對應(yīng)著一級(jí)緩沖區(qū)內(nèi)的一對發(fā)送子區(qū)和接收子區(qū),以及二級(jí)緩沖區(qū)內(nèi)的一對發(fā)送子區(qū)和接收子區(qū)。上位機(jī)可讀寫一級(jí)發(fā)送子區(qū),但只能讀一級(jí)接收子區(qū);WB總線處理邏輯只能讀一級(jí)發(fā)送子區(qū),可讀寫一級(jí)接收子區(qū)和二級(jí)所有子區(qū)。
(2)FPGA芯片
FPGA芯片為串口板核心器件,選用XC3S2000-4 FG456芯片,I/O口速度達(dá)到5ns。
①WB片內(nèi)總線
即WISHBONE片內(nèi)總線,是一種應(yīng)用普遍的、具有靈活性的IP核互聯(lián)接口。
②異步收發(fā)器
異步收發(fā)器為IP軟核,來源于opencores開源組織,支持WISHBONE接口,與通用異步收發(fā)器兼容,每個(gè)可實(shí)現(xiàn)一路全雙工異步串口通訊。
③雙口SDRM總線接口邏輯
片內(nèi)有兩個(gè)獨(dú)立的雙口SDRAM總線接口邏輯,分別實(shí)現(xiàn)了雙口SDRAM與WISHBONE總線和LOCAL總線的邏輯連接。
④LOCAL總線寄存器區(qū)
為了方便上位機(jī)對各異步串口獨(dú)立靈活配置、全面監(jiān)控工作狀態(tài),必須設(shè)置可供上位機(jī)訪問的若干配置寄存器和狀態(tài)寄存器, 而且LOCAL總線寄存器區(qū)邏輯是上位機(jī)與片內(nèi)WB總線處理邏輯之間的通訊橋梁。
⑤地址譯碼邏輯
片內(nèi)有兩個(gè)獨(dú)立的地址譯碼邏輯,分別根據(jù)LOCAL總線地址和WISHBONE總線地址,片選總線從邏輯。
⑥串口接收濾波邏輯
片內(nèi)36個(gè)獨(dú)立的串口接收濾波邏輯,每個(gè)對應(yīng)一路異步收發(fā)器的接收端,可濾除正負(fù)跳變寬度小于1ms的毛刺,但會(huì)造成1ms的信號(hào)延遲。
⑦WB總線處理邏輯

即WISHBONE總線狀態(tài)機(jī),實(shí)現(xiàn)了訪問WISHBONE總線、數(shù)據(jù)處理、數(shù)據(jù)存儲(chǔ)和各串口通訊協(xié)議的功能。主要任務(wù)是根據(jù)上位機(jī)設(shè)置的LOCAL總線配置寄存器區(qū),設(shè)置各異步收發(fā)器的工作模式,接收串口數(shù)據(jù),遵循通訊協(xié)議,發(fā)送串口數(shù)據(jù),完成一級(jí)、二級(jí)緩沖區(qū)數(shù)據(jù)更新或復(fù)制,并將各串口通道的工作狀態(tài)標(biāo)識(shí)到LOCAL總線狀態(tài)寄存器區(qū),供上位機(jī)查詢。
2.2.2 處理流程
如果上位機(jī)請求更新一級(jí)緩沖區(qū)的某子區(qū),上位機(jī)查詢“FPGA訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,更新一級(jí)緩沖區(qū)的發(fā)送子區(qū),完畢后復(fù)位“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,產(chǎn)生“更新二級(jí)緩沖區(qū)的中斷請求”。WB總線處理邏輯響應(yīng)該中斷,查詢“上位機(jī)訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,若為真,則等待;否則置位“FPGA訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”,讀訪問一級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),并存入二級(jí)緩沖區(qū)的相應(yīng)發(fā)送子區(qū),完畢后復(fù)位“FPGA訪問雙口SDRAM一級(jí)緩沖區(qū)標(biāo)志”。在WB總線處理邏輯更新二級(jí)緩沖區(qū)期間,暫不響應(yīng)異步串口交易中斷。
如果某異步收發(fā)器存在接收發(fā)送任務(wù),即串口交易中斷請求存在,WB總線處理邏輯讀訪問該異步收發(fā)器的中斷狀態(tài)寄存器,如果是發(fā)送中斷,繼續(xù)發(fā)送下一字節(jié),并退出,循環(huán)直至發(fā)送幀結(jié)束;如果是接收中斷,讀訪問接收數(shù)據(jù)寄存器,并將數(shù)據(jù)存入二級(jí)緩沖區(qū)對應(yīng)接收子區(qū)。每接收一個(gè)字節(jié)后,延遲半位,未出現(xiàn)新的接收數(shù)據(jù)中斷,則認(rèn)為已收到完整數(shù)據(jù)幀。隨后設(shè)置“二級(jí)緩沖區(qū)接收子區(qū)覆蓋一級(jí)緩沖區(qū)接收子區(qū)”中斷請求。如果上位機(jī)未訪問一級(jí)緩沖區(qū),則WB總線處理邏輯響應(yīng)上述中斷,執(zhí)行二級(jí)至一級(jí)的某接收子區(qū)“數(shù)據(jù)復(fù)制”,任務(wù)結(jié)束后,清相應(yīng)中斷;如果上位機(jī)正在訪問一級(jí)緩沖區(qū),則等待時(shí)機(jī)再復(fù)制數(shù)據(jù)。
3 試驗(yàn)數(shù)據(jù)分析
在聯(lián)機(jī)試驗(yàn)中,測試平臺(tái)先后使用了由TMS320C6416 DSP處理器和XC3S2000 FPGA狀態(tài)機(jī)作處理單元的異步串口板,分組測試了相同波特率的通道,及全部通道,通訊周期200ms,每通道間隔5ms。試驗(yàn)重點(diǎn)考察應(yīng)答延遲時(shí)間,其由兩部分組成,分別是固有延遲和處理延遲。其中固有延遲由為濾波設(shè)置的1ms濾波延遲和為判斷接收幀結(jié)束而設(shè)置的半位延遲組成,半位延遲與波特率成反比。處理延遲由處理單元訪問總線端口、數(shù)據(jù)處理和實(shí)現(xiàn)通訊協(xié)議所耗時(shí)間組成,實(shí)測應(yīng)答延遲時(shí)間統(tǒng)計(jì)如表1所示。

從統(tǒng)計(jì)表得出如下結(jié)論。
(1)無論采用何種處理單元,處理延遲與波特率和通訊數(shù)據(jù)量無關(guān)。因?yàn)樯衔粰C(jī)已將數(shù)據(jù)寫入各通道的數(shù)據(jù)發(fā)送子區(qū),依據(jù)接收幀命令參數(shù),DSP處理器和FPGA狀態(tài)機(jī)只需進(jìn)行簡單邏輯和算法運(yùn)算即可獲得發(fā)送數(shù)據(jù)幀,對于4-115.2kbps之間的波特率和12字節(jié)的數(shù)據(jù)量,有充分時(shí)間裕量,不會(huì)出現(xiàn)處理瓶頸。
(2)TMS320C6416 DSP處理器作處理單元時(shí),處理延遲及其變化范圍較大,而且通道數(shù)越多,處理延遲及其變化范圍越大,反之則越小。因?yàn)镈SP處理器I/O端口數(shù)量有限,當(dāng)串口通道數(shù)量較多時(shí),DSP處理器要通過片上總線訪問異步收發(fā)器、SDRAM,和相當(dāng)數(shù)量的輸入/輸出端口,以便和上位機(jī)、FPGA交換數(shù)據(jù)和信號(hào)。為了及時(shí)傳輸這些信號(hào),DSP處理器還需要以一定的頻率巡檢這些信號(hào)。另外DSP處理器所有處理過程都是順序執(zhí)行的,處理時(shí)間與程序語句數(shù)量成正比關(guān)系。
(3)XC3S2000 FPGA狀態(tài)機(jī)作處理單元時(shí),處理延遲及其變化范圍很小,而且與通道數(shù)量無關(guān)。因?yàn)?FPGA集成片上系統(tǒng)后,其狀態(tài)機(jī)與其它片上邏輯之間的信號(hào)傳輸通過片內(nèi)布線完成,而布線資源幾乎不受限,不僅簡化了處理單元的處理任務(wù),而且保證了信號(hào)的實(shí)時(shí)傳輸,不必巡檢端口。另外FPGA狀態(tài)機(jī)不僅能夠通過狀態(tài)轉(zhuǎn)移完成時(shí)序功能,而且能夠通過并行處理完成算法功能,所以全部處理時(shí)間基本由訪問總線端口的程序語句數(shù)量決定,與算法和通道數(shù)量幾乎無關(guān)。
(4) FPGA狀態(tài)機(jī)對外部總線或端口的訪問管理性能大幅超越了TMS320C6416 DSP處理器,片上邏輯之間的信號(hào)實(shí)時(shí)傳輸能力也大幅超越了后者。而高性能DSP處理器僅在內(nèi)存中運(yùn)行程序時(shí)速度快,但在管理外部總線存儲(chǔ)器或端口時(shí),其優(yōu)勢無法發(fā)揮。
4 建議
建議同行在研制“具有高時(shí)序性能的、多外設(shè)接口的、功能單一的設(shè)備”時(shí),參考上述基于FPGA狀態(tài)機(jī)和片上總線的設(shè)計(jì)方案。
參考文獻(xiàn):
[1]詹必勝,吳斌方,楊光友.多路同步串口的FPGA傳輸實(shí)現(xiàn)[J].電子產(chǎn)品世界,2009(5):38-40
[2]Xilinx, Inc. Spartan-3 FPGA Family: Complete Datasheet[M].2004
[3]Opencores.WISHBONE System-on-Chip (SoC) Interconnection Architecture for Portable IP Cores[M]. Revision:B.3.2002
[4]Gorban J.UART IP Core[M].Revision: 0.6.2002
[5]孫進(jìn)平,王俊,李偉,等.DSP/FPGA嵌入式實(shí)時(shí)處理技術(shù)及應(yīng)用[M].北京:航空航天大學(xué)出版社,2011