在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 業(yè)界動(dòng)態(tài) > 基于PGL22G的物聯(lián)網(wǎng)Sensor HUB設(shè)計(jì)

            基于PGL22G的物聯(lián)網(wǎng)Sensor HUB設(shè)計(jì)

            作者:黃國(guó)偉 時(shí)間:2019-01-29 來(lái)源:電子產(chǎn)品世界 收藏

            作者 黃國(guó)偉(福州大學(xué),福建 福州 350108)

            本文引用地址:http://www.biyoush.com/article/201901/397270.htm

              摘要:基于紫光同創(chuàng)PGL22G型號(hào)芯片,進(jìn)行,使之成為MCU,在軟核中通過(guò)Wishbone總線進(jìn)行互聯(lián)。隨后,基于OpenMIPS架構(gòu)進(jìn)行μC/OS系統(tǒng)的,在μC/OS系統(tǒng)下通過(guò)GPIO口進(jìn)行數(shù)據(jù)采集,并將采集到的存儲(chǔ)至EEPROM中,可通過(guò)電腦查詢EEPROM存儲(chǔ)的數(shù)據(jù)。通過(guò)相應(yīng)的通信模塊進(jìn)行傳感器數(shù)據(jù)的發(fā)送。發(fā)送的數(shù)據(jù)可以在相應(yīng)微信公眾號(hào)中實(shí)時(shí)查看。

              關(guān)鍵詞;;;

              1 框架描述

              1.1 MCU框架描述

              的MCU整體框架如圖1所示,MCU主要由寄存器單元,協(xié)處理器單元,F(xiàn)SM單元,算術(shù)單元,數(shù)據(jù)單元構(gòu)成[1]。寄存器單元包括針對(duì)32位指令格式的通用寄存器,針對(duì)乘除法運(yùn)算結(jié)果的乘除法結(jié)果寄存器,程序計(jì)數(shù)器,存放OpenMIPS相關(guān)操作指令的指令寄存器。用于數(shù)據(jù)處理的算數(shù)模塊(包括四則運(yùn)算和部分特殊的數(shù)據(jù)移位操作),數(shù)據(jù)選擇模塊;針對(duì)于五級(jí)流水線設(shè)計(jì)的狀態(tài)模塊,其構(gòu)成與實(shí)現(xiàn)于下一段介紹;針對(duì)本設(shè)計(jì)使用的五級(jí)流水線還添加了協(xié)處理器模塊用于工作狀態(tài)的配置。

            nEO_IMG_1.jpg

              1.2 流水線框架描述

              本設(shè)計(jì)的五級(jí)流水線框架如圖2所示,結(jié)合圖1的MCU架構(gòu)圖可見(jiàn):首先通過(guò)取址模塊去獲取相應(yīng)指令,與此同時(shí)程序計(jì)數(shù)器技術(shù)同狀態(tài)控制模塊數(shù)據(jù)交互后實(shí)現(xiàn)對(duì)于當(dāng)前執(zhí)行狀態(tài)的控制,通過(guò)譯碼模塊和32個(gè)通用寄存器的數(shù)據(jù)讀寫(xiě)實(shí)現(xiàn)指令的譯碼,將譯碼后的指令放入執(zhí)行模塊進(jìn)行判斷后進(jìn)入相應(yīng)的算數(shù)模塊實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)計(jì)算處理,通過(guò)放存模塊確定存入對(duì)應(yīng)的寄存器地址,最終將結(jié)果放入對(duì)應(yīng)的寄存器[2]。

            nEO_IMG_2.jpg

              2 SOPC實(shí)現(xiàn)原理

              通過(guò)PGL22G構(gòu)成MCU主體,搭載Wishbone總線實(shí)現(xiàn)與UART、Flash、GPIO等外部設(shè)備的數(shù)據(jù)交互。

              2.1 五級(jí)流水線的實(shí)現(xiàn)

              如圖2所示,五級(jí)流水線可以概括為取指、譯碼、執(zhí)行、訪存、回寫(xiě),下面分別介紹五級(jí)各自實(shí)現(xiàn)原理。

              取指階段是取出指令存儲(chǔ)器中的指令,同時(shí)程序計(jì)數(shù)器(以下簡(jiǎn)稱(chēng)PC)值遞增。PC中,因?yàn)橐粭l指令是32位,而設(shè)計(jì)基于OpenMIPS的MCU是采用字節(jié)尋址的方式,由此每條指令對(duì)應(yīng)4個(gè)字節(jié),PC每次尋址結(jié)束后地址加4。在取指譯碼模塊間有取指譯碼模塊用于緩存取指階段的指令及其對(duì)應(yīng)地址。

              譯碼階段是指針對(duì)指令給出相應(yīng)運(yùn)算和操作的對(duì)應(yīng)操作數(shù),通過(guò)32位通用寄存器實(shí)現(xiàn)對(duì)指令的同時(shí)讀取和寫(xiě)入。譯碼模塊通過(guò)對(duì)通用寄存器的訪問(wèn)實(shí)現(xiàn)指令對(duì)應(yīng)運(yùn)算和操作的譯碼過(guò)程,將獲取到的指令譯出對(duì)應(yīng)的源操作數(shù)送出。在譯碼和執(zhí)行模塊間有譯碼執(zhí)行模塊用于緩存譯碼階段給出的運(yùn)算類(lèi)型,源操作數(shù)和對(duì)應(yīng)訪問(wèn)寄存器的地址相關(guān)數(shù)據(jù)。

              執(zhí)行階段是對(duì)獲取到的源操作數(shù)進(jìn)行相應(yīng)的指定運(yùn)算,并將運(yùn)算出的結(jié)果送入到運(yùn)算訪存模塊進(jìn)行緩存。

              訪存階段將執(zhí)行階段的結(jié)果送入回寫(xiě)階段。

              回寫(xiě)階段將相應(yīng)的指令與那算結(jié)果寫(xiě)入對(duì)應(yīng)地址的寄存器,由此完成一個(gè)周期五級(jí)流水線的操作。

              2.2 指令存儲(chǔ)的實(shí)現(xiàn)

              將設(shè)計(jì)為SOPC的初衷便是使用對(duì)應(yīng)MCU指令集的編程方式減少對(duì)于設(shè)計(jì)人員的數(shù)字電路實(shí)現(xiàn)要求,指令存儲(chǔ)決定MCU對(duì)應(yīng)運(yùn)行指令的正確。結(jié)合對(duì)于FPGA資源的考慮以及對(duì)應(yīng)MCU指令程序編譯燒寫(xiě)的便捷,使用外接SPI Flash作為ROM使之成為指令的存儲(chǔ)設(shè)備。

              首先輸入對(duì)應(yīng)Flash工作模式數(shù)據(jù),然后通過(guò)計(jì)數(shù)器進(jìn)行計(jì)數(shù)實(shí)現(xiàn)地址數(shù)據(jù)的發(fā)送,當(dāng)計(jì)數(shù)器停止即地址數(shù)據(jù)發(fā)送結(jié)束,此時(shí)DQ1管腳輸出所需數(shù)據(jù),SPI Flash讀取數(shù)據(jù)仿真波形如圖3所示。

            nEO_IMG_3.jpg

            nEO_IMG_4.jpg

              2.3 數(shù)據(jù)存儲(chǔ)器RAM的實(shí)現(xiàn)

              通過(guò)pango軟件生成一個(gè)地址位寬為14的32位存儲(chǔ)器,寫(xiě)操作時(shí)根據(jù)sel的值修改其中對(duì)應(yīng)的字節(jié)即可。由于系統(tǒng)中地址位寬為32,但針對(duì)數(shù)據(jù)存儲(chǔ)時(shí)所需要的地址寬為14,再結(jié)合指令加一即為移動(dòng)四位因此取系統(tǒng)地址位寬的第2~15位作為存儲(chǔ)器對(duì)應(yīng)地址[3]

              2.4 協(xié)處理器的實(shí)現(xiàn)

              協(xié)處理器用于系統(tǒng)控制,主要用于配置CPU工作狀態(tài),實(shí)現(xiàn)高速緩存控制,異常處理和控制,存儲(chǔ)管理單元控制。首先對(duì)協(xié)處理器中的寄存器進(jìn)行寫(xiě)操作,依次寫(xiě)入地址,將不同的數(shù)據(jù)保存到不同的寄存器中;依據(jù)讀取地址,將相應(yīng)的寄存器值輸出即可。協(xié)處理器的訪問(wèn)指令只需遵循MIPS32指令集中的訪問(wèn)指令mtc0,mfc0即可。在譯碼階段依據(jù)指令讀出通用寄存器的值,在執(zhí)行階段確定寫(xiě)入通用寄存器的值,將信息傳遞至訪存階段。訪存信息傳遞至回寫(xiě)階段,回寫(xiě)階段修改對(duì)應(yīng)地址的寄存器值即可。

              2.5 Wishbone總線的實(shí)現(xiàn)

              Wishbone總線有多種連接方式:點(diǎn)對(duì)點(diǎn)、數(shù)據(jù)流、共享總線、交叉互聯(lián)等。在點(diǎn)對(duì)點(diǎn)連接方式中,有一個(gè)主設(shè)備和一個(gè)從設(shè)備。

              通過(guò)狀態(tài)機(jī)來(lái)實(shí)現(xiàn)Wishbone的操作和控制。復(fù)位的時(shí)候進(jìn)入空閑狀態(tài)WB_IDLE。當(dāng)處于空閑狀態(tài)WB_IDLE時(shí),如果處理器發(fā)出了訪問(wèn)請(qǐng)求,且當(dāng)前沒(méi)有處于流水線清除過(guò)程中,那么會(huì)進(jìn)入總線忙狀態(tài)WB_BUSY,開(kāi)始訪問(wèn)總線。但是,如果處于流水線清除過(guò)程中,那么本次的總線訪問(wèn)當(dāng)然會(huì)無(wú)效,所以不必進(jìn)入WB_BUSY狀態(tài)。當(dāng)處于總線忙狀態(tài)WB_BUSY時(shí),如果收到Wishbone總線的響應(yīng),表示本次訪問(wèn)結(jié)束,此時(shí)需要判斷流水線是否處于暫停狀態(tài)。如果沒(méi)有處于暫停狀態(tài),那么將訪問(wèn)到的數(shù)據(jù)送入處理器,進(jìn)入空閑狀態(tài)WB_IDLE,等待下一次訪問(wèn)請(qǐng)求。如果處于暫停狀態(tài),那么將訪問(wèn)到的數(shù)據(jù)暫時(shí)保存起來(lái),同時(shí)進(jìn)入等待暫停結(jié)束狀態(tài)WB_WAIT_FOR_STALL。當(dāng)流水線暫停結(jié)束時(shí),再將訪問(wèn)到的數(shù)據(jù)送入處理器,并且進(jìn)入空閑狀態(tài)WB_IDLE,等待下一次訪問(wèn)請(qǐng)求。當(dāng)處于總線忙狀態(tài)WB_BUSY時(shí),如果發(fā)生異常,那么會(huì)清除流水線,此時(shí)將直接取消此次Wishbone總線訪問(wèn),并且回到狀態(tài)WB_IDLE。

              2.6 UART和GPIO的實(shí)現(xiàn)

              UART將并行的數(shù)據(jù)轉(zhuǎn)變?yōu)榇械臄?shù)據(jù)發(fā)送,或?qū)⒔邮盏降拇袛?shù)據(jù)轉(zhuǎn)變?yōu)椴⑿袛?shù)據(jù)。通過(guò)串口可以實(shí)現(xiàn)與計(jì)算機(jī)或其他設(shè)備的通信。在PGL22G開(kāi)發(fā)板上有串口轉(zhuǎn)USB模塊,UART模塊控制是OpenCores站點(diǎn)提供的UART IP Core,其兼容常見(jiàn)UART設(shè)備;支持Wishbone數(shù)據(jù)規(guī)范。

              GPIO是以位為單位進(jìn)行數(shù)字輸入輸出的I/O接口,作為單純通用輸入/輸出I/O,輸入時(shí)從外部讀取輸入信號(hào),輸出時(shí)將寫(xiě)入的值輸出到外部。處理器通過(guò)GPIO與其他外設(shè)相連。GPIO控制是OpenCores站點(diǎn)提供的GPIO IP Core,其I/O口數(shù)量從1到32可配置;所有I/O口可以配置為雙向接口;輸入接口可以觸發(fā)中斷;支持Wishbone數(shù)據(jù)規(guī)范。

              3 μC/OS系統(tǒng)的移植

              借鑒μC/OS-II在其他MIPS架構(gòu)處理器上移植的代碼進(jìn)行修改,在Linux中下載版本號(hào)為V2.91的μC/OS-II源碼以及針對(duì)MIPS M14K的μC/OS-II移植代碼[4]。去掉includes目錄下無(wú)需使用的cpu.h文件。os_cpu.h中的文件定義了處理器相關(guān)的常量、宏、結(jié)構(gòu)體,這里可以完全使用MIPS M14K的移植代碼,無(wú)需修改。os_cpu_a.S文件異常處理樣例,和一些入堆棧使用的常數(shù),以及一些函數(shù)。將OS_CPU_SR_Save中的Status寄存器的最低位修改為0;DisableInterruptSource中的函數(shù)對(duì)應(yīng)的Status寄存器中IM字段指定為修改為0。修改os_cpu_c.c文件,將新任務(wù)的入口地址task存放到堆棧中對(duì)應(yīng)證書(shū)寄存器$31的位置[5];將BSP_Interrupt_Handler函數(shù)中的Compare寄存器的值增加0x50000,因?yàn)楸敬蜗到y(tǒng)的頻率為27 MHz,為保證中斷是在12 ms個(gè)時(shí)鐘周期內(nèi)發(fā)生。將修改后的文件進(jìn)行編譯,最終得到相應(yīng)的.bin文件,與BootLoader.bin合并后得到相應(yīng)的.bin文件,將.bin文件燒入SPI Flash中,當(dāng)OpenMIPS運(yùn)行時(shí)會(huì)首先運(yùn)行BootLoader,后者將μC/OS-II的代碼復(fù)制到RAM中,然后跳轉(zhuǎn)到RAM,最終控制權(quán)交由μC/OS-II,由此實(shí)現(xiàn)了μC/OS系統(tǒng)的移植和運(yùn)行。

              4 結(jié)論

              本設(shè)計(jì)基于紫光PGL22G FPGA開(kāi)發(fā)板實(shí)現(xiàn)了OpenMIPS內(nèi)核的MCU移植,實(shí)現(xiàn)了操作系統(tǒng)μC/OS-II的移植使之構(gòu)成SOPC系統(tǒng)增加系統(tǒng)的靈活性和穩(wěn)定性。實(shí)現(xiàn)了傳感器的數(shù)據(jù)采集(常見(jiàn)的數(shù)字信號(hào)和模擬信號(hào)的傳感器均可拓展實(shí)現(xiàn)數(shù)據(jù)采集,由此實(shí)現(xiàn)Sensor HUB),以及數(shù)據(jù)的本地存儲(chǔ)和訪問(wèn)。通過(guò)通信數(shù)據(jù)實(shí)現(xiàn)了數(shù)據(jù)的上傳發(fā)送,同時(shí)可以在微信公眾號(hào)中進(jìn)行數(shù)據(jù)的查詢。

              在本設(shè)計(jì)中還有一些可以改進(jìn)的地方:首先,OpenMIPS架構(gòu)具有一定的缺陷,我們可將本設(shè)計(jì)的架構(gòu)改為RISC-V架構(gòu)。該架構(gòu)開(kāi)源,可以拿到全部的源代碼進(jìn)行裁剪或修改以實(shí)現(xiàn)我們的需求。此外,該架構(gòu)以運(yùn)算為核心,在大數(shù)據(jù)上和人工智能上具有無(wú)可比擬的優(yōu)勢(shì)。其次,在存儲(chǔ)上可用DDR存儲(chǔ)器來(lái)替代EEPROM,因?yàn)镈DR存儲(chǔ)器具有速度快、存儲(chǔ)量大等等的優(yōu)勢(shì)。最后,可接入更多種類(lèi)不同的傳感器,真正實(shí)現(xiàn)sensor HUB的主題。

              參考文獻(xiàn)

              [1]蔡啟先,劉明,余祖峰.MIPS64指令集模擬器的建模與實(shí)現(xiàn)方法[J].計(jì)算機(jī)工程,2010,(18):245-246.

              [2]劉秋菊,張光照,王仲英.基于MIPS指令集的流水線CPU設(shè)計(jì)與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,2017,(8):148-152.

              [3]雷思磊. 自己動(dòng)手寫(xiě)CPU[M].電子工業(yè)出版社,2014.

              [4]陶銳,李洋,曹海燕.基于ARM7內(nèi)核的UCOS-Ⅱ移植研究[J].企業(yè)技術(shù)開(kāi)發(fā),2012,31(05):68+74.

              [5]李備,彭楚武,譚凌峰,陳敬恩.UCOS移植中的硬件抽象層構(gòu)建技術(shù)[J].電子產(chǎn)品世界,2006(16):93-94+92.

              作者簡(jiǎn)介:

              黃國(guó)偉(1994-),男,研究生,主要從事嵌入式系統(tǒng)的研究。

            本文來(lái)源于科技期刊《電子產(chǎn)品世界》2019年第2期第45頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處



            關(guān)鍵詞: FPGA OpenMIPS軟核 UC/OS II 移植 201902

            評(píng)論


            相關(guān)推薦

            技術(shù)專(zhuān)區(qū)

            關(guān)閉