新聞中心

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  

  圖 15 QS-I CPU整體模塊圖

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

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

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

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

  功能描述

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

  • 子模塊列表

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è)計(jì)

  pc_reg

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

  

  圖 16 pc_reg時(shí)序圖

  if_stage

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

  本模塊的主要時(shí)序如下圖。

  

  圖 17 if_stage時(shí)序圖

  if_id_reg

  本模塊完成IF和ID兩個(gè)階段之間的信號(hào)流水。本模塊的時(shí)序圖如下。

  

  圖 18 if_id_reg時(shí)序圖

  id_stage

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

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

  本模塊的基本時(shí)序圖如下。

  

  圖 19 id_stage時(shí)序圖

  id_exe_stage

  本模塊完成IF和ID兩個(gè)階段之間的信號(hào)流水。本模塊的時(shí)序圖如下。

  

  圖 20 id_exe_reg時(shí)序圖

  exe_stage

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

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

  本模塊的時(shí)序圖如下。

  

  圖 21 exe_stage時(shí)序圖

  


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞:

評(píng)論


相關(guān)推薦

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

關(guān)閉