当前位置:首页 > 工业控制 > 工业控制
[导读]摘要:介绍了用ALTERA公司MAX7000系列CPLD芯片实现单片机与PC104ISA总线接口之间的关行通信。给出了系统设计方法及程序源代码。 关键词:CPLD ISA总线 并行通信 CPLD(Complex Programmable Logic Device)是一种复杂

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


单片机接收数据。 在CPLD部分,用一片MAX7000系列中的PM7128 ESLC84来实现,用来完成MCS51与PC104ISA总线接口之间的数据传输、状态查询及延时等待。 在PC104ISA部分,只用到PC104的8位数据总线D[0..7],A[0..9]是PC104的地址总线;/IOW和/IOR是对指定设备的读写信号;AEN是允许DMA控制地址总线、数据总线和读写命令线进行DMA传输以及对存储器和I/O设备的读写;IOCHRDY是I/O就绪信号,I/O通道就绪为高,此时处理机产生的存储器读写周期为4需5个时钟周期,MCS51通过置此信号为低电平使CPU插入等待周期,从而延长I/O周期;SYSCLK是系统时钟信号,使系统与外部设备保持同步;RESETDR是上电复位或系统初始化逻辑信号,是系统总清信号。 2 基于MAX+plusII的硬件实现 ALTERA公司的CPLD开发工具MAX+plusII,支持多种输入方式,给设计开发提供了极大的方便,因此本系统采用MAX+plusII进行设计。系统的主体部分用原理图输入方式,由于库中提供现成的芯片,所以使用很方便。原理图输入部分如图2和图3所示。图2主要完成单片机与ISA接口通信中的数据传输和握手判断。在图2中,各信号说明如下: D[0..7] 单片机的8位双向数据总线; PCD[0..7] ISA接口的8位双向数据总线; PCRD ISA接口的读有效信号; PCWR ISA接口的写有效信号; STATE ISA接口的查询选通信号,用来判断单片机已写数据或读走数据; PCSTATE 单片机用此查询ISA接口已取走数据; MCURD 单片机的读有效信号; MCUWD 单片机的写有效信号; INT0 单片机的外部中断信号。 当MCUWR信号有效时,单片机把数据锁存于74LS374(1)中,此时PCSTAE变为高电平;PC104用STATE信号选通74LS244来判断数据位PCD0是否为高电平,如果为高,说明单片机送来了数据,则使PCRD有效,从数据锁存器74LS374(1)中取走数据,此时PCSTATE变为低电平,单片机通过判断此信号为低电平来判定PC104已取走了数据,此时可以发下一个数据。


当PCWR信号有效时,PC104把数据锁存于74LS374(2)中,此时INT0变为低电平;单片机产生外部中断,使MCURD信号有效,从数据锁存器74LS374(2)中取走数据。此时INT0变为高电平,PC104用STATE信号选通74LS244判断数据位PCD1是否为高电平,如果为高电平,则说明单片机取走了数据,可以发送下一个数据。 PC104与单片机进行通信,最关键的就是速度匹配问题。由于PC104的速度快,而单片机的速度较慢,所以要在PC104的IOCHRDY处插入等待周期。如图3所示,各信号说明如下: IOCHRDY 用来使ISA接口等待5个时钟周期; DLY_D 延时输入信号; DLY_CL 延时等待时钟信号; 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+plus II系统中,特别适合于描述复杂的组合逻辑、状态机和真值表,地址译码部分采用文本输入方式充分体现了文本输入方式的优点。文本输入内容如下: SUBDESIGN Address ( PCA[9..0] :INPUT; AEN,IOR,IOW :INPUT; RSETDR,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%26;amp;(PCA[9..1]= =H"110"); DLY_CK=!AEN%26;amp;(PCA[9..1]= =H"110")%26;amp;(!IOR#!IOW); !PCWR=!AEN%26;amp;(PCA[9..0]= =H"220")%26;amp;!IOW; !PCRD=!AEN%26;amp;(PCA[9..0]= =H"220")%26;amp;IOR; !STATE=!AEN%26;amp;(PCA[9..0]= =H"221")%26;amp;!IOR; !MCSWR=(A[15..14]= =H"2")%26;amp;!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)%26;amp;0x02)!=0x02) ;等待单片机读走数据 { } } 单片机读子程序: MCUR:MOV DPTR,#400H MOVX A,@DPTR RETI PC104读数据函数: Unsigned char pcread(int port) { while ((inportb(pcrdstate)%26;amp;0x0!=0x01) ;等待单片机写数据 { } return inportb(pcreadwirte); } 单片机写子程序: MCUWR:MOV DPTR,#8000H MOVX @DPTR,A ;等待PC104读写数据 RET

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

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭