国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的雙CPU雷達(dá)監(jiān)控平臺(tái)的設(shè)計(jì)

2017-09-03 10:57航天南湖電子信息技術(shù)股份有限公司彭小雨
電子世界 2017年16期
關(guān)鍵詞:存儲(chǔ)器饋線寄存器

航天南湖電子信息技術(shù)股份有限公司 彭小雨

基于FPGA的雙CPU雷達(dá)監(jiān)控平臺(tái)的設(shè)計(jì)

航天南湖電子信息技術(shù)股份有限公司 彭小雨

探討了一種基于FPGA的雙CPU雷達(dá)監(jiān)控平臺(tái)的設(shè)計(jì)方法,主要介紹了雙CPU的設(shè)計(jì)方法,以及雙CPU在監(jiān)控平臺(tái)的處理過程,該設(shè)計(jì)隔離了常規(guī)監(jiān)控與波束控制,且能實(shí)現(xiàn)資源共享,大大提高了處理器性能,保證了波束控制的實(shí)時(shí)性。

FPGA;波束控制;互斥核

引言

雷達(dá)的監(jiān)控平臺(tái)是整個(gè)雷達(dá)系統(tǒng)的監(jiān)控中心,實(shí)現(xiàn)雷達(dá)開關(guān)機(jī)、工作狀態(tài)、工作參數(shù)和工作方式的調(diào)整與顯示;實(shí)現(xiàn)高低波束控制;具有全機(jī)BIT功能,實(shí)現(xiàn)全機(jī)故障報(bào)警、相關(guān)、定位、隔離。雷達(dá)工作周期分為發(fā)射周期和接收周期,最短工作周期不到1ms,發(fā)射周期更短,所以對(duì)波束的控制必須在發(fā)射周期內(nèi)完成。這就對(duì)處理器的性能有很高的要求,這就要求必須與常規(guī)的監(jiān)控處理分開進(jìn)行。由于生產(chǎn)技術(shù)的限制,傳統(tǒng)通過提升工作頻率來提升處理器性能的作法目前面臨嚴(yán)重的阻礙,高頻CPU的耗電量和發(fā)熱量越來越大,已經(jīng)給整機(jī)散熱帶來十分嚴(yán)峻的考驗(yàn)。雙核技術(shù)可以很好的避免這一點(diǎn)。增加一個(gè)內(nèi)核,處理器每個(gè)時(shí)鐘周期內(nèi)可執(zhí)行的單元數(shù)將增加一倍。所以設(shè)計(jì)考慮采用兩個(gè)處理器分別來處理這兩種不同的任務(wù)。Nios II系列嵌入式處理器使用32位的指令集結(jié)構(gòu)ISA,完全與二進(jìn)制代碼兼容,它是Altera公司的第二代軟核嵌入式處理器,性能超過200DMIPS。是Altera公司特有的基于通用FPGA架構(gòu)的軟CPU內(nèi)核。SOPC(System on Programmable Chip,簡(jiǎn)稱為可編程片上系統(tǒng))技術(shù),即用大規(guī)??删幊唐骷腇PGA來實(shí)現(xiàn)SOC的功能。SOPC Builder是一個(gè)革命性的系統(tǒng)級(jí)開發(fā)工具,可以用來構(gòu)建包括處理器、存儲(chǔ)器接口和I/O外設(shè)的嵌入式系統(tǒng)。使嵌入式系統(tǒng)在硬件結(jié)構(gòu)、功能特點(diǎn)、資源占用等方面全面滿足監(jiān)控平臺(tái)設(shè)計(jì)的要求。Altera公司的NiosII處理器和SOPC Builder開發(fā)工具能快速地設(shè)計(jì)并實(shí)現(xiàn)資源共享的多處理器系統(tǒng)。

1 雙CPU(處理器)的設(shè)計(jì)

1.1 硬件設(shè)計(jì)

(1)資源共享的雙處理器系統(tǒng)如圖1所示:

圖1 共享資源的雙處理器系統(tǒng)

首要考慮的是資源共享的問題,因?yàn)楣蚕淼馁Y源能被一個(gè)以上處理器所訪問。決定系統(tǒng)中的哪些資源被共享,以及不同處理器之間如何共同使用這個(gè)資源是非常關(guān)鍵的問題。其中共享資源分為存儲(chǔ)器和外設(shè)。通常情況下,Nios II多處理器系統(tǒng)并不支持非存儲(chǔ)設(shè)備的共享。

(2)存儲(chǔ)器的共享。存儲(chǔ)器的共享既能用來在兩個(gè)處理器之間進(jìn)行簡(jiǎn)單的狀態(tài)通信,

也能同時(shí)被兩個(gè)處理器共同進(jìn)行復(fù)雜的數(shù)據(jù)結(jié)構(gòu)運(yùn)算。如果存儲(chǔ)器中包含不只一個(gè)處理器的程序代碼,則每個(gè)處理器須有不同的存儲(chǔ)器地址。對(duì)于程序空間,處理器不能共享存儲(chǔ)器的同一區(qū)域。每個(gè)處理器必須有自己獨(dú)一無二的text、rodata、rwdata、heap和stack段。

在資源共享的雙處理器系統(tǒng)中,當(dāng)存儲(chǔ)器用來在兩個(gè)處理器之間共享數(shù)據(jù)的話,必須謹(jǐn)慎的進(jìn)行操作,因?yàn)閿?shù)據(jù)是可以讀也可以寫的。如果一個(gè)處理器在對(duì)存儲(chǔ)器的某一地址寫數(shù)據(jù)的同時(shí),另一處理器也在對(duì)同一地址進(jìn)行讀寫操作的話,那么就可能發(fā)生數(shù)據(jù)沖突,進(jìn)而導(dǎo)致程序錯(cuò)誤,最嚴(yán)重的是可能造成系統(tǒng)的崩潰,必須使用一種機(jī)制來告知其他的處理器,以免發(fā)生沖突。系統(tǒng)中的硬件互斥核就能滿足這個(gè)要求。

(3)硬件互斥核。硬件互斥核可以確保在共享資源時(shí)不發(fā)生沖突?;コ夂耸亲鳛橐环N共享資源來使用的,提供了一種測(cè)試和設(shè)置的操作,每個(gè)處理器在使用共享資源前,必須先測(cè)試互斥核是否可用,如果可用的話,就獲得了共享資源的使用權(quán),當(dāng)處理器使用完后,釋放互斥核。與此同時(shí),另一個(gè)處理器就可以獲得互斥核并使用共享資源了。如果沒有這個(gè)互斥核,實(shí)現(xiàn)上述功能的話就需要兩個(gè)單獨(dú)的測(cè)試和設(shè)置指令,這時(shí),有可能發(fā)生"死鎖"的情況。

互斥內(nèi)核有一個(gè)簡(jiǎn)單的Avalon從控制器接口,包含兩個(gè)32位存儲(chǔ)器映射寄存器mutex和reset。表1所列為互斥內(nèi)核寄存器映射。

互斥內(nèi)核有以下基本操作(假設(shè)多個(gè)處理器對(duì)一個(gè)互斥內(nèi)核進(jìn)行訪問,并且每個(gè)處理器都有一個(gè)獨(dú)特的系統(tǒng)標(biāo)識(shí)符ID):

表1 互斥內(nèi)核寄存器映射

a) VALUE字段的值為0x0000時(shí),互斥體可用(互斥體解除鎖定);否則,互斥體不可用(互斥體被鎖定)。

b) mutex寄存器總是可讀的。一個(gè)處理器(或任何Avalon主控制器外設(shè))可通過讀取mutex寄存器來確定其當(dāng)前的狀態(tài)。

c) mutex寄存器只在特定的條件下可寫。只有滿足下面的其中一個(gè)條件或兩個(gè)條件都滿足,才能通過寫操作來更改mutex寄存器的內(nèi)容:即mutex寄存器的VALUE字段的值為0或者mutex寄存器OWNER字段與被寫入數(shù)據(jù)的OWNER字段相匹配。

d) 處理器可通過將它的ID寫入OWNER字段和向VALUE字段寫入一個(gè)非零值來獲取互斥體。然后處理器再通過驗(yàn)證OWNER字段來檢查是否成功地獲得了互斥體。

e) 系統(tǒng)復(fù)位后,reset寄存器的RESET位為高。該位通過向其寫入1來清除。

1.2 軟件設(shè)計(jì)

在雙處理器系統(tǒng)中設(shè)計(jì)并運(yùn)行軟件與單處理器系統(tǒng)很類似,僅僅需要考慮以下幾個(gè)方面:

(1)程序存儲(chǔ)器

在雙處理器系統(tǒng)中,基于每個(gè)處理器的軟件設(shè)計(jì)必須擁有自己獨(dú)有的一段存儲(chǔ)空間,而這些存儲(chǔ)空間又必須同時(shí)存放在同一個(gè)物理存儲(chǔ)設(shè)備上。在一個(gè)雙核系統(tǒng)中,兩個(gè)處理器都運(yùn)行在SDRAM上,對(duì)于第一個(gè)處理器的軟件設(shè)計(jì)需要128K的程序空間,對(duì)于第二個(gè)處理器的軟件設(shè)計(jì)需要64K的空間,這時(shí),第一個(gè)處理器使用SDRAM中0x0到0x1FFFF之間的地址空間,第二個(gè)處理器使用0x20000到0x2FFFF之間的地址空間。

NiosⅡ和SOPC Builder提供了一個(gè)簡(jiǎn)單的存儲(chǔ)分配原則來滿足上述要求,這個(gè)分配原則使用異常地址來決定運(yùn)行哪個(gè)處理器上的軟件設(shè)計(jì)。

Nios II IDE最終負(fù)責(zé)鏈接處理器的軟件設(shè)計(jì)并映射到存儲(chǔ)器中,并為每個(gè)處理器提供其擁有的段空間來運(yùn)行軟件設(shè)計(jì)。如果多個(gè)處理器的軟件設(shè)計(jì)被映射到同一個(gè)物理存儲(chǔ)設(shè)備上,此時(shí)每個(gè)處理器的異常地址就用來決定哪一個(gè)處理器的軟件設(shè)計(jì)能占據(jù)空間的基地址。

對(duì)任何一個(gè)單處理器或多處理器系統(tǒng)來說,

有5個(gè)主要的代碼段需要映射到存儲(chǔ)器的同定地址中,這些代碼段是:

a)text--存放實(shí)際的執(zhí)行代碼

b)rodata--存放實(shí)際執(zhí)行代碼中所使用的常量

c)rwdata--存放讀/寫變量和指針

d)Heap--自動(dòng)分配的空間

e)Stack--存放函數(shù)調(diào)用的參數(shù)和其他臨時(shí)的數(shù)據(jù)

在雙處理器系統(tǒng)中,可能需要僅僅使用一個(gè)存儲(chǔ)器來存放每個(gè)處理器的所有代碼段。在這時(shí),每個(gè)處理器的異常地址就用來指定各個(gè)處理器之間的邊界,如圖2所示:

圖2 雙處理器的存儲(chǔ)器映像分區(qū)

(2)啟動(dòng)地址

在雙處理器系統(tǒng)中,每個(gè)處理器必須從自己的程序段中啟動(dòng),對(duì)于一個(gè)非易失性存儲(chǔ)器的同一地址空間上的可執(zhí)行代碼的相同位,不可能啟動(dòng)兩個(gè)處理器。啟動(dòng)存儲(chǔ)器和程序存儲(chǔ)器一樣也能被分區(qū),但每段空間的概念和映射就不一樣了,啟動(dòng)代碼通常只需要把程序代碼拷貝到所映射的存儲(chǔ)器中,然后跳轉(zhuǎn)到程序代碼就可以了。在同一個(gè)非易失性存儲(chǔ)器設(shè)備的不同段空間上啟動(dòng)雙處理器,只需要在存儲(chǔ)器上簡(jiǎn)單的設(shè)置每個(gè)存儲(chǔ)器的復(fù)位地址就可以了,在啟動(dòng)地址之間要留出足夠的空間存放啟動(dòng)代碼。Nios II Programmer能將多個(gè)處理器的啟動(dòng)代碼編程到一個(gè)Flash器件中,F(xiàn)lash Programmer根據(jù)每個(gè)處理器的復(fù)位地址計(jì)算Flash內(nèi)的編程地址。下圖3為從一片F(xiàn)lash中啟動(dòng)兩個(gè)處理器的存儲(chǔ)器映像。

圖3 啟動(dòng)兩個(gè)處理器的存儲(chǔ)器映像

(3)運(yùn)行和調(diào)試雙處理器系統(tǒng)

Nios II IDE中包含許多幫助開發(fā)多處理器系統(tǒng)軟件的工具。最重要的是對(duì)多處理器具有可同時(shí)進(jìn)行在線調(diào)試的能力。在多處理器系統(tǒng)上,多個(gè)調(diào)試可同時(shí)運(yùn)行,每個(gè)處理器可以單獨(dú)暫停和恢復(fù),也可以單獨(dú)設(shè)置每個(gè)處理器的斷點(diǎn)。如果某個(gè)處理器停在一個(gè)斷點(diǎn)處,將不影響其它處理器的操作。每個(gè)調(diào)試通道也可以單獨(dú)打開和停止。在Nios II IDE中,利用一個(gè)稱之為multiprocessor collections的功能,一個(gè)操作就可以打開多個(gè)處理器的調(diào)試通道。multiprocessor collections是被連接在一個(gè)配置名字下的每個(gè)處理器的調(diào)試配置組。使用multiprocessor collections的好處是,無論何時(shí)打開collections,Nios II IDE均打開每個(gè)debug通道。不用分別打開每個(gè)處理器通道。也可以用一個(gè)操作停止multiprocessor collections,但同時(shí)暫停和恢復(fù)multiprocessor collections目前不被支持。

multiprocessor collections的打開和停止不是同時(shí)的,這意味著在collections中的處理器不能在同一時(shí)鐘周期開始執(zhí)行代碼。事實(shí)上,不同處理器的啟動(dòng)可能有幾秒鐘的延遲。

在Nios II IDE中,創(chuàng)建兩個(gè)C/C++應(yīng)用工程,hello_word_0和hello_word_1,然后選擇Windows->Preferences,選擇Nios II,選中Allow muiliple active run/debug sessions,單擊OK按鈕就可以激活多個(gè)處理器的run/debug通道,然后創(chuàng)建多處理器集合。

在每次調(diào)試時(shí)選擇Nios II multiprocessor collections,點(diǎn)擊Debug按鈕就可以實(shí)現(xiàn)雙處理器的調(diào)試。

(4)基于Nios II雙處理器系統(tǒng)的API函數(shù)

對(duì)于Nios II處理器用戶,Altera提供了可用來訪問互斥內(nèi)核硬件的驅(qū)動(dòng)程序,利用驅(qū)動(dòng)程序

可以直接對(duì)低層的硬件進(jìn)行操作。以下為API函數(shù)的說明。

a) altera_avalon_mutex_is_mine()

功能:判斷CPU是否獲得了互斥核的使用權(quán);

b) altera_avalon_mutex_f i rst_lock()

功能:判斷自從復(fù)位后互斥核是否已被釋放;

c) altera_avalon_mutex_lock()

功能:獲得硬件互斥核,同時(shí)用參數(shù)裝載互斥核;

d) altera_avalon_mutex_open()

功能:檢索指向硬件互斥核的設(shè)備結(jié)構(gòu)指針;

e) altera_avalon_mutex_trylock()

功能:嘗試鎖定硬件互斥核并立即返回;

f) altera_avalon_mutex_trylock()

功能:釋放硬件互斥核。并把存在互斥核中的值設(shè)為0。

Nios II多處理器系統(tǒng)的工作流程大致如下:先使用函數(shù)d)打開互斥核,然后使用函數(shù)b)來判斷是否已經(jīng)有處理器獲得了互斥核,使用函數(shù)e)來判斷互斥核此時(shí)是否可用,并嘗試獲得互斥核,使用函數(shù)c)來獲得互斥核的使用權(quán),并把其cpuid控制寄存器的值寫入mutex寄存器的OWNER字段來鎖定互斥核。隨后,使用函數(shù)a)來判斷鎖定是否成功,在使用完互斥核之后,必須使用函數(shù)f)來釋放互斥核。

2 雙CPU(處理器)在監(jiān)控平臺(tái)的處理

FPGA采用的是Altera公司的Stratix Ⅱ系列的EP2S60F672I4N器件,該器件具有多處理器功能,且存儲(chǔ)空間有2544192bits,用戶I/ O接口數(shù)達(dá)492pins,速度等級(jí)為4ns,能夠滿足監(jiān)控平臺(tái)的需求。

2.1 監(jiān)控平臺(tái)的工作流程

監(jiān)控平臺(tái)的工作流程圖如下圖4示,監(jiān)控板上的晶振產(chǎn)生時(shí)鐘給FPGA,F(xiàn)PGA內(nèi)的PLL(時(shí)鐘鎖相環(huán))產(chǎn)生兩個(gè)處理器工作所需的時(shí)鐘,同時(shí)產(chǎn)生波控觸發(fā)時(shí)鐘的原始信號(hào),經(jīng)觸發(fā)時(shí)鐘產(chǎn)生器生成周期性的波控觸發(fā)時(shí)鐘信號(hào),如下圖5示,高電平區(qū)域?yàn)椴ㄊ刂茀^(qū),低電平區(qū)域?yàn)楸O(jiān)控天饋線通訊時(shí)間,即波束控制指令必須在320us內(nèi)全部發(fā)送出去。而且必須保證天饋線在雷達(dá)PIN方波的第一個(gè)接收區(qū)接收到指令,以便在第二個(gè)接收區(qū)將波控指令發(fā)送到T/R組件上去,已保證下一周期天饋線能發(fā)射最新的波束指向。

圖4 監(jiān)控平臺(tái)工作流程

圖5 波控觸發(fā)時(shí)鐘信號(hào)

波控觸發(fā)寄存器觸發(fā)設(shè)置為沿觸發(fā),當(dāng)觸發(fā)時(shí)鐘上升沿來時(shí)發(fā)送波束控制指令,當(dāng)下降沿來時(shí)提取共享緩存內(nèi)存放的天饋線查詢指令發(fā)送到天饋線分系統(tǒng)查詢天饋線狀態(tài),提取指令前必須讀取互斥核的狀態(tài),當(dāng)互斥核沒有被任意一處理器使用時(shí)即可提取指令進(jìn)行查詢工作。同樣將天饋線返回的狀態(tài)數(shù)據(jù)放入共享緩存的數(shù)據(jù)區(qū),放入共享緩存前同樣需要查詢互斥核的狀態(tài),當(dāng)可用時(shí)才能放入數(shù)據(jù)。上述即為CPU2工作的情況。與CPU2并行工作的CPU1主要完成雷達(dá)系統(tǒng)的監(jiān)控工作,通過監(jiān)控板上的串口接收人機(jī)界面發(fā)送的分系統(tǒng)狀態(tài)控制指令,天饋分系統(tǒng)的控制指令同樣存放到共享緩存的指令區(qū)域,同時(shí)將存放在共享緩存的天饋線狀態(tài)提取出來送人機(jī)界面顯示,在操作共享緩存時(shí)堅(jiān)持一個(gè)原則,保證互斥核是可用的。

2.2 軟件實(shí)現(xiàn)

(1)定義共享緩存

#def i ne share_trrbuf_base SHARE_MEM_BASE //0x4000

#def i ne share_trtbuf_base 0x4400

//SHARE_MEM_BASE+0x400

volatile share_trtbuffer_struct *trtbuf;

volatile share_trrbuffer_struct *trrbuf;

(2)初始化

mut=altera_avalon_mutex_open (“/dev/mutex”);

trrbuf=(volatile share_trrbuffer_struct *)

share_trrbuf_base;

trtbuf=(volatile share_trtbuffer_struct *)

share_trtbuf_base;

(3)指令緩存

#def i ne LOCK_SUCCESS 0#def i ne ERROR_ALLOWED_ACCESS_WITHOUT_ OWNING_MUTEX 2

void cpyinstru(char *dest,char *source,int len,

alt_mutex_dev *mutex,alt_u32 value )

{ unsigned int error_code = 0;

// Try and aquire the mutex (non-blocking).

if(altera_avalon_mutex_trylock(mutex, value) == LOCK_SUCCESS)

{ // Just make sure we own the mutex

if(altera_avalon_mutex_is_mine(mutex))

{ memcpy(dest,source,len);

}

else

{

error_code = ERROR_ALLOWED_ACCESS_WITHOUT_OWNING_MUTEX;

}

// Release the mutex

altera_avalon_mutex_unlock(mutex);

}

}

(4)狀態(tài)緩存

與指令緩存處理類似。

void mutwrite(char *dest,char *source,alt_mutex_dev * mutex,alt_u32 value,alt_ fd *fd,int len)

{

unsigned int error_code = 0;

// Try and aquire the mutex (non-blocking).

if(altera_avalon_mutex_trylock(mutex, value) == LOCK_SUCCESS)

{

// Just make sure we own the mutex

if(altera_avalon_mutex_is_mine(mutex))

{

memcpy(dest,source,len);

}

else

{

error_code = ERROR_ALLOWED_ACCESS_WITHOUT_OWNING_MUTEX;

}

// Release the mutex

altera_avalon_mutex_unlock(mutex);

}

}

2.3 驗(yàn)證

設(shè)計(jì)完成后在天饋線輸入端通過Quartus自帶的SignalTap Ⅱ工具進(jìn)行驗(yàn)證調(diào)試,測(cè)試結(jié)果滿足要求。

3 結(jié)束語

本文所設(shè)計(jì)的雙處理器系統(tǒng)是基于Altera公司的FPGA,因?yàn)槠銷ios II軟核的特點(diǎn),除了具有一般FPGA的優(yōu)勢(shì)之外,只要在成本允許的情況下,可以很方便對(duì)原系統(tǒng)進(jìn)行升級(jí),即可以實(shí)現(xiàn)3核、4核等多核系統(tǒng),獲得更高水平的計(jì)算能力和性能。

[1]潘松,黃繼業(yè),等.SOPC技術(shù)使用教程[M].北京:清華大學(xué)出版社,2005.

[2]彭澄廉,等.挑戰(zhàn)SOC——基于NIOS的SOPC設(shè)計(jì)與實(shí)踐[M].北京:清華大學(xué)出版社,2004.

[3]Altera Corp.Nios II Processor Reference Handbook.Altera,2005.

[4]Altera Corp.Creating Multiprocessor Nios II Systems Tutorial. Altera,2005.

猜你喜歡
存儲(chǔ)器饋線寄存器
靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
變電站10KV饋線開關(guān)與線路開關(guān)的保護(hù)配合應(yīng)注意的要點(diǎn)
分簇結(jié)構(gòu)向量寄存器分配策略研究*
基于新型材料的短波饋線實(shí)踐
配網(wǎng)饋線接地定位及環(huán)供支線接地選線判據(jù)探討
存儲(chǔ)器——安格爾(墨西哥)▲
饋線自動(dòng)化終端設(shè)備智能接入的研究
基于Nand Flash的高速存儲(chǔ)器結(jié)構(gòu)設(shè)計(jì)
高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用