新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于FPGA的8051微控制器接口实现

基于FPGA的8051微控制器接口实现

作者:时间:2017-06-06来源:网络收藏
1 引言

工厂自动化高度实现的今天,单片机的广泛运用使其需要与各种各样的外围设备相连接,而这些外围设备各不相同,特别是它们的接口多种多样。因而在运用的时候,不得不考虑它与外围设备的接口问题,而市售的接口电路大多只供某种特定的外围设备使用,因此,在一些特殊的运用场合下,用户不得不自行设计它们之间的接口。现代可编程器件(如-Field Programmable Gate Array可编程门阵列)的快速发展,使得自己开发专用的接口变得非常简单,同时自主知识产权IP(Intellectual Property)受到越来越多的关注,它们被广泛运用在片上系统SoC(System on a single Chip)的设计中,IP核就是其中的一种。本文就是采用Xilinx公司的芯片来实现外围器件与8051的接口,它可以和8051IP核一起集成在同一块芯片上,从而使接口部分和用户逻辑更紧密地结合。

2 接口功能

这里所说的接口功能主要是指和外围设备之间的通信功能。该接口的设计采用硬件描述语言VHDL进行描述,而且源代码运用了大量的常量定义,用户可以根据需要来更改这些常量的默认值,直到用户自己满意为止,从而达到不同的需求。这种改变就相当于在运用软件里更 改设置参数一样简单,而且FPGA具有重配置功能,这从而达到不同的需求。这种改变就相当于在运用软件里更
改设置参数一样简单,而且FPGA具有重配置功能,使得硬件的升级或者系统方案的变更变得非常简单。接口的整体框图如图1所示。

本文引用地址:http://www.eepw.com.cn/article/201706/349452.htm 8051与运用逻辑之间的通信通过用户可定义寄存器组完成,8051微控制器写数据到用户可定义寄存器组来配置和控制运用逻辑。而运用逻辑通过用户可定义寄存器组向微控制器写状态信息和服务请求,从而完成微控制器与外围设备之间的通信。

3 接口设计

8051微控制器接口芯片主要由以下模块组成:地址解码逻辑、总线接口状态机、中断逻辑、用户可定义寄存器组、数据输出多路选择器。其内部结构框图如图2所示。

3.1 8051微控制器接口信号定义

*ADDR[15:8],输入,微控制器地址总线的高8位;
*ADDR_DATA[7:0],双向,微控制器地址/数据复用总线;
*ALE_N,输入,地址锁存允许,微控制器控制信号,该信号有效表明目前在地址/数据复用总线上的数据是有效数据;
*PSEN_N,输入,程序存储允许,微控制器控制信号,该信号有效表明目前的总线周期可以访问外部程序存储器;
*RD_N,输入,微控制器进行读操作的闸门信号;
*WR_N,输入,微控制器进行写操作的闸门信号;
*INT_N,输出,中断请求,运用逻辑产生的中断请求通过它向微控制器发送请求;
*CLK,输入,同步时钟信号,由系统提供,在内部结构框图中未标出;
*RESET,输入,同步复位信号,有效时系统复位,在内部结构框图中未标出;

3.2 地址解码逻辑模块

8051微控制器接口芯片的解码逻辑将当前ADDR总线上的高位字节解码作为器件地址,用它来和VHDL代码里的BASE_ADDR常量进行比较,如果相等,则表明BASE_ADDR指明的器件被选中,同时也包含由ALE_N提供时钟的寄存器,用以从ADDR_DATA总线获取地址低位字节,这个地址低位字节指明了在用户可定义寄存器组里的寄存器地址。也就是说地址高位字节用来选择从设备(这里将8051作为主设备),而地址低位字节则用来选择寄存器。


3.3 总线接口状态机

该状态机的设计是本接口设计的关键,也是能否完成接口功能的主要控制模块,只有功能完整、状态协调的状态机才能协调整个系统有条不紊地工作。本状态机的设计实际上就是将8051总线协议的文字描述转换为有限状态机来描述。本文所描述的8051执行同步的总线周期,因此在外部设备和微控制器之间没有设置握手信号,通过状态机的有效控制来完成它们之间的通信。8051微控制器总线协议在状态机理的实现如图3所示。在第一个周期里,微控制器将地址置于地址总线并激活ALE_N信号,它的有效表明地址/数据复用总线和ADDR[15:8]上的地址是有效地址。激活ALE_N后,状态机转移到地址解码状态(ADDR_DECODE)等待地址解码逻辑模块解码地址并且判断是否有器件被选通。若有器件被选中:如果这是写周期,微控制器从地址/数据复用总线撤销地址并放置所需要写的数据到总线上,然后激活WR_N信号;如果这是读周期,微控制器使地址/数据复用总线呈三态,并激活RD_N以告诉用户逻辑可以将指定寄存器里的数据置于总线上。否则回到闲置状态(IDLE)。对于选通的从设备,如果RD_N或WR_N有效,状态机将转移到数据传输状态(DATA_TRS)。如果这是写周期,从数据总线来的数据被锁存于指定的寄存器中并使WR_N无效。若是读周期,微控制器锁存总线上的数据并使RD_N无效。若WR_N或RD_N始终有效,表明数据还没有写完或读完,则停留在DATA_TRS状态,直到数据写完或读完为止。无论RD_N的无效还是WR_N的无效都将使状态机向结束周期状态(END_CYCLE)改变。在此状态下,地址/数据复用总线呈三态,微处理器使ALE_N无效来结束循环,从而回到闲置状态IDLE,等待下一周期的到来。

3.4 用户可定义寄存器组

该部分主要是提供给用户自定义的寄存器组,可以根据需要进行定义,主要用来为微控制器和运用逻辑之间的通信提供寄存服务。同时它可以被定义为不同作用的寄存器,微控制器通过读或者写这些专用的寄存器来决定应用的进程和当前状态,而运用逻辑通过它向微控制器发送服务请求。它的存在为该接口的通用性打下了基础。

3.5 数据输出多路选择器和中断逻辑模块

数据输出多路选择器主要用来在整个读周期里为地址/数据复用总线提供所需的数据。中断逻辑模块是可以选择的,它的定义主要是看微控制器是否允许用户逻辑的中断操作,这取决于用户系统,可以根据需要设置中断的个数和中断的优先权。

4 仿真分析和FPGA实现

为了验证该设计功能的正确性,从设计系统规范到最后的布局布线的整个过程中,都需要进行阶段性的仿真和验证。鉴于该系统的复杂性,采用层次化的设计和验证仿真。将系统划分为不同的功能模块(如上所述),分别对其进行RTL(寄存器传输级)级描述,并仿真验证。最后再进行系统的综合实现,即功能模块的组装。整个设计采用了自顶向下的设计方法,而仿真验证则是自底向上的方法。限于篇幅,就不再单一的介绍每个模块的VHDL设计方法和仿真验证结果。下面仅给出用Active HDL对系统进行仿真验证的结果,如图4所示。仿真结果表明,该状态机的设计满足预期的功能,即能满足8051微控制器总线协议的要求,因而能很好地和8051进行通信,各项指标均达到了设计要求。

本设计采用Xilinx公司的Vertex系列XCCV3004HQ240芯片,该芯片有丰富的可配置逻辑模块CLBs(Configurable Logic Blocks),大量的触发器以及内置的不占系统资源的块RAM,系统最大工作频率可达200MHz,并且内置有延迟锁相环DLL(Delay Locked Loop),它可以减少时钟传输的衰减,实现通信的完全同步。在Synplify Pro环境下对系统进行综合,综合结果表明其占用的片内资源不到总资源的10%,选择资源远远过剩的Vertex系列的目的是为了在同一块芯片内同时集成8051IP核,完成两者的综合实现后,资源略有剩余,这为用户的硬件升级和系统方案的变更提供了条件。

5 结束语


本设计充分利用了Vertex器件的LUTs(Look-Up Tables)替代触发器和基本门电路搭建乘法器和加法器这两个显著的结构特点,节省了大量的触发器资源,增加了器件利用率、布通率,DLL的运用降低了布线延迟,实现了通信的完全同步。笔者采用Xilinx公司的FPGA芯片自行设计了8051IP核与外围设备的接口,完成了8051与外围设备之间的通信功能,并且源代码中的参数可调,可作为IP软核提供给8051开发用户,使得用户从多变的外围中解脱出来,让用户致力于具体的运用设计,以缩短开发周期。这种实现接口通信的方法适用范围广、成本低廉、体积小、可靠性高,具有很高的工程实用价值。


评论


相关推荐

技术专区

关闭