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