基于FPGA的自定義總線MCMB的設(shè)計與實現(xiàn)
摘要:針對現(xiàn)在對機載數(shù)據(jù)采集系統(tǒng)中總線技術(shù)的要求,采用Altera公司的CycloneIII系列FPGA EP3C40F484,在數(shù)據(jù)采集系統(tǒng)中實現(xiàn)了自定義數(shù)據(jù)采集總線MCMB的設(shè)計。通過Modelsim進行功能仿真,并利用QuartusⅡ自帶的仿真軟件SignaltapⅡ在FPGA上調(diào)試驗證總線IP核設(shè)計的正確性。
關(guān)鍵詞:自定義總線MCMB;機載數(shù)據(jù)采集系統(tǒng);Modelsim;QuartusⅡ
機載數(shù)據(jù)采集系統(tǒng)由于其特殊的應(yīng)用環(huán)境,對數(shù)據(jù)采集的要求較高。飛機一般都在高速、高空、高溫環(huán)境下飛行,所以機載數(shù)據(jù)采集系統(tǒng)不僅要加大系統(tǒng)可靠性和電磁兼容性方面的設(shè)計,還要針對數(shù)據(jù)采集種類多、時間長、數(shù)量大、精度高等要求作更多特殊處理??删幊踢壿嬈骷?FPGA)能將傳統(tǒng)數(shù)據(jù)采集系統(tǒng)中的很多外圍設(shè)備和分立元件集成,減小系統(tǒng)的體積,同時還具備系統(tǒng)在線編程的能力,使系統(tǒng)的維護、開發(fā)、更新變得更加方便。這些特性較好的解決了機載系統(tǒng)對產(chǎn)品重量輕、體積小、可靠性高、復(fù)雜度高等要求。
隨著計算機技術(shù)的發(fā)展,出現(xiàn)了許多優(yōu)秀的總線技術(shù),PCI總線和Wishbone總線就是其中的杰出代表。本文在對PCI總線和Wishhone總線研究的基礎(chǔ)上,在FPGA內(nèi)部設(shè)計實現(xiàn)了一種符合應(yīng)變參數(shù)結(jié)構(gòu)、適用于機載大量數(shù)據(jù)快速穩(wěn)定傳輸?shù)目偩€,在數(shù)據(jù)采集系統(tǒng)內(nèi)部以IP核的形式實現(xiàn)了分布式數(shù)據(jù)采集總線(MCMB總線),真正達到高效、高速的數(shù)據(jù)雙向傳輸。
1 數(shù)據(jù)采集系統(tǒng)的整體設(shè)計
系統(tǒng)整體系統(tǒng)框圖如圖1所示。
機載數(shù)據(jù)采集系統(tǒng)采用模塊化的設(shè)計思想,將機載分布式數(shù)據(jù)采集系統(tǒng)分為主控制單元、供電單元、總線中繼單元、遠程控制單元、傳感器單元這幾個模塊。供電單元負責給整個系統(tǒng)提供所需電源。遠程控制單元負責接收主控制器發(fā)送的信息并對其進行處理。當需實現(xiàn)遠距離傳輸時,在遠程終端處增加中繼單元,延長通信距離。傳感器負責采集外部實時參數(shù)并經(jīng)遠程模塊上傳至主控制器。主控制器控制整個數(shù)據(jù)采集系統(tǒng)的工作,一個主控制器可以連接多個遠程終端,通過自定義的MCMB總線實現(xiàn)數(shù)據(jù)的采集和控制,完成對端點數(shù)據(jù)的采集。下面詳細介紹自定義MCMB總線IP核的設(shè)計。
2 MCMB總線IP核整體設(shè)計
MCMB總線IP核的整體設(shè)計分為SMC接口模塊和MCMB主橋接口模塊兩個部分。SMC接口模塊實現(xiàn)ARM的SMC總線到Wishbone總線的轉(zhuǎn)換,MCMB
主橋接口模塊實現(xiàn)的是Wishbone總線到MCMB總線的轉(zhuǎn)換。這里我們將對這兩個設(shè)計部分做詳細介紹。
(1) SMC接口模塊
實現(xiàn)SMC總線到Wishbone總線的轉(zhuǎn)換,SMC總線至Wishbone總線接口轉(zhuǎn)換模塊如圖2所示。
該模塊的信號轉(zhuǎn)換可以分為以下三種:
1)數(shù)據(jù)地址線
地址線上將SMC總線的地址線SMC_A[15..0 ]譯碼成Wishbone地址總線ADR_O[15..0]。數(shù)據(jù)線上使SMC總線的輸入輸出復(fù)用數(shù)據(jù)線SMC_D轉(zhuǎn)換成兩個分開的單個輸入輸出信號DAT_O[15..0]和DAT_I[15..0]。
2)控制信號
當ARM發(fā)起SMC總線操作時,我們根據(jù)SMC總線操作的類型,譯碼得到以下輸出控制信號:WE_O、 CYC_O、 SEL_O[3..0]、 CTI_O[2..0]、STB_O和BTE_O[1..0]。
SMC總線的讀寫命令分別為NRD和NWE。當NWE為低時,表明當前操作是寫操作。NRD為低時,表明當前操作是瀆操作。Wishbone總線的WE_O信號只在寫操作時有效,所以當FSC0和NWE都有效時,便將WE_O信號置1,證明這是一個有效的寫操作,當FCS0有效但NEW為低時,為讀操作。
CYC_O有效表示W(wǎng)ishbone總線事務(wù)的開始。當ARM發(fā)起SMC總線操作時,可由SMC總線的FCS0信號譯碼得到。
SEL_O[3..0]代表Wishbone數(shù)據(jù)總線上的有效位。在系統(tǒng)的設(shè)計中將SEL_O[3..0]置全1,表明數(shù)據(jù)線上的每一位數(shù)據(jù)郜一直有效。
CTI_O[2..0]譯碼Wishbone總線的操作是單字操作和塊操作。選擇SMC總線地址線A[17]和A[18],A[17]定義為SMC_LAST;A[18]定義為SMC_BURST。這兩個信號用于對CTI_0 [2..0]的譯碼。當進行單字讀寫操作時,SMC_LAST和SMC_BURST均為低,CTI_O [2..0]譯碼為111;當進行塊讀寫操作并且不是最后一個數(shù)據(jù)相時,SMC_LAST為低,SMC_BURST為高,CTI_O[2..0]譯碼輸出010;當進行塊傳輸且為最后一個數(shù)據(jù)相時,SMC_LAST和SMC_BURST均置為高,CTI_O[2..0]譯碼輸出111,代表塊傳輸操作的結(jié)束。
3)響應(yīng)信號譯碼
當外設(shè)和MCMB總線進入等待狀態(tài)時,需要產(chǎn)生NWAIT信號;當外設(shè)和MCMB總線狀態(tài)異常時,需要產(chǎn)生中斷信號。
Wishbone主模塊有三個輸入的響應(yīng)信號,分別為ACK_I、ERR_I、RTY_I。當外設(shè)不能及時響應(yīng)當前操作時,需要在SMC總線上插入等待周期。NWAIT是SMC總線的等待信號。當NWAIT為0時,ARM保持當前SMC總線操作,直到撤銷NWAIT為止。
(2) SMC主橋接口模塊
實現(xiàn)Wishbone總線到MCMB總線的轉(zhuǎn)換,主要是對MCMB總線的各種狀態(tài)進行譯碼,并將譯碼結(jié)果與上面的Wishbone從模塊進行對接。模塊如圖3所示。
①數(shù)據(jù)地址
Wishbine從模塊的地址和數(shù)據(jù)的輸入輸出是分開的,但在MCMB總線上,地址和數(shù)據(jù)復(fù)用一個線,在這主橋中有個譯碼邏輯,將數(shù)據(jù)和地址進行轉(zhuǎn)換。即將ADR_O [15..0]、DATA_I [15..0]和DATA_O [15..0]譯碼為AD [15..0]。
②控制信號
在MCMB事務(wù)的地址相期間,C/BE[2..0]代表總線命令。MCMB支持7種總線操作。在地址相,需要對Wishbone側(cè)總線的命令進行譯碼,轉(zhuǎn)換成MCMB總線C/BE [2..0]的命令再輸出至從設(shè)備。此處的譯碼邏輯和空間地址配置有關(guān),Wishbone從模塊將讀寫信號發(fā)送到MCMB總線模塊,MCMB模塊根據(jù)地址線上的地址譯碼,進行空間的選擇,確定操作的類型,并譯碼出操作的命令C/BE[2..0]信號。
FRAME由主設(shè)備驅(qū)動,表示一個總線事務(wù)的開始和持續(xù)。Wishbone從模塊通過讀寫信號告訴MCMB總線操作的開始,F(xiàn)RAMF有效,指總線操作正在開始;FRAME保持有效,數(shù)據(jù)傳送繼續(xù)進行;當操作完成時FRAME無效時,表明操作已處于最后一個數(shù)據(jù)相;FRAME保持無效,表示該操作已完成。這些操作的譯碼過程均在MCMB總線模塊中完成。
IRDY由總線主設(shè)備驅(qū)動,寫操作時,IRDY#表示主設(shè)備已把寫數(shù)據(jù)放在了AD [15..0]上;讀操作時,IRDY#表示主設(shè)備已準備好接收數(shù)據(jù)線上的數(shù)據(jù)。
TRDY#由目標設(shè)備驅(qū)動,表示目標設(shè)備準備好完成現(xiàn)行數(shù)據(jù)傳輸。寫操作時,TRDY#表示目標設(shè)備已準備好接收數(shù)據(jù);讀操作時,TRDY#表
示目標設(shè)備已將數(shù)據(jù)放在了AD [15..0]上。在TRDY#有效的那一個時鐘的上升沿,數(shù)據(jù)傳送開始并結(jié)束該數(shù)據(jù)傳輸,此時如果TRDY#無效,則認為是插入等待周期。
DEVSEL#由目標設(shè)備驅(qū)動,表示一個目標設(shè)備已對地址傳輸里主設(shè)備發(fā)出的地址進行了譯碼并認領(lǐng)了該操作,成為有效的目標設(shè)備,主設(shè)備根據(jù)該信號確定是否有一設(shè)備被選中,從而發(fā)起讀寫操作。
3 仿真結(jié)果分析
經(jīng)過HDL語言仿真軟件ModelSim仿真,利用Altera公司推出的調(diào)試工具Signal TapⅡ的邏輯分析儀進行軟件調(diào)試。仿真的操作為從設(shè)備單字讀寫操作。通過對從設(shè)備讀寫的仿真和分析來驗證MCMB總線IP核設(shè)計的正確性。
上位機可以對從設(shè)備的存儲空間進行讀寫操作,當上位機發(fā)起寫操作時,SMC總線地址線上的目標地址必須在從設(shè)備的存儲空間范圍內(nèi)。圖4是寫入從設(shè)備存儲空間操作總線IP核MCMB總線側(cè)的時序。SMC_A[15..0]是一個有效地址傳輸,上位機有效片選SMC_FSC0,表明SMC總線事務(wù)開始。同時上位機有效SMC_WE和SMC_D [15..0]給出寫入目標地址的有效數(shù)據(jù)。上化機發(fā)起寫操作,等待從設(shè)備響應(yīng)。當從設(shè)備準備好時,有效TRDY#信號,通知上位機從設(shè)備準備好,開始寫操作。
圖5是從設(shè)備讀操作的時序圖。SMC_A[15..0]給出一個有效地址傳輸,上位機有效片選SMC_FSC0,表明SMC總線操作的開始。上位機肯定SMC_RD,表明SMC總線的讀操作類型,并進入等待狀態(tài)。此時發(fā)起讀操作,等待從設(shè)備響應(yīng),因為讀操作時間較長,所以存在較長的等待周期,不能像寫操作那樣快速的響應(yīng),等待周期較長,當從設(shè)備準備好數(shù)據(jù)并返回到MCMB總線時,肯定TRDY#信號,告訴總線數(shù)據(jù)已經(jīng)準備好,總線將數(shù)據(jù)取出,返回上位機,完成一個讀操作。當?shù)却芷?,超過七個周期時,以從設(shè)備超時完成這個讀操作,防止上位機掛死,一直等待數(shù)據(jù)的返回。
通過上面的仿真結(jié)果可以看出,本文設(shè)計的MCMB總線能夠較好地完成數(shù)據(jù)的采集和傳輸,滿足預(yù)先的設(shè)想,最后通過在整個機載信息采集系統(tǒng)上的測試來驗證MCMB總線的可行性,結(jié)果表明本文設(shè)計的MCMB總線可以較好的完成機載數(shù)據(jù)的采集任務(wù),滿足現(xiàn)代機載采集系統(tǒng)對總線的要求。
4 結(jié)束語
本文主要討論了基于FPGA的數(shù)據(jù)采集總線MCMB在機載數(shù)據(jù)采集系統(tǒng)中的設(shè)計,通過在Modelsim下的仿真,下載到FPGA中進行調(diào)試,驗證了MCMB總線IP核設(shè)計的正確性。實現(xiàn)了分布式的主、從設(shè)備之間的總線接口MCMB,適用于機載大量數(shù)據(jù)快速穩(wěn)定傳輸,真正達到高效、高速的數(shù)據(jù)雙向傳輸。