999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FPGA的雙CPU雷達監控平臺的設計

2017-09-03 10:57:36航天南湖電子信息技術股份有限公司彭小雨
電子世界 2017年16期
關鍵詞:系統

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

基于FPGA的雙CPU雷達監控平臺的設計

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

探討了一種基于FPGA的雙CPU雷達監控平臺的設計方法,主要介紹了雙CPU的設計方法,以及雙CPU在監控平臺的處理過程,該設計隔離了常規監控與波束控制,且能實現資源共享,大大提高了處理器性能,保證了波束控制的實時性。

FPGA;波束控制;互斥核

引言

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

1 雙CPU(處理器)的設計

1.1 硬件設計

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

圖1 共享資源的雙處理器系統

首要考慮的是資源共享的問題,因為共享的資源能被一個以上處理器所訪問。決定系統中的哪些資源被共享,以及不同處理器之間如何共同使用這個資源是非常關鍵的問題。其中共享資源分為存儲器和外設。通常情況下,Nios II多處理器系統并不支持非存儲設備的共享。

(2)存儲器的共享。存儲器的共享既能用來在兩個處理器之間進行簡單的狀態通信,

也能同時被兩個處理器共同進行復雜的數據結構運算。如果存儲器中包含不只一個處理器的程序代碼,則每個處理器須有不同的存儲器地址。對于程序空間,處理器不能共享存儲器的同一區域。每個處理器必須有自己獨一無二的text、rodata、rwdata、heap和stack段。

在資源共享的雙處理器系統中,當存儲器用來在兩個處理器之間共享數據的話,必須謹慎的進行操作,因為數據是可以讀也可以寫的。如果一個處理器在對存儲器的某一地址寫數據的同時,另一處理器也在對同一地址進行讀寫操作的話,那么就可能發生數據沖突,進而導致程序錯誤,最嚴重的是可能造成系統的崩潰,必須使用一種機制來告知其他的處理器,以免發生沖突。系統中的硬件互斥核就能滿足這個要求。

(3)硬件互斥核。硬件互斥核可以確保在共享資源時不發生沖突。互斥核是作為一種共享資源來使用的,提供了一種測試和設置的操作,每個處理器在使用共享資源前,必須先測試互斥核是否可用,如果可用的話,就獲得了共享資源的使用權,當處理器使用完后,釋放互斥核。與此同時,另一個處理器就可以獲得互斥核并使用共享資源了。如果沒有這個互斥核,實現上述功能的話就需要兩個單獨的測試和設置指令,這時,有可能發生"死鎖"的情況。

互斥內核有一個簡單的Avalon從控制器接口,包含兩個32位存儲器映射寄存器mutex和reset。表1所列為互斥內核寄存器映射。

互斥內核有以下基本操作(假設多個處理器對一個互斥內核進行訪問,并且每個處理器都有一個獨特的系統標識符ID):

表1 互斥內核寄存器映射

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

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

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

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

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

1.2 軟件設計

在雙處理器系統中設計并運行軟件與單處理器系統很類似,僅僅需要考慮以下幾個方面:

(1)程序存儲器

在雙處理器系統中,基于每個處理器的軟件設計必須擁有自己獨有的一段存儲空間,而這些存儲空間又必須同時存放在同一個物理存儲設備上。在一個雙核系統中,兩個處理器都運行在SDRAM上,對于第一個處理器的軟件設計需要128K的程序空間,對于第二個處理器的軟件設計需要64K的空間,這時,第一個處理器使用SDRAM中0x0到0x1FFFF之間的地址空間,第二個處理器使用0x20000到0x2FFFF之間的地址空間。

NiosⅡ和SOPC Builder提供了一個簡單的存儲分配原則來滿足上述要求,這個分配原則使用異常地址來決定運行哪個處理器上的軟件設計。

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

對任何一個單處理器或多處理器系統來說,

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

a)text--存放實際的執行代碼

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

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

d)Heap--自動分配的空間

e)Stack--存放函數調用的參數和其他臨時的數據

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

圖2 雙處理器的存儲器映像分區

(2)啟動地址

在雙處理器系統中,每個處理器必須從自己的程序段中啟動,對于一個非易失性存儲器的同一地址空間上的可執行代碼的相同位,不可能啟動兩個處理器。啟動存儲器和程序存儲器一樣也能被分區,但每段空間的概念和映射就不一樣了,啟動代碼通常只需要把程序代碼拷貝到所映射的存儲器中,然后跳轉到程序代碼就可以了。在同一個非易失性存儲器設備的不同段空間上啟動雙處理器,只需要在存儲器上簡單的設置每個存儲器的復位地址就可以了,在啟動地址之間要留出足夠的空間存放啟動代碼。Nios II Programmer能將多個處理器的啟動代碼編程到一個Flash器件中,Flash Programmer根據每個處理器的復位地址計算Flash內的編程地址。下圖3為從一片Flash中啟動兩個處理器的存儲器映像。

圖3 啟動兩個處理器的存儲器映像

(3)運行和調試雙處理器系統

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

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

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

在每次調試時選擇Nios II multiprocessor collections,點擊Debug按鈕就可以實現雙處理器的調試。

(4)基于Nios II雙處理器系統的API函數

對于Nios II處理器用戶,Altera提供了可用來訪問互斥內核硬件的驅動程序,利用驅動程序

可以直接對低層的硬件進行操作。以下為API函數的說明。

a) altera_avalon_mutex_is_mine()

功能:判斷CPU是否獲得了互斥核的使用權;

b) altera_avalon_mutex_f i rst_lock()

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

c) altera_avalon_mutex_lock()

功能:獲得硬件互斥核,同時用參數裝載互斥核;

d) altera_avalon_mutex_open()

功能:檢索指向硬件互斥核的設備結構指針;

e) altera_avalon_mutex_trylock()

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

f) altera_avalon_mutex_trylock()

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

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

2 雙CPU(處理器)在監控平臺的處理

FPGA采用的是Altera公司的Stratix Ⅱ系列的EP2S60F672I4N器件,該器件具有多處理器功能,且存儲空間有2544192bits,用戶I/ O接口數達492pins,速度等級為4ns,能夠滿足監控平臺的需求。

2.1 監控平臺的工作流程

監控平臺的工作流程圖如下圖4示,監控板上的晶振產生時鐘給FPGA,FPGA內的PLL(時鐘鎖相環)產生兩個處理器工作所需的時鐘,同時產生波控觸發時鐘的原始信號,經觸發時鐘產生器生成周期性的波控觸發時鐘信號,如下圖5示,高電平區域為波束控制區,低電平區域為監控天饋線通訊時間,即波束控制指令必須在320us內全部發送出去。而且必須保證天饋線在雷達PIN方波的第一個接收區接收到指令,以便在第二個接收區將波控指令發送到T/R組件上去,已保證下一周期天饋線能發射最新的波束指向。

圖4 監控平臺工作流程

圖5 波控觸發時鐘信號

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

2.2 軟件實現

(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)狀態緩存

與指令緩存處理類似。

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 驗證

設計完成后在天饋線輸入端通過Quartus自帶的SignalTap Ⅱ工具進行驗證調試,測試結果滿足要求。

3 結束語

本文所設計的雙處理器系統是基于Altera公司的FPGA,因為其Nios II軟核的特點,除了具有一般FPGA的優勢之外,只要在成本允許的情況下,可以很方便對原系統進行升級,即可以實現3核、4核等多核系統,獲得更高水平的計算能力和性能。

[1]潘松,黃繼業,等.SOPC技術使用教程[M].北京:清華大學出版社,2005.

[2]彭澄廉,等.挑戰SOC——基于NIOS的SOPC設計與實踐[M].北京:清華大學出版社,2004.

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

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

猜你喜歡
系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
基于UG的發射箱自動化虛擬裝配系統開發
半沸制皂系統(下)
FAO系統特有功能分析及互聯互通探討
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
一德系統 德行天下
PLC在多段調速系統中的應用
主站蜘蛛池模板: av免费在线观看美女叉开腿| 亚洲一级色| 亚洲狠狠婷婷综合久久久久| 日韩国产黄色网站| 国产精品夜夜嗨视频免费视频| 国产成人a在线观看视频| 免费av一区二区三区在线| 91 九色视频丝袜| 无码又爽又刺激的高潮视频| 91最新精品视频发布页| 一级黄色网站在线免费看| 亚洲欧美在线看片AI| 亚洲IV视频免费在线光看| 久久 午夜福利 张柏芝| 国内丰满少妇猛烈精品播| 日韩无码黄色| 国产成人在线无码免费视频| 国产精品开放后亚洲| 亚洲最大在线观看| 久久精品亚洲中文字幕乱码| 欧美成人一区午夜福利在线| 国产精品亚洲片在线va| 国产一级毛片高清完整视频版| 欧美精品1区| 五月婷婷精品| 久青草国产高清在线视频| 四虎永久在线精品国产免费| 综合人妻久久一区二区精品 | 精品国产一区91在线| 国产内射一区亚洲| 国产精品高清国产三级囯产AV| 免费Aⅴ片在线观看蜜芽Tⅴ | 中文字幕不卡免费高清视频| 青青热久免费精品视频6| 青青草欧美| 97久久精品人人| 精品国产免费人成在线观看| 国产欧美日韩va| 日日噜噜夜夜狠狠视频| 久久免费精品琪琪| 免费看一级毛片波多结衣| 欧美一区二区精品久久久| 中文字幕中文字字幕码一二区| 精品無碼一區在線觀看 | 99热这里只有精品在线观看| 亚洲成人高清无码| 国产在线视频福利资源站| 999精品色在线观看| 久久国产乱子伦视频无卡顿| 无码精品国产VA在线观看DVD| 亚洲高清免费在线观看| 日韩第八页| 中文国产成人精品久久| 精品福利视频导航| 日本手机在线视频| 国产女人18水真多毛片18精品| 国产91高跟丝袜| 免费99精品国产自在现线| 一边摸一边做爽的视频17国产| 91尤物国产尤物福利在线| 老司机精品一区在线视频| 一本一道波多野结衣av黑人在线| 欧美五月婷婷| 91香蕉国产亚洲一二三区| 久久国产高清视频| 色偷偷综合网| 精品国产毛片| 拍国产真实乱人偷精品| 97视频免费在线观看| 国产国模一区二区三区四区| 日本日韩欧美| av在线无码浏览| 91精品啪在线观看国产91九色| 久久99国产综合精品1| 国产丝袜无码精品| 国产免费黄| 国产主播福利在线观看| 国产区精品高清在线观看| 88国产经典欧美一区二区三区| 国产毛片久久国产| 欧美激情伊人| 波多野结衣爽到高潮漏水大喷|