PCI采集卡原理和程序文档格式.docx
- 文档编号:16765485
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:17
- 大小:70.24KB
PCI采集卡原理和程序文档格式.docx
《PCI采集卡原理和程序文档格式.docx》由会员分享,可在线阅读,更多相关《PCI采集卡原理和程序文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
40%~80%
存贮温度:
-55℃~+85℃
2.5外型尺寸:
长×
高=90mm×
96mm
3.工作原理
工作原理简介
PM-512高精度模入接口卡主要由高速多路模拟开关选通电路、高速高精度放大电路、高精度模数转换电路、先进先出(FIFO)缓冲存储器电路、开关量输入输出电路和接口控制逻辑电路等部分组成。
3.1高速多路模拟开关选通电路
本电路由2片ADG408高速多路模拟开关(或同类产品)及跨接选择器KJ1、KJ2组成,用以从16路单端信号或8路双端信号中选择其中一路,送入后端的放大器电路处理。
3.2高速高精度放大电路
本电路由4个高速高精度放大器、基准源、阻容件及跨接选择器KJ3组成,用以对通道开关选中的模拟信号进行变换处理,以提供模数转换电路所需要的信号。
3.3高精度模数转换电路
本电路由高速模数转换芯片ADS7805(或AD976)及调整电位器W1、W2、和W3组成,用以将模拟信号转换为数字信号。
W1用于偏移调整,W2用于零点调整,W3用于满量程增益调整。
3.4先进先出(FIFO)缓冲存储器电路
本电路用于将A/D转换的数据结果进行缓冲存储。
并相应的给出“空”,“半满”和“全满”的标志信号。
用户在使用过程中可以随时根据这些标志信号的状态以单次或批量的方式读出A/D转换的结果。
3.5开关量输入输出电路:
本卡还提供了各8路的开关量输入输出信号通道。
使用中需注意对这些信号应严格符合TTL电平规范。
3.6接口控制逻辑电路
接口控制逻辑电路用来将PC104总线控制逻辑转换成与各种操作相关的控制信号。
4.安装及使用注意
本卡的安装十分简便,在关电情况下,将本卡上的P1总线连接器正确的插入主机或其它功能板卡的总线连接器中并轻轻压紧。
为避免两层板卡上的元器件互相接触造成不可预计的后果,应正确选用适当高度的支柱并在本卡安装完成后将其紧固。
本卡采用的模拟开关是COMS电路,容易因静电击穿或过流造成损坏,所以在安装或用手触摸本卡时,应事先将人体所带静电荷对地放掉,同时应避免直接用手接触器件管脚,以免损坏器件。
禁止带电插拔本接口卡。
本卡跨接选择器较多,使用中应严格按照说明书进行设置操作。
设置接口卡开关、跨接套和安装接口带缆时均应在关电状态下进行。
当模入通道不全部使用时,应将不使用的通道就近对地短接,不要使其悬空,以避免造成通道间串扰和损坏通道。
为保证安全及采集精度,应确保系统地线(计算机及外接仪器机壳)接地良好。
特别是使用双端输入方式时,为防止外界较大的共模干扰,应注意对信号线进行屏蔽处理。
5.使用与操作
5.1主要可调整元件见图1。
图1主要可调整元件位置图
5.2I/O基地址选择:
I/O基地址的选择是通过DIP开关K1进行的,开关拨至“OFF”处为1,反之为0。
初始地址的选择范围一般为100H~370H之间。
用户应根据主机硬件手册给出的可用范围及是否插入其它功能卡来决定本卡的I/O基地址。
出厂时本卡的基地址设为300H,并从基地址开始占用连续8个地址。
现举例说明见图2。
A9A8A7A6A5A4A9A8A7A6A5A4
(a)100H(b)310H
图2I/O基地址选择举例
5.3输入输出插座接口定义
5.3.1模入部分
J1为模拟信号输入插座,其信号定义见表1。
用户可根据需要选择连接信号线(单端)或信号线组(双端)。
为减少信号杂波串扰和保护通道开关,凡不使用的信号端应就近与模拟地短接,这一点在小信号采样时尤其重要。
表1J1模拟输入信号端口定义(括号内表示双端方式)
插座引脚号
信号定义
1
模拟地
2
3
CH1(CH1+)
4
CH2(CH2+)
5
CH3(CH3+)
6
CH4(CH4+)
7
CH5(CH5+)
8
CH6(CH6+)
9
CH7(CH7+)
10
CH8(CH8+)
11
CH9(CH1-)
12
CH10(CH2-)
13
CH11(CH3-)
14
CH12(CH4-)
15
CH13(CH5-)
16
CH14(CH6-)
17
CH15(CH7-)
18
CH16(CH8-)
19
20
5.3.2开关量部分
J2为开关量输入输出插座,其信号定义见表2。
表2J2开关量输入输出信号端口定义
信号定义
+5V电源输出
DI1
DI2
DI3
DI4
DI5
DI6
DI7
DI8
数字地
DO1
DO2
DO3
D04
DO5
D06
DO7
DO8
21
22
23
EC/T
24
NC
25
26
注:
EC/T为外触发启动信号/外同步时钟信号共用输入端。
5.4跨接器的使用
5.4.1单端/双端方式选择
KJ1、KJ2为单端/双端输入方式选择插座,其使用方法见图3。
a.单端输入方式b.双端输入方式
图3单/双端输入方式选择
5.4.2A/D量程选择
KJ3为A/D量程选择插座,其使用方法见图4。
a.0~10V输入b.0~5V输入c.±
5V输入d.±
10V输入
图4A/D量程选择
5.5控制端口与数据格式
5.5.1各控制端口的地址与功能见表3
表3端口地址与功能表(16位操作)
端口地址
操作命令
功能
基地址+0
写
写状态控制字
读
清空FIFO,除I/O外各功能复位
基地址+2
置工作允许/停止,DO=1允许,DO=0禁止
查询FIFO状态
基地址+4
单步采样,写任意数值
从FIFO中读出A/D转换结果
基地址+6
写8路DO开关量数据
读8路DI开关量数据
下面分别就表3中的各项功能进行详细说明
1.状态控制字格式和定义
状态控制字用来确定本卡的各种工作方式,每次采样前应根据需要加以确定,其格式及定义见表4。
表4状态控制字格式及定义表(X为保留,暂无定义)
D15
D14
D13
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
F
E1
E0
X
C
B
A3
A2
A1
A0
A3A2A1A0为通道代码。
当本卡工作在单通道程序指定方式时,这些通道代码即为程序指定的某一通道。
当本卡工作在多通道自动扫描方式时,这里的通道代码为指定的末通道(一定大于0),本卡将自动从0通道开始,逐次加一选择通道,直到指定的末通道为止,且周而复始。
B为触发启动方式选择。
B=0时为程控触发启动方式,B=1时为外部TTL信号触发启动方式。
C为单通道程序指定/多通道自动扫描选择。
C=0时为单通道程序指定方式。
C=1时为多通道自动扫描方式。
D2D1D0为A/D采样程控频率选择。
其定义如下:
D2D1D0
程控频率
000
1KHz
001
5KHz
010
10KHz
011
50KHz
100
101
保留
110
外同步时钟方式
111
单步方式
E1E0为中断信号通道选择。
本选择应与F位配合使用,其定义如下:
E1E0
中断信号通道
00
IRQ5
01
IRQ7
10
IRQ12
11
无效
F为中断允许选择。
F=0禁止中断,F=1允许中断。
当允许中断时,FIFO存储器的“半满”信号就将产生中断申请,以便本卡在中断方式下开始读取A/D转换结果。
2.清空FIFO
本操作用于清空FIFO并使除I/O以外的各种已进行过的操作恢复到初始状态,同时将FIFO的状态标志置为“空”。
本操作应在每次A/D采集之前进行。
3.置工作允许/停止
当状态控制字填写完毕后,本卡还不能开始工作。
只有在基地址+2写1才能允许工作。
此时,如果状态控制字选择的是程控触发启动方式,则本卡将按照选定的程控频率开始工作。
如果状态控制字选择的是外部TTL信号触发启动方式,则本卡将等待外部TTL信号的上升沿(从低电平到高电平),然后按照选定的程控频率开始工作。
采样过程中,在基地址+2写0将停止本卡的A/D转换工作,直到重新写1允许。
4.查询FIFO状态
FIFO状态在工作过程中可以随时查询,以判断FIFO存储器中A/D转换结果的存储情况。
其状态标志定义如下:
D15……………………D3
D2D1D0
定义
FIFO空
XX1
FIFO非空
X0X
FIFO非半满
X11
FIFO半满
0XX
FIFO非全满
FIFO全满
一般情况下,如果本卡工作在低速或单步方式时,可以用过查询判断FIFO是否为“空”进行数据的读取。
而在高速工作方式时,应该通过查询判断FIFO是否为“半满”进行数据的批量读取。
“全满”状态一般不要使用,因为出现了“全满”就意味着可能有数据溢出丢失。
5.单步采样
在状态控制字设为单步方式,且置为工作允许后,再对基地址+4进行一次写操作(写出数据无关),本卡就进行一次采样。
如果本卡同时还置为多通道自动扫描方式,则同时切换到下一个通道等待继续操作。
由于单步采样是一个程序可控的进程,所以只要执行完一次单步采样并且判断FIFO中“不空”,即可从FIFO中读出A/D转换的结果。
6.从FIFO中读出A/D转换结果
执行此操作可以从FIFO中读出经过缓存的A/D转换结果,此结果由16位数据组成,具体格式及定义参见5.5.3。
7.读/写8位DI/DO开关量数据
执行上述读/写操作可以读入或写出数字开关量。
注意此类操作均为16位操作,但只有低8位有效。
其中每一位对应一路数字开关量,且数字开关量均为TTL电平标准。
具体数据格式参见5.5.4。
5.5.2模入通道代码数据格式见表5(端口地址为基地址+0)
表5模入通道代码数据格式
通道号
十进制代码
十六进制代码
输入方式
00H
单/双
08H
单
01H
09H
02H
0AH
03H
0BH
04H
0CH
05H
0DH
06H
0EH
07H
0FH
5.5.3A/D转换结果的数据格式见表6(端口地址为基地址+4)
表6A/D转换结果数据格式
DB15
DB14
DB13
DB12
DB11
DB10
DB9
DB8
DB7
DB6
DB5
DB4
DB3
DB2
DB1
DB0
注:
双极性时DB15为符号位。
5.5.4开关量输入输出信号的数据格式见表7(端口地址为基地址+6)
表7开关量输入输出信号数据格式
DO6
DO4
5.6模入码制以及数据与模拟量的对应关系
5.6.1本接口卡在单极性方式工作,且输入的模拟量为0~10V时,转换后的16位数码为二进制原码。
此16位数码表示一个正数码,其数码与模拟电压值的对应关系为:
模拟电压值=数码(16位)×
10(V)/65536(V)
即:
1LSB=0.1526mV
5.6.2本接口卡在单极性方式工作,且输入的模拟量为0~5V时,转换后的16位数码为二进制原码。
5(V)/65536(V)
1LSB=0.0763mV
5.6.3本接口卡在双极性方式工作,且输入的模拟量为±
5V时,转换后的16位数码为二进制偏移码。
此16位数码的最高位(DB15)为符号位,“0”表示负,1”表示正。
偏移码与补码仅在符号位上定义不同,此时数码与模拟电压值的对应关系为:
10(V)/65536-5(V)
1LSB=0.1526mV
5.6.4本接口卡在双极性方式工作,且输入的模拟量为±
10V时,转换后的16位数码为二进制偏移码。
20(V)/65536-10(V)
1LSB=0.3052mV
5.7外触发启动信号的使用说明
本卡的A/D采样可以在外触发方式下启动工作。
在本卡设置好状态控制字(外部TTL信号触发启动方式,程控频率为除单步方式以外的任一频率方式),清空FIFO并允许工作后,当外触发启动信号有一个上升沿(从低电平到高电平的变化),本卡即开始正常采样。
此时只要检测FIFO的状态标志即可知道是否开始采样并按需要读出A/D转换结果。
使用中需注意外启动信号应符合TTL电平标准。
5.8外同步时钟信号的使用说明
外同步时钟信号的使用要求与外触发启动信号类似,应符合TTL电平标准。
其时钟频率应不超过100KHz。
5.9外同步时钟信号与外触发启动信号同时使用的说明
本卡的A/D采样还可以采用外同步时钟信号与外触发启动信号同时使用的方式。
在本卡设置好状态控制字(外部TTL信号触发启动方式,程控频率为外同步时钟方式),清空FIFO并允许工作后,当外同步时钟信号有一个上升沿(从低电平到高电平的变化),本卡即开始按照外同步时钟频率正常采样。
5.10调整与校准
本卡出厂时已进行了调整与校准,如无必要,请不要进行此项工作。
如果长期使用后发现零点或满度偏移,请按下述方法进行调校。
5.10.1零点校准
将任一通道对模拟地短接(单端单极性方式时)同时对该通道进行A/D转换,调整W2电位器,使其转换结果为“0”或接近“0”。
5.10.2满度校准
在任一通道接入一接近正满度的稳定正电压信号,运行程序对该通道采样。
调整W3使A/D转换读数值等于或接近外加信号电压。
上述零点和满度的校准过程应反复进行,最终使其满足使用要求。
5.10.3双极性校准
如果测量双极性信号时偏差较大,应在零点和满度已校准好的基础上分别加入正、负信号并反复调整W1使其符合要求。
6.软件编程举例:
6.1输入信号为0~10V,对通道1连续采样100次,板基地址为300H,程序单步启动和查询FIFO“非空”后读出A/D采样数据。
本程序可用于A/D部分调校。
#include<
math.h>
stdio.h>
stdlib.h>
dos.h>
main()
{
inta,b,c,d,base;
/*定义过程变量*/
unsignedinti;
floatj;
/*定义数据变量*/
clrscr();
/*清屏*/
base=0x300;
/*基地址=300H*/
a=inport(base+0);
/*清空FIFO,除I/O外各功能复位*/
outport(base+0,0x0700);
/*写状态控制字:
非中断方式;
程控单步启动;
*/
/*单通道指定模式;
通道代码=0*/
outport(base+2,1);
/*置工作允许*/
for(b=0;
b<
100;
b++)/*采样次数=100次*/
{
outport(base+4,1);
/*启动A/D转换一次*/
do{
;
/*判断FIFO中是否为“空”,为“空”等待*/
}while(inport(base+2)<
1);
i=inport(base+4);
/*FIFO中“非空”,读取A/D转换结果*/
j=(float)(i*10.0/65536.0);
/*将结果转换成十进制(注)*/
printf("
%f"
j);
/*显示*/
\n"
);
for(c=0;
c<
2000;
c++)/*为使显示看的清楚,延时一段再循环采样*/
{
for(d=0;
d<
d++);
}
}
outport(base+2,0);
/*置工作停止*/
}
如果输入信号为0~5V,则该语句为:
j=(float)(i*5.0/65536.0);
如果输入信号为±
5V,则该语句为:
j=(float)(i*10.0/65536.0-5.0);
10V,则该语句为:
j=(float)(i*20.0/65536.0-10.0);
6.2对16个通道连续循环采样至“半满”(共4096个数据),板基地址为100H,100KHz采样频率,查询FIFO“半满”后读出A/D采样数据。
inta,b,c,base;
unsignedinti;
base=0x100;
/*基地址=100H*/
outport(base+0,0x048f);
100KHz采样频率;
/*多通道自动扫描模式;
末通道代码=F(16通道)*/
do{
;
/*判断FIFO中是否为“半满”,非“半满”等待*/
}while(inport(base+2)<
3);
outport(base+2,0);
/*FIFO中“半满”,置工作停止*/
/*读取A/D转换结果*/
j=(float)(i*10.0/65535.0);
/*将结果转换成十进制*/
for(b=0;
b++)/*为使显示看的清楚,延时一段再循环显示*/
c++);
}while(inport(base+2)>
0);
/*判断FIFO中是否为“空”,非“空”继续读数据*/
/*FIFO中已读“空”,结束程序*/
6.3I/O操作,板基地址为300H。
注意读/写均为16位操作,但只有低8位有效。
intdo,di,base;
base=0x300;
do=0x00**
outport(base+6,do);
di=inport(base+6);
printf("
%d"
di);
附A.名词注释
1.单端输入方式:
各路输入信号共用一个参考电位,即各路输入信号共地,这是最常用的接线方式。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PCI 采集 原理 程序