微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > FPGA和CPLD > 基于FPGA的微处理器内核设计与实现

基于FPGA的微处理器内核设计与实现

时间:06-21 来源:互联网 点击:
与传统投片实现ASIC相比,FPGA具有实现速度快、风险小、可编程、可随时更改升级等一系列优点,因而得到了越米越广泛的应用。MCS-51应用时间长、范围广,相关的软硬件资源丰富,因而往往在FPGA应用中嵌人MCS-51内核作为微控制器。但是传统MCS-51的指令效率太低,每个机器周期高达12时钟周期,因此必须对内核加以改进,提高指令执行速度和效率,才能更好地满足FPGA的应用。
通过对传统MCS-51单片机指令时序和体系结构的分析,使用VHDL语言采用自顶向下的设计方法重新设计了一个高效的微控制器内核。改进了的体系结构,可以兼容MCS-51所有指令,每个机器周期只需1个时钟周期,同时增加了硬件看门狗和软件复位功能,提高了指令执行效率和抗干扰能力。

1 系统设计

1.1 模块划分

本内核在划分和设计模块时,基于以下几条原则:

(1)同步设计,提高系统稳定性和可移植性;(2)功能明确,功能接近的放在同一个模块内以减少模块的数量和模块之间的互连线,同时利于综合时的优化;(3)模块之间的接口时序预先定义好,并严格按定义的时序要求编写每个模块;(4)模块信号的输出采用寄存器输出的方式。这样可以提高系统的可靠性,一旦出错也容易确定问题所在。

本内核由以下几个部分组成:中央控制单元(CPU),算术逻辑运算单元(ALU),寄存器组控制器(REGS_CTR),定时器/计数器(T/C),通用串行接口(UART),看门狗(WT_DOG),如图1所示。


1.2 提高速度的方法

本内核采用以下几种办法来提高速度。

(1) 采用多数据通道:本内核取消了传统MCS-51系列单片机的单一总线,采用直连结构,各模块的数据传输使用单向专用数据线,尤其在数据交换频繁的ALU与REGS_CTR之间采用四条单向数据线相互连接,提高了数据传输的并行度,从而加快了数据的传输。

(2) 采用双相时钟:如图2所示。CLK时钟上升沿CPU发出控制信号,I/O端口采样外部信号即图1中流入REGS_CTR的数据或控制信号;CLK1时钟上升沿把数据写入寄存器中并把刷新后的数据或控制信号发出,即图1中虚箭头表示的数据流向。这样REGS_CTR的读写分别在两个时钟的上升沿,减少了一个时钟周期的等待,时钟频率提高了一倍。


(3) 采用寄存器组:FPGA内部有极为丰富的寄存器资源,本内核取消了传统的同一时间只能读或者写的RAM块,代之以可同时进行不同地址读写操作的寄存器组。一些特殊功能寄存器有专用总线输出,如图3所示。


(4) 提高时钟频率:对电路的关键路径进行了改造,以减少逻辑电路级数从而提高时钟频率。通过这些设计,保证了每个机器周期只需一个时钟周期,提高了指令执行效率,同时也提高系统的时钟频率。

1.3 兼容性方面的考虑

MCS-51系列单片机有丰富的软硬件资源,为充分利用这些资源,在本内核设计时尽量考虑增强其兼容性。除机器周期变为原来的1/12以及新增加一个特殊功能寄存器(地址F8H)用于控制看门狗和软件复位外,其他没有变化。因而单个内核应用时,以前的程序可完全移植;在与外界通信时因机器周期与MCS-51单片机有差别可能需对一些程序作相应改动。这样可以使系统在提高性能的同时无需其他开销,便于推广使用。

2 功能模块的设计

2.1 中央控制器(CPU)的设计

这是微控制器的核心,负责中断处理及指令执行。中断处理分为中断取样、中断高低优先级的判断及执行相应的处理过程。CPU对指令的执行分为四个阶段:取指-译码、执行、执行-回写、回写-预取指。指令执行流程如图4所示。


在编码实现方式上,本模块是一个大的父子两级状态机,父状态机为指令的类型,子状态机为每种指令的执行步骤。这样结构清晰,利于编程、查错及仿真。

2.2 寄存器组(REGS_CTR)的设计

本模块在CPU的控制下完成:程序地址的产生、高低128个寄存器的读写。程序计数器根据控制信号与来自寄存器组的数据产生相应的指令地址并送往ROM。在寄存器组的读写中,用读译码电路选择输出操作数据,写译码电路写入结果数据。这种结构可以在对一个寄存器写的同时读另一个寄存器。如图3所示,通用的数据总线可以取得任何一个寄存器的数据,各个专用寄存器也有各自的专用数据线输出。例如执行指令ADDA,DIRECT时,由于累加器ACC有专门的总线,只要给出相应的读控制信号就可以从通用数据总线上得到来自寄存器组的DIRECT数据,这样ALU在同一周期内就可以得到所需的两个操作数。

2.3 看门狗(WT_DOG)的设计

传统的MCS-51系列单片机为提高抗干扰能力通常使用外置看门狗或者采用软件陷阱的方式使系统复位。本内核增加了硬件看门狗及软件复位功能,通过新增加一个特殊功能寄存器(地址F8H)来控制是否启用看门狗或软件复位以及设置看门狗的喂狗时间。除非掉电或用程序重新设置,F8H寄存器的数值一直保存,这样避免了看门狗复位后其自身失效的问题。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top