基于VLSI 平臺的AVR 處理器仿真與設(shè)計
3 Virtual AVR 實現(xiàn)
通過對FPGA和MCU的深入了解,可知使用FPGA的豐富資源來虛擬出MCU是完全可行的。首先,需設(shè)計一個總體結(jié)構(gòu),如圖3所示。ROM用于存放被執(zhí)行程序及二進(jìn)制代碼,RAM 為運(yùn)行內(nèi)存,用總線將VirtualMCU Core與各外設(shè)相連。使用該結(jié)構(gòu)可簡化設(shè)計,無需對外設(shè)重復(fù)設(shè)計,只要使Virtual MCU Core滿足同一接口即可。
Virtual MCU Core由幾部分構(gòu)成:算術(shù)邏輯單元,運(yùn)算的主要單元;譯碼器,由二進(jìn)制文件判斷指令類型并獲得源操作數(shù)和目的操作數(shù)等;寄存器,用于參加運(yùn)算和存儲某些中間值等。
Virtual AVR Core 以ATmega103處理器為參考,核心采用RISC結(jié)構(gòu),3級流水線結(jié)構(gòu),因為是哈佛結(jié)構(gòu),所以分為數(shù)據(jù)存儲器和指令存儲器。它的處理器核心如圖4所示。同時ATmega103共有130條指令,每條指令都是固定結(jié)構(gòu),為16 位。在該設(shè)計中,移植了Open-Cores開源組織的8位AVR核,它支持3級流水線,兼容標(biāo)準(zhǔn)AVR微處理器。
ALU的實現(xiàn)采用模塊化設(shè)計,共分為控制模塊、加減法模塊和乘除法模塊。3級流水線設(shè)計如下:
stage0:FETCH,給出指令地址,并讀取相應(yīng)的指令,主要由譯碼機(jī)構(gòu)負(fù)責(zé);stage1:ALU/MEM,ALU運(yùn)算,或數(shù)據(jù)存儲器操作,讀數(shù)據(jù)存儲器時,在地址總線上給出正確的值,當(dāng)寫數(shù)據(jù)存儲器時,不僅需要提供正確的地址,還需要在數(shù)據(jù)總線上提供正確的數(shù)據(jù),主要由運(yùn)算機(jī)構(gòu)和總線控制機(jī)構(gòu)負(fù)責(zé)。
Stage2:LOAD,從數(shù)據(jù)線上獲取數(shù)據(jù),存至寄存器中,主要由寄存器機(jī)構(gòu)負(fù)責(zé)。
在一個系統(tǒng)中光有處理器是不夠的,需要有豐富的外設(shè)來滿足各種控制要求或數(shù)據(jù)傳輸功能,而片內(nèi)總線便是將處理器與總線連接的重要途徑。文中采用Sili-core的Wishbone總線進(jìn)行設(shè)計,具有簡單、開放、高效和方便實現(xiàn)等特點,且完全開放并沒有專利保護(hù)。Wish-bone有四種連接模式:點對點、數(shù)據(jù)流、共享總線和十字交叉互聯(lián)。文中使用共享總線連接方式,其中充當(dāng)Master為Virtual Core,而外設(shè)為Slaver.
為使Virtual Core能與外部器件進(jìn)行通信,需要外設(shè)的支持。外設(shè)按數(shù)據(jù)流類型分為串行和并行,常用的串行外設(shè)有SPI、I2C、UART 等,常用的并行外設(shè)有GPIO等。
4 硬件支持與測試
硬件環(huán)境主要分為兩部分:第一部分為核心板,用以支持Virtex-Ⅱ Pro的運(yùn)行;第二部分為底板,主要為添加外設(shè)環(huán)境,豐富系統(tǒng)的功能。選用XC2VP50FFG1152芯片作為核心的FPGA,在外圍又添加了DDR和SDRAM,方便自由選擇存儲器類型。FP-GA掉電后,內(nèi)容自動消失,每上電需要重新配置,為讓FPGA 上電后自動配置,需加一片PROM,使用XCF32P.FPGA采用并行主模式。底板上則是增加大量外設(shè):UART、PS2、VGA、ETHERNET、VIDEO、A/D、D/A、SD、USB等。
Virtual Core執(zhí)行的程序都是固化在ROM中,為達(dá)到測試要求,要多次更新ROM中內(nèi)容,為此使用嵌入式開發(fā)套件(Embedded Development Kit,EDK)來開發(fā)一個測試工具。首先將BRAM配置為雙端口RAM,一端口給Virtual Core來進(jìn)行讀取操作,一端口給EDK,來更新程序存儲器。同時EDK也可提供簡單的控制任務(wù),如重啟Virtual Core 等,EDK 使用UART 和計算機(jī)進(jìn)行操作。為方便控制,設(shè)計一個較為簡單的PC端串口程序,用于將EDK與PC交互,主要是將用戶的命令或文件經(jīng)串口發(fā)送至EDK,如圖5所示。搭建一個簡易測試系統(tǒng),使用ISE工具,進(jìn)行綜合布局布線,其資源消耗如圖6所示。編寫一個跑馬燈程序,代碼如下:
評論