摘要:用ALTERA公司MAX7000系列CPLD芯片实现单片机与PC104 ISA总线接口之间的并行通信,给出系统设计方法及程序源代码。包括通信软件和AHDL设计部分。
CPLD(Complex Programmable Logic Device)是一种复杂的用户可编程逻辑器件,由于采用连续连接结构。这种结构易于预测延时,从而电路仿真更加准确。CPLD是标准的大规模集成电路产品,可用于各种数字逻辑系统的设计。近年来,由于采用先进的集成工艺和大批量生产,CPLD器件成本不断下降,集成密度、速度和性能大幅度提高,一个芯片就可以实现一个复杂的数字电路系统;再加上使用方便的开发工具,使用CPLD器件可以极大地缩短产品开发周期,给设计、修改带来很大方便[1]。本文以ALTERA公司的MAX7000系列为例,实现MCS51单片机与PC104 ISA总线的并行通信。采用这种通信方式,数据传输准确、高速,在12 MHz晶振的MCS51单片机控制的数据采集系统中,可以满足与PC104 ISA总线接口实时通信的要求,通信速率达200 Kbps。
1 系统总体设计方案
本系统用CLPD实现单片机与PC104 ISA总线接口的并行通信。由于PC104主要完成其它方面的数据采集工作,只是在空闲时才能接收单片机送来的数据,所以要求双方通信的实时性很强,但数据量不是很大。因此,在系统设计中单片机中断方式接收数据,PC104采用查询方式接收数据。系统设计方案如图1所示。

在图1单片机部分,D[0..7]是数据总线,A[0..15]是地址总线,RD和WR分别是读写信号线,INT0是单片机的外部中断。当单片机的外部中断信号有效时,单片机接收数据。
在CPLD部分,由一片MAX7000系列中的EPM7128LSC84来实现,用来完成MCS51与PC104ISA总线接口之间的数据传输、状态查询及延时等待。
在PC104 ISA部分,只用到ISA的8位数据总线D[0..7],A[0..9]是PC104的地址总线;IOW和IOR是对指定设备的读写信号;AEN是允许DMA控制地址总线、数据总线及读写命令线进行DMA传输,及对存储器和I/O设备的读写;IOCHRDY是I/O就绪信号,I/O通道就绪为高,此时处理机产生的存储器读写周期为4个时钟周期,产生的I/O读写周期和DMA字节传输均需5个时钟周期,MCS51通过置此信号为低电平来使CPU插入等待周期,从而延长I/O周期;SYSCLK是系统时钟信号,是为了与外部设备保持同步;RESETDR是上电复位或系统初始化逻辑,是系统总清信号。
2 基于MAX+plus II的硬件实现
本系统是用ALTERA公司的CPLD开发工具MAX+plusII。它支持多种输入方式,给设计开发提供了极大的方便。系统的主体部分仍是用原理图输入方式。由于库中提供了现在的芯片,所以使用很方便。原理图输入部分如图2和图3所示。图2主要完成单片机与ISA接口通信中的数据传输和握手判断。


D[0..7] 单片机的8位双向数据总线;
PCD[0..7] ISA接口的8位双向数据总线;
PCRD ISA接口的读有效信号;
PCWR ISA接口的写有效信号;
判断单片机已写数据或读走数据;
PCSTATE 单片机用此查询ISA接口已取走数据;
MSCRD 单片机的读有效信号;
MCSWR 单片机的写有效信号;
INT0 单片机的外部中断信号;
当MCUWR信号有效后,单片机把数据锁存于74LS374(1)中,此时,PCSTATE变为高电平。PC104用STATE信号选通74LS244来判断数据位PCD0是否为高电平,如果为高,说明单片机送来了数据,那么使PCRD有效,从数据存器74LS374(1)中取走数据。此时,PCSTATE变为低电平,单片机通过判断此信号为低电平来判定PC104已取走了数据,可以发下一个数据。
当PCWR信号有效后,PC104把数据锁存于74LS374(2)中,此时,INT0变为低电闰,单片机产生外部中断,使MCSRD信号有效,从数据锁存器74LS374(2)中取走装饰,INT0变为高电平。PC104用STATE信号选通74LS244判断数据位PCD1是否为高电平,如果为高电平,说明单片机取走了数据,可以发送下一个数据。 PC104与单片机进行通信,最关键的就是速度匹配问题。由于PC104的速度快,而单片机的速度较慢,所以,要在PC104的IOCHRDY处插入等待周期,如图3所示。
IOCHRDY 用来使ISA接口等待5个时钟周期;
DLY_D 延时输入信号;
DLY_CK 延时等待时钟信号;
DLY_CLR 等待清除信号,为开始下一次送数周期作准备;
DELAY 延时5个时钟周期后的输出信号,作为DLY_CLR信号的输入;
SYSCLK ISA接口的系统时钟信号。
在MCS51与PC104进行通信的过程中,DLY_D信号一直有效(高电平)。在信号SYSCLK的作用下,每5个时钟周期DELAY信号有效一次,即为高电平。此时DLY_CLR信号有效(低电平),IOCHRDY信号变为高电平,PC104可以读写数据。
地址译码部分采用文本输入方式,用ALTERA公司的硬件设计开发语言AHDL(Altera Hardware Description Language)。AHDL是一种模块化的高级语言,完全集成于MAX+plusII系统中,特别适合于描述复杂的组合逻辑、状态机和真值表,地址译码部分用文本输入方式,这充分体现了文本输入方式的优点。文本输入内容如下:
(
PCA[9..0] : INPUT;
AEN,IOR,IOW : INPUT;
RESETDR,DELAY : INPUT;
A[15..14] :INPUT;
RD,WR : INPUT;
DLY_D : OUTPUT;
DLY_CK : OUTPUT;
DLY_CLR : OUTPUT;
STATE : OUTPUT;
PCRD : OUTPUT;
PCWR : OUTPUT;
MCURD : OUTPUT;
MCUWR : OUTPUT;
)
BEGIN
!DLY_CLR=RESETDR#DELAY;
DLY_D=!AEN & (PCA[9..1]= =H"110");
DLY_CK=!AEN & (PCA[9..1]= =H"110")&(!IOR # ! IOW);
!PCWR=!AEN&(PCA[9..0]= =H"220")& !IOW;
!PCRD=!AEN&(PCA[9..0]= =H"220")& !IOR;
!STATE=!AEN&(PCA[9..0]= =H"221")&!IOR;
!MCSRD=([15..14]= =H"1")& !RD;
!MCSWR=(A[15..14]= =H"2"& !WR;
END;
说明:PCA[9..0]是PC104的地址信号,A[15..14]是单片机的地址信号,PC104用到端口地址220H和221H。
3 通信软件设计
PC104是基于ISA总线的,在系统软件设计中要防止地址冲突。PC104中使用A0~A9地址位来表示I/O端口地址,即可有1024个口地址:前512个供系统板使用,后512个供扩充槽使用。当A9=0时表示为系统板上的口地址;A9=1时,表示扩充插槽接口卡上的口地址[2]。因此,采用保留的口地址220H和221H,保证不会发生地址冲突。
本程序中PC104采用查询方式接收数据,单片机用中断方式接收数据。
#define pcreadwrite 0x220 /*PC104读写数据口地址*/
#define pcrdstate 0x221 /*PC104查询状态口地址*/
PC104写数据函数:
Void pcwrite(int port,unsigned char ch)
{ outportb(pcreadwrite,ch);
while ((inportb(pcrdstate)&0x02)!=0x02); /*等待单片机读走数据*/
{ }
}
单片机读子程序:
MCUWR:MOV DPTR,#4000H
MOVX A,@DPTR
RETI
PC104读数据函数:
Unsigned char pcread(int port)
{ while((inportb(pcrdstate)&0x01)!=0x01);/*等待单片机写数据*/
{}
return inportb(pcreadwrite);
}
单片机写子程序:
MCUWR:MOV DPTR,#8000H
MOVX @DPTR,A
;等待PC104读走数据
RET
4 结论
用CPLD实现单片机与ISA总线接口的并行通信,电路结构简单、体积小,1片CPLD芯片足够,并且控制方便,实时性强,通信效率高。本设计方法已成功地应用于作者开发的各种数据采集系统中,用作单片机与PC104之间的并行数据通信,效果非常理想。
- 并行通信(11154)
- 用CPL(6357)
单片机spi通信原理详解
4992
CPLD加51单片机让系统更高效
单片机通信的相关资料分享
单片机通信的相关资料推荐
单片机P口接PCI/ISA数据总线
单片机的总线
并行通信和串行通信的相关资料分享
用VC实现PC机与单片机的通信
FPGA/CPLD与单片机相比有哪些优势?
LONWORKS控制模块与MCS-51单片机的并行通信
基于CPLD的单片机与ISA总线接口并行通信
基于MCS51系列单片机法人双机并行互连实现
如何实现单片机与CPLD通讯呢?
如何利用CPLD实现单片机PCI接口设计
如何利用CPLD帮助单片机完成与PCI设备间的通信任务
用单片机实现温度远程显示
53单片机多机并行通讯的一种方法
119PC机与单片机的并行通信协议
77利用单片机实现CPLD的在系统编程
22基于CPLD的单片机PCI接口设计
34用CPLD 实现单片机与ISA 总线并行通信
29循环冗余校验码的单片机及CPLD 实现
16用87C196NT单片机实现CAN总线通信
34用CPLD 实现单片机与ISA 总线并行通信
16单片机+CPLD结构体系在电子设计中的应用
17单片机应用系统的CPLD 应用设计
39用VC实现PC机与单片机的通信
58用组态王实现PC机与多台单片机的远程通信
61单片机与FPGA CPLD总线接口逻辑设计
83基于单片机的CPLD/FPGA被动串行下载配置的实现
19采用ATMEGA128单片机结合CPLD 实现了对VGA显示
107基于单片机和CPLD的频率测量研究
42单片机应用系统的CPLD应用设计
39MCS51系列单片机双机并行互连的实现方法
49用51单片机控制RTL8029实现以太网通信
58基于单片机+CPLD的多路精确延时控制系统设计
43基于ISA总线的计算机与DSP的通信
37CPLD与51单片机总线接口程序
1142用单片机实现的测温电路
1744
单片机+CPLD的多路精确延时控制系统
2256
基于DSP与CPLD的I2C总线接口的设计与实现
1487
用单片机配置CPLD器件
1423
单片机脉冲信号源的CPLD实现方案
1924
用VHDL语言在CPLD上实现串行通信
963
基于CPLD的单片机PCI接口设计
1166
用CPLD实现单片机与ISA总线并行通信
1360
基于CPLD的单片机与PCI接口设计解决方案
1044
I2C总线的单片机C语言实现及其应用
3293
单片机并行口,单片机并行口结构原理是什么?
3813
用MODBUS实现触摸屏与单片机的通信
331CAN总线+单片机实现通信网络设计
7351
基于单片机的多机并行通信设计
2485
单片机串行口的并行通信技术
103用单片机实现温度远程显示资料
13基于单片机与FPGA的总线接口逻辑设计
4439什么是单片机的串口通信?
62202
用Win32API实现PC机与多单片机的串行通信
1采用软件模拟SPI总线实现双单片机数据通信模块的设计
3623
基于单片机和CPLD的高精度大型望远镜伺服控制器设计
4935
如何使用单片机的IO口模拟串行实现数据通信的资料概述
12如何用51单片机实现IIC通信
17060
如何实现PC机与51系列单片机的通信
6733
AVR单片机与CPLD的通信设计
1477如何实现计算机与单片机之间的通信
8952
如何实现PC机与单片机实现通信
49单片机实现多机通信的资料和程序
8509单片机的结构和原理说明
6295
51单片机实现的双机通信设计仿真
17制定通信协议,实现单片机与PC机通信
22用单片机串口和modbus poll 进行通信
23单片机中并行是什么意思
2237
电子发烧友App




评论