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

        ?

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

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

        高承,王正彥

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

        ?

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

        高承,王正彥

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

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

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

        引言

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

        嵌入式系統(tǒng)推動了物聯(lián)網(wǎng)的崛起,物聯(lián)網(wǎng)的崛起,也帶來嵌入式系統(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ā)展的核心推動力。嵌入式系統(tǒng)是計(jì)算機(jī)硬件與軟件高度融合的智能體,已經(jīng)形成了巨大的技術(shù)空間和人才市場。實(shí)時(shí)操作系統(tǒng)(RTOS)是嵌入式系統(tǒng)的基礎(chǔ)運(yùn)行平臺,其性能的好壞直接影響嵌入式系統(tǒng)性能的高低。

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

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

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

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

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

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

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

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

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

        硬件部分的設(shè)計(jì)采用硬件描述語言Verilog HDL[2]來進(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í),通過NiosII-IDE可以將μC/OS-II實(shí)時(shí)操作系統(tǒng)移植到以Nios II為內(nèi)核的處理器上,為測試提供了很大便利。而處理器和所設(shè)計(jì)的硬件電路可以通過已經(jīng)設(shè)計(jì)好的AVALON總線來進(jìn)行通信,而不用自己單獨(dú)去研究一套新的通信協(xié)議來進(jìn)行軟硬件之間的通信。測試采用的是Altera提供的DE2-70開發(fā)板。

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

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

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

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

        2信號量管理軟件部分

        2.1信號量簡介

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

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

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

        圖2 任務(wù)請求信號量

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

        2.2事件控制塊ECB

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

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

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

        3.1軟件部分修改

        通過分析,在保證對用戶透明的條件下,可以對事件控制塊中的任務(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ì)中不能動態(tài)地添加或者刪除存儲表,如果用硬件來實(shí)現(xiàn)任務(wù)等待表,就必須在初始化的時(shí)候就建立與事件控制塊對應(yīng)數(shù)目的任務(wù)等待表。通過對μ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ù)等待表之間建立一一對應(yīng)的關(guān)系,在事件控制塊數(shù)據(jù)結(jié)構(gòu)中添加一個(gè)INT8U類型的變量OSEventCode來為任務(wù)控制塊進(jìn)行編號,這個(gè)編號將作為與硬件中的任務(wù)進(jìn)行關(guān)聯(lián)的標(biāo)識碼。修改后的事件控制塊結(jié)構(gòu)如下所示:

        typedef stmct{

        INT8UOSEventType;

        INT16UOSEventCnt;

        void *OSEventPtr;

        INT8UOSEventCode;

        }OS_EVENT;

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

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

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

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

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

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

        圖6 信號量管理硬件邏輯框圖

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

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

        測試平臺為Altera公司的DE2-70開發(fā)板,將硬件系統(tǒng)下載到開發(fā)板上,然后利用NiosII-IDE軟件寫出測試程序[6],選擇μC/OS-II操作系統(tǒng),完成對系統(tǒng)的測試。程序運(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

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

        結(jié)語

        參考文獻(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

        中圖分類號:TP316.2

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

        亚洲AV日韩AV永久无码电影| 久久天堂精品一区二区三区四区| 无套内谢老熟女| 亚洲旡码a∨一区二区三区| 丰满少妇爆乳无码专区| 粗大挺进孕妇人妻在线| 亚洲桃色视频在线观看一区| 性大毛片视频| 亚洲国产精品国自产电影| 精品人妻夜夜爽一区二区| 日本一区二区视频免费在线看| 在线播放免费播放av片| 国产午夜在线观看视频播放| 中文字幕一区二区va| 中文字幕女同系列在线看一| 久久久久人妻精品一区蜜桃| 国产免费专区| 全程国语对白资源在线观看| 亚洲av综合色区无码一区| 国产69精品久久久久999小说| 亚洲高潮喷水中文字幕| 丰满少妇av一区二区三区| 国产熟妇疯狂4p交在线播放| 免费观看又污又黄的网站| 美女黄频视频免费国产大全| 久久老熟女一区二区三区福利| 亚洲乱码国产乱码精品精| 日本一区二区三区高清千人斩| 在线亚洲精品国产成人二区| 亚洲国产综合久久天堂| 黑人巨大无码中文字幕无码| 正在播放淫亚洲| 一区二区三区观看视频在线| av中文字幕潮喷人妻系列| 亚洲一区日韩无码| 亚洲天堂av免费在线| 人妻丰满熟妇aⅴ无码| 亚洲粉嫩高潮的18p| 国产一区二区三区视频免费在线| 亚洲av无一区二区三区久久蜜桃 | 亚洲乱码一区二区av高潮偷拍的|