摘要:用ALTERA公司MAX7000系列CPLD芯片完结单片机与PC104 ISA总线接口之间的并行通讯,给出体系规划办法及程序源代码。包含通讯软件和AHDL规划部分。
要害词:CPLD ISA总线 并行通讯
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体系中,特别适合于描绘杂乱的组合逻辑、状况机和真值表,地址译码部分用文本输入办法,这充分体现了文本输入办法的长处。文本输入内容如下:
SUBDESIGN Address
(
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]= =H110);
DLY_CK=!AEN (PCA[9..1]= =H110)(!IOR # ! IOW);
!PCWR=!AEN(PCA[9..0]= =H220) !IOW;
!PCRD=!AEN(PCA[9..0]= =H220) !IOR;
!STATE=!AEN(PCA[9..0]= =H221)!IOR;
!MCSRD=([15..14]= =H1) !RD;
!MCSWR=(A[15..14]= =H2 !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之间的并行数据通讯,作用十分抱负。