位置:51电子网 » 技术资料 » 接口电路

EPP模式500ksps数据采集接口

发布时间:2008/6/3 0:00:00 访问次数:430

作者email: whxcds@hotmail.com

摘 要: 文章通过对微机并行口epp模式下数据读取时序的深入实验分析,研究了实现500ksps数据连续采集及传输涉及的软件和硬件相关因素,并采用cpld器件结合大容量sram构成fifo,实现win98环境下epp模式高速数据采集接口。

关键词: epp cpld fifo 数据采集

数据采集系统中,通过微机com端口的rs-232串行通讯及通过微机并行端口的并行通讯具有开发使用方便的特点,前者可与工作于11.0592mhz晶振下的8052单片机在波特率115200时,实现10ksps(samples per second)的连续数据采集和传输而不丢失数据,若要达到更高速率的数据采集,可以通过并行口通讯方式实现。当前微机均可通过配置cmos,将基地址为378h的并行口设置为epp模式以支持通过数据口双向传输通讯,并由芯片硬件自动产生握手信号,实现高速传输的目的。

为充分实现epp模式的高速特性,外设应当及时响应epp的握手信号,当数据采集系统工作于非实时多任务的win98操作系统环境下,为实现数据高速、均匀性采样,还需要在外设配置必要的数据缓冲存储器。如果数据采集速率低于epp模式数据读入平均速率,就可能实现数据的连贯有效性。有资料[1]说明在epp模式,可实现500kbytes/s以上的传输速率,这表明通过epp模式,可以实现500ksps的数据采集系统。通过对epp模式的深入实验分析,发现要实现500ksps,外设硬件及微机软件程序均要采取一些策略:硬件上必须配置fifo数据缓冲存储器,才能协调数据采集严格的时间间隔要求与数据传输给微机的非实时、非均匀性之间的矛盾;软件程序方面应当采取双字读的方法,否则epp模式下仅能实现250kbytes/s数据读取可行性。

1 epp模式读取速率的实验分析

图1为实验epp模式读取速率的电路,实验程序为



delphi结合内嵌汇编语言,涉及epp读取的关键代码如下:

function readdata:byte;
var
starttime,stoptime,delay:int64;
number:longword;
queryperformancecounter(starttime);
for number:=0 to 999999 do
begin
asm
mov dx,$37c
in al,dx
mov result,al
end;
end;
queryperformancecounter(stoptime);
delay:=stopttime-starttime;
end;

此为循环1000000次读取epp数据口程序,循环仅为方便用计时及示波器观察而设,并在执行前后分别读取系统计数值,delay值除以1.2后为执行花费的时间(单位为微秒),执行前先通过对地址379h的d0位写入高,使该位为低(注意:对该位写入低通常不能达到使该位变为低的目的,只有采取写入高才能使该位变为低),以清除epp超时位,当a、b点均为低时,可实现最快的epp握手,若a为高、b为低时,由于epp周期开始时满足wait为低的要求,epp自动在datastb处输出低,但因wait没有出现表示应答的高状态,epp在延时10μs后,将datastb恢复为高以结束该次epp访问过程,并置超时位。稍后因wait为低再次开始一次epp访问过程,如果b为高,则wait为高,不能满足epp的开始条件,故datastb保持为高,epp在延时10μs后结束该次epp访问过程,并置超时位。在发生超时情况下,数据仍然可正确读入
(这一特性与笔者所查资料[1]有出入),此结论可通过对比循环前后时间差来及实际读入数据值证实。

注意程序循环中并未执行清除epp超时位的指令,根据笔者实验,即使已发生epp访问超时,也不影响下一次的epp读周期(包括对37bh的地址读及对37ch的数据读),但超时对epp写周期有影响,在清除超时位之前,epp写周期无效(因本文不涉及epp写周期的内容,此处不再展开探讨)。在图2所示意波形中,当有正确握手的epp读周期执行时间约为1.5μs,此时间是字节模式下一次有效epp访问所需最短时间,在这段时间内,“in al,dx”这一条指令占据了约90%以上的访问时间,验证此点仅需临时屏蔽“in al,dx”指令,并比较所花费的时间差别即可。1.5μs相当于接近700kbytes/s的数据读速率。如果以“in eax,dx”替代“in al,dx”指令,可以充分利用epp模式下硬件将4个8位数自动合并为1个32位数的特性,在一次i/o访问中由硬件自动产生4个datastb负脉冲从而实现4个字节的输入。因为一次字节模式的i/o访问所费时大约间需要1.5μs,减少这类指令的执行次数有利于实现更高速的epp访问过程,经实验发现以4字节方式访问的epp过程可以在3.2μs内读取一次,即平均每字节需0.8μs,相当于1.2mbytes/s,此实验结果是基于外设可以连续不断的输送数据理想前提,实际上要实现有效的数据传输,可得到的速率要低于该值。

2 win98下高速epp接口的构成

在win98环境下,由于非实时多任务的特性,运行于ring3的应用程序频繁被操作

作者email: whxcds@hotmail.com

摘 要: 文章通过对微机并行口epp模式下数据读取时序的深入实验分析,研究了实现500ksps数据连续采集及传输涉及的软件和硬件相关因素,并采用cpld器件结合大容量sram构成fifo,实现win98环境下epp模式高速数据采集接口。

关键词: epp cpld fifo 数据采集

数据采集系统中,通过微机com端口的rs-232串行通讯及通过微机并行端口的并行通讯具有开发使用方便的特点,前者可与工作于11.0592mhz晶振下的8052单片机在波特率115200时,实现10ksps(samples per second)的连续数据采集和传输而不丢失数据,若要达到更高速率的数据采集,可以通过并行口通讯方式实现。当前微机均可通过配置cmos,将基地址为378h的并行口设置为epp模式以支持通过数据口双向传输通讯,并由芯片硬件自动产生握手信号,实现高速传输的目的。

为充分实现epp模式的高速特性,外设应当及时响应epp的握手信号,当数据采集系统工作于非实时多任务的win98操作系统环境下,为实现数据高速、均匀性采样,还需要在外设配置必要的数据缓冲存储器。如果数据采集速率低于epp模式数据读入平均速率,就可能实现数据的连贯有效性。有资料[1]说明在epp模式,可实现500kbytes/s以上的传输速率,这表明通过epp模式,可以实现500ksps的数据采集系统。通过对epp模式的深入实验分析,发现要实现500ksps,外设硬件及微机软件程序均要采取一些策略:硬件上必须配置fifo数据缓冲存储器,才能协调数据采集严格的时间间隔要求与数据传输给微机的非实时、非均匀性之间的矛盾;软件程序方面应当采取双字读的方法,否则epp模式下仅能实现250kbytes/s数据读取可行性。

1 epp模式读取速率的实验分析

图1为实验epp模式读取速率的电路,实验程序为



delphi结合内嵌汇编语言,涉及epp读取的关键代码如下:

function readdata:byte;
var
starttime,stoptime,delay:int64;
number:longword;
queryperformancecounter(starttime);
for number:=0 to 999999 do
begin
asm
mov dx,$37c
in al,dx
mov result,al
end;
end;
queryperformancecounter(stoptime);
delay:=stopttime-starttime;
end;

此为循环1000000次读取epp数据口程序,循环仅为方便用计时及示波器观察而设,并在执行前后分别读取系统计数值,delay值除以1.2后为执行花费的时间(单位为微秒),执行前先通过对地址379h的d0位写入高,使该位为低(注意:对该位写入低通常不能达到使该位变为低的目的,只有采取写入高才能使该位变为低),以清除epp超时位,当a、b点均为低时,可实现最快的epp握手,若a为高、b为低时,由于epp周期开始时满足wait为低的要求,epp自动在datastb处输出低,但因wait没有出现表示应答的高状态,epp在延时10μs后,将datastb恢复为高以结束该次epp访问过程,并置超时位。稍后因wait为低再次开始一次epp访问过程,如果b为高,则wait为高,不能满足epp的开始条件,故datastb保持为高,epp在延时10μs后结束该次epp访问过程,并置超时位。在发生超时情况下,数据仍然可正确读入
(这一特性与笔者所查资料[1]有出入),此结论可通过对比循环前后时间差来及实际读入数据值证实。

注意程序循环中并未执行清除epp超时位的指令,根据笔者实验,即使已发生epp访问超时,也不影响下一次的epp读周期(包括对37bh的地址读及对37ch的数据读),但超时对epp写周期有影响,在清除超时位之前,epp写周期无效(因本文不涉及epp写周期的内容,此处不再展开探讨)。在图2所示意波形中,当有正确握手的epp读周期执行时间约为1.5μs,此时间是字节模式下一次有效epp访问所需最短时间,在这段时间内,“in al,dx”这一条指令占据了约90%以上的访问时间,验证此点仅需临时屏蔽“in al,dx”指令,并比较所花费的时间差别即可。1.5μs相当于接近700kbytes/s的数据读速率。如果以“in eax,dx”替代“in al,dx”指令,可以充分利用epp模式下硬件将4个8位数自动合并为1个32位数的特性,在一次i/o访问中由硬件自动产生4个datastb负脉冲从而实现4个字节的输入。因为一次字节模式的i/o访问所费时大约间需要1.5μs,减少这类指令的执行次数有利于实现更高速的epp访问过程,经实验发现以4字节方式访问的epp过程可以在3.2μs内读取一次,即平均每字节需0.8μs,相当于1.2mbytes/s,此实验结果是基于外设可以连续不断的输送数据理想前提,实际上要实现有效的数据传输,可得到的速率要低于该值。

2 win98下高速epp接口的构成

在win98环境下,由于非实时多任务的特性,运行于ring3的应用程序频繁被操作

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!