一种基于PCI总线的总温传感器数据采集卡的制作方法

文档序号:17755744发布日期:2019-05-24 21:17阅读:721来源:国知局
一种基于PCI总线的总温传感器数据采集卡的制作方法
本实用新型涉及数据采集卡
技术领域
,具体的说是一种基于PCI总线的总温传感器数据采集卡。
背景技术
:PCI总线由ISA总线发展而来,具有传输能力强、多总线共存、独立于CPU以及可自动识别配置外设等特点,目前被广泛应用于工控测试系统中。某型飞机大气数据分系统中总温传感器涉及到的离散量接口组合包括离散量输入和离散量输出,输入部分提供离散量输入接口,将来自飞机其他系统的28V/悬空或28VGND/悬空类型的离散量转换为TTL电平,以便于主控制器读取,输出部分负责将主控设备输出的TTL电平的大气参数离散量,驱动为要求的28V/悬空或28VGND/悬空类型向外输出。但是,目前市场上还没有满足此类测试要求的数据采集卡。技术实现要素:为了避免和解决上述技术问题,本实用新型提出了一种基于PCI总线的总温传感器数据采集卡。本实用新型所要解决的技术问题采用以下技术方案来实现:一种基于PCI总线的总温传感器数据采集卡,该采集卡通过PCI接口具有4路AI模拟量输入、4路AO模拟量输出IO,所述采集卡包括FPGA、PCI桥片、DSP、A/D和D/A,所述PCI桥片、DSP、A/D和D/A均与FPGA相连,所述PCI桥片通过地址/数据信号、控制信号与PCI工控机相连。进一步的,所述FPGA为CycloneⅢ芯片。进一步的,所述FPGA连接有5V/1.2V转换、5V/2.5V转换、5V/3.3V转换的电源转换模块。进一步的,所述PCI桥片为PCI9054桥芯片。进一步的,所述PCI桥片连接有配置存储芯片。进一步的,所述DSP为TMS320SF240芯片。进一步的,所述A/D为12位A/D转换器MAX1270芯片。进一步的,所述D/A为12位D/A转换器AD7398芯片。进一步的,所述FPGA还连接有时钟电路、复位电路、配置电路以及JTAG电路。本实用新型的有益效果是:本实用新型测试的稳定性、可靠性、兼容性更强,具备更高的可升级性,能够有效地处理来自于大气数据的复杂信号,并通过256MB/s的高速PCI总线桥接到主控设备,该板卡可批量应用于航空测试设备制作,实现AIAO模拟量数据采集,可有效降低设备制作成本,效益可观。附图说明下面结合附图和实施例对本实用新型进一步说明。图1为本实用新型中该数据采集卡的结构组成示意图;图2为本实用新型DMA传输中PCI至本地总线方向的流程示意图;图3为本实用新型DMA传输中本地总线至PCI方向的流程示意图;图4为本实用新型中上位机软件的流程示意图;图5为本实用新型DMA通讯模块中PCI至本地总线方向的流程示意图;图6为本实用新型DMA通讯模块中本地总线至PCI方向的流程示意图;图7为本实用新型中D/A模块流程图;图8为本实用新型中A/D模块流程图;图9为本实用新型中A/D模块的控制流程框图一;图10为本实用新型中A/D模块控制流程框图二;图11为本实用新型中A/D模块控制流程框图三;图12为本实用新型中下位机软件的流程示意图。具体实施方式为了使本实用新型实现的技术手段、创作特征、达成目的与功效易于明白了解,下面对本实用新型进一步阐述。如图1至图12所示,一种基于PCI总线的总温传感器数据采集卡,该采集卡通过PCI接口具有4路AI模拟量输入、4路AO模拟量输出IO,所述采集卡包括FPGA、PCI桥片、DSP、A/D和D/A,所述PCI桥片、DSP、A/D和D/A均与FPGA相连,所述PCI桥片通过地址/数据信号、控制信号与PCI工控机相连。所述FPGA为Alter公司高性能CycloneⅢ芯片。所述FPGA连接有5V/1.2V转换、5V/2.5V转换、5V/3.3V转换的电源转换模块。所述FPGA还连接有时钟电路、复位电路、配置电路以及JTAG电路,所述时钟电路为50M,所述复位电路为MAX706SESA,所述配置电路为EPCS16。所述PCI桥片为PCI9054桥芯片。所述PCI桥片连接有配置存储芯片,且所述配置存储芯片为EEPROM(93LC56L)。所述DSP为TI公司的TMS320SF240芯片,且所述DSP连接有硬件SRAM、存储器FRAM。所述4路AI模拟量输入、4路AO模拟量输出IO分别从A/D和D/A中分接出的,因此A/D和D/A的选取和设计很重要。所述D/A为ADI公司的12位D/A转换器AD7398芯片。AD7398是12位电压输出数模转换器,可由单个3V至5V或双±5V电源供电,AD7398应用外部参考VREF确定满量程输出电压,有效的VREF值包括导致广泛选择的满量程输出的VSS<VREF<VDD。AD7398的输入格式如表1所示;表1AD7398控制逻辑在上电时,输入寄存器和数模转换寄存器都加载全零,在电源关闭期间,可以对任何内部寄存器进行重新编程,但是在器件从关断模式退出之前,输出放大器将不会产生新的值。如下表2为AD7398控制逻辑输入寄存器格式;表2AD7398控制逻辑输入寄存器格式位置B14和B15是断电控制位SD和SA。如果SA设置为逻辑1,则整个数模转换器都处于电源关闭模式。如果SD设置为逻辑1,则由B12和B13(A0和A1)解码的地址决定将处于电源关闭状态的DAC通道。AD7398使用3线(CS,SDI,CLK)SPI兼容串行数据接口。AD7398的串行数据分别以16位数据字格式输入串行输入寄存器,首先加载MSB位。数据通过SDI引脚按规定协议在CLK上升沿时输入寄存器。数据只能低电平时输入。对于AD7398,当返回到逻辑高电平状态时,仅有效输入到串行寄存器的最后16位,额外数据位忽略。在第一和第二个字节传输之间保持为低电平将可使串行寄存器更新成功。一旦数据在移位寄存器中正确对齐,的上升沿时将通过地址位A1和A0的解码确定的新数据传输到目标DAC寄存器。异步提供硬件复位,重置为预设功能、DAC寄存器全部置0。如果不需要此功能,则RS引脚可以连接到逻辑高电平。输出电压其中,所述A/D为ADI公司的12位A/D转换器MAX1270芯片。MAX1270是需要仅一个+5V电源进行操作的多范围,12位数据采集系统(DAS),但在其模拟输入端接受可能跨越电源轨和地面以下的信号。这些系统提供8个模拟输入通道,可独立软件编程,适用于各种范围:MAX1270的±10V,±5V,0至+10V,0至+5V;±VREF,±VREF/2,0至VREF,MAX1271为0至VREF/2。MAX1270有一个硬件关断输入(SHDN)和两个可编程省电模式,待机(STBYPD)或全停电(FULLPD),用于转换之间的低电流关断。在待机模式下,参考缓冲区保持有效,从而消除启动延迟。如下表3为MAX1270控制字格式;表3MAX1270控制字如下表4为MAX1270控制字通道选择;表4MAX1270控制字通道选择SEL2SEL1SEL0通道000CH0001CH1010CH2011CH3100CH4101CH5110CH6111CH7如下表5为MAX1270控制字时钟/模式选择;表5MAX1270控制字时钟/模式选择PD1PD0模式00正常运行,内部时钟模式01正常运行,外部时钟模式10待机掉电模式,时钟不受影响11全掉电模式,时钟不受影响在SCLK的上升沿,输入数据(控制字节)按DIN输入。CS低电平使能通讯后,第一个到达的逻辑1位表示输入控制字节的起始位(MSB)。起始位可定义为:(1)当转换器空闲且CS为低电平时,第一个高电平时钟输入DIN。(2)在DOUT输出第6个转换数据(D6)后,DIN输入的第一个高电平。数据在SCLK的下升沿时,从DOUT输出,优先输出最高位(D11)。MAX1270的输出数据编码在单极模式下为二进制,双极性模式下为二进制补码,代码转换发生在连续整数LSB值之间的中间位置。的下降沿不会使MAX1270开始转换;每次转换都需要一个控制字节。在输入控制字节第六位之后,采集开始。在连续转换期间保持低电平。其次,在本实用新型中,还包括对采集卡的软件设计,具体包括以下几个方面。S101:对上位机软件DMA通讯设计。对PCI板卡进行操作前首先要对其驱动程序进行编写,这样系统才能找到硬件,继而在驱动程序的基础上对其进行操作。选用PLX公司的PLXMON软件工具来开发WindowsXP下的WDM模型驱动程序。这是由生产PCI9054的PLX公司提供的一个用于905X的软件。PLXMON包括以下功能:对PCI总线的探测与选择;配置寄存器的检查和修改;内存空间的显示、修改和填充;EEPROM内容的读写等操作。利用这个工具,可以很清楚地看到EEPROM的内容以及PCI配置寄存器和局部端配置寄存器的内容。另外,用户还可以进行内存和I/O端口的读写以及DMA传输。用户只需要调用其提供API就可以对硬件进行操作。通过直接调用PLXMON提供的已经封装好的PlxApi.dll文件中的API实现对PCI板卡的操作,其驱动程序开发环境设置为:(1)将PlxApi.dll文件复制到<WindowsXP安装目录>\system32下。(2)将在<PLXMON安装目录>\win32\Driver\wdm下的PciSdk.inf文件复制到<WindowsXP安装目录>\inf下。(3)将Pci9054.sys文件复制到<WindowsXP安装目录>\system32\Drivers下。在进行上面的设置之后就可以在VC中进行驱动程序的编写了,同时也要对VC进行相应的设置:(1)在VC6.0开发环境中选择Tools下拉菜单中的Options>>Directories菜单项下加入<PLXMON安装目录>\PCISDK\INC。(2)在文件开头进行宏定义:#definePCI_CODE和#defineLITTLE_ENDIAN。(3)将PlxApi.h和PlxApi.lib文件包含在工程中。完成以上设置后就可以在VC中利用PLXMON提供的API进行编程从而对板卡进行操作了。下面列出一些板卡的基本操作。1.设备的初始化:Device.VendorId=0x10b5;Device.DeviceId=(U32)-1;Device.BusNumber=(U32)-1;Device.SlotNumber=(U32)-1;Device.SerialNumber[0]='\0';∥设备初始化定义;rc=PlxPciDeviceOpen(&Device,&hDevice);∥打开设备,获得驱动程序句柄;寻找板卡PlxPci_DeviceFind(PLX_DEVICE_KEY*pKey,U16DeviceNumber);*pKey:设备句柄。DeviceNumber:器件号。3.配置空间的访问:PlxPciConfigRegisterRead(Device.BusNumber,Device.SlotNumber,fields[i].dwOffset,&rc);∥对配置空间进行读操作;PlxPciConfigRegisterWrite(Device.BusNumber,Device.SlotNumber,fields[i].dwOffset,&dwVal);∥对配置空间进行写操作;3.Local寄存器的访问:PlxRegisterRead(hDevice,fields[i].dwOffset,&rc);∥Local寄存器读;PlxRegisterWrite(hDevice,fields[i].dwOffset,dwVal);∥Local寄存器写;4.对EEPROM的访问:EepromPresent=PlxSerialEepromPresent(hDevice,&rc);∥确定EEPROM是否存在及类型;rc=PlxSerialEepromRead(hDevice,Eeprom93CS56,(U32*)dwData,128*sizeof(U16));∥对EEPROM进行读;rc=PlxSerialEepromWrite(hDevice,Eeprom93CS56,(U32*)dwData,128*sizeof(U16));∥对EEPROM进行写;5.PCIBar空间写:PlxPci_PciBarSpaceWrite(PLX_DEVICE_OBJECT*pDevice,U8BarIndex,U32offset,VOID*pBuffer,U32ByteCount,PLX_ACCESS_TYPEAccessType,BOOLEANbOffsetAsLocalAddr);∥对PCIBAR寄存器进行写;PCIBar空间读:PlxPci_PciBarSpaceRead(PLX_DEVICE_OBJECT*pDevice,U8BarIndex,U32offset,VOID*pBuffer,U32ByteCount,PLX_ACCESS_TYPEAccessType,BOOLEANbOffsetAsLocalAddr);∥对PCIBAR寄存器进行写;DMA传输用户缓存:PlxPci_DmaTransferBlock(PLX_DEVICE_OBJECT*pDevice,U8channel,PLX_DMA_PARAMS*pDmaParams,U64Timeout_ms);8.关闭设备:此结构体中的成员除PrivateData外皆不可被直接访问。PLX_DMA_PARAMS结构用于描述DMA传输参数其中,DMA传输软件流程可参见图2、图3;图2的具体过程为:开始;根据输入数据位数申请用户缓存空间malloc(longwordnumber*4);将输入数据写入缓存*(U32*)((U8*)pUserBuffer32)=value;设置DMA通道参数;打开DMA通道PlxPci_DmaChannelOpen(&Device,DmaChannel,&DmaProp);设置DMA传输参数;DMA传输用户缓存,PlxPci_DmaTransferUserBuffer(&Device,DmaChannel,&DmaParams,PLX_TIMEOUTINFINITE);关闭DMA通道,PlxPci_DmaChannelClose(&Device,DmaChannel);释放用户缓存,结束。图3的具体过程为:开始;根据输入数据位数申请用户缓存空间,malloc(longwordnumber*4);设置DMA通道参数;打开DMA通道,PlxPci_DmaChannelOpen(&Device,DmaChannel,&DmaProp);设置DMA传输参数;DMA传输用户缓存,PlxPci_DmaTransferUserBuffer(&Device,DmaChannel,&DmaParams,PLX_TIMEOUTINFINITE);将缓存中数据读出,*(U32*)((U8*)pUserBuffer32)=value;将读出数据送至编辑框显示;关闭DMA通道,PlxPci_DmaChannelClose(&Device,DmaChannel);释放用户缓存,结束。其次,上位机软件流程参见图4,具体过程为:开始;输入命令帧;判断是否为AD命令;是,则DMA向板卡传输命令帧;DMA接收板卡回读数字量,结束。若判断是否为AD命令时,为否,则判断是否为DA命令;是,则DMA向板卡传输命令帧,结束;否,则直接结束。S201:对采集卡DMA通讯模块设计。当PCI总线完成与PCI9054的数据传输后,PCI9054置高LHOLD信号,请求使用Local总线。Local总线置高LHOLDA信号对其应答。在收到应答后,PCI9054置低ADS#信号,表明传输开始。同时通过LBE[3:0]#使能数据信号线,LWR#置高表明Local至PCI传输方向,AD[31:0]输出有效地址。下一个周期,LD[31:0]开始输出数据,若此数据为最后一个数据,则BLAST#置低,表示下一个周期传输停止。收到有效数据后,Local需置低Ready#表明本地总线传输有效。传输开始时,PCI9054置高LHOLD信号,请求使用Local总线。Local总线置高LHOLDA信号对其应答。在收到应答后,PCI9054置低ADS#信号,表明传输开始。同时通过LBE[3:0]#使能数据信号线,LWR#置低表明PCI至Local传输方向,AD[31:0]输出有效地址。下一个周期,LD[31:0]开始输出数据,若此数据为最后一个数据,则BLAST#置低,表示下一个周期传输停止。收到有效数据后,Local需置低Ready#表明本地总线传输有效。DMA通讯模块流程参见图5、图6。图5的过程表示为;开始;本地总线申请信号是否有效,LHOLD=1,否则返回开始;是,则设置本地总线应答信号有效,LHOLD=1;地址选通信号是否有效,ADS=0,否则返回开始;是,则判断是否为本地写信号,LWR=1,否则返回开始;是,则读取本地写操作地址address=LA;将数据写入FIFOdata=LD;判断是否最后一个数据,BLAST=0,否则返回读取本地写操作地址的步骤;是,则有效串口发送信号send=1;有效FIFO读信号rdreq=1;串口发送数据;判断FIFO空信号是否有效,empty=1,否则返回有效串口发送信号的步骤;是,过程结束。图6的过程表示为;开始;串口接收8位数据;将8位数据进行拼接;是否接收到4个8位数据,否则返回开始;是,则有效FIFO写信号wrreq=1;数据写入FIFO;本地总线申请信号是否有效,LHOLD=1,否则继续判断;是,则设置本地总线应答信号有效,LHOLD=1;地址选通信号是否有效,ADS=0,否则返回判断本地总线申请信号是否有效;是,则判断是否为本地写信号,LWR=1,否则返回判断本地总线申请信号是否有效;是,则读取本地写操作地址address=LA;有效FIFO写信号wdreq=1;将FIFO数据写入PCI9054;判断是否最后一个数据,BLAST=0,否则返回读取本地写操作地址address=LA;是,则流程结束。S301:对采集卡D/A模块设计。其中,对D/A模块流程可参见图7,具体过程为:开始;片选信号CS置低;利用SDI管脚将16位控制逻辑输入位移寄存器;片选信号CS置高,位移寄存器数据存入输入寄存器;LDAC信号置低,输入寄存器数据存入数模转换寄存器;LDAC信号置高,输出电压;结束。S401:对采集卡A/D模块设计。其中,对A/D模块流程可参见图8,具体过程为:开始;片选信号CS置低;利用DIN管脚输入控制逻辑;判断SSTRB是否为高电平,否则继续判断;是,则从DOUT读取数据12位数据;片选信号CS置高,结束。此外,A/D模块的控制可参见图9、图10、图11,分别为控制流程图一、控制流程图二、控制流程图三。图9的具体过程为:开始;复位信号有效rst=1'b0;是,则通道控制字清零icontrol<=7'b0;输入存入通道控制字icontrol<={2'b0,channel,4'b0110},再返回至开始步骤;当复位信号有效rst=1'b0为否时,则直接进入输入存入通道控制字的步骤。图10的具体过程为:开始;复位信号有效rst=1'b0;是,则复位CS<=1'b1;statel<=4'b0;countl<=4'b0;countl<=0;开始转换信号有效,convert=1'b0,否则返回开始步骤;是,则判断状态机statel=3'd0;片选信号有效CS<=1'b0;control<=icontrol;改变状态statel<=3'd1,结束。当判断状态机statel=3'd0为否时,则判断状态机statel=3'd1;是则输出控制字DIN<=control[7],计数变量countl<=countl+1'b1;countl<={control[6:0],1'b0};判断控制字计数,countl<=4'd7,否则结束;是则改变状态statel<=3'd2;计数变量清零countl<=1'b0,结束;当判断状态机statel=3'd1为否时;判断状态机statel=3'd2,否则结束;是,判断是否接收数据完成,complete=1'b1;改变状态statel<=3'b0,结束。图11的具体过程为:开始,复位信号有效rst=1'b0;是,则state2<=3'b0;count2<=0;complete<=1'b0;doutput<=12'b0;判断状态机state2=3'd0;是则判断接收SSTRB=3'd0,否则结束;是则改变状态state2<=3'b1;清除完成标志complete<=1'b0,结束;当判断状态机state2=3'd0为否时,则判断状态机state2=3'd1;是则存储数据doutput<={doutput[10:0],DOUT};计数count2<=count2+1'b1;判断数据计数count2=4'd11,否则结束;是则计数清零count2<=1'b0;改变状态state2<=3'b2,结束;当判断状态机state2=3'd1为否时,则判断状态机state2=3'd2,否则结束;是则有效传输完成complete<=1'b1;改变状态state2<=3'b0,结束。S501:采集卡下位机软件设计。下位机软件流程见图12,具体过程为:开始,接收上位机DMA传输命令;判断命令帧1最高两位是否为AD命令;当命令帧1最高两位是AD命令时,执行AD控制模块时序;通过DMA向上位机发送数据。当命令帧1最高两位不是AD命令时,判断命令帧1最高两位是否为DA命令,否则结束;是,则执行DA控制模块时序,结束。其次,上位机、下位机的通讯协议包括:(1)通过DMA传输命令,选择A/D模块运行通道,并回读转换值。(2)通过DMA传输命令,选择D/A模块运行通道,设置电压输出值。(3)通过DMA传输命令,回读S2输入数字量。具体可参见表6至表12。表6DMA命令帧协议(1)表7DMA命令帧协议(2)表8命令协议(1)功能位说明功能第8位第7位A/D01D/A10数据量采集11不使用00表9通道选择位说明表10数字量采集回读表11A/D采集回读格式(1)表12A/D采集回读格式(2)S601:DMA通讯模块验证。S6011:DMA通讯模块实验步骤。不插短路块J6,将板卡插入PCI插槽。利用上位机软件通过DMA模式向板卡发送数据“01、02”,通过板卡将发送数据回读至上位机软件。S6012:D/A模块验证实验步骤。不插短路块J6,将板卡插入PCI插槽。通过上位机,软件发送命令“88、00”,观察DB25接头芯15,输出电压是否为1.65V。通过上位机软件发送命令“98、00”,观察DB25接头芯17,输出电压是否为1.65V。通过上位机软件发送命令“A8、00”,观察DB25接头芯25,输出电压是否为1.65V。通过上位机软件发送命令“B8、00”,观察DB25接头芯13,输出电压是否为1.65V。S6013:A/D模块验证实验步骤。不插短路块J6,将板卡插入PCI插槽。连接短路块J11,通过上位机软件发送命令“40、00”,观察回读值是否为“07FF”。连接短路块J12,通过上位机软件发送命令“50、00”,观察回读值是否为“0555”。连接短路块J13,通过上位机软件发送命令“60、00”,观察回读值是否为“0400”。连接短路块J14,通过上位机软件发送命令“70、00”,观察回读值是否为“0333”。综上所述,本实用新型以PCI9054为PCI接口协议芯片,以CycloneIII系列FPGA(EP3C5E144C8)为本地总线控制器,采用“FPGA+PCI9054”架构,设计一种基于PCI接口的具有4路AI模拟量输入、4路AO模拟量输出IO功能板卡,给出该模块的硬件设计与软件开发(包括基于VC++的上位机测试软件与基于Verilog的板卡代码),并对其功能进行试验验证。本实用新型测试的稳定性、可靠性、兼容性更强,具备更高的可升级性,能够有效地处理来自于大气数据的复杂信号,并通过256MB/s的高速PCI总线桥接到主控设备,该板卡可批量应用于航空测试设备制作,实现AIAO模拟量数据采集,可有效降低设备制作成本,效益可观。以上显示和描述了本实用新型的基本原理、主要特征和本实用新型的优点。本行业的技术人员应该了解,本实用新型不受上述实施例的限制,上述实施例和说明书中描述的只是本实用新型的原理,在不脱离本实用新型精神和范围的前提下,本实用新型还会有各种变化和改进,这些变化和改进都落入要求保护的本实用新型内。本实用新型要求保护范围由所附的权利要求书及其等效物界定。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1