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