用户登陆 用户注册
您的位置:首页> 技术文章>内容正文
用CPLD实现单片机与ISA总线并行通信
[正文]:摘要:用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)123; outportb(pcreadwrite,ch);while ((inportb(pcrdstate)&0x02)!=0x02); /*等待单片机读走数据*/123; 125;125;单片机读子程序:mcuwr:mov dptr,#4000hmovx a,@dptrretipc104读数据函数:unsigned char pcread(int port)123; while((inportb(pcrdstate)&0x01)!=0x01);/*等待单片机写数据*/123;125;return inportb(pcreadwrite);125;单片机写子程序:mcuwr:mov dptr,#8000hmovx @dptr,a;等待pc104读走数据ret4 结论用cpld实现单片机与isa总线接口的并行通信,电路结构简单、体积小,1片cpld芯片足够,并且控制方便,实时性强,通信效率高。
本设计方法已成功地应用于作者开发的各种数据采集系统中,用作单片机与pc104之间的并行数据通信,效果非常理想。



网站首页 培训课程 维修指南
技术文章 家电专栏 供应信息
求购信息 培训资讯 展会信息
电脑专栏 教程下载 资料下载
常用软件 PLC教程 PLC资料
变频伺服 低压电器 维修资料
人机界面 自控仪表 工控机类
文章标题: 搜文章
中国工控资源网手机版 2012
电话:010-67577139 13811659603
培训咨询QQ:657167934 471895637 销售咨询QQ:623769457
联系邮箱:zggkzyw@163.com
 京ICP备11002135号
报时(2026-04-07 04:32:50) 流量统计