kaiyun官方注册
您所在的位置: 首页> 模拟设计> 业界动态> X-Scan X射线线阵列探测器并行帧捕获卡

X-Scan X射线线阵列探测器并行帧捕获卡

2008-10-30
作者:张增辉 沈 激 陈子瑜

摘 要:介绍了一个基于PCI总线的RS422并行帧捕获卡。该卡用于X-Scan X射线线阵" title="线阵">线阵列探测器高速14bit图像数据的获取。简要叙述了X射线线阵列探测器的输出以及基于PCI总线的数据获取理论和方法,并介绍了所采用芯片的性能及应用、卡的硬件设计思想和结构以及软件设计。
关键词:RS422接口 PCI总线 X射线 线阵列探测器 帧捕获


1 X-ScanX射线线阵列探测器数据端口和帧捕获卡
  X-Scan是芬兰DT公司生产的X射线线阵列探测器,用于安全、工业、医学和食品等领域的无损检测或质量控制中。探测器由探测元件、探测电子学和微控制器组成。探测器数据输出采用RS422端口,为14位数据并行平衡(差分" title="差分">差分)输出[1]。端口信号十分容易理解:行使能信号LEN和同步信号PCLK(PCLK信号频率为2.2MHz)之间的关系如图1所示。


  行使能信号LEN表明自上升沿" title="上升沿">上升沿后,经t2时间探测器发送数据;PCLK信号的上升沿用于计算机接口进行数据读操作。DT公司X-Scan平衡输出定义为一对互为反相的TTL电平信号。
  一行数据定义为一帧,其中包含的数据是大量的,并且需要高速传输,所以计算机接口应该基于PCI总线。为此研制了基于PCI总线的帧捕获(Frame Grabbing )卡,以满足X-Scan应用的需要。
2 计算机接口设计
2.1 PCI总线
  PCI(Peripheral Component Interconnect)总线[2]是ISA/EISA总线之后的一种现今计算机中广泛采用的局部总线,支持外围设备进行突发通讯,32位总线数据传输速率峰值达132MB/s,远远超过ISA/EISA总线5Mb/s的速度,适合X-Scan与计算机高速数据传输的要求。
  与ISA/EISA总线不同,PCI 总线协议及接口逻辑十分复杂,从而使得采用中小型规模器件开发接口电路的方法难以实现。鉴于此, 许多厂家推出了专用的PCI 总线控制芯片, 其中AMCC公司生产的S59XX系列芯片因其功能强大、开发方便而被广泛应用。本方案采用AMCC公司的专用芯片S5933[2]来实现PCI协议的执行。
2.2 卡的组成
  卡由RS-422接口电平转换、高速数据缓存、PCI总线控制器及控制逻辑等功能模块组成。其结构如图2所示。

2.2.1 电平转换
  电平转换的要求是将来自X-Scan RS422输出端口的差分数据和控制信号" title="控制信号">控制信号转换成TTL信号。组成的单元电路采用MAXIM公司的MAX3095 RS422 四接收器, 其电气特性如图3所示。MAX3095具有10Mbit/s的数据传输速率和90ns的传输延迟,满足X-Scan 数据传输的速率要求;还具有200mV的差分接收灵敏度以及15kV的静电保护(ESD-Protected)措施,满足X-Scan数据长线传输的要求。


2.2.2 PCI总线控制器S5933
  S5933[3]是符合PCI 规范2.1版本的32 位控制芯片,它提供三种物理接口:PCI 总线接口、外接(Add-On)总线接口和外接配置存储器(非易失存储器)接口(见图4 ),其中,PCI 总线接口与PCI 总线相连,配置存储器接口与非易失存储器连接(在系统初始化时用来对S5933进行配置),外接(Add-On)总线接口与用户数据设备的连接是卡设计者最需要关注的地方。


  S5933中有两个独立的FIFO(8×32bit),用于PCI到ADD-ON和ADD-ON到PCI两个方向的数据传输,FIFO的空满状态信号及读写控制信号可供外加接口使用。利用FIFO进行数据传输是S5933数据传输方式中主要的一种(其余还有两种方式:MAILBox方式和PASS_THrμ方式)。FIFO方式控制逻辑简单,易于实现,是本卡采用的方式。本卡中,数据传送只有ADD-ON到PCI单一方向,所应用FIFO的状态信号及控制信号只需WRFULL(满/非满)和-(写入)信号。
  S5933 既可以作为 PCI总线的主设备接口,也可作为从设备接口。此卡设计中,S5933 采用主控模式,由它发起DMA操作。
2.2.3 高速数据缓存
  由于S5933中FIFO 深度不足,来自探测器的大量数据直接流入,就会使得FIFO 瞬间写满而S5933仍然不能获得PCI总线控制权以及出现溢出和丢失数据。为此,在S5933 Add-On接口与MAX3095之间插入数据缓存。这里采用了IDT公司生产的IDT72V235高速先进先出存储器(FIFO),100MHz存取速率,18位数据输入和18位数据输出,容量为2048×18 bit。其结构见图5。


  高速流入的数据先在外部FIFO中缓存,内部FIFO非满时再作传送。由于X-Scan是以帧为单位高速传送数据的,而帧与帧之间又有足够的间隙时间,2K容量的外部FIFO足以防止数据的丢失。
  IDT72V235可以单片使用,也可以级联或扩展使用,本卡中IDT72V235是单片使用的。
  数据输入端由写时钟(WCLK)和写使能()控制。当有效且FIFO非满时(满标志为高),数据在写时钟WCLK的上升沿被写入。输出端由读时钟(RCLK)和读使能端()控制,当有效且FIFO非空时(空标志为高),数据在读时钟RCLK的上升沿读入输出寄存器,并在输出使能()为低时输出到端口。读时钟与写时钟可以同步,也可以异步。本卡中时钟异步,读时钟信号由S5933 33MHz的BPCLOCK提供;写时钟信号由RS422端口提供,它们决定了数据写入速率为2.2MHz,读出速率为33MHz。
  复位(为低)时FIFO读取扩展逻辑控制信号。这些信号定义了FIFO的八种工作模式,本卡中它们接地,FIFO定义在非同步IDT标准模式,时序图见图6。其中,读出延迟tA和写入满到出现满标志延迟tWFF都是最大6.5ns。


2.2.4 数据传输控制
  数据控制用于S5933与FIFO,以及FIFO与外部设备之间的传输控制。采用Lattice公司的可编程逻辑芯片ispLSI1016作为逻辑控制器,其性能指标为:最高频率110MHz;10ns传输延迟。ispLSI1016编程后,与S5933及IDT72V235之间的逻辑关系如图7所示。


  使能信号EN有效,而FIFO IDT72V235中有数据(/=1)且S5933 FIFO未满(WRFULL=0)时,IDT72V235将数据驱动到输出寄存器上;在下一个BPCLK周期,将IDT72V235输出寄存器中的数据写入S5933 FIFO。
3 编程与程序设计
  编程与程序设计包括ispLSI1016芯片的编程、S5933寄存器编程以及驱动程序的开发。ispLSI1016芯片的编程是利用ispDesignEXPERT开发系统及VHDL语言实现的,这里不再赘述。
3.1 S5933寄存器编程
  PCI总线规范定义了256字节的配置空间,分为预定义头域和设备依赖区域两部分。
  头域包括设备制造商标识ID、设备ID、版本ID、分类代码三个寄存器(用于识别设备及其功能)、基地址寄存器BADR(用来确定该设备的存储和I/O" title="I/O">I/O空间需求)、中断引脚和中断编号两个寄存器以及延时计数寄存器Min-Gnt和Max-Lat(用来设置DMA)等。
  设备依赖区域包括位于PCI总线一侧和扩充总线接口一侧的两组操作寄存器,用于监测S5933的状态并控制其运行。本卡用到的操作寄存器有: MWTC(主控写计数)、MWAR(主控写地址)、MCSR(主控控制/状态)和INTCSR(中断控制/状态)等寄存器。
  配置空间数据编程在与S5933连接的一片非易失存储器(nvRAM)中进行,系统加电或复位后, S5933将从nvRAM下载销售商标识符VID和设备标识符DID,如果合法,则下载基地址单元BADR的内容,其值必须是C1H/C0H/C2H/FFH/E8H/10H。如果都正确,便依次读入配置数据,决定I/O或存储器空间的大小。然后将每个区域的起始地址写回到BADR中,区域的起始地址必须是区域大小的倍数。每一个BADR都是物理地址(PCI设备自己不能单独确定存储器或I/O的地址,所有的地址影射都必须由系统来完成,而不是应用程序)。
3.2 驱动程序设计
  Windows系统下对设备的访问需要通过设备驱动程序进行,所以需要开发卡的驱动程序。
  采用Jungo公司提供的WinDriver设备驱动程序开发工具包[4]来开发设备驱动程序。开发时可以有两种方法可供选择:一是利用 WinDriver Winzard;二是利用WinDriver提供的用户态函数库,后者要求程序员熟悉WinDriver的用户态函数以及PCI设备的控制过程,相对的难度较大。但这两种方法产生的驱动程序结构基本上没有什么区别,大体结构如下:
  打开WinDriver设备;查找所要访问的PCI设备;枚举该设备的资源(内存、I/O、中断等);锁定该设备的资源,避免其它的程序调用;访问板卡上的资源;解锁资源;关闭WinDriver设备。
  本卡采用第一种方法,步骤如下:
  (1)安装好PCI数据采集卡;
  (2)利用WinDriver Winzard检测采集卡;
  (3)测试硬件,生成驱动程序代码;
  (4)修改代码,加入定制的功能;
  (5)在用户态执行与调试代码;
  (6)将性能苛刻部分插入到核心态。
  驱动程序流程图如图8所示。生成的驱动程序可获得令人满意的探测数据。


  此卡为X-Scan X射线线阵列探测器数据获取而研制。探测器通过RS-422数据接口给捕获卡提供14位数字图像数据,数据是逐帧连续发出的,帧信号有效后,以2.2MHz时钟并行连续输出768个14 Bits的数据(一帧数据)。实际应用表明,该卡满足探测器逐帧、连续、高速捕获数据的需要。
参考文献
1 User’s Manual of X-ray Linear Array Detector.Detection Technology Inc. Finland,2002
2 PCI Local Bus Specification Revision 2.0.PCI SIG,1993
3 AMCC PCI Products Data Book.San Diego:Applied Micro Circuits Corporation,1998
4 KernelDriver v6.11 User’s Guide.Jungo Ltd,1997~2003

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306116;邮箱:aet@chinaaet.com。
Baidu
map