发表于:2006-09-16 14:29:00
3楼
ISA板的基地址一般需要用跳线设置,其中断线可在CMOS中指定,数据宽度为16位,EISA为32位,读写速度也较慢,而PCI的板基地址和中断线在BIOS启动阶段即由系统完成动态分配 并自动调用PCI写程序写入PCI数据采集卡的总线接口芯片的PCI 配置寄存器中,PCI数据宽度32位,总线频率以PLX 9052接口芯片为例是33MHZ,某些带有FIFO的板卡支持以猝发方式批量传递数据,如果是使用S5933等带有主控能力的接口芯片的板卡还有总线主控工作方式。
如果你是在WINDOWS环境下用,并且原来的ISA卡也是在厂商的驱动程序基础上编程,那换成了PCI的对你影响应该不是太大,都是安装驱动,编程时调用开放的函数库,用户逻辑没有区别,除非你在采样频率,实时性等时序方面有严格的要求,这两种板卡在这样的使用上应该是有区别的,但你可以选用具有ISA映射能力的PCI板,它在PCI板上使用ISA局部设备,并进行逻辑转换,对于习惯了ISA卡的用户来说,编程逻辑和使用效果都是差不多的。
如果你是在DOS下直接做底层操作,其最大的区别在于PCI卡需要写一个程序来首先获取其基地址,而后才能对其硬件寻址操作。你应当先确定你的PCI卡的厂商ID,设备ID,在BIOS启动时的PCI设备列表中查到相应的总线号,设备号,功能号,通过对CF8,CFC两个端口地址进行32位读写操作来获取PCI配置信息。
另外,我发现不少的PCI卡的中断功能在底层操作中无法全效使用,我用C和汇编写的一个数据采集处理程序,只能在WIN9X的MSDOS方式下正常使用板卡的AD转换中断,其余的中断要么无法触发,要么中断无法撤除,陷入死循环,厂商也没辙,至于在纯DOS下,连AD转换中断也不对,因为中断次数比转换次数还多,多了近一倍,奇怪。建议你不要以底层方式使用中断,并且听说在WINDOWS下PCI的定时中断也就能实现到毫秒级,别期望太高了。