摘要:提出了用epp协议和cpld扩展笔记本电脑的isa接口的方法,给出了详细的技术解决方案。扩展的isa接口可以达到1310 kb/s的双向通讯速度,与isa本身的速度相当。用户可以通过扩展的isa接口直接使用市场上的基于isa的接口卡。
关键词:isa 标准并口 增强并口 复杂的可编程逻辑器件
利用微机开发便携式的数据采集、控制系统一直是微机应用系统开发者十分关心的课题。特别在是基于笔记本电脑的数据采集和控制系统中,这一点显得尤为重要。传统的数据采集和控制系统是针对台式机或者工控机设计的,一般都做成了标准的插卡,如a/d卡、d/a卡、rs232扩展卡等等,用户根据自己的实际需要选取合适的插卡,安装在自己的计算机中,再编写所需要的程序。但是在基于笔记本电脑的应用系统中,由于其没有扩展槽,如果用户自己不再配一个扩展箱,就不能配置现成的插卡。扩展箱的主要功能是扩展笔记本电脑的各种外围接口,即把笔记本电脑的功能扩展为与一个台式机相同的功能。它需要单独的电源供应,体积比笔记本电脑本身大,又比笔记本重的多,价格在人民币7000~10000元左右。如果能够找到一种便捷的方法,为笔记本电脑提供一个标准的总线接口,如isa接口,那么现在市场上大部分的插卡都可以用在笔记本电脑上,不仅为用户节约了一个扩展箱投资,而且还为用户提供了更加广阔的选择余地。本文提出了解决该问题的一个完整的技术方案。
1 epp并口
最初的计算机并口只是为打印机设计的,数据只是单向传输。ibm公司引进了ps/2设计后,并口开始支持双向数据传输,但是ps/2实际上并没有成为一个为业界广泛认可的双向并口模式。1992年,由intel、xicom和zenith公司共同制定了epp1.7标准。以后ieee又发展了ieee1284的epp标准。实际上epp的标准共有三个,即epp1.7、epp1.9和ieee1284,这些标准并不完全兼容,特别是epp1.7和ieee1284之间,不过这些对用户的使用并没有太大的影响。文献[1]即是ieee1284标准,其中规定了并口各种模式的详细的时序图,包括spp、ps/2、ecp和epp模式。作者根据ieee1284上规定的时序图进行了时序设计,而计算机上提供的epp版本是epp1.7或epp1.9,实际使用中它们没有不匹配的地方。
2 用epp扩展isa接口的总体设计
计算机主板上一般有2~3个isa插槽,可以扩充一些isa插卡。大多数基于isa标准的微机数据采集和控制只用到了isa接口的数据线、地址线、aen、ale、#ior、#iow等信号,有的也用到了中断和dma的信号。只要了解这些信号之间的时序关系,我们完全可以自己用逻辑器件“制造”出isa接口,文献[2]介绍了用单片机扩展总线的技术,包括isa、std总线等。作者曾经用并口的spp模式和80c196单片机扩展出了计算机的isa接口,但是io读写速度只能达到20kb/s左右,总体的效果不太理想。ecp和epp都能进行高速双向数据通讯,但是ecp的实现远比epp复杂的多,其性能和epp却大致相当,所以最终的方案采用了epp模式。由于单片机是一个单任务的串行控制器,如果它只是用来扩展isa接口,那么可以达到比较高的速度;否则,isa总线的速度会大大降低,最后变得失去使用价值,所以最终的外设芯片不能采用单片机,只能采用dsp或者大规模的可编程逻辑器件。作者选用了后一种方案。
用epp扩展isa口的硬件核心是一片可编程逻辑器件,如cpld,它一方面负责与计算机通过epp协议进行双向数据通讯,另一方面负责产生isa接口时序,系统体系相当简洁而高效,电路原理如图1所示。epp的数据线d0~d7和信号线nwrite、ndstrb、nastrb、ninit、nwait、intr直接与cpld的双向i/o线相连。另外,epp没有定义标准并口的第12、13、15三个引脚,这些引脚用户可以灵活使用。电路图上并口的第13脚和cpld连了起来,可以提供其他的功能。cpld提供了isa接口的d0~d7,a0~a15,ale,aen,#ior,#iow,irq、iordy等信号。扩展的isa接口提供了16根地址线,可以寻址64k的io空间,这比计算机所提供的io空间(1k)大了许多倍。用户可以专门设计具有64k寻址能力的数据采集和控制板,也可以用只有1k寻址能力的数据采集和控制板,在这种情况下,地址线的高6位被忽略了,但这并不影响系统的正常使用。
3 硬件操作方法
epp协议定义的并行口提供了四种传送周期:数据写周期、数据读周期、地址写周期和地址读周期。数据周期一般用于计算机和外设间的数据传送,地址周期一般用于传送地址、通道、命令和控制等信息。实际上,数据周期和地址周期并没有那么严格的界限,可以把地址周期看做另一种数据周期,二者并没有太大的区别。图2是epp数据写周期的时序图,图中的niow信号实际上在进行epp数据写时并不会产生,只不过是为了表示所有的操作都发生在一个io周期内,只有这样,才能使epp获得isa总线的数据操作速度。图2中的ndatastrobe信号如果换为naddstrobe信号,就是epp地址写周期。图3是epp地址读周期,也是发生在一个io周期内。
epp定义了一个计算机用于控制外设初始化的信号:ninit,如果用户不希望控制外设的初始化,则可以不处理这个信号;用户也可以挪用ninit信号做其他的用途,在本设计方案的地址周期中,如果ninit为高,则表示该地址对应isa接口的高8位地址,否则,对应低8位地址。用这种办法解决了用8位的epp地址扩展16位的isa地址的难题。实践证明,这是一个方便实用的解决方法。
用epp扩展isa接口,最根本的任务是把epp的数据读写周期快速地转化为isa的io读写周期。在isa的时序中[3],时钟的频率是4.77mhz,典型的一个isa周期要用4个时钟周期,即大概1μs的时间。在epp的读周期中,epp首先发出读命令,然后等待isa的数据响应,如果isa仍然以4个时钟来进行io读操作,那么epp很有可能会由于超时而发生时序错误,数据也必然会错。解决这个问题可以用提高isa接口的时钟频率的办法,如提高到8mhz甚至是16mhz,但是这样的话isa卡可能会来不及响应而发生数据错误,所以这种方法不可取;另一种方法是改造isa接口的时序,使得既能满足isa卡的时序要求,又不至于造成epp的超时错误。仔细分析isa的io读时序,cpu在t1发出地址信号并发出ale信号,在t2发出读命令,在t3采样ready信号,以决定是否产生等待周期,如果不需要等待,则在t4读取数据,完成整个读周期。可以发现,对于本系统,t1周期是可以省略的,因为cpld可以在epp的地址周期内设定要寻址的io地址,而没有必要在isa周期内再发送地址,这样isa的io读周期就从4个时钟减少到3个时钟;如果可以保证isa卡设备可以在一个时钟内送出有效的数据,则t3也可以省略,这样一个isa读周期实际上只占用了两个时钟,不会造成epp的超时错误。对epp数据写周期,因为cpld可以先把数据写到缓冲中,首先保证epp时序,再把数据从缓冲写到isa设备中去,所以不会造成超时错误。isa的读写时序经过这样的简化处理后,可以满足isa设备和epp两方面的时序要求。
4 cpld的编程
系统选用的cpld是altera公司的mep7064,它有64个宏单元,1250个可用门,就可以完成epp和isa的接口任务。文献[4]详细介绍了altera公司的cpld器件,在这里就不再介绍器件的性能和使用方法了。仅给出用vhdl语言写的控制程序如下(部分信号的意义请参照前面的电路原理图)。
process (clk)
type isatype is (idle,rd,wr);
variable isa: isatype;
variable ior: std_logic;
variable iow: std_logic;
variable eppbuf: std_logic_vector (7 downto 0);
begin
case isa is
when idle =>
if ior=‘1’ then
#iord <= ‘0’;
ior?=‘0’;
isa := rd;
elseif iow=‘1’ then
#iowr <= ‘0’;
isadatabuf<=eppbuf;
iow:=‘0’;
isa:=wr;
end if;
when rd =>
eppbuf:=isadatabus;
#iord<=‘1’;
isa:=idle;
when wr =>
#iowr <=‘1’;
isa:=idle;
end case;
end;
end process;
5 计算机对epp/isa的操作
计算机通过epp协议用cpld扩展出isa接口,现有的isa卡就可以通过isa接口、cpld和epp协议间接地连到了计算机上。对于isa卡的使用者而言,无论从硬件的角度还是从软件的角度来看,都好象是这块isa卡直接插在计算机的isa槽内,其速度也完全能够达到应用的要求。epp协议的用户编程接口是协议定义的几个io口地址。以并口基地址为378h为例,378h是spp数据口,379h是spp状态口,37ah是spp控制口,37bh是epp地址口,37ch是epp数据口。对isa卡的操作顺序是:首先通过设置ninit为高和写epp地址口来设置isa卡的高8位地址,再通过设置ninit为低和写epp地址口来设置isa卡的低8位地址,就可以通过epp数据口对isa卡进行读写操作了。作者本人做出的系统对单一的地址进行操作时,写操作的速度可以达到1000~1200 kb/s,最高可以达到1310kb/s,读操作的速度可达800~1100kb/s,完全能满足数据采集和控制的要求。如果是对多个地址进行操作,由于设置地址要占用一个或者两个epp地址周期,所以数据传输速度会有所损失。
6 与其它通讯方案的比较
(1)rs232串口:最通用的一种连接方法。但是它支持数据传输速率最大为10~20kb/s,对于一般的数据采集和控制系统而言显得有些慢。
(2)spp:数据通讯速度比串口快,可以达到150 kb/s。但是spp用做数据输入时很麻烦,用多次io才能完成一次完整的数据读取,速度要牺牲很多,况且外设的设计并不比epp简单。所以,如果选择了并口方案,就不能选择spp模式,除非用户仅仅是做数据输出并且对速度没有很高的要求。
(3)ecp:与epp相比ecp最大的优势是它支持dma操作,如果系统工作时有大批量的数据要传输,用ecp模式可以大大减轻计算机cpu的负担,提高系统的整体性能。但是获得ecp的高性能的代价是必须重新设计比epp复杂得多的接口软件(指cpld的控制软件),同时计算机软件方面还必须要编写硬件驱动程序,这对于一般的计算机应用系统开发者而言还是一个不小的困难。
(4)pcmcia(the personal computer memory card industry association):发展了信用卡大小的外设与pc机连接的标准。最初,pcmcia标准仅对于内存卡,现在已扩展到i/o设备。数据能以最大5mb/s的速率传输。但pcmcia卡不支持dma,这就增加了数据采集和cpu处理之间的时间。因而,目前的pcmcia i/o卡需大容量缓存。pcmcia设备的另一缺点是尺寸太小(最大尺寸86mm×54mm×10mm),不能用于控制数据采集系统中的一些模拟电路部分。
(5)usb(universal serial bus):支持12mbps的数据传输速度,支持127个外围设备,支持pnp(plug and play),支持热插拔,并且总线本身可以提供用户系统电源。信号传输采用差分方式,可以抑制比较强的共模干扰。usb具有很大的发展前途。在未来的计算机上,可能不再提供rs232串口,可能不再提供并口,但绝对不可能没有usb接口。usb的使用不象并口那样简洁,它必须要有专用的接口芯片的支持才能用在系统中。不少芯片商已经提供了usb的产品,如usb hub、usb接口、usb单片机等等。当然用户自己也可以把usb协议写到pld芯片中去,使接口和系统融为一体。
综上所述,采用epp扩展计算机的isa接口是一种新颖的计算机外设设计方案,它具有非常高的性能价格比,能够达到绝大多数基于isa接口的数据采集和控制系统的通讯速度要求。这种方案大大扩展了笔记本电脑对于isa接口设备的适应能力,省去了用户对扩展箱的需求。仅仅改写该系统的cpld程序和计算机的控制程序就可以提供新的功能,如做成双isa接口系统,或者改造成std、ste总线系统等等,而系统的硬件不需做任何的改动。epp的确是一种有前景的实用接口技术,值得微机外设设计者和使用者采用。
4K电视普及浪潮来袭 推动4K生态系统发展
初识FPGA CLB之LUT实现逻辑函数
简易磁感应线圈磁性检测装置
塑料、金属与木质音箱比较
“厚道”的孙宏斌自评,帮助贾跃亭是性情使然?
用增强并口EPP协议扩展计算机的ISA接口
概述全球范围内制造业迁徙趋势
全球首款配备完整QWERTY键盘的5G手机
博通以189亿美元收购软件公司CA获批准
功率MOSFET平均售价持续上升 成为IDM大厂产品主要发展重点
工信部:电子信息行业复岗率达到95% 红外温度传感器日交付量提升
【IoT毕业设计】STM32开发板+机智云IoT+智能楼宇照明灯控
对于只有一个输出端的时钟信号线,如何实现差分布线?
MAX31725超精确的温度传感器(±0.5°C)
BOE京东方供货荣耀Magic4系列 定义柔性显示新标准
2022年对手机行业具有影响力的新技术介绍
智能胰岛素注射纪录器可记录注射剂量信息并将数据传输至手机APP
中兴破产?核心资产要被烽火科技收购?
基于自激换流器的-24V稳压电源电路
发改委等23个部门联合印发意见,加快5G网络商用步伐