色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 基于FPGA的M2M異構(gòu)虛擬化系統(tǒng)(一)

          基于FPGA的M2M異構(gòu)虛擬化系統(tǒng)(一)

          作者: 時間:2018-09-03 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://cafeforensic.com/article/201809/388223.htm

            如圖 14,在團隊自主研發(fā)的QS-I 硬件系統(tǒng)的基礎(chǔ)上,團隊開發(fā)了函數(shù)系統(tǒng)庫和多個應(yīng)用程序。其中系統(tǒng)函數(shù)庫包括圖形庫、VGA顯示器接口、RS232串口接口、PS/2鍵盤接口。應(yīng)用程序根據(jù)所最終運行時的機器碼可以分為MIPS體系結(jié)構(gòu)應(yīng)用程序和x86體系結(jié)構(gòu)應(yīng)用程序。其中,MIPS體系結(jié)構(gòu)應(yīng)用程序包括使用MIPS匯編語言編寫的俄羅斯方塊游戲和使用C語言編寫的吃豆子游戲;x86體系結(jié)構(gòu)應(yīng)用程序包括使用8086匯編語言編寫的推箱子游戲。

            該項目的硬件系統(tǒng)是自主研發(fā)的,因而需要開發(fā)基于該系統(tǒng)的軟硬件接口函數(shù)庫,并且需要編寫應(yīng)用程序測試系統(tǒng)的各種功能。

            該項目的硬件系統(tǒng)支持MIPS體系結(jié)構(gòu)的指令集?;贛IPS指令集,團隊開發(fā)了將MIPS匯編語言翻譯成機器碼的匯編程序,并分別使用MIPS匯編語言和C語言開發(fā)了系統(tǒng)函數(shù)庫。使用MIPS匯編語言開發(fā)應(yīng)用程序,用來驗證五級流水線CPU的功能正確性,檢測出數(shù)據(jù)相關(guān)和控制相關(guān)出現(xiàn)的問題,驗證硬件系統(tǒng)對MIPS指令集的支持度,驗證CPU與各種外部設(shè)備互聯(lián)的正確性以及系統(tǒng)的總體性能。

            基于MIPS匯編語言開發(fā)了俄羅斯方塊游戲。俄羅斯方塊的基本規(guī)則是移動、旋轉(zhuǎn)和擺放游戲自動輸出的各種方塊,使之排列成完整的一行或多行并且消除得分。本設(shè)計的俄羅斯方塊有5種基本形狀,7種顏色;可通過鍵盤控制左移(A)、右移(D)、旋轉(zhuǎn)(W)、加速下降(S)、暫停(Space)、退出(Q)、選擇級別(L);游戲設(shè)置兩種級別,普通下降速度和較快下降速度兩級;游戲界面顯示幫助、玩家所得分?jǐn)?shù)、下一個即將下落的形狀等信息;當(dāng)方塊到達(dá)頂端時,游戲失敗;玩家通過不斷的刷新最高分獲得愉悅。

            為了提高軟件開發(fā)的效率,使軟件開發(fā)人員方便的使用硬件系統(tǒng)及其外設(shè)資源,團隊使用Gcc編譯器和MASM匯編器的組合,項目團隊開發(fā)了基于C語言的應(yīng)用程序,驗證硬件系統(tǒng)對Gcc編譯器和MASM匯編器生成的機器指令的支持。團隊還開發(fā)了基于C語言的系統(tǒng)函數(shù)庫,包括圖形庫、VGA顯示器接口、鍵盤接口和串口接口等。此外,團隊還使用JAVA語言,開發(fā)了MIPS指令CPU模擬器,使得在軟件的開發(fā)過程中不需要每次都傳輸?shù)接布_發(fā)板上就可以進行調(diào)試,大大提高程序開發(fā)的效率。

            基于C語言開發(fā)了吃豆子游戲。吃豆子的基本規(guī)則是控制packman的移動,使之吃完所有的豆子,并且躲開怪物的追捕。本程序設(shè)計的怪物有2個;豆子有兩種,一種普通的小豆子,還有一種大豆子,吃了大豆子能讓怪物慢下來幾秒鐘;可通過鍵盤控制左移(A)、右移(D)、旋轉(zhuǎn)(W)、加速下降(S)、暫停(Space)、退出(Q);游戲界面顯示幫助、玩家所得分?jǐn)?shù)等信息;當(dāng)玩家被怪物抓到時,游戲失敗;玩家將所有的豆子都吃光時,游戲正常結(jié)束。

            該硬件系統(tǒng)能夠執(zhí)行不同指令集體系結(jié)構(gòu)的機器碼。為了驗證系統(tǒng)執(zhí)行不同指令集機器碼的正確性,調(diào)試出硬件系統(tǒng)中存在的問題,團隊開發(fā)了基于x86匯編語言的應(yīng)用程序。團隊還開發(fā)了基于x86語言的系統(tǒng)函數(shù)庫,包括圖形庫、VGA顯示器接口、鍵盤接口和串口接口等。

            基于x86匯編語言開發(fā)了推箱子游戲。推箱子的基本規(guī)則是控制機器人的移動,使之把所有的箱子放到指定的位置。箱子只有1種;可通過鍵盤控制左移(A)、右移(D)、旋轉(zhuǎn)(W)、加速下降(S)、暫停(Space)、退出(Q);游戲界面顯示幫助、玩家所用的時間等信息;玩家將所有的箱子都放到適當(dāng)?shù)奈恢脮r,游戲正常結(jié)束。

            4.詳細(xì)設(shè)計方案

            4.1.RISC CPU詳細(xì)設(shè)計方案

            4.1.1.RISC CPU(QS-I)整體模塊

            

            圖 15 QS-I CPU整體模塊圖

            如圖 15所示,QS-I的整體模塊中主要包括兩部分,第一部分是五級流水線和Cache,另一個模塊是動態(tài)二進制翻譯加速模塊(DBT Accelerator)。CPU的對外接口符合Wishbone總線標(biāo)準(zhǔn)。

            在下一節(jié)中,我們將會介紹QS-I CPU中各個單元模塊功能以及其時序。

            4.1.2.RISC CPU(QS-I)各單元模塊功能與時序

            4.1.2.1五級流水線模塊詳細(xì)設(shè)計方案

            功能描述

            本模塊的功能是完成指令的五級流水化執(zhí)行,并支持中斷及異常。一條指令的執(zhí)行經(jīng)過是Fetch(取指) à Decode(譯碼) à Execute(執(zhí)行) à Memory(訪存) à Writeback(寫回)五個階段。其中Fetch階段從指令Cache中由PC(Praogram Counter)取得下一條指令;Decode階段完成指令的大部分譯碼工作,并產(chǎn)生相應(yīng)的控制信號;Execute階段主要完成指令的算術(shù)運算以及少量選擇電路;Memory階段完成訪存任務(wù),數(shù)據(jù)將從數(shù)據(jù)Cache中讀取或者寫入;Writeback階段完成寫回指令的修改Register File(寄存器堆)的寫操作。此外,本模塊完成了流水線中的精確中斷處理。

          • 子模塊列表

          Module

          Description

          pc_reg

          Module of PC register

          if_stage

          Instruction Fetch stage

          if_id_reg

          Registers between IF and ID stages

          id_stage

          Instruction Decode stage

          id_exe_stage

          Registers between ID and EXE stages

          exe_stage

          Execute stage

          exe_mem_reg

          Registers between EXE and MEM stages

          mem_stage

          Memory stage

          mem_wb_reg

          Registers between MEM and WB stages

          wb_stage

          Writeback stage

          except

          Module of exception handling

            詳細(xì)設(shè)計

            pc_reg

            本模塊完成對PC寄存器的更新任務(wù)。若流水線中出現(xiàn)stall或者Cache發(fā)生miss等情況則延遲對PC寄存器的更新。本模塊的時序如下圖所示。

            

            圖 16 pc_reg時序圖

            if_stage

            本模塊完成對指令Cache的取指。模塊的對外接口符合Wishbone總線標(biāo)準(zhǔn)。CPU的對外接口包括IBus(指令總線)和DBus(數(shù)據(jù)總線),為了將CPU成功集成入Wishbone總線中,CPU的對外接口部分的邏輯設(shè)計必須符合Wishbone標(biāo)準(zhǔn)。此外,CPU對外部設(shè)備(如RAM,ROM,UART)的訪問速度以及CPU有無Cache(高速緩存)是未知的,因此這部分的邏輯設(shè)計必須帶有通用性。

            本模塊的主要時序如下圖。

            

            圖 17 if_stage時序圖

            if_id_reg

            本模塊完成IF和ID兩個階段之間的信號流水。本模塊的時序圖如下。

            

            圖 18 if_id_reg時序圖

            id_stage

            本模塊完成指令的基本譯碼,并產(chǎn)生相應(yīng)的控制信號。RISC處理器的結(jié)構(gòu)競爭、控制競爭、數(shù)據(jù)競爭三大競爭的解決:

            采用旁路(bypass)技術(shù)解決數(shù)據(jù)競爭,雙跳(double bump)解決結(jié)構(gòu)競爭,延時槽技術(shù)解決控制競爭。

            本模塊的基本時序圖如下。

            

            圖 19 id_stage時序圖

            id_exe_stage

            本模塊完成IF和ID兩個階段之間的信號流水。本模塊的時序圖如下。

            

            圖 20 id_exe_reg時序圖

            exe_stage

            本模塊完成指令的算術(shù)邏輯運算。其中,運算包括add, sub, and, or, xor, nor, sll, srl, sra, lui等算術(shù)或邏輯運算。

            為了x86架構(gòu)動態(tài)翻譯的加速需要,在ALU(算術(shù)運算單元)中增加了x86 flag標(biāo)志寄存器,并將該寄存器作為一個系統(tǒng)寄存器,用戶程序可通過mfc0,mtc0指令來修改flag標(biāo)志寄存器。

            本模塊的時序圖如下。

            

            圖 21 exe_stage時序圖

            


          上一頁 1 2 3 下一頁

          關(guān)鍵詞:

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉