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

更新时间:2024-02-05 作者:用户投稿原创标记本站原创 点赞:33870 浏览:157183

摘 要: 传统ISA处理器内部有限的逻辑资源和外部固定的引脚封装大大的限制了它的应用范围.利用FPGA丰富的逻辑资源实现传统MCU中的各个组成部分,底层采用可配置引脚降低硬件设计复杂度,各模块间采用Wishbone总线结构的方式构建系统,可以达到传统MCU无法完成的要求,具有很好的应用前景.使用硬件描述语言,自底向上设计处理核心80C51,并且与几类通用外设互连组成系统,使用VirtexⅡ Pro系列FPGA进行板级验证.板级验证结果表明实现了既定目标,与标准MCU兼容,系统运行稳定.

关 键 词 : 逻辑资源; VLSI; FPGA; C51处理器

中图分类号: TN91134; TP368.1 文献标识码: A 文章编号: 1004373X(2013)12009205

0 引 言

随着社会的发展,工业控制及人们日常生活越来越追求精密控制,为了满足这种需求,微控制器得到了快速的发展.随着VLSI发展,MCU将原本分散的CPU,RAM,ROM,I/O等集中于一块单晶芯片内,形成一种芯片级计算系统.MCU主要用于控制目的,MCU构成的系统有实时、快速的外部响应,能迅速采集到大量的数据,做出逻辑判断与推理后实现对被控制对象的参数调整与控制[1].MCU被广泛应用于家用电器、科学教育、工业控制、自动生产及仪器仪表中.在移动互联网快速发展的今天,MCU的应用领域进一步扩大.但是随着时代的推进,对控制的要求逐步增大,所需满足功能的逐渐增多,传统MCU也越来越显得捉襟见肘.使用ASIC器件在片内实现与传统MCU相兼容的核心,选用合适的片内总线来连接外设,构成一个兼容传统MCU平台,这种方法必会延续传统MCU的生命力,使其获得更大的发展.

1.VirtexⅡ Pro

FPGA采用了逻辑单元阵列(Logic Cell Array,LCA),内部包含了可配置的逻辑模块(Configurable Logic Block,CLB)、输入/输出模块(Input Output Block,IOB)和内部连线(Interconnect).与传统的可编程程器件相比,FPGA是ASIC电路中设计风险最小、开发费用最低、周期最短的器件之一.采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容.同时FPGA的内部逻辑和I/O资源非常的丰富,可以说利用FPGA芯片进行小批量生产,对于提高系统有帮助的.

VirtexⅡ Pro系列[2]在VirtexⅡ的基础上,增强了嵌入式处理能力,内嵌PowerP05内核,还包括了先进的主动互联技术,以解决高性能系统所面临的挑战.此外还增加了高速串行收发器,提供了千兆以太网的解决方案.主要特征如下[34]:

(1)核电压为1.5 V,工作时钟可以达到420 MHz;

(2)支持多达20种的I/O接口标准;

(3)增加了2个高性能RISC技术,频率高达400MHz的PowerPc处理器;

(4)增加多个3.125 Gb/s速率的Rocket串行收发器;

(5)内嵌了多个硬核乘法器,提高了DSP处理能力;

(6)具有完全系统时钟管理功能,多达8个DCM.

2.Virtual 80C51 Core 实现

2.1 存储器管理

所有的8051器件都将程序存储器(ROM)和数据存储器(RAM)逻辑分离.这种逻辑分离对于允许8位的MCU的8位地址线访问数据存储器是非常有利的,而且可以进行快速的存取操作.

程序存储器,使用内部BRAM,配置为ROM,用于存放存储器,使用其中的11根地址线,配置为2 KB容量,当然用户可以依据自己的需求来写作容量.数据存储器,使用内部BRAM,配置为RAM,容量为128 b.内部数据存储器包含了4个8 b的寄存器组和一个32 b的段,其结构如图2所示.

2.2 定时/计数器

2.3 中断管理

Virtual 8051 Core为了能更好完成任务,需要支持中断,为此需要设计2路内部中断和2路外部中断.外部中断,系统通过检测外部中断引脚,如果发生电平变换或者上升下降沿的到来时,便向系统产生一个中断信号.内部中断,当定时器/计数器,计数满时,便向系统产生一个中断信号.

当中断到来,首先检测中断寄存器,是否允许中断,如果中断打开,则中断控制器将会在适当的位置产生一个LCALL指令,除非有如下情况阻塞中断:系统正在执行一个高优先级或者优先级相同的过程;上一条指令还没有完全执行完毕.

中断处理过程如下:当中断产生后,硬件系统将会产生一个LCALL的指令;指令系统接受到LCALL指令后,保存现场,将PC(程序计数器)等寄存器压入堆栈中;更新PC等寄存器,跳转至中断执行程序,并且清楚中断标志位;中断程序执行完毕后,自动恢复现场,将堆栈中的PC等寄存器值恢复.

2.4 ALU

ALU的实现较为简单,采用模块化设计,共划分为3个模块:控制模块、加减法模块和乘除法模块.控制模块负责简单的控制功能,如功能选择等.在本设计中加能使用超前进位法来设计的,而减能,则使用加补码的方式通过加能实现;乘除法模块我们可以使用了VirtexⅡ Pro中集成了乘法单元和DSP模块来实现,也可以使用加减法和移位寄存器的组合来实现.其具体方法可见参考文献[6].

2.5 译码控制器

Virtual C51 Core使用标准的C51的指令系统,这样便可以做到最好的兼容性,其指令集主要分为如下几类[7]:

(1)算术指令,其中包括ADD,INC,SUB,MUL,DIV,DEC等算术指令; (2)逻辑指令,其中主要有ANL,ORL,XRL等逻辑操作;

(3)数据传输类指令,其中主要有MOV,PUSH,POP,XCH等;

(4)查找表指令,其中主要是MOVC;

(5)布尔指令,其中有JNC,JNB,JC等;

(6)跳转指令,其中无条件跳转指令有JMP,CALL,RET等,有条件跳转JZ,JNZ,CJNE等;

(7)空指令,NOP.

指令按字节数可以分为单字节指令、双字节指令和三字节指令.按照执行周期又可以分为单周期指令、双周期指令和四周期指令.

当获得一条指令,首先译码器进行指令译码,分解指令,获得对应的指令操作类型,根据该操作类型来选择后续操作逻辑单元块;然后译码目的操作数,获得目的操作数的位置,用于存储结果,最后译码源操作数.

C51支持多种寻址方式:直接寻址、寄存器寻址、寄存器间接寻址、立即寻址、变址寻址、位寻址和相对选址[7].正确译码获取源操作数的地址,由控制器根据该地址获取正确的值传给运算模块,进行运算.由于是早期的MCU,其支持的指令集较少,它的指令格式较为简单,通过识别其操作码便可以速的识别出其寻址方式,故其译码器设计较为简单.

2.6 外设总线接口

Virtual C51 Core对于外设的访问采用简单的地址映射方式.采用这种方式,虽然比较浪费地址空间,但是实现较为简单,无需增加额外设计,简化设计.

80C51作为一款较为简单的MCU,对其内部实现也较为简洁,所使用的逻辑也较少,所以Virtual C51 Core 非常适合在低端的FPGA甚至是某些特定的CPLD中实现,而且作为早期发展至今的MCU,其相应驱动资源也较为丰富,对于上层软件工程师而言,可以迅速的完成设计任务.

3.外设总线

在一个系统中光有处理器还是不够的,需要有丰富的外设来满足各种控制要求或者数据传输功能.而片内总线便是将处理器与总线相连接的重要路径.Wishbone是一种开放并且完全免费的总线标准,Wishbone独有的特点如下:

(1)Wishbone仅仅定义了Core之间的连接时需要的信号;

(2)支持多种连接模式:点对点,数据流,共享总线和十字交叉互联;

(3)Wishbone总线的所有信号都与总线的时钟同步;

(4)支持大小端模式,用户可以根据自己的需求配置成不同的模式;

(5)Wishbone总线接口区分明确,分为主(Master)/从(Sle).

(6)Wishbone有四种连接模式[8]:点对点、数据流、共享总线和十字交叉互联,在此使用共享总线式连接方式,其中充当Master为Virtual Core,而外设为Sler,如图5所示.

4.测 试

4.1 测试工具

5.结 语

随着MCU的应用范围越来越宽,对MCU的要求也逐步提高.尤其在目前MCU逐渐进入SoC时代,IP核复用将会成为主流设计方法.为了能使老一代的MCU发挥延续其生命力,开发其兼容IP核,不仅能够将以往的代码迅速的移植到新系统上,而且还可以加快新系统的开发.而且可以将以往很多的分立件,使用逻辑功能实现,集成于ASIC中,降低硬件电路的设计.


本文阐述了用FPGA等可编程ASIC元器件来虚拟出传统的MCU 80C51的设计原理和方法.通过适度改变其内部结构,添加Wishbone总线,替代传统MCU片内总线,用来完成MCU核与外设的连接.使用这种方式,可以充分的利用市场上已经成熟的外设核,避免重复设计,同时也方便对传统的MCU进行裁剪和写作,这样将会使传统的MCU更加的灵活可变.

相关论文范文