基于51单片机与CPLD/FPGA接口逻辑设计
单片机与CPLD/FPGA的接口方式一般有两种,即总线方式与独立方式,分别说明如下:
单片机以总线方式与CPLD/FPGA进行数据与控制信息通信有许多优点。
MOV @DPTR,A ;MOV A,@DPTR
图1 总线
(2)节省CPLD芯片的I/O口线。如图二所示,如果将图中的译码器DECODER设置足够的译码输出,并安排足够的锁存器,就能仅通过19根o口线在FPGW与单片机之间进行各种类型的数据与控制信息交换。
图2 CPLD芯片I/O口线
(3)相对于非总线方式,单片机编程简捷,控制可靠。
(4)在CPLD/FPGA中通过逻辑切换,单片机易于与SRAM或ROM接口。这种方式有许多实用之处,如利用类似于微处理器系统的DMA的工作方式,首先由CPLD/FPGA与接口的高速A/D等器件进行高速数据采样,并将数据暂存于SRAM中,采样结束后,通过切换,使单片机与SRAM以总线方式进行数据通信,以便发挥单片机强大的数据处理能力。
单片机与CPLD/FPGA以总线方式通信的逻辑设计,重要的是要详细了解单片机的总线读写时序,根据时序图来设计逻辑结构。图一是MCS-51系列单片机的时序图,其时序电平变化速度与单片机工作时钟频率有关。图中,ALE为地址锁存使能信号,可利用其下降沿将低8位地址锁存于CPLD/FPGA中的地址锁存器(LATCH_ADDRES)中;当ALE将低8位地址通过P0锁存的同时,高8位地址已稳定建立于P2口,单片机利用读指令允许信号PSEN的低电平从外部ROM中将指令从P0口读入,由时序图可见,其指令读入的时机是在PSEN的上升沿之前。接下来,由P2口和P0口分别输出高8位和低8位数据地址,并由ALE的下降沿将P0口的低8位地址锁存于地址锁存器。若需从CPLD/FPGA中读出数据,单片机则通过指令“MOVXA,@DPTR”使 RD信号为低电平,由P0口将图二中锁存器LATCH_IN1中的数据读入累加器A;但若欲将累加器A的数据写进CPLD/FPGA,则需通过指令 “MOVX ·DPTR,A”和写允许信号WR。这时,DPTR中的高8位和低8位数据作为高、低8位地址分别向P2和P0口输出,然后由WR的低电平并结合译码,将累加器A的数据写入图中相关的锁存器。
与总线接口方式不同,几乎所有单片机都能以独立
独立方式的接口设计方法比较简单,在此不拟做详细介绍。下面介绍图二所示的总线接口逻辑设计,其外部接口如图三所示。
这是一个CPLD/FPGA与MCS-51系列单片机接口的VHDL电路设计。MCS-51以总线方式工作,例如,由8031将数据#5AH写入目标器件中的第一个寄存器LATCH_OUT1的批令是:
MOV A,#5AH
MOV DPTR,#6FF5H
MOVX @DPTR,A
当READY为高电平时,8031从目标器件中的寄存器LATCH_IN1将数据读入的指令是:
MOV DPTR,#9F7EH
MOVX A,@DPTR
以上介绍了MCS-51单片机与CPLD/FPGA接口逻辑设计的两种接口方式,希望对从事单片机和CPLD/FPGA研发的朋友能有所启发。
- 关于RTX51 TINY的分析与探讨(05-30)
- 浅析8051模块化编程技巧(05-28)
- 基于DSP和单片机通信的液晶显示设计方案(07-20)
- 锁相环控制及初始化简析(08-27)
- 基于MSP430自动胀管控制器的研究(09-07)
- 嵌入式C实现延时程序的不同变量的区别(03-01)