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

简介:

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

2.3 CPLD实现端口扩展

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

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

1.总线方式

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

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

Data_tem=CPLD_addr; CPLD_addr = Data_tem;

其中,CPLD_addr为地址,Data_tem为数据暂存单元。

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


screenshot

(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中相关的锁存器。


screenshot

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

#define DAT_OUT1 XBYTE[0X6FFF5H]
unsigned char dat;
DAT_OUT1=dat;

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

#define DAT_IN1 XBYTE[0X6FFF5H]
unsigned char dat;
dat= DAT_IN1;

2.独立方式

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

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

相关文章
|
4月前
|
传感器
单片机的输入输出端口
单片机的输入输出端口
503 2
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
439 0
高通平台开发系列讲解(USB篇)USB端口的说明及切换方法
|
4月前
|
存储 监控 芯片
单片机的扩展结构
单片机的扩展结构
116 2
|
4月前
|
存储 JSON JavaScript
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
Node.js 上开发一个 HTTP 服务器,监听某个端口,接收 HTTP POST 请求并处理传入的数据
|
4月前
|
搜索推荐 Linux Go
分享一个go开发的端口转发工具-port-forward
分享一个go开发的端口转发工具-port-forward
85 0
|
4月前
|
物联网 芯片
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
STC51单片机-应用系统并行扩展电路设计(存储器扩展)-物联网应用系统设计
70 0
|
运维 Oracle 关系型数据库
【大数据开发运维解决方案】kill占用指定端口进程(定时自动重启weblogic脚本)
上面是总结的定时自动重启weblogic脚本以及如果不慎用root启动weblogic后如何恢复oracle用户的运维。 1、通过ps-ef |grep命令找到想要杀死的进程信息,然后配合awk和sed组织好要杀死的进程清单对应的shell语句,并通过sh命令自动执行kill: ps -ef |grep /home/apache-tomcat-7.0.76/|awk 'NR>1 {print $2}' | sed -e "s/^/kill -9 /g" | sh -
【大数据开发运维解决方案】kill占用指定端口进程(定时自动重启weblogic脚本)
|
编译器 C语言
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
617 0
单片机原理与应用以及C51编程技术——C51扩展数据类型(bit、sbit、sfr、sfr16)
蓝桥杯之单片机学习(十三)——IO扩展技术与存储器映射扩展
蓝桥杯之单片机学习(十三)——IO扩展技术与存储器映射扩展
275 0
蓝桥杯之单片机学习(十三)——IO扩展技术与存储器映射扩展
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用
290 0
蓝桥杯之单片机学习(五)——独立按键的基本操作与扩展应用

热门文章

最新文章