微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于CPLD的单片机与ISA总线接口的并行通信设计

基于CPLD的单片机与ISA总线接口的并行通信设计

时间:06-19 来源:互联网 点击:

可以读写数据。 地址译码部分采用文本输入方式。用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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top