基于FPGA的8051微控制器接口实现
时间:06-06
来源:互联网
点击:
1 引言
工厂自动化高度实现的今天,单片机8051的广泛运用使其需要与各种各样的外围设备相连接,而这些外围设备各不相同,特别是它们的接口多种多样。因而在运用8051的时候,不得不考虑它与外围设备的接口问题,而市售的接口电路大多只供某种特定的外围设备使用,因此,在一些特殊的运用场合下,用户不得不自行设计它们之间的接口。现代可编程器件(如FPGA-Field Programmable Gate Array可编程门阵列)的快速发展,使得自己开发专用的接口变得非常简单,同时自主知识产权IP(Intellectual Property)受到越来越多的关注,它们被广泛运用在片上系统SoC(System on a single Chip)的设计中,8051IP核就是其中的一种。本文就是采用Xilinx公司的FPGA芯片来实现外围器件与8051微控制器的接口,它可以和8051IP核一起集成在同一块FPGA芯片上,从而使接口部分和用户逻辑更紧密地结合。
2 接口功能
这里所说的接口功能主要是指微控制器和外围设备之间的通信功能。该接口的设计采用硬件描述语言VHDL进行描述,而且源代码运用了大量的常量定义,用户可以根据需要来更改这些常量的默认值,直到用户自己满意为止,从而达到不同的需求。这种改变就相当于在运用软件里更 改设置参数一样简单,而且FPGA具有重配置功能,这从而达到不同的需求。这种改变就相当于在运用软件里更
改设置参数一样简单,而且FPGA具有重配置功能,使得硬件的升级或者系统方案的变更变得非常简单。接口的整体框图如图1所示。
3 接口设计
8051微控制器接口芯片主要由以下模块组成:地址解码逻辑、总线接口状态机、中断逻辑、用户可定义寄存器组、数据输出多路选择器。其内部结构框图如图2所示。
*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,等待下一周期的到来。
工厂自动化高度实现的今天,单片机8051的广泛运用使其需要与各种各样的外围设备相连接,而这些外围设备各不相同,特别是它们的接口多种多样。因而在运用8051的时候,不得不考虑它与外围设备的接口问题,而市售的接口电路大多只供某种特定的外围设备使用,因此,在一些特殊的运用场合下,用户不得不自行设计它们之间的接口。现代可编程器件(如FPGA-Field Programmable Gate Array可编程门阵列)的快速发展,使得自己开发专用的接口变得非常简单,同时自主知识产权IP(Intellectual Property)受到越来越多的关注,它们被广泛运用在片上系统SoC(System on a single Chip)的设计中,8051IP核就是其中的一种。本文就是采用Xilinx公司的FPGA芯片来实现外围器件与8051微控制器的接口,它可以和8051IP核一起集成在同一块FPGA芯片上,从而使接口部分和用户逻辑更紧密地结合。
2 接口功能
这里所说的接口功能主要是指微控制器和外围设备之间的通信功能。该接口的设计采用硬件描述语言VHDL进行描述,而且源代码运用了大量的常量定义,用户可以根据需要来更改这些常量的默认值,直到用户自己满意为止,从而达到不同的需求。这种改变就相当于在运用软件里更 改设置参数一样简单,而且FPGA具有重配置功能,这从而达到不同的需求。这种改变就相当于在运用软件里更
改设置参数一样简单,而且FPGA具有重配置功能,使得硬件的升级或者系统方案的变更变得非常简单。接口的整体框图如图1所示。

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

*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,等待下一周期的到来。
- μC/OS-II下通用驱动框架的设计与实现(07-23)
- 微控制器省电管理方法(05-04)
- 基于DSP和Cygnal单片机的移动数据处理传输系统 (07-06)
- 从硅片工艺技术到嵌入式软件的全方位低功耗系统设计(01-01)
- 基于IAP的STM32程序更新技术(01-23)
- 发挥ARM Cortex-M3和M4微控制器最大作用的要诀(01-21)
