天天看点

《51单片机应用开发范例大全(第3版)》——2.3 CPLD实现端口扩展

本节书摘来自异步社区《51单片机应用开发范例大全(第3版)》一书中的第2章,第2.3节,作者 张杰,宋戈,黄鹤松,员玉良,更多章节内容可以访问云栖社区“异步社区”公众号查看。

单片机与大规模cpld有很强的互补性。单片机具有性价比高、功能灵活、易于实现人机对话和良好的数据处理能力等优点;cpld/fpga则具有高速度、高可靠性以及开发便捷、灵活等优点。以此两类器件相结合的电路结构在许多高性能仪器仪表和电子产品中已经被广泛应用。

单片机与cpld/fpga的接口方式一般有两种,即总线方式与独立方式。

1.总线方式

单片机以总线方式与cpld/fpga进行数据与控制信息通信有如下优点。

(1)速度快。其通信工作时序是纯硬件行为,对于mcs-51单片机,只需一条指令就能完成所需的读/写时序,如:

其中,cpld_addr为地址,data_tem为数据暂存单元。

(2)节省cpld芯片的i/o口线。如图2-13所示,如果将图中的译码器decoder 设置足够的译码输出,并安排足够的锁存器,就能仅通过19根i/o口线在fpga与单片机之间进行各种类型的数据与控制信息交换。

《51单片机应用开发范例大全(第3版)》——2.3 CPLD实现端口扩展

(3)与非总线方式相比较,单片机编程简捷,控制可靠。

在cpld/fpga中通过逻辑切换,单片机易于与sram或rom接口。这种方式有许多优势,如利用类似于微处理器系统的dma的工作方式,首先由cpld/fpga与接口的高速a/d等器件进行高速数据采样,并将数据暂存于sram中,采样结束后,通过切换,使单片机与sram以总线方式进行数据通信,以便发挥单片机强大的数据处理能力。

根据单片机外部操作时序,ale为地址锁存使能信号,可利用其下降沿将低8位地址锁存于cpld/fpga中的地址锁存器(latch_addres)中;当ale将低8位地址通过p0锁存的同时,高8位地址已稳定建立于p2口,单片机利用读指令允许信号psen的低电平从外部rom中将指令从p0口读入,其指令读入的时机是在psen的上升沿之前。

接下来,由p2口和p0口分别输出高8位和低8位数据地址,并由ale的下降沿将p0口的低8位地址锁存于地址锁存器。若需从cpld/fpga中读出数据,单片机则通过指令“data_tem = cpld_addr”使rd信号为低电平,由p0口将锁存器latch_in1中的数据读入累加器a;但若欲将累加器a的数据写进cpld/fpga,则需通过指令“cpld_addr = data_tem”和写允许信号wr。

这时,dptr中的高8位和低8位数据作为高、低8位地址分别向p2和p0口输出,然后由wr的低电平并结合译码,将累加器a的数据写入图2-14中相关的锁存器。

《51单片机应用开发范例大全(第3版)》——2.3 CPLD实现端口扩展

由8051将数据#5ah写入目标器件中的第一个寄存器latch_out1的指令是:

当ready为高电平时,8051从目标器件中的寄存器latch_in1将数据读入的指令是:

2.独立方式

和总线接口方式不同,几乎所有单片机都能以独立接口方式与cpld/fpga进行通信,其通信的时序方式可由所设计的软件自由决定,形式灵活多样。其最大的优点是cpld/fpga中的接口逻辑无需遵循单片机内固定总线方式的读/写时序。cpld/fpga的逻辑设计与接口的单片机程序设计可以分先后相对独立地完成。事实上,目前许多流行的单片机已无总线工作方式,如at89c2051、97c2051、z84系列、pic16c5x系列等。

独立方式的接口设计方法相对比较简单,在此不作详细介绍。

继续阅读