1、1 单片机与 FPGA 的接口方式单片机与 FPGA 的接口方式一般有两种,即总线方式与独立方式。MCS-51单片机具有很强的外部总线扩展能力,利用片外三总线结构很容易实现单片机与 FPGA 的总线接口,而且单片机以总线方式与 FPGA 进行数据与控制信息通信也有许多优点:速度快;节省PLD 芯片的 I O 口线;相对于非总线方式,单片机编程简捷,控制可靠;在 FPGA 中通过逻辑切换,单片机易于与 SRAM 或 ROM 接口。单片机与 FPGA 以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构,其通信的时序必须遵循单片机内固定的总线方式读写时序。FP
2、GA 的逻辑设计也相对比较复杂,在程序设计上必须与接口的单片机程序相结合,严格安排单片机能访问的 IO 空间。单片机以总线方式与 FPGA 进行数据通信与控制时,其通信工作时序是纯硬件行为,速度要比前一种方式快得多,另外若在 FPGA 内部设置足够的译码输出,单片机就可以仅通过19根 IO 线在 FPGA 与单片机之间进行通信和控制信息交换,这样可以节省 FPGA 芯片的 IO 线。其原理图如图1 所示。2 总线接口逻辑设计21 接口设计思想单片机与 CPLDFPC,A 以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构。MCS-51系列单片机的时序图如
3、图2 所示。ALE 为地址锁存使能信号,可利用其下降沿将低8位地址锁存于 FPGA 中的地址锁存器(LATCH_ADDRES)中;当 ALE 将低8位地址通过 P0锁存的同时,高8位地址已稳定建立于 P2口,单片机利用读指令允许信号 PSEN 的低电平从外部 ROM 中将指令从 P0口读入,由时序图可见,其指令读入的时机是在 PSEN 的上升沿之前。接下来,由 P2口和 P0口分别输出高8 位和低8 位数据地址,并由 ALE 的下降沿将 P0口的低8位地址锁存于地址锁存器。若需从 FPGA 中读出数据,单片机则通过指令“MOVXA,DPTR”使 RD 信号为低电平,由 P0口将锁存器中的数据读
4、入累加器 A;但若欲将累加器 A 的数据写进 FPGA,则需通过指令“ MOVx DPTR,A ”和写允许信号 WR。这时, DPTR 中的高8位和低8位数据作为高、低8 位地址分别向 P2和 P0口输出,然后由 WR 的低电平并结合译码,将累加器 A 的数据写入图中相关的锁存器。通过对 MCS-51单片机总线读写时序的分析,设计了图3 所示的接口电路。在 FPGA中,设计了两个模块:一个是总线接口模块,负责单片机与 FPGA 的总线接口逻辑;另一个是寄存器单元及外部接口模块,运用总线接口模块来操作此模块。在总线应用时,MCS-51 单片机的 P0口是作为地址数据总线分时复用的,因此应在总线接
5、口模块中设计一个三态缓冲器,实现 P0口的三态接口;又因 MCS-51单片机在访问外部空间时,它的地址为16位,因此借助地址锁存使能信号 ALE 在 FPGA 中实现高8位与低8 位地址的编码,组合成16位地址,然后再根据 MCS-51单片机的读写信号,实现对 FPGA 的读写操作。在接口设计中,采用了 VHDL 语言实现其接口逻辑。用 VHDL 语言编写,往往比较方便和严谨,注意整个过程的逻辑思路,并且尽量避免语言的冗余,造成比较长的延时。-MCS-51单片机 与 FPGA 的通信读写电路的部分程序FPGA 是一种新兴的可编程逻辑器件,可以取代现有的全部微机接口芯片,实现微机系统中的存储器、地址译码等多种功能,具有更高的密度、更快的工作速度和更大的编程灵活性,被广泛应用于各种电子类产品中。在功能上,单片机具有性价比高、功能灵活、易于人机对话、强大的数据处理能力等特点;而 FPGA 则具有高速、高可靠性以及开发便捷、规范等特点,因此两类器件相结合的电路结构将在许多高性能仪器仪表和电子产品中被广泛应用。基于这种需求,本文设计了 MCS-51单片机与 FPGA 的总线接口逻辑电路,实现了单片机与 FPGA 数据与控制信息的可靠通信,使 FPGA 与单片机优势互补,组成灵活的、软硬件都可现场编程的控制系统。