亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的雙CPU雷達監(jiān)控平臺的設(shè)計

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

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

        基于FPGA的雙CPU雷達監(jiān)控平臺的設(shè)計

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

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

        FPGA;波束控制;互斥核

        引言

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

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

        1.1 硬件設(shè)計

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        1.2 軟件設(shè)計

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

        (1)程序存儲器

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

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

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

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

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

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

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

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

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

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

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

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

        (2)啟動地址

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

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

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

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

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

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

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

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

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

        可以直接對低層的硬件進行操作。以下為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ù)裝載互斥核;

        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ù)c)來獲得互斥核的使用權(quán),并把其cpuid控制寄存器的值寫入mutex寄存器的OWNER字段來鎖定互斥核。隨后,使用函數(shù)a)來判斷鎖定是否成功,在使用完互斥核之后,必須使用函數(shù)f)來釋放互斥核。

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

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

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

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

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

        圖5 波控觸發(fā)時鐘信號

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

        2.2 軟件實現(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 驗證

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

        3 結(jié)束語

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

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

        [2]彭澄廉,等.挑戰(zhàn)SOC——基于NIOS的SOPC設(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.

        猜你喜歡
        存儲器饋線寄存器
        靜態(tài)隨機存儲器在軌自檢算法
        Lite寄存器模型的設(shè)計與實現(xiàn)
        變電站10KV饋線開關(guān)與線路開關(guān)的保護配合應(yīng)注意的要點
        電子測試(2017年11期)2017-12-15 08:52:25
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        基于新型材料的短波饋線實踐
        配網(wǎng)饋線接地定位及環(huán)供支線接地選線判據(jù)探討
        存儲器——安格爾(墨西哥)▲
        饋線自動化終端設(shè)備智能接入的研究
        基于Nand Flash的高速存儲器結(jié)構(gòu)設(shè)計
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        樱花AV在线无码| 亚洲av无码片一区二区三区| 日本亲近相奷中文字幕| 隔壁老王国产在线精品| 吃奶呻吟打开双腿做受视频| 精品久久久无码中字| 国产自偷自偷免费一区| 97久久久久人妻精品专区| 久久久www成人免费无遮挡大片| 蜜桃视频中文字幕一区二区三区| 搞黄色很刺激的网站二区| 国产在线av一区二区| 久久精品国产成人午夜福利| 中文字幕网伦射乱中文| 亚洲精品92内射| 中文字幕福利视频| 青草蜜桃视频在线观看| 亚洲av第一区综合激情久久久| 你懂的视频网站亚洲视频| 白白白在线视频免费播放| 精品久久久无码人妻中文字幕豆芽| 日韩免费无码一区二区三区| 中文字幕第一页亚洲| 亚洲中出视频| 日韩av天堂一区二区三区在线| 久久97久久97精品免视看| 国产精品亚洲一区二区无码| 国产精品一卡二卡三卡| 国内偷拍视频一区二区| 国产白色视频在线观看| 免费无遮挡无码永久在线观看视频| 成人网站免费看黄a站视频 | 奇米影视久久777中文字幕| 人妖精品视频在线观看| 中文字幕中乱码一区无线精品| 日韩有码在线一区二区三区合集| 天天综合网网欲色| 亚洲av无码不卡| 亚洲国产成人无码影院| 在线免费观看视频播放| 手机免费在线观看av网址 |