基于VLSI平台的AVR处理器仿真与设计

时间:2022-10-17 07:35:48

基于VLSI平台的AVR处理器仿真与设计

摘 要: 传统的微处理器由于内部有限的逻辑资源和外部固定的引脚封装,大大限制了应用范围。为此,在阐述微控制器的内部结构、存储器管理结构和指令集结构后,利用现场可编程门阵列丰富的逻辑资源,虚拟出传统微控制器的处理器核心,添加Wishbone总线,将处理器核心与通用外设连接构成一个虚拟的微控制器平台,并使用硬件描述语言Verilog和VHDL,自底向上设计AVR处理器核心,与通用外设互连组成系统,使用XILINX Virtex?Ⅱ Pro芯片进行板级验证。结果表明,实现了既定目标,与标准的微控制器兼容,系统运行稳定。该方法延续了传统微控制器的生命力,能使其得到更大发展。

关键词: 微控制器; 哈佛结构; 现场可编程门阵列; Wishbone总线

中图分类号: TN911?34; TP338 文献标识码: 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 引 言

随着社会发展,工业控制及人们日常生活越来越追求精密控制,为满足这种需求,微控制器得到了快速发展。微控制器(Micro Control Unit,MCU)又称单片微型控制计算机或单片机。随着大规模集成电路(Large Scale Integration,LSI)发展,MCU将原本分散的中央处理器(Central Processor Unit,CPU)、随机存储器(Random Access Memory,RAM)、只读存储器(Read Only Memory,ROM)、输入/输出接口(In/Out Ports,I/O)等集中于一块单晶芯片内,形成一种芯片级计算系统。MCU主要用于控制,MCU构成的系统有实时、快速的外部响应,能迅速采集到大量数据,做出逻辑判断与推理后实现对被控制对象的参数调整与控制。但是随着对控制的要求增大,传统MCU也越来越显得捉襟见肘。为此使用专用应用集成电路(Application Speci?c Integrated Circuit,ASIC)器件在片内实现与传统MCU相兼容的核心,选用合适的片内总线来连接外设,构成一个兼容传统MCU平台,这种方法必会延续传统MCU的生命力,使其获得更大的发展[1?3]。

1 MCU简介

若将4位单片机的出现作为MCU的起点,MCU的发展大致可以分为如下阶段:初级阶段(1971年—1976年)、8位低性能阶段(1976年—1980年)、8位高性能阶段(1980年—1983年)、16位阶段(1983年至80年代末)、片上系统(System On?Chip,SoC)阶段(1990-)。一个通用的MCU由ROM、RAM、GPIO、串行设备(UART/SPI/IIC)、计数器/定时器(TIMER)等组成,并通过总线连接,如图1所示。

图1 MCU组成图

传统MCU都需要一套指令集结构(Instruction Set Architecture,ISA)。从现阶段主流体系结构讲,主要分为复杂指令集(Complex Instruction Set Computer,CISC)和精简指令集(Reduced Instruction Set Computer,RISC)。RISC增加了运行速度,大大减小了指令集数目,方便使用多级流水线结构,可增加寄存器数量。AVR单片机就是一款内置FLASH的增强型RISC处理器[4]。

另外MCU需要将数据和指令存储于存储器中。目前使用最多的两种存储器组织结构分别为冯·诺依曼结构(Von Neumann Architecture)和哈佛结构(Harvard Architecture)。冯·诺依曼结构将处理器指令和数据合并在一起存储,指向同一存储器的不同物理地址。哈佛结构将程序指令存储和数据存储分开,中央处理器先从程序指令存储器中获得指令译码后得到数据地址,再由此从数据存储器中取得数据,并进行下一步操作。哈佛结构的微处理器通常有很高的执行效率。Atmel公司的AVR系列就是采用的哈佛结构。

AVR单片机是由Atmel公司在1997年推出的高速8位MCU,内置FLASH的增强型RISC处理器,可广泛应用于计算机外部子系统、工业生产和控制、仪器仪表、通信设备、家用电器等各个领域。大部分AVR片上资源丰富:如E2PROM,PWM,RTC,SPI,USART,TWI,ISP,AD,Analog Comparator,WDT等。AVR单片机内嵌高质量的FLASH程序存储器,擦写方便,支持ISP和IAP,便于产品的调试、开发、生产、更新。内嵌长寿命的E2PROM可长期保存关键数据,避免断电丢失。 片内大容量的RAM不仅能满足一般场合的使用,同时也更有效地支持使用高级语言开发系统程序,并可像8051单片机那样扩展外部RAM[5]。

2 FPGA简介

ASIC是指依特定用途而设计的特殊规格逻辑电路。ASIC的最显著特点是面向特定用户需求,与通用集成电路相比有更小的体积、更低的功耗、较高的可靠性、较强的保密性和低成本等优点,但因为开发较为复杂,所以研发周期较长。

随着电子工业技术的发展,ASIC的设计方法变得越简单,效率越高,可编程ASIC就是一个很有特色的设计分支,它主要利用可编程的集成电路如PLD(Programmable Read Only Memory)等可编程逻辑电路来设计。主要特点是直接提供软件设计编程,完成ASIC电路功能,而不再通过集成电路工艺加工后得到成品。这种方法大大降低了开发周期,且缩小了成本。

现场可编程门阵列(Field Programmable Gate Array,FPGA)就是众多PLD产品中应用最为广泛的一种,它采用了逻辑单元阵列(Logic Cell Array,LCA),内部包含了可配置的逻辑模块(Con?gurable Logic Block,CLB)、输入/输出模块(Input Output Block,IOB)和内部连线(Interconnect)。FPGA采用的是小型查找表来实现组合逻辑的,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他的逻辑电路或者I/O,由此构成即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,通过内部连线互相连接。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O之间的联系方式,并且最终决定了FPGA所实现的功能。由于FPGA采用查找表结构,而查找表本质是一个小RAM,所以FPGA内部信息掉电消失,上电需要重新进行配置。FPGA支持多次重复编程。相对于其他的可编程器件,FPGA是ASIC电路中设计风险最小、开发费用最低、周期最短的器件之一。采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。同时FPGA的内部逻辑和I/O资源非常丰富,可以说用FPGA芯片进行小批量生产,对于提高系统集成度、可靠性是很有帮助的[6]。

在众多PLD厂家中,XILINX公司的产品种类丰富,其开发工具ISE为业界公认的最好的开发工具之一,且其芯片的性价比很高。所以,这里主要使用XILINX公司的产品。XILINX公司主要FPGA产品为SPARTAN系列和VIRTEX系列。前者面向低成本应用,满足一般的逻辑设计要求,后者面向高性能应用,满足高端要求。文中选择Virtex?Ⅱ Pro系列芯片作为开发平台。这款芯片含有可编程输入/输出块、可配置逻辑块、嵌入式RAM块、数字时钟管理模块、专用硬核以及丰富的布线资源。FPGA的设计过程是利用EDA工具将设计输入转化为FPGA芯片可运行的过程,开发的一般流程见图2。

3 Virtual AVR实现

通过对FPGA和MCU的深入了解,可知使用FPGA的丰富资源来虚拟出MCU是完全可行的。首先,需设计一个总体结构,如图3所示。ROM用于存放被执行程序及二进制代码,RAM为运行内存,用总线将Virtual MCU Core与各外设相连。使用该结构可简化设计,无需对外设重复设计,只要使Virtual MCU Core满足同一接口即可。

图2 FPGA开发流程

图3 Virtual MCU结构

Virtual MCU Core由几部分构成:算术逻辑单元,运算的主要单元;译码器,由二进制文件判断指令类型并获得源操作数和目的操作数等;寄存器,用于参加运算和存储某些中间值等。

Virtual AVR Core以ATmega103处理器为参考,核心采用RISC结构,3级流水线结构,因为是哈佛结构,所以分为数据存储器和指令存储器。它的处理器核心如图4所示。同时ATmega103共有130条指令,每条指令都是固定结构,为16位。在该设计中,移植了OpenCores开源组织的8位AVR核,它支持3级流水线,兼容标准AVR微处理器。

图4 Virtual AVR结构

ALU的实现采用模块化设计,共分为控制模块、加减法模块和乘除法模块。3级流水线设计如下:

stage0:FETCH,给出指令地址,并读取相应的指令,主要由译码机构负责;

stage1:ALU/MEM,ALU运算,或数据存储器操作,读数据存储器时,在地址总线上给出正确的值,当写数据存储器时,不仅需要提供正确的地址,还需要在数据总线上提供正确的数据,主要由运算机构和总线控制机构负责。

Stage2:LOAD,从数据线上获取数据,存至寄存器中,主要由寄存器机构负责。

在一个系统中光有处理器是不够的,需要有丰富的外设来满足各种控制要求或数据传输功能,而片内总线便是将处理器与总线连接的重要途径。文中采用Silicore的Wishbone总线进行设计,具有简单、开放、高效和方便实现等特点,且完全开放并没有专利保护。Wishbone有四种连接模式:点对点、数据流、共享总线和十字交叉互联[7?8]。文中使用共享总线连接方式,其中充当Master为Virtual Core,而外设为Slaver。

为使Virtual Core能与外部器件进行通信,需要外设的支持。外设按数据流类型分为串行和并行,常用的串行外设有SPI、I2C、UART等[9?10],常用的并行外设有GPIO等。

4 硬件支持与测试

硬件环境主要分为两部分:第一部分为核心板,用以支持Virtex?Ⅱ Pro的运行;第二部分为底板,主要为添加外设环境,丰富系统的功能。选用XC2VP50FFG1152芯片作为核心的FPGA,在又添加了DDR和SDRAM,方便自由选择存储器类型。FPGA掉电后,内容自动消失,每上电需要重新配置,为让FPGA上电后自动配置,需加一片PROM,使用XCF32P。FPGA采用并行主模式。底板上则是增加大量外设:UART、PS2、VGA、ETHERNET、VIDEO、A/D、D/A、SD、USB等。

Virtual Core执行的程序都是固化在ROM中,为达到测试要求,要多次更新ROM中内容,为此使用嵌入式开发套件(Embedded Development Kit,EDK)来开发一个测试工具。首先将BRAM配置为双端口RAM,一端口给Virtual Core来进行读取操作,一端口给EDK,来更新程序存储器。同时EDK也可提供简单的控制任务,如重启Virtual Core等,EDK使用UART和计算机进行操作。为方便控制,设计一个较为简单的PC端串口程序,用于将EDK与PC交互,主要是将用户的命令或文件经串口发送至EDK,如图5所示。搭建一个简易测试系统,使用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文件,后再转化为BIN文件,将该BIN文件通过EDK组建更新ROM,观察硬件LED,如图7所示,其正常工作,Virtual AVR得到验证。

图7 Virtual AVR测试结果

5 结 语

随着MCU应用范围越来越宽,对MCU要求也提高,尤其目前MCU逐渐进入SoC时代,IP核复用将成为主流设计方法。为使老一代MCU延续生命力,开发其兼容IP核,不仅能将以往代码迅速移植到新系统,且可加快新系统开发,将以往很多分立器件用逻辑功能实现,集成于ASIC中,降低硬件电路的设计。文中从模拟MCU核开始,阐述了用FPGA来虚拟出传统MCU的设计原理和方法,适度改变内部结构,添加Wishbone总线,替代传统MCU片内总线,来完成MCU核与外设的连接,使传统MCU变的更灵活。由于Wishbone总线支持多主设备,今后可在一个FPGA中集成多个MCU核,对于性能的提升将是质的飞跃。

参考文献

[1] 赵毅强,刘长龙,严新文.嵌入式低功耗8位微控制器的设计[J].天津大学学报,2010,43(12):1098?1102.

[2] 刘岑,赵毅强,刘长龙.一种高可靠性微控制器的设计与VLSI实现[J].计算机工程与应用,2012,48(6):53?56.

[3] 刘益青,高伟聪,魏鹏,等.基于MCU+DSP多处理器构架的微机保护硬件平台设计[J].电力系统保护与控制,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单片机设计开发流程[J].吉林师范大学学报:自然科学版,2010(1):103?105.

[6] 石新峰,牟光臣.《可编程逻辑器件原理及应用》课程实践教学研究[J].新乡学院学报:自然科学版,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接口的实现[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.

上一篇:试论我国应急管理的媒体沟通 下一篇:项目教学法在电子技术课程中的实践与探索