一种Windows2000下连续输出数据的PCI卡
摘要:介绍PCF1536的设计原理和硬件结构;详细讨论了大容量FIFO的结构及用CPLD实现FIFO控制器;计算PCF1536工作于Windows2000操作系统下允许的最大中断延迟jb后将PCF1536应用于多路D/A转换器,指出Windows2000的中断延迟远远小于41.2毫秒。
关键词:PCF1536连续数据流FIFO控制器中断延迟
在视频输出、声呐仿真等实际应用中,经常要求计算机能根据要求稳定输出连续数据流。然而,当计算机工作于Windows2000操作系统下时,由于该操作系统是一个多任务的非实时操作系统,当它收到外部设备发来的中断时,需要延迟一定时间间隔后,才开始执行中断服务程序。这样,从计算机I/O口直接输出的数据流只能是间歇的数据流,无法提供连续数据流,不能满足实际应用的需要。
幸运的是,许多实际应用只需要低速的连续数据流。可以利用PCI总线的高速数据传输特性,在PCI接口后加入一个大容量FIFO存储器,高速的PCI数据流从FIFO存储器的输入端输入,在FIFO的输出端就能获得低速的连续数据流。这样屏蔽了Windows2000的非实时性,成功满足实际应用的需要。在图1所示的具体应用中,计算机与PCI卡之间通过PCI总线形成峰值速率达132MB/s的间歇数据流;PCI卡通过局部总线与大容量存储器之间同样是峰值速率达132MB/s的间歇数据流;最后通过多路D/A转换电路获得了速率为16MB/s的连续数据流。
图1和图2
为了便于应用,将PCI接口模块与大容量存储器结合,设计了一块能在Windows2000下以16MB/s的速率连续输出数据的PCI卡PCFl536。
1PCFl536的工作原理
PCI卡PCFl536是一个带有1536KBFIFO的通用PCI卡;在Windows2000操作系统下,它能以16MB/s的速度连续输出数据。图2是PCFl536的结构框图,整个PCFl536包括PCI接口、大容量FIFO存储器和驱动器三个模块。
1.1PCI接口模块
PCI接口模块由PCI9052和配置EEPROM93LC46组成。PCI9052是PLX技术公司的产品,兼容于PCI协议(2.1版);它可作为PCI总线的从设备,支持32位数据;突发传输。图3是PCI9052与PCI金手指和存储器模块的连接示意图。
PCI9052与存储器有三种连接方式:数据地址复用、奴据地址非复用和ISA方式。在PCFl536中,PCI9052架用数据地址非复用方式连接FIFO存储器。其时序参见文献[1]。PCI9052与FIFO的连接信号中,ADS表示一次突发传输的开始,BLAST表示一次突发传输的结束,LAD[0:31]为32位数据,LBE[0:3]为字节有效信号。缓存后的时钟输出信号BCLKO经74LS00送回PCI9052,同时也送到FIFO。FIFO半满时发出的中断信号通过LINTl1进入PCI9052,再通过INTA发送给CPU。由于FIFO的写入不需要地址,因此PCI9052与FIFO之间没有地址连接。
1.2存储器模块
1.2.1存储器组织
图4
存储器模块由CPLD器件EPM7128SQCl00和四片FIFO器件AL422B组成。AL422B是AVERLOGIC公司的产品,每片AL422B包含384Kx8位DRAM,主要应用于视频输出。在现有的FIFO存储器中,AL422B具有最低的价格/存储位比。这是PCFl536选择使用AIA22B的主要原因。AL422B的结构框图如图4所示。它能完成初始化、复位、写和读等四种操作。初始化操作发生在上电后0.1ms内,WRST和RRST保持为低电子,然后可以开始正常操作。复位操作中,WRST有效,则输入数据地址设置为0且清空输入缓存;RRST有效,则数据输出地址设置为0且将数据预取到输出缓存。当WE有效时,完成写操作,在WCK上升沿将D17~D10写入写数据寄存器;WE无效时,禁止写操作,写地址计数器保持不变。
四片AL422B通过位扩展成384K×32位的FIFO存储器,如图5所示。
1.2.2存储器控制器
AIA22B虽然有不同的数据输入和输出端口,但与通用FIFO存储器不同,它并不提供半满信号、数据有效信号等。因此AL422B不是完全意义上的FIFO存储器。在PCFl536上,使用一片可编程逻辑设备EPM7128作为FIFO控制器,全面控制AL422B的功能。从图2和图5可以看出,EPM7128为FIFO提供RCK、RRST、RE、D1[0:31]、OE、WE、TST、WRST和WCK等读写控制信号;当FIFO半满时提供半满信号HF;另外EPM7128为外设提供正负数据有效信
号、4MHz和8MHz的时钟佰弓毒世外设灵活使用。图6是用VHDL语言对EPM7128编程而成的FIFO控制器。该控制器由JTAG模块、写模块、读模块和控制模块组成。计算机通过JTAG接口对EPM7128现场编程。当PCI9052的数据准备好后,写模块按LCLK时钟将数据读入,接着按WCK时钟将数据写入AL422B。在FIFO控制器的控制下,整个384K×32位的FIFO存储器被分为A、B两部分。当数据从A部分读出时,PCI9052将数据写入B部分;反之,当数据从B部分读出时,PCI9052将数据写入A部分。数据读出的速率为16MB/s。当A(或B)部分数据读完后,FIFO控制器接着从B(或A)部分读数,并通过中断通知CPU向A(或B)部分写入数据。如此循环往复。
《一种Windows2000下连续输出数据的PCI卡》
本文链接地址:http://www.oyaya.net/fanwen/view/173223.html
关键词:PCF1536连续数据流FIFO控制器中断延迟
在视频输出、声呐仿真等实际应用中,经常要求计算机能根据要求稳定输出连续数据流。然而,当计算机工作于Windows2000操作系统下时,由于该操作系统是一个多任务的非实时操作系统,当它收到外部设备发来的中断时,需要延迟一定时间间隔后,才开始执行中断服务程序。这样,从计算机I/O口直接输出的数据流只能是间歇的数据流,无法提供连续数据流,不能满足实际应用的需要。
幸运的是,许多实际应用只需要低速的连续数据流。可以利用PCI总线的高速数据传输特性,在PCI接口后加入一个大容量FIFO存储器,高速的PCI数据流从FIFO存储器的输入端输入,在FIFO的输出端就能获得低速的连续数据流。这样屏蔽了Windows2000的非实时性,成功满足实际应用的需要。在图1所示的具体应用中,计算机与PCI卡之间通过PCI总线形成峰值速率达132MB/s的间歇数据流;PCI卡通过局部总线与大容量存储器之间同样是峰值速率达132MB/s的间歇数据流;最后通过多路D/A转换电路获得了速率为16MB/s的连续数据流。
图1和图2
为了便于应用,将PCI接口模块与大容量存储器结合,设计了一块能在Windows2000下以16MB/s的速率连续输出数据的PCI卡PCFl536。
1PCFl536的工作原理
PCI卡PCFl536是一个带有1536KBFIFO的通用PCI卡;在Windows2000操作系统下,它能以16MB/s的速度连续输出数据。图2是PCFl536的结构框图,整个PCFl536包括PCI接口、大容量FIFO存储器和驱动器三个模块。
1.1PCI接口模块
PCI接口模块由PCI9052和配置EEPROM93LC46组成。PCI9052是PLX技术公司的产品,兼容于PCI协议(2.1版);它可作为PCI总线的从设备,支持32位数据;突发传输。图3是PCI9052与PCI金手指和存储器模块的连接示意图。
PCI9052与存储器有三种连接方式:数据地址复用、奴据地址非复用和ISA方式。在PCFl536中,PCI9052架用数据地址非复用方式连接FIFO存储器。其时序参见文献[1]。PCI9052与FIFO的连接信号中,ADS表示一次突发传输的开始,BLAST表示一次突发传输的结束,LAD[0:31]为32位数据,LBE[0:3]为字节有效信号。缓存后的时钟输出信号BCLKO经74LS00送回PCI9052,同时也送到FIFO。FIFO半满时发出的中断信号通过LINTl1进入PCI9052,再通过INTA发送给CPU。由于FIFO的写入不需要地址,因此PCI9052与FIFO之间没有地址连接。
1.2存储器模块
1.2.1存储器组织
图4
存储器模块由CPLD器件EPM7128SQCl00和四片FIFO器件AL422B组成。AL422B是AVERLOGIC公司的产品,每片AL422B包含384Kx8位DRAM,主要应用于视频输出。在现有的FIFO存储器中,AL422B具有最低的价格/存储位比。这是PCFl536选择使用AIA22B的主要原因。AL422B的结构框图如图4所示。它能完成初始化、复位、写和读等四种操作。初始化操作发生在上电后0.1ms内,WRST和RRST保持为低电子,然后可以开始正常操作。复位操作中,WRST有效,则输入数据地址设置为0且清空输入缓存;RRST有效,则数据输出地址设置为0且将数据预取到输出缓存。当WE有效时,完成写操作,在WCK上升沿将D17~D10写入写数据寄存器;WE无效时,禁止写操作,写地址计数器保持不变。
四片AL422B通过位扩展成384K×32位的FIFO存储器,如图5所示。
1.2.2存储器控制器
AIA22B虽然有不同的数据输入和输出端口,但与通用FIFO存储器不同,它并不提供半满信号、数据有效信号等。因此AL422B不是完全意义上的FIFO存储器。在PCFl536上,使用一片可编程逻辑设备EPM7128作为FIFO控制器,全面控制AL422B的功能。从图2和图5可以看出,EPM7128为FIFO提供RCK、RRST、RE、D1[0:31]、OE、WE、TST、WRST和WCK等读写控制信号;当FIFO半满时提供半满信号HF;另外EPM7128为外设提供正负数据有效信
号、4MHz和8MHz的时钟佰弓毒世外设灵活使用。图6是用VHDL语言对EPM7128编程而成的FIFO控制器。该控制器由JTAG模块、写模块、读模块和控制模块组成。计算机通过JTAG接口对EPM7128现场编程。当PCI9052的数据准备好后,写模块按LCLK时钟将数据读入,接着按WCK时钟将数据写入AL422B。在FIFO控制器的控制下,整个384K×32位的FIFO存储器被分为A、B两部分。当数据从A部分读出时,PCI9052将数据写入B部分;反之,当数据从B部分读出时,PCI9052将数据写入A部分。数据读出的速率为16MB/s。当A(或B)部分数据读完后,FIFO控制器接着从B(或A)部分读数,并通过中断通知CPU向A(或B)部分写入数据。如此循环往复。
《一种Windows2000下连续输出数据的PCI卡》