4.1 地址译码模块

该模块实现了CPLD内部与PC/104总线的接口单元。本数据采集卡是作为PC/104的标准外设进行工作的。PC/104规定,外设的操作地址为A[9:0],在系统软件设计中要防止地址冲突。PC/104中使用A0~A9地址位来表示I/O端口地址,即可有1 024个口地址,前512个供系统板使用,后512个供扩充插槽使用,当A9=O时表示系统板上的口地址;当A9=1时表示扩充插槽接口卡上的口地址。因此本数据采集板的基地址由A[9:4]来确定,偏移地址由地址线的A[3:O]确定,选择该地址就意味着相应的操作,CPLD对地址进行译码后就产生相应的控制。在Qu-artusⅡ上设计的地址译码模块原理图程序如图4所示。

地址译码的工作过程为:在拨码开关上手工设基地址,在CPLD内部划出一片74LS688地址比较器,比较CPU发出的基地址与手工设定的基地址是否一致,若不一致,则地址译码电路不工作,进而整个数据采集板都不工作;若一致,则74LS688输出低电平,使得偏移地址译码电路中的4-16译码器74LS154正常工作,在IOR,IOW信号的作用下产生各种控制信号,使数据采集板正常工作。

4.2 多路开关控制模块

该模块实现了对八选一多路选择开关ADG508A的选通控制。通过控制使能引脚EN以及CH0~CH2引脚,可对多路开关的输入通道进行可编程选择。PC/104CPU通过地址译码选中CSWE[2],并写入数据D0~D7,就可以选择不同的通道导通。在QuartusⅡ上设计的多路开关控制模块原理图程序如图5所示。

4.3 A/D采样及FIFO控制模块

该模块主要负责A/D芯片的转换时序,实现对A/D采样的合理控制,同时将转换数据存入FIFO中,并且控制着两片FIFO的轮流存储,实现大量数据的采集。PC/104CPU通过地址译码选中CSWE[O],写入数据D0~D7,将与门inst15打开,输出端ENCODE1输出100 MHz的时钟信号,PWRDWN1端输出为低电平,启动A/D转换,同时,与门inst14被打开,WCLK1端输出100 MHz时钟,将转换后的数据存入FIFO(1)中。选中CSRD[0],写人数据D0~D7,将与门inst21打开,OE2端输出低电平,使CY7C4261(2)输出使能,RCLK2端输出100 MHz的时钟信号,将数据读出。当FIFO(1)存储满时,CPLD控制由FIFO(2)来进行存储,同时将FIFO(1)中的数据读出;当FIFO(2)存储满时,转由FIFO(1)进行存储,同时将FIFO(2)中数据读出。如此反复,直至预定的延时时间止,实现了两片FIFO的轮流存储和读取,进而达到了采集大量数据的目的。另外,在每次采样及向FIFO中存储数据之前,都要求选通CSWE[5]或CSWE[6]将FIFO芯片复位,使其读指针和写指针都指向第一个物理存储地址。在QuartusⅡ上设计的A/D采样及FIFO控制模块原理图程序如图6所示。