邱浩淼
摘 要 在當(dāng)前,利用ARM與FPGA高速數(shù)據(jù)通信接口的相關(guān)設(shè)計(jì),滿足了數(shù)據(jù)采集器相關(guān)設(shè)備工作中對(duì)信號(hào)的高速要求。如果要實(shí)現(xiàn)ARM與FPGA之間的信號(hào)交互工作,主要是通過(guò)SPI總線來(lái)進(jìn)行完成,然后數(shù)據(jù)的上傳工作,主要需采用雙口RAM來(lái)完成。這種設(shè)計(jì)其主要目的為了解決在ARM于FPGA運(yùn)行中,其對(duì)數(shù)據(jù)的處理速度匹配不良或不匹配的情況,并且該設(shè)計(jì)滿足高速、實(shí)時(shí)的需求。與此同時(shí),根據(jù)相關(guān)的測(cè)試可以看出,此系統(tǒng)的設(shè)計(jì)不僅促使操作更為簡(jiǎn)單,功能也穩(wěn)定正常。在儀器控制、電子測(cè)量的相關(guān)工作中應(yīng)用廣泛。本文結(jié)合自己相關(guān)經(jīng)驗(yàn),對(duì)基于ARM與FPGA高速數(shù)據(jù)通信接口設(shè)計(jì)進(jìn)行相關(guān)探討。
關(guān)鍵詞 ARM與FPGA;數(shù)據(jù)通信;接口設(shè)計(jì)
前言
這些年來(lái)我國(guó)的科技日新月異,各類儀器的性能也變得越來(lái)越高,從而對(duì)儀器的性能也有了更高的要求和標(biāo)準(zhǔn),其中對(duì)于儀器控制方面有諸多的要求,無(wú)論從儀器的實(shí)時(shí)性能,還是其精準(zhǔn)度、采樣速度等方面,都有著非常高的要求和標(biāo)準(zhǔn)。為了滿足儀器的控制需求,則需要不斷應(yīng)用先進(jìn)的技術(shù),不斷提升通信質(zhì)量,建立高速數(shù)據(jù)通信接口設(shè)計(jì),滿足人們的使用需求。
1LINUX程序設(shè)計(jì)
在過(guò)去的信號(hào)采集工作中,通常需要通過(guò)單片機(jī)或者通過(guò)DSP來(lái)完成。但是,單片機(jī)存在時(shí)鐘頻率不高的情況,導(dǎo)致信號(hào)采集沒(méi)有足夠的速度,也無(wú)法提升效率。如果想要進(jìn)行高速的信息采集,就無(wú)法應(yīng)用單片機(jī)[1]。DSP雖然擁有較快的運(yùn)算速度,但其對(duì)于外部復(fù)雜的硬件沒(méi)有良好的控制。而如果應(yīng)用FPGA就可以避免上述的問(wèn)題,非常適合于高速信號(hào)的采集工作和控制工作,對(duì)提高信息通訊的效率有著極大的作用,進(jìn)而滿足數(shù)據(jù)采集和控制工作需求。相對(duì)來(lái)說(shuō),ARM技術(shù)具有成本低、體積小、速度很快等優(yōu)勢(shì),諸多優(yōu)點(diǎn)集于一身,其比較適合處理大容量的數(shù)據(jù)和控制。如果想要linux系統(tǒng)與FPGA可以配合并使用,就需要設(shè)計(jì)出相應(yīng)的驅(qū)動(dòng)。通過(guò)Linux的分配,設(shè)備被分為三個(gè)類別。再者,設(shè)備的驅(qū)動(dòng)程序主要面對(duì)是使得相應(yīng)硬件可以順利完成其對(duì)應(yīng)的工作,主要通過(guò)對(duì)系統(tǒng)軟件的應(yīng)用編程接口進(jìn)行調(diào)用而產(chǎn)生,與此同時(shí),還要在linux系統(tǒng)下的應(yīng)用程序進(jìn)行設(shè)計(jì),從而實(shí)現(xiàn)對(duì)設(shè)備進(jìn)行相關(guān)的操作。
1.1 驅(qū)動(dòng)程序設(shè)計(jì)
首先是SPI驅(qū)動(dòng),其中包括主機(jī)控制器驅(qū)動(dòng)和SPI外設(shè)驅(qū)動(dòng)。前者由系統(tǒng)自帶,而后者的驅(qū)動(dòng)目標(biāo)是需要注冊(cè)一個(gè)平臺(tái)設(shè)備,包括片選數(shù)量等內(nèi)容。SPI外設(shè)驅(qū)動(dòng)需要外掛在總線上,并且在數(shù)據(jù)傳輸?shù)倪^(guò)程中,用SPI-transfer為主要的借口。該系統(tǒng)主要是與FPGA之間形成發(fā)送工作和相應(yīng)流程,之后由FPGA進(jìn)行對(duì)硬件控制,依照相應(yīng)的參數(shù)和配置完成采集。
1.2 應(yīng)用程序設(shè)計(jì)
本文主要闡述關(guān)于SCPI解釋器的應(yīng)用程序設(shè)計(jì),其基于LXI總線的軟件,而其應(yīng)用程序則基于SCPI進(jìn)行開(kāi)發(fā),如果要判斷PC機(jī)的相關(guān)指令,就要通過(guò)SCPI,之后再判斷應(yīng)該應(yīng)用的執(zhí)行函數(shù)。為了使得Linux與FPGA之間通信提升,本文也主要介紹其回傳命令在執(zhí)行中的設(shè)計(jì)。當(dāng)FPGA采集數(shù)據(jù)完畢后,就會(huì)給ARM一個(gè)信號(hào),ARM收到信號(hào)后,就可以進(jìn)行讀取數(shù)據(jù)[2]。與此同時(shí),DPRAM也開(kāi)始存儲(chǔ)相應(yīng)的數(shù)據(jù),而每次讀取完畢1kb的數(shù)據(jù)后,就會(huì)通知ARM進(jìn)行讀取和計(jì)數(shù)。然后當(dāng)已經(jīng)有了存儲(chǔ)數(shù)據(jù)后,ARM就開(kāi)始回讀存儲(chǔ)的數(shù)據(jù),并存儲(chǔ)到buf之中,當(dāng)讀完畢后,就會(huì)給FPGA信號(hào),促使其可以繼續(xù)寫(xiě),達(dá)成如上循環(huán)工作后,直到計(jì)數(shù)data,將DDR2完成全部讀取數(shù)據(jù)。如此算是一次成功的數(shù)據(jù)傳輸,在實(shí)際測(cè)試中發(fā)現(xiàn),有效提升了數(shù)據(jù)傳輸?shù)男?,符合?dāng)今高速、真實(shí)的數(shù)據(jù)傳輸。
另外是控制臺(tái)程序的設(shè)計(jì),這個(gè)程序主要是源于IVI驅(qū)動(dòng),源于其采集的相關(guān)數(shù)據(jù)和現(xiàn)實(shí)的程序,我們?cè)诳刂婆_(tái)中輸入相關(guān)的參數(shù),繼而執(zhí)行設(shè)置電壓、采樣點(diǎn)等命令,再通過(guò)Socket來(lái)進(jìn)行傳輸,傳輸必要的參數(shù)和占領(lǐng),繼而進(jìn)行比較后發(fā)送指令,最后,再由FPGA來(lái)對(duì)硬件實(shí)現(xiàn)控制,進(jìn)而獲得相應(yīng)的數(shù)據(jù),最終通過(guò)套接字之后在控制臺(tái)最終得以顯示。
2FPGA程序設(shè)計(jì)
在將FPGA的數(shù)據(jù)無(wú)誤的傳送給ARM的過(guò)程中,對(duì)FPGA進(jìn)行設(shè)計(jì)是一項(xiàng)較難的工作,因?yàn)镕PGA與ARM分別采用不同的時(shí)鐘。
2.1 雙口RAM模塊
FPGA擁有較高的處理速度,其等級(jí)為ns級(jí),而ARM為ms級(jí),兩者在數(shù)據(jù)通信過(guò)程中,都存在于難點(diǎn),就是其處理速度無(wú)法達(dá)成一致,因此需要采用異步進(jìn)行通信[3]。在設(shè)計(jì)中,可以采取由雙端口和FIFO進(jìn)行存儲(chǔ)工作,其中利用FIFO存儲(chǔ)是先進(jìn)先出的方式。其僅需要按照始終寫(xiě)入和讀取相關(guān)的數(shù)據(jù)即可,脫離了地址線[4]。而如果采用RAM進(jìn)行存儲(chǔ),地址線、控制線等不會(huì)相互之間產(chǎn)生影響,進(jìn)行獨(dú)立的數(shù)據(jù)讀寫(xiě)工作。在本設(shè)計(jì)之中,設(shè)計(jì)讀取處于固定位置的數(shù)據(jù),因此,要采用RAM的方式。
2.2 NIOSⅡ軟核作為控制核心
該軟件是FPGA的控制核心,對(duì)FPGA中所有模塊之間的工作進(jìn)行控制,以及進(jìn)行協(xié)調(diào)各個(gè)模塊之間的工作。其主要采用NIOS Ⅱ/e 的軟核,其主要包括SPI叢及模塊等多個(gè)模塊。
3結(jié)束語(yǔ)
綜上所述,利用FPGA和ARM相結(jié)合,利用了前者的高速處理信號(hào)的能力,利用了后者較好控制能力,從而設(shè)計(jì)出由ARM和FPGA組合而成的一種高速通信接口。雙口RAM特點(diǎn)在于可以傳輸大量的數(shù)據(jù),提升了數(shù)據(jù)的傳輸吞吐總量,而SPI實(shí)現(xiàn)了對(duì)FPGA 底層的有效控制,提升了一起的通用性能,進(jìn)而應(yīng)用終端傳輸來(lái)進(jìn)行相關(guān)數(shù)據(jù)的輸送工作,較大幅度地提升了系統(tǒng)的效率。
參考文獻(xiàn)
[1] 肖燕娟,楊俊峰.基于USB2.0的高速數(shù)據(jù)通信接口設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008,(05):310-312.
[2] 李剛. 小型PLC的數(shù)據(jù)配置與ARM-FPGA總線接口的研制[D].桂林:廣西科技大學(xué),2015.
[3] 陳佳欣. 基于FPGA與ARM的多功能綜合測(cè)試平臺(tái)研發(fā)[D].上海:上海交通大學(xué),2014.
[4] 廖啟文,Patrick Yin CHIANG,祁楠.面向5G通信的高速PAM4信號(hào)時(shí)鐘與數(shù)據(jù)恢復(fù)技術(shù)[J].中興通訊技術(shù),2018,24(04):21-26.