摘 要: 傳統(tǒng)的微處理器由于內(nèi)部有限的邏輯資源和外部固定的引腳封裝,大大限制了應(yīng)用范圍。為此,在闡述微控制器的內(nèi)部結(jié)構(gòu)、存儲器管理結(jié)構(gòu)和指令集結(jié)構(gòu)后,利用現(xiàn)場可編程門陣列豐富的邏輯資源,虛擬出傳統(tǒng)微控制器的處理器核心,添加Wishbone總線,將處理器核心與通用外設(shè)連接構(gòu)成一個虛擬的微控制器平臺,并使用硬件描述語言Verilog和VHDL,自底向上設(shè)計AVR處理器核心,與通用外設(shè)互連組成系統(tǒng),使用XILINX Virtex?Ⅱ Pro芯片進行板級驗證。結(jié)果表明,實現(xiàn)了既定目標(biāo),與標(biāo)準(zhǔn)的微控制器兼容,系統(tǒng)運行穩(wěn)定。該方法延續(xù)了傳統(tǒng)微控制器的生命力,能使其得到更大發(fā)展。
關(guān)鍵詞: 微控制器; 哈佛結(jié)構(gòu); 現(xiàn)場可編程門陣列; Wishbone總線
中圖分類號: TN911?34; TP338 文獻標(biāo)識碼: A 文章編號: 1004?373X(2013)14?0127?04
Simulation and design of AVR processor based on VLSI platform
ZHANG Yi?nan1, HE Jing1, YUAN Jie2
(1. Information Science and Engineering Academy of Jinling College, Nanjing University, Nanjing 210089, China;
2. School of Electronic Science and Engineering, Nanjing University, Nanjing 210093, China)
Abstract: Internal limited logic resources and external fixed?pin package of traditional microprocessors greatly limit their application range. The internal structure, memory management structure and instruction set architecture of micro control unit (MCU) are described. The abundant logic resources of field programmable gate array (FPGA) are used to virtualize the processor core of traditional MCU. Wishbone bus is added to connect processor core with common peripherals to form a virtual MCU platform. Moreover, the bottom?up design of AVR core is performed with hardware description languages such as Verilog and VHDL, which is connected with common peripherals to build a system. Board level validation was carried out with XILINX Virtex?II Pro chip. The result shows that the set objective is achieved and the system which runs stable is compatible with standard MCU. This method continues the vitality of traditional MCU, and makes it further progressed.
Keywords: microcontroller; Harvard architecture; field programmable gate array; Wishbone bus
0 引 言
隨著社會發(fā)展,工業(yè)控制及人們?nèi)粘I钤絹碓阶非缶芸刂疲瑸闈M足這種需求,微控制器得到了快速發(fā)展。微控制器(Micro Control Unit,MCU)又稱單片微型控制計算機或單片機。隨著大規(guī)模集成電路(Large Scale Integration,LSI)發(fā)展,MCU將原本分散的中央處理器(Central Processor Unit,CPU)、隨機存儲器(Random Access Memory,RAM)、只讀存儲器(Read Only Memory,ROM)、輸入/輸出接口(In/Out Ports,I/O)等集中于一塊單晶芯片內(nèi),形成一種芯片級計算系統(tǒng)。MCU主要用于控制,MCU構(gòu)成的系統(tǒng)有實時、快速的外部響應(yīng),能迅速采集到大量數(shù)據(jù),做出邏輯判斷與推理后實現(xiàn)對被控制對象的參數(shù)調(diào)整與控制。但是隨著對控制的要求增大,傳統(tǒng)MCU也越來越顯得捉襟見肘。為此使用專用應(yīng)用集成電路(Application Speci?c Integrated Circuit,ASIC)器件在片內(nèi)實現(xiàn)與傳統(tǒng)MCU相兼容的核心,選用合適的片內(nèi)總線來連接外設(shè),構(gòu)成一個兼容傳統(tǒng)MCU平臺,這種方法必會延續(xù)傳統(tǒng)MCU的生命力,使其獲得更大的發(fā)展[1?3]。
1 MCU簡介
若將4位單片機的出現(xiàn)作為MCU的起點,MCU的發(fā)展大致可以分為如下階段:初級階段(1971年—1976年)、8位低性能階段(1976年—1980年)、8位高性能階段(1980年—1983年)、16位階段(1983年至80年代末)、片上系統(tǒng)(System On?Chip,SoC)階段(1990-)。一個通用的MCU由ROM、RAM、GPIO、串行設(shè)備(UART/SPI/IIC)、計數(shù)器/定時器(TIMER)等組成,并通過總線連接,如圖1所示。
圖1 MCU組成圖
傳統(tǒng)MCU都需要一套指令集結(jié)構(gòu)(Instruction Set Architecture,ISA)。從現(xiàn)階段主流體系結(jié)構(gòu)講,主要分為復(fù)雜指令集(Complex Instruction Set Computer,CISC)和精簡指令集(Reduced Instruction Set Computer,RISC)。RISC增加了運行速度,大大減小了指令集數(shù)目,方便使用多級流水線結(jié)構(gòu),可增加寄存器數(shù)量。AVR單片機就是一款內(nèi)置FLASH的增強型RISC處理器[4]。
另外MCU需要將數(shù)據(jù)和指令存儲于存儲器中。目前使用最多的兩種存儲器組織結(jié)構(gòu)分別為馮·諾依曼結(jié)構(gòu)(Von Neumann Architecture)和哈佛結(jié)構(gòu)(Harvard Architecture)。馮·諾依曼結(jié)構(gòu)將處理器指令和數(shù)據(jù)合并在一起存儲,指向同一存儲器的不同物理地址。哈佛結(jié)構(gòu)將程序指令存儲和數(shù)據(jù)存儲分開,中央處理器先從程序指令存儲器中獲得指令譯碼后得到數(shù)據(jù)地址,再由此從數(shù)據(jù)存儲器中取得數(shù)據(jù),并進行下一步操作。哈佛結(jié)構(gòu)的微處理器通常有很高的執(zhí)行效率。Atmel公司的AVR系列就是采用的哈佛結(jié)構(gòu)。
AVR單片機是由Atmel公司在1997年推出的高速8位MCU,內(nèi)置FLASH的增強型RISC處理器,可廣泛應(yīng)用于計算機外部子系統(tǒng)、工業(yè)生產(chǎn)和控制、儀器儀表、通信設(shè)備、家用電器等各個領(lǐng)域。大部分AVR片上資源豐富:如E2PROM,PWM,RTC,SPI,USART,TWI,ISP,AD,Analog Comparator,WDT等。AVR單片機內(nèi)嵌高質(zhì)量的FLASH程序存儲器,擦寫方便,支持ISP和IAP,便于產(chǎn)品的調(diào)試、開發(fā)、生產(chǎn)、更新。內(nèi)嵌長壽命的E2PROM可長期保存關(guān)鍵數(shù)據(jù),避免斷電丟失。 片內(nèi)大容量的RAM不僅能滿足一般場合的使用,同時也更有效地支持使用高級語言開發(fā)系統(tǒng)程序,并可像8051單片機那樣擴展外部RAM[5]。
2 FPGA簡介
ASIC是指依特定用途而設(shè)計的特殊規(guī)格邏輯電路。ASIC的最顯著特點是面向特定用戶需求,與通用集成電路相比有更小的體積、更低的功耗、較高的可靠性、較強的保密性和低成本等優(yōu)點,但因為開發(fā)較為復(fù)雜,所以研發(fā)周期較長。
隨著電子工業(yè)技術(shù)的發(fā)展,ASIC的設(shè)計方法變得越簡單,效率越高,可編程ASIC就是一個很有特色的設(shè)計分支,它主要利用可編程的集成電路如PLD(Programmable Read Only Memory)等可編程邏輯電路來設(shè)計。主要特點是直接提供軟件設(shè)計編程,完成ASIC電路功能,而不再通過集成電路工藝加工后得到成品。這種方法大大降低了開發(fā)周期,且縮小了成本。
現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)就是眾多PLD產(chǎn)品中應(yīng)用最為廣泛的一種,它采用了邏輯單元陣列(Logic Cell Array,LCA),內(nèi)部包含了可配置的邏輯模塊(Con?gurable Logic Block,CLB)、輸入/輸出模塊(Input Output Block,IOB)和內(nèi)部連線(Interconnect)。FPGA采用的是小型查找表來實現(xiàn)組合邏輯的,每個查找表連接到一個D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動其他的邏輯電路或者I/O,由此構(gòu)成即可實現(xiàn)組合邏輯功能又可實現(xiàn)時序邏輯功能的基本邏輯單元模塊,通過內(nèi)部連線互相連接。FPGA的邏輯是通過向內(nèi)部靜態(tài)存儲單元加載編程數(shù)據(jù)來實現(xiàn)的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O之間的聯(lián)系方式,并且最終決定了FPGA所實現(xiàn)的功能。由于FPGA采用查找表結(jié)構(gòu),而查找表本質(zhì)是一個小RAM,所以FPGA內(nèi)部信息掉電消失,上電需要重新進行配置。FPGA支持多次重復(fù)編程。相對于其他的可編程器件,F(xiàn)PGA是ASIC電路中設(shè)計風(fēng)險最小、開發(fā)費用最低、周期最短的器件之一。采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。同時FPGA的內(nèi)部邏輯和I/O資源非常豐富,可以說用FPGA芯片進行小批量生產(chǎn),對于提高系統(tǒng)集成度、可靠性是很有幫助的[6]。
在眾多PLD廠家中,XILINX公司的產(chǎn)品種類豐富,其開發(fā)工具ISE為業(yè)界公認的最好的開發(fā)工具之一,且其芯片的性價比很高。所以,這里主要使用XILINX公司的產(chǎn)品。XILINX公司主要FPGA產(chǎn)品為SPARTAN系列和VIRTEX系列。前者面向低成本應(yīng)用,滿足一般的邏輯設(shè)計要求,后者面向高性能應(yīng)用,滿足高端要求。文中選擇Virtex?Ⅱ Pro系列芯片作為開發(fā)平臺。這款芯片含有可編程輸入/輸出塊、可配置邏輯塊、嵌入式RAM塊、數(shù)字時鐘管理模塊、專用硬核以及豐富的布線資源。FPGA的設(shè)計過程是利用EDA工具將設(shè)計輸入轉(zhuǎn)化為FPGA芯片可運行的過程,開發(fā)的一般流程見圖2。
3 Virtual AVR實現(xiàn)
通過對FPGA和MCU的深入了解,可知使用FPGA的豐富資源來虛擬出MCU是完全可行的。首先,需設(shè)計一個總體結(jié)構(gòu),如圖3所示。ROM用于存放被執(zhí)行程序及二進制代碼,RAM為運行內(nèi)存,用總線將Virtual MCU Core與各外設(shè)相連。使用該結(jié)構(gòu)可簡化設(shè)計,無需對外設(shè)重復(fù)設(shè)計,只要使Virtual MCU Core滿足同一接口即可。
圖2 FPGA開發(fā)流程
圖3 Virtual MCU結(jié)構(gòu)
Virtual MCU Core由幾部分構(gòu)成:算術(shù)邏輯單元,運算的主要單元;譯碼器,由二進制文件判斷指令類型并獲得源操作數(shù)和目的操作數(shù)等;寄存器,用于參加運算和存儲某些中間值等。
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è)計中,移植了OpenCores開源組織的8位AVR核,它支持3級流水線,兼容標(biāo)準(zhǔn)AVR微處理器。
圖4 Virtual AVR結(jié)構(gòu)
ALU的實現(xiàn)采用模塊化設(shè)計,共分為控制模塊、加減法模塊和乘除法模塊。3級流水線設(shè)計如下:
stage0:FETCH,給出指令地址,并讀取相應(yīng)的指令,主要由譯碼機構(gòu)負責(zé);
stage1:ALU/MEM,ALU運算,或數(shù)據(jù)存儲器操作,讀數(shù)據(jù)存儲器時,在地址總線上給出正確的值,當(dāng)寫數(shù)據(jù)存儲器時,不僅需要提供正確的地址,還需要在數(shù)據(jù)總線上提供正確的數(shù)據(jù),主要由運算機構(gòu)和總線控制機構(gòu)負責(zé)。
Stage2:LOAD,從數(shù)據(jù)線上獲取數(shù)據(jù),存至寄存器中,主要由寄存器機構(gòu)負責(zé)。
在一個系統(tǒng)中光有處理器是不夠的,需要有豐富的外設(shè)來滿足各種控制要求或數(shù)據(jù)傳輸功能,而片內(nèi)總線便是將處理器與總線連接的重要途徑。文中采用Silicore的Wishbone總線進行設(shè)計,具有簡單、開放、高效和方便實現(xiàn)等特點,且完全開放并沒有專利保護。Wishbone有四種連接模式:點對點、數(shù)據(jù)流、共享總線和十字交叉互聯(lián)[7?8]。文中使用共享總線連接方式,其中充當(dāng)Master為Virtual Core,而外設(shè)為Slaver。
為使Virtual Core能與外部器件進行通信,需要外設(shè)的支持。外設(shè)按數(shù)據(jù)流類型分為串行和并行,常用的串行外設(shè)有SPI、I2C、UART等[9?10],常用的并行外設(shè)有GPIO等。
4 硬件支持與測試
硬件環(huán)境主要分為兩部分:第一部分為核心板,用以支持Virtex?Ⅱ Pro的運行;第二部分為底板,主要為添加外設(shè)環(huán)境,豐富系統(tǒng)的功能。選用XC2VP50FFG1152芯片作為核心的FPGA,在外圍又添加了DDR和SDRAM,方便自由選擇存儲器類型。FPGA掉電后,內(nèi)容自動消失,每上電需要重新配置,為讓FPGA上電后自動配置,需加一片PROM,使用XCF32P。FPGA采用并行主模式。底板上則是增加大量外設(shè):UART、PS2、VGA、ETHERNET、VIDEO、A/D、D/A、SD、USB等。
Virtual Core執(zhí)行的程序都是固化在ROM中,為達到測試要求,要多次更新ROM中內(nèi)容,為此使用嵌入式開發(fā)套件(Embedded Development Kit,EDK)來開發(fā)一個測試工具。首先將BRAM配置為雙端口RAM,一端口給Virtual Core來進行讀取操作,一端口給EDK,來更新程序存儲器。同時EDK也可提供簡單的控制任務(wù),如重啟Virtual Core等,EDK使用UART和計算機進行操作。為方便控制,設(shè)計一個較為簡單的PC端串口程序,用于將EDK與PC交互,主要是將用戶的命令或文件經(jīng)串口發(fā)送至EDK,如圖5所示。搭建一個簡易測試系統(tǒng),使用ISE工具,進行綜合布局布線,其資源消耗如圖6所示。編寫一個跑馬燈程序,代碼如下:
#include
int main (int argc, char *argv[ ])
{ DDRA=0xFF; DDRB=0xFF;
PORTA=0xFF; PORTB=0xFF; int i;
While (1) { i++;
PORTA=i>>2; PORTB=i>>2;}}
圖5 PC界面
圖6 Virtual AVR資源使用
使用WINAVR?GCC編譯工具,編譯生成HEX文件,后再轉(zhuǎn)化為BIN文件,將該BIN文件通過EDK組建更新ROM,觀察硬件LED,如圖7所示,其正常工作,Virtual AVR得到驗證。
圖7 Virtual AVR測試結(jié)果
5 結(jié) 語
隨著MCU應(yīng)用范圍越來越寬,對MCU要求也提高,尤其目前MCU逐漸進入SoC時代,IP核復(fù)用將成為主流設(shè)計方法。為使老一代MCU延續(xù)生命力,開發(fā)其兼容IP核,不僅能將以往代碼迅速移植到新系統(tǒng),且可加快新系統(tǒng)開發(fā),將以往很多分立器件用邏輯功能實現(xiàn),集成于ASIC中,降低外圍硬件電路的設(shè)計。文中從模擬MCU核開始,闡述了用FPGA來虛擬出傳統(tǒng)MCU的設(shè)計原理和方法,適度改變內(nèi)部結(jié)構(gòu),添加Wishbone總線,替代傳統(tǒng)MCU片內(nèi)總線,來完成MCU核與外設(shè)的連接,使傳統(tǒng)MCU變的更靈活。由于Wishbone總線支持多主設(shè)備,今后可在一個FPGA中集成多個MCU核,對于性能的提升將是質(zhì)的飛躍。
參考文獻
[1] 趙毅強,劉長龍,嚴(yán)新文.嵌入式低功耗8位微控制器的設(shè)計[J].天津大學(xué)學(xué)報,2010,43(12):1098?1102.
[2] 劉岑,趙毅強,劉長龍.一種高可靠性微控制器的設(shè)計與VLSI實現(xiàn)[J].計算機工程與應(yīng)用,2012,48(6):53?56.
[3] 劉益青,高偉聰,魏鵬,等.基于MCU+DSP多處理器構(gòu)架的微機保護硬件平臺設(shè)計[J].電力系統(tǒng)保護與控制,2010,38(10):89?91.
[4] CHEN Yan?fen, WU Wu?chen, HOU Li?gang, et al. Design and implementation of 8?bit RISC MCU [C]// 2010 Asia Pacific Conference on Postgraduate Research in Microelectronics and Electronics. Shanghai: IEEE, 2010: 182?185.
[5] 孫麗晶.基于ICC AVR和Proteus軟件平臺的AVR單片機設(shè)計開發(fā)流程[J].吉林師范大學(xué)學(xué)報:自然科學(xué)版,2010(1):103?105.
[6] 石新峰,牟光臣.《可編程邏輯器件原理及應(yīng)用》課程實踐教學(xué)研究[J].新鄉(xiāng)學(xué)院學(xué)報:自然科學(xué)版,2009(3):90?92.
[7] CHANG Lei, DONG Ye. Design of the on?chip bus based on Wishbone [C]// 2011 International Conference on Electronics, Communications and Control. Zhejiang, China: ICECC, 2011: 3653?3656.
[8] ZHOU Bao?wen, LI Dong, LU Gang. Design of high?speed and reusable SPI IP core based on Wishbone interface [C]// 2011 International Conference on Electrical and Control Engineering. Yichang, China: ICECE, 2011: 1040?1042.
[9] 王宗剛,潘崢嶸.基于AVR單片機的SPI接口的實現(xiàn)[J].自動化與儀器儀表,2011(2):114?115.
[10] ZHU Yu, WANG Ying?nan, SCHAEFER U. Study on the communication between FPGA and observer using controller area network and UART [C]// Proceedings of 2010 International Conference on Information Networking and Automation. Kunming, China: ICINA, 2010,1: 240?244.