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

?

FPGA設(shè)計(jì)中信號(hào)量管理的硬件電路設(shè)計(jì)

2016-02-26 01:56高承王正彥

高承,王正彥

(青島大學(xué),青島 266071)

?

FPGA設(shè)計(jì)中信號(hào)量管理的硬件電路設(shè)計(jì)

高承,王正彥

(青島大學(xué),青島 266071)

摘要:在對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II中任務(wù)之間通信進(jìn)行深入研究的基礎(chǔ)上,提出了將信號(hào)量的管理用基于FPGA設(shè)計(jì)的硬件電路來(lái)完成,同時(shí)保證新的混合式實(shí)時(shí)操作系統(tǒng)對(duì)用戶來(lái)說(shuō)是透明的,即保證了混合式實(shí)時(shí)操作系統(tǒng)的可移植性。經(jīng)過(guò)設(shè)計(jì)和不斷地改進(jìn),混合式實(shí)時(shí)操作系統(tǒng)成功的移植到Altera公司的DE2-70開(kāi)發(fā)板上,并完成了信號(hào)量管理的測(cè)試。這是一次探索性的設(shè)計(jì),是混合式嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì)中非常重要的一部分。

關(guān)鍵詞:RTOS;FPGA;Nios II;信號(hào)量

引言

隨著信息化、智能化、網(wǎng)絡(luò)化的發(fā)展,嵌入式系統(tǒng)獲得了廣闊的發(fā)展空間。目前嵌入式技術(shù)已成為智能領(lǐng)域的核心技術(shù),特別是物聯(lián)網(wǎng)的爆發(fā)為嵌入式系統(tǒng)提供了廣闊的應(yīng)用空間。

嵌入式系統(tǒng)推動(dòng)了物聯(lián)網(wǎng)的崛起,物聯(lián)網(wǎng)的崛起,也帶來(lái)嵌入式系統(tǒng)巨大的發(fā)展?jié)摿ΑN锫?lián)網(wǎng)的核心設(shè)備是智能終端,物聯(lián)的實(shí)現(xiàn)就是智能終端的網(wǎng)絡(luò)化運(yùn)行。嵌入式系統(tǒng)又是智能終端的“大腦”和“中樞神經(jīng)”,因此嵌入式系統(tǒng)是物聯(lián)網(wǎng)產(chǎn)業(yè)發(fā)展的核心推動(dòng)力。嵌入式系統(tǒng)是計(jì)算機(jī)硬件與軟件高度融合的智能體,已經(jīng)形成了巨大的技術(shù)空間和人才市場(chǎng)。實(shí)時(shí)操作系統(tǒng)(RTOS)是嵌入式系統(tǒng)的基礎(chǔ)運(yùn)行平臺(tái),其性能的好壞直接影響嵌入式系統(tǒng)性能的高低。

傳統(tǒng)的嵌入式實(shí)時(shí)操作系統(tǒng),內(nèi)核和應(yīng)用程序是放在一起的,內(nèi)核任務(wù)的優(yōu)先級(jí)一般高于應(yīng)用程序任務(wù)的優(yōu)先級(jí),因此內(nèi)核任務(wù)優(yōu)先享有CPU使用權(quán),進(jìn)而使應(yīng)用程序的執(zhí)行效率降低。目前,提高嵌入式實(shí)時(shí)操作系統(tǒng)處理能力主要是通過(guò)使用更高主頻和更多位數(shù)的處理器,或者是改進(jìn)軟件編程算法來(lái)實(shí)現(xiàn)。但是處理器主頻和位數(shù)的提高受限于當(dāng)前的制造工藝,而軟件編程算法已經(jīng)不能使其實(shí)時(shí)性和穩(wěn)定性進(jìn)一步提高。因此,單純依靠這兩種方式來(lái)提高嵌入式實(shí)時(shí)操作系統(tǒng)的處理能力已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足需要。鑒于硬件電路在處理并發(fā)性任務(wù)時(shí)的優(yōu)異表現(xiàn),越來(lái)越多的研究人員開(kāi)始將目光轉(zhuǎn)向硬件實(shí)時(shí)操作系統(tǒng)(HRTOS),而近年來(lái)不斷發(fā)展的FPGA也為完成一個(gè)硬件實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)提供了很大的便利。

從20世紀(jì)80年代開(kāi)始,國(guó)外就提出了硬件實(shí)時(shí)操作系統(tǒng)的概念。美國(guó)的JAEHWAN LEE和INCENT JOHN MOOENY III在分析比較了RTOS調(diào)度器的軟件、硬件實(shí)現(xiàn)的基礎(chǔ)上,提出專用硬件IP核實(shí)現(xiàn)RTOS調(diào)度器,將會(huì)大大提高RTOS的工作效率。任務(wù)調(diào)度是RTOS的核心所在,任務(wù)間的通信、外部時(shí)間的處理以及中斷處理等都離不開(kāi)任務(wù)調(diào)度的參與。

巴西的MELLISSA VETROMILLE和LUCIANO OST分析并對(duì)比了將RTOS系統(tǒng)任務(wù)調(diào)度器分別采用硬件和軟件實(shí)現(xiàn)的效率,結(jié)果表明硬件調(diào)度模型具有更高的性能。

美國(guó)馬里蘭大學(xué)的PAUL KOHOUT、BRINDA GANESH和BRUCE JACOB 實(shí)現(xiàn)了硬件實(shí)時(shí)任務(wù)管理,結(jié)果也同樣表明由硬件來(lái)完成最為耗時(shí)的任務(wù)管理所用時(shí)間更短且更可靠。

東北大學(xué)的尹振宇、趙海、許久強(qiáng)等提出了一種基于硬件操作系統(tǒng)(HOS)的設(shè)計(jì)結(jié)構(gòu),在處理器中添加微代碼處理邏輯及硬件處理模塊,將比較耗時(shí)的操作采用硬件來(lái)實(shí)現(xiàn)。

總結(jié)國(guó)內(nèi)外的發(fā)展趨勢(shì),目標(biāo)都是設(shè)計(jì)一款獨(dú)立的硬件實(shí)時(shí)操作系統(tǒng)。但是,獨(dú)立的硬件實(shí)時(shí)操作系統(tǒng)沒(méi)有統(tǒng)一的標(biāo)準(zhǔn),可移植性也就不夠強(qiáng)?;诳梢浦残缘目紤],通過(guò)在已有的軟件實(shí)時(shí)操作系統(tǒng)研究的基礎(chǔ)上,采用軟硬件結(jié)合的方式來(lái)設(shè)計(jì)一款實(shí)時(shí)操作系統(tǒng),既可以提高效率,又能夠保證可移植性。

1混合式實(shí)時(shí)操作系統(tǒng)整體設(shè)計(jì)框架

1.1實(shí)時(shí)操作系統(tǒng)和平臺(tái)的選擇

μC/OS-II[1]由Micrium公司提供,是一個(gè)可移植、可固化、可裁減、占先式、多任務(wù)實(shí)時(shí)內(nèi)核。它提供了基于優(yōu)先級(jí)的任務(wù)調(diào)度與管理、任務(wù)間同步通信、時(shí)間管理和中斷服務(wù)、內(nèi)存管理等功能。整個(gè)內(nèi)核基本上都是由C語(yǔ)言編寫而成,只有少部分CPU 硬件相關(guān)部分是采用匯編語(yǔ)言編寫的(匯編語(yǔ)言總量只有約200行),便于移植到任何一種其他的CPU 上。正是由于這些優(yōu)勢(shì),所以選用μC/OS-II作為混合式RTOS的參考系統(tǒng)。

硬件部分的設(shè)計(jì)采用硬件描述語(yǔ)言Verilog HDL[2]來(lái)進(jìn)行編寫并綜合出硬件電路。選用的軟件為Quartus II9.1和NiosII-IDE,Quartus II9.1所帶的SOPC Builder(可編程片上系統(tǒng))可以很方便地根據(jù)自己的需要搭建出一個(gè)處理器,這個(gè)處理器的內(nèi)核就是Nios II處理器,而外圍可以根據(jù)自己的需要添加任何需要的外設(shè),包括定時(shí)器、PIO口、ROM、FLASH等。同時(shí),通過(guò)NiosII-IDE可以將μC/OS-II實(shí)時(shí)操作系統(tǒng)移植到以Nios II為內(nèi)核的處理器上,為測(cè)試提供了很大便利。而處理器和所設(shè)計(jì)的硬件電路可以通過(guò)已經(jīng)設(shè)計(jì)好的AVALON總線來(lái)進(jìn)行通信,而不用自己?jiǎn)为?dú)去研究一套新的通信協(xié)議來(lái)進(jìn)行軟硬件之間的通信。測(cè)試采用的是Altera提供的DE2-70開(kāi)發(fā)板。

1.2混合式實(shí)時(shí)操作系統(tǒng)的整體架構(gòu)

通過(guò)對(duì)μC/OS-II系統(tǒng)進(jìn)行深入分析、分離可以用硬件實(shí)現(xiàn)的部分,設(shè)計(jì)出對(duì)應(yīng)的硬件電路,然后通過(guò)AVALON總線實(shí)現(xiàn)軟件內(nèi)核和硬件電路之間的通信,同時(shí)保證修改后的系統(tǒng)對(duì)用戶來(lái)說(shuō)是透明的。具體框圖如圖1所示。

圖1 混合式實(shí)時(shí)操作系統(tǒng)整體框圖

圖1中的CPU是通過(guò)Quartus II軟件中的SOPC Builder根據(jù)需要搭建的處理器[3],搭建好的處理器作為一個(gè)單獨(dú)的底層模塊,然后再將軟件操作系統(tǒng)中可以硬化的部分設(shè)計(jì)成硬件邏輯電路,作為另一個(gè)底層模塊,最后在頂層模塊中對(duì)搭建的處理器和硬件邏輯電路進(jìn)行例化,組成一個(gè)完整的模塊,下載到DE2-70開(kāi)發(fā)板上進(jìn)行測(cè)試。

2信號(hào)量管理軟件部分

2.1信號(hào)量簡(jiǎn)介

操作系統(tǒng)必須具有對(duì)任務(wù)運(yùn)行進(jìn)行協(xié)調(diào)的能力,從而使任務(wù)之間可以無(wú)沖突、流暢地同步運(yùn)行,而不致產(chǎn)生災(zāi)難性的后果。計(jì)算機(jī)系統(tǒng)是依靠任務(wù)之間的良好通信來(lái)保證任務(wù)與任務(wù)的同步的。在μC/OS-II中,使用信號(hào)量、消息郵箱、消息隊(duì)和信號(hào)量集來(lái)實(shí)現(xiàn)任務(wù)之間的通信,而信號(hào)量就是用于任務(wù)間通信的一類事件。通過(guò)使用信號(hào)量可以給共享資源設(shè)置一個(gè)標(biāo)志,這個(gè)標(biāo)志可以控制共享資源的占用情況。

μC/OS-II的信號(hào)量由兩部分組成:①信號(hào)量的計(jì)數(shù)值,這個(gè)值是一個(gè)十六位的無(wú)符號(hào)整數(shù);②任務(wù)等待表,該任務(wù)等待表是一個(gè)長(zhǎng)度為64位的整型數(shù)組,每一位代表一個(gè)任務(wù),若任務(wù)處于等待該信號(hào)量的狀態(tài),那么對(duì)應(yīng)位為1,否則為0。

μC/OS-II中信號(hào)量的工作原理:每當(dāng)有任務(wù)申請(qǐng)信號(hào)量時(shí),如果信號(hào)量計(jì)數(shù)器OSEventCnt的值大于0,則OSEventCnt減1并使任務(wù)繼續(xù)運(yùn)行;如果OSEventCnt的值為0,則將任務(wù)列入任務(wù)等待表OSEventTbl[],從而使任務(wù)處于等待狀態(tài)。如果有正在使用信號(hào)量的任務(wù)釋放了該信號(hào)量,則會(huì)在任務(wù)等待表中找出優(yōu)先級(jí)別最高的等待任務(wù),使它就緒后調(diào)用調(diào)度器引發(fā)一次調(diào)度;如果任務(wù)等待表中已經(jīng)沒(méi)有等待任務(wù),則信號(hào)量計(jì)數(shù)器加1。信號(hào)量工作原理圖如圖2和圖3所示。

圖2 任務(wù)請(qǐng)求信號(hào)量

圖3 任務(wù)發(fā)送信號(hào)量

2.2事件控制塊ECB

圖4 事件控制塊結(jié)構(gòu)圖

為了對(duì)任務(wù)之間用于通信的事件進(jìn)行統(tǒng)一管理,μC/OS-II定義了一個(gè)叫做事件控制塊的數(shù)據(jù)結(jié)構(gòu)(ECB)[4],ECB可以用來(lái)描述信號(hào)量、消息郵箱、消息隊(duì)列等事件。ECB結(jié)構(gòu)如圖4所示。用戶應(yīng)用程序的任務(wù)通過(guò)指針pEvent來(lái)訪問(wèn)事件控制塊。成員OSEventCnt為信號(hào)量的計(jì)數(shù)器;OSEventPtr主要用來(lái)存放消息郵箱或消息隊(duì)列的指針;OSEventTbl[OS_EVENT_TBL_SIZE]是任務(wù)等待表;OSEventGrp表示任務(wù)等待表中的各任務(wù)組是否存在等待任務(wù);OSEventType是事件的類型,它可以是信號(hào)量、消息郵箱或消息隊(duì)列。用戶要根據(jù)該域的具體值來(lái)調(diào)用相應(yīng)的系統(tǒng)函數(shù),以保證對(duì)其操作的正確性。

3混合式實(shí)時(shí)操作系統(tǒng)信號(hào)量管理的硬件設(shè)計(jì)

3.1軟件部分修改

通過(guò)分析,在保證對(duì)用戶透明的條件下,可以對(duì)事件控制塊中的任務(wù)等待表進(jìn)行硬件化設(shè)計(jì)[5],那么成員OSEventGrp、OSEventTbl就可以去掉,因?yàn)槭褂密浖M(jìn)行查表和寫表操作是比較費(fèi)時(shí)的,尤其是進(jìn)行表的遍歷更加費(fèi)時(shí)。如果將表相關(guān)的操作轉(zhuǎn)移到硬件電路中,軟件只是負(fù)責(zé)發(fā)送指令或者讀取,不僅可以提高效率,還可以降低內(nèi)存占用、減輕CPU的負(fù)擔(dān)。

在硬件設(shè)計(jì)中不能動(dòng)態(tài)地添加或者刪除存儲(chǔ)表,如果用硬件來(lái)實(shí)現(xiàn)任務(wù)等待表,就必須在初始化的時(shí)候就建立與事件控制塊對(duì)應(yīng)數(shù)目的任務(wù)等待表。通過(guò)對(duì)μC/OS-II系統(tǒng)進(jìn)行分析發(fā)現(xiàn),事件控制塊的最大數(shù)目是確定的,這為實(shí)現(xiàn)任務(wù)等待表硬件化設(shè)計(jì)提供了前提。在硬件化設(shè)計(jì)時(shí)可以直接建立與事件控制塊數(shù)目相同的任務(wù)等待表——[63∶0]TaskWaitTbl[0DK]∶EVENT_COUNT_MAX]。同時(shí),為了能夠?qū)④浖行薷暮蟮氖录刂茐K和硬件中的任務(wù)等待表之間建立一一對(duì)應(yīng)的關(guān)系,在事件控制塊數(shù)據(jù)結(jié)構(gòu)中添加一個(gè)INT8U類型的變量OSEventCode來(lái)為任務(wù)控制塊進(jìn)行編號(hào),這個(gè)編號(hào)將作為與硬件中的任務(wù)進(jìn)行關(guān)聯(lián)的標(biāo)識(shí)碼。修改后的事件控制塊結(jié)構(gòu)如下所示:

typedef stmct{

INT8UOSEventType;

INT16UOSEventCnt;

void *OSEventPtr;

INT8UOSEventCode;

}OS_EVENT;

在μC/OS-II系統(tǒng)進(jìn)行初始化的時(shí)候會(huì)調(diào)用事件控制塊初始化函數(shù),通過(guò)修改該函數(shù)來(lái)完成對(duì)事件控制塊的編號(hào),然后對(duì)表的各種操作進(jìn)行編碼,當(dāng)軟件需要操作任務(wù)等待表的時(shí)候,向硬件發(fā)送編好號(hào)的命令碼,最后硬件部分完成對(duì)任務(wù)等待表的各種操作。信號(hào)量管理整體結(jié)構(gòu)如圖5所示。

圖5 信號(hào)量管理硬件化設(shè)計(jì)整體框圖

3.2硬件部分設(shè)計(jì)

硬件部分主要是根據(jù)軟件發(fā)送的命令碼對(duì)任務(wù)等待表進(jìn)行相應(yīng)的操作。命令碼編碼如下:

001為初始化對(duì)應(yīng)的任務(wù)控制塊;010為使對(duì)應(yīng)的任務(wù)等待表的相應(yīng)位置1;011為使對(duì)應(yīng)的任務(wù)等待表的相應(yīng)位置0;100為讀取相應(yīng)的任務(wù)等待表中最高優(yōu)先級(jí)等待任務(wù)的優(yōu)先級(jí);101為讀取相應(yīng)的等待表中是否有等待任務(wù);110為讀取相應(yīng)的任務(wù)等待表中指定位置數(shù)據(jù)。

硬件部分整體設(shè)計(jì)圖如圖6所示。

圖6 信號(hào)量管理硬件邏輯框圖

其中,OSEvent_ctrWord為命令字,由軟件寫入到硬件,經(jīng)過(guò)指令譯碼器譯碼后對(duì)任務(wù)等待表進(jìn)行相應(yīng)的操作;OSEvent_tabCode為事件控制塊的編號(hào),此編號(hào)使得事件控制塊和相應(yīng)的任務(wù)等待表關(guān)聯(lián)起來(lái);OSEvent_prio_in為任務(wù)的優(yōu)先級(jí)輸入,任務(wù)等待表的各個(gè)位對(duì)應(yīng)著任務(wù)的優(yōu)先級(jí),從而可以根據(jù)優(yōu)先級(jí)來(lái)確定對(duì)任務(wù)等待表的哪一個(gè)位進(jìn)行操作;OSEvent_prio_out為優(yōu)先級(jí)的輸出,主要是輸出任務(wù)等待表中最高優(yōu)先級(jí)等待任務(wù)對(duì)應(yīng)的優(yōu)先級(jí),軟件部分可以發(fā)送命令碼并讀取該值;OSEvent_isWait主要是輸出當(dāng)前任務(wù)等待表中是否有等待任務(wù);OSEvent_Wait用于讀取任務(wù)等待表中對(duì)應(yīng)位的數(shù)據(jù)。

4系統(tǒng)測(cè)試與結(jié)果

測(cè)試平臺(tái)為Altera公司的DE2-70開(kāi)發(fā)板,將硬件系統(tǒng)下載到開(kāi)發(fā)板上,然后利用NiosII-IDE軟件寫出測(cè)試程序[6],選擇μC/OS-II操作系統(tǒng),完成對(duì)系統(tǒng)的測(cè)試。程序運(yùn)行結(jié)果如下所示:

Hello from prio:1

Hello from prio:3

task3 running count is 1

Hello from prio:3

task3 running count is 2

Hello from prio:1

Hello from prio:3

task3 running count is 3

Hello from prio:3

task3 running count is 4

Hello from prio:1

Hello from prio:3

task3 running count is 5

Hello from prio:1

fun is running!

Hello from prio:3

task3 running count is 6

Hello from prio:3

task3 running count is 7

Hello from prio:1

Hello from prio:3

task3 running count is 8

Hello from prio:3

task3 running count is 9

測(cè)試程序:首先創(chuàng)建任務(wù)1(task1,優(yōu)先級(jí)為1),在任務(wù)1中創(chuàng)建任務(wù)2(task2,優(yōu)先級(jí)為2)和任務(wù)3(task3,優(yōu)先級(jí)為3)。task1創(chuàng)建task2和task3后是一個(gè)無(wú)限循環(huán)語(yǔ)句,循環(huán)體中主要輸出當(dāng)前運(yùn)行任務(wù)的優(yōu)先級(jí),即表示task1是不是運(yùn)行成功;task2是一個(gè)無(wú)限循環(huán)體,每隔2 s請(qǐng)求一次信號(hào)量,如果請(qǐng)求成功就調(diào)用fun()函數(shù),fun()函數(shù)輸出“fun is running!”,如果請(qǐng)求不成功則任務(wù)2添加到任務(wù)等待表中,直到信號(hào)量有效再運(yùn)行;task3每隔3 s 運(yùn)行一次,當(dāng)task3運(yùn)行5次的時(shí)候,發(fā)送信號(hào)量。從結(jié)果可以看出,當(dāng)task3運(yùn)行5次之后fun()函數(shù)調(diào)用成功,說(shuō)明系統(tǒng)測(cè)試通過(guò)。

結(jié)語(yǔ)

參考文獻(xiàn)

[1] 任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II原理及應(yīng)用[M] .北京:北京航空航天大學(xué)出版社,2012:116-140.

[2] 潘松,黃繼業(yè),潘明.EDA技術(shù)實(shí)用教程——VerilogHDL版[M] .5版.北京:科學(xué)出版社,2013:58-89.

[3] 周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M] .北京:北京航空航天大學(xué)出版社,2006:57-92.

[4] 譚浩強(qiáng).C程序設(shè)計(jì)[M] .3版.北京:清華大學(xué)出版社,2009:281-318.

[5] 崔曉英.基于FPGA的硬件實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)[D] .哈爾濱:哈爾濱理工大學(xué),2010.

[6] 崔建華,孫紅勝,王保進(jìn).硬件實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J] .電子技術(shù)應(yīng)用,2008(5).

高承(碩士研究生),主要研究方向?yàn)榍度胧脚c操作系統(tǒng)應(yīng)用。

(責(zé)任編輯:薛士然收修改稿日期:2015-11-25)

Hardware Circuit Design of Semaphore Management Based on FPGA

Gao Cheng,Wang Zhengyan

(Qingdao University,Qingdao 266071,China)

Abstract:Based on the communication research of the tasks in the embedded real-time operating system μC/OS-II,a scheme is proposed, that the semaphore management is completed using the hardware circuit based on FPGA.At the same time,the new hybrid real-time operating system is transparent to the users,which ensures the portability of the hybrid real-time operating system.The hybrid real-time operating system has been successfully transplanted to Altera DE2-70 development board,and the test of semaphore management is completed.This is an exploratory design,and it is an important part in overall design of the hybrid embedded real-time operating system.

Key words:RTOS;FPGA;Nios II;semaphore

中圖分類號(hào):TP316.2

文獻(xiàn)標(biāo)識(shí)碼:A