当前位置:首页 > EDA > 电子设计自动化
[导读]摘要:用ALTERA公司MAX7000系列CPLD芯片实现单片机与PC104 ISA总线接口之间的并行通信,给出系统设计方法及程序源代码。包括通信软件和AHDL设计部分。关键词:CPLD ISA总线 并行通信CPLD(Complex Programmable Logi

摘要:用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]= =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之间的并行数据通信,效果非常理想。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

Holtek隆重推出全新一代32-bit Arm® Cortex®-M0+ 5V CAN MCU - HT32F53231/HT32F53241/HT32F53242/HT32F53252。这一系列单片机带有来自Bosc...

关键字: MCU 工业自动化 单片机

Holtek精益求精,宣布推出全新5V宽电压Arm® Cortex®-M0+ 32-bit MCU系列HT32F50431/HT32F50441/HT32F50442/HT32F50452。此系列MCU经多方位升级能满...

关键字: 单片机 智能家居 工业控制

单片机小精灵是一款针对单片机开发者的辅助工具,它集成了代码编辑、编译、调试等多项功能,旨在帮助开发者更加高效地进行单片机项目的开发。本文将详细介绍单片机小精灵的使用方法,帮助读者快速掌握这款工具,提高开发效率。

关键字: 单片机 代码编辑 辅助工具

单片机和PLC将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对二者的相关情况以及信息有所认识和了解,详细内容如下。

关键字: PLC 单片机

在这篇文章中,小编将对单片机的相关内容和情况加以介绍以帮助大家增进对单片机的了解程度,和小编一起来阅读以下内容吧。

关键字: 单片机 芯片 集成电路

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 控制器

今天,小编将在这篇文章中为大家带来STM32单片机最小系统的有关报道,通过阅读这篇文章,大家可以对它具备清晰的认识,主要内容如下。

关键字: 单片机 单片机最小系统 STM32

51单片机将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对51单片机的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 单片机 51单片机

在这篇文章中,小编将对单片机最小系统的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: 单片机 单片机最小系统

一直以来,单片机都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来单片机的相关介绍,详细内容请看下文。

关键字: 单片机 芯片
关闭
关闭