• 孟摘取(Dalsa)


    第二章

    2.2.6  Firmware功能及特性

        Firmware是配置FPGA的固件,要使整个板卡工作正常必须首先向FPGA下载Firmware文件。Firmware文件分为两种类型,一种为Anaconda-LVDS卡的驱动程序,在安装Anaconda-LVDS卡的驱动程序时,会由系统自动下载至FPGA。另一种是用户生成的图像处理模块,即用户Firmware文件。文中涉及的Firmware文件均指用户Firmware文件。在项目中使用XilinxISE8.1i开发环境,用VHDL语言编写代码,经综合、实现,最终生成下载至FPGA的Firmware文件。在Anaconda系统中支持格式为*.cbn、*.cbf和*.bit三种格式的用户Firmware文件,在设计中我们主要使用*.bit格式文件来进行下载。

    2.2.6.1 Firmware功能

        根据本系统的要求,所设计的Firmware包括如下功能:

    (1)将数据从FPGA外部读入,并进行存储或处理;

    (2)将数据从FPGA外部读入,进行查表处理;

    (3)将查表处理的结果进行暂时存储;

    (4)对查表结果进行处理,产生剔除信号;

    (5)将剔除信号送出FPGA。

    2.2.6.2 FPGA工作状态

        FPGA工作状态由Firmware决定,根据本系统设计的Firmware决定FPGA工作状态主要为:

    (1)配置等待:这时FPGA没有功能,等待从上位计算机下载Firmware;

    (2)配置状态:从上位计算机下载Firmware的过程中;

    (3)启动状态:Firmware已经下载完毕,并已经启动,等待工作命令;

    (4)传送数据:将在上位机中的学习数据传送到存储器中;

    (5)查表处理:将像素数据读入,并进行查表处理,产生剔除信号,将剔除信号送出。

    2.3.1  软件开发环境的建立

    Dalsa公司随Anaconda卡配送SaperaLT类库安装光盘[17]和Anaconda-LVDS安装光盘。运行光盘中的安装程序后,会在C:/WINDOWS/System32目录下自动安装动态链接库文件,例如SapClassBasic52.dll、SapClassBasic52D.dll、SapClassGUI52.dll、SapClassGUI52D.dll、SapClassGUI52.NET.dll、SapClassGUI52D.NET.dll、SapClassBasic52_b.dll等。同时,用户可以在C:/Coreco/Sapera目录和C:/ Anaconda_LVDS目录下找到软件程序开发所需的类库文件和头文件。如果没有这些文件,整个软件系统的编译和运行根本无法进行。在Visual C++工程建立后,需要将头文件、类库包含路径添加进工程,完成软件开发环境的建立。

    系统设计中主要使用到的头文件为SapClassBasic.h,类库文件为SapClassBasic.lib,SapClassBasicD.lib。在使用基础类进行程序编写时,需要注意将这些头文件、类库包含路径添加进工程,同时正确设置DLL(动态链接库)文件的位置,保证基础类正常使用。

    2.3.3.1 SapRTPro类

    SapRTPro类是SapXferNode的子类,在使用SapRTPro类时应当注意SapRTPro对象的操作方法,SapRTPro对象包含在SapRTProDesign类中。SapRTPro类实现的主要功能包括:

    (1)SapRTPro类可操作IPU-FPGA 和IPU-PowerPC。

    (2)可下载firmware至IPU。

    (3)完成读、写IPU-FPGA寄存器。

    (函数)

    2.3.3.2 SapRTProDesign类

        SapRTProDesign类是SapXferMultiNode的子类,其主要功能包括:

    (1)管理IPU输入、输出数据的传输路径。

    (2)创建在板Buffers资源并完成其传输路径设置。

    (3)SapRTProDesign类的对象通过调用库GetRTPro()获得SapRTPro的对象, SapRTPro类的对象用来访问IPU。

    4)用户必须用SapRTProDesign类定义自己的Design 类,来控制IPU的处理过程。

    (函数)

    对于FPGA来说,在使用SapRTProDesign类创建用户Design类时,应当使用下述语句来进行,见程序清单2.1.

    2.3.4.1 SapView类

    SapView类是基础类的直接派生类[19],它可以将SapBuffer类的对象资源显示在上位机窗口中。在本系统设计中,只是使用SapView类显示完成相机图像的显示。

    2.3.4.2 SapAcquisition类

    SapAcquisition类是SapXferNode的子类[19],其功能是从相机获取图像数据,同时操作图像采集资源。

    在本的系统设计中,使用SapAcquisition类的对象操作其成员函数来获取图像数据。图像数据传送给上位机Buffer资源,用于上位机显示相机原始图像;也传送给FPGA用于图像处理。

     

    2.3.4.3 SapBuffer类

    SapBuffer类是SapXferNode的子类[19],其主要负责操作在板Buffer资源。在实际应用中可以使用SapView类来显示Buffer对象资源,也可以使用SapProcessing类来处理Buffer对象资源。

    SapBuffer类是系统设计中的关键类,它控制的Buffer资源是Anaconda卡的一个临时数据存储区域,几乎所有的数据都要经过在板Buffer,之后才到达上位机或者FPGA。

    2.3.4.4 SapTransfer类

    SapTransfer类主要负责管理传输处理,即将数据从源节点传送到目的节点[19]。所有SapXferNode类的子类都认为是传输节点,如SapAcquisition, SapBuffer, SapBufferRemote, SapBufferRoi, SapBufferWithTrash, SapCab,SapDsp以及SapPixPro等类。

    系统设计中最经常使用到的SapTransfer类对象是m_Xfer,几乎所有的数据传输都由m_Xfer对象调用函数来完成,如图像的获取,上位机向FPGA传送文件等工作。

    第三章

    3.1  硬件设备的软件注册

    以Anaconda-LVDS卡为硬件基础的系统,要完成实时图像的采集和处理,需首先要使用软件注册相机和视频采集卡。上述两个设备缺一不可,同时又必须相互兼容。

    相机的注册文件由Sapera CanExpert工具产生。用户在实验中根据不同的测试目的和要采集的图像情况,选择不同的相机类型、像素深度、图像宽度、图像高度、线扫描同步源、扫描频率以及生成图像数据格式等参数[20],最后生成*.ccf文件。在系统软件程序启动时,将*.ccf文件添加到注册对话框内,完成相继的注册[17]

    而图像采集处理卡的注册则完全依赖采集处理卡是否存在,只要采集处理卡在本地计算机上启动,注册软件则会自动检测到卡的类型。同时会在颜色格式选择框里显示出图像采集处理卡所支持的图像采集模式,一般分为真彩色和黑白。

    在软件程序的实现上,使用CAcqConfigDlg类的对象调用库函数GetAcquisition()来完成对注册对话框的调用[16],注册完成后保存当前状态。系统会自动识别相机注册文件和图像采集采集卡的有效性。

    一般来说寄存器分为控制寄存器和状态寄存器,FPGA设计中把低地址的寄存器定义为控制寄存器,把高地址的寄存器定义为状态寄存器,且状态寄存器和控制寄存器都是可读、可写的。在所定义的20个寄存器中,由于设计中模块需要的控制信号比较少,所以只把地址偏移量为0x00000000寄存器用作控制寄存器外,剩于的19个寄存器全部用作状态寄存器。状态寄存器的内容反映FPGA的状态和图像处理的结果,状态寄存器的值通过上位机的读寄存器操作返回到上位机。上位机的读操作返回的是FPGA中相应地址偏移量的只读寄存器中的值,所以FPGA的状态标识和图像处理结果放在状态寄存器的只读寄存器中。状态寄存器的只写寄存器另用作它用,具体的位设置,将在下面介绍。

     


  • 相关阅读:
    [原]实例-简单设计&精简代码&复用代码
    [原创]实例-少用单例及降低耦合
    c#实现数据集合转换为csv文本
    [转]SqlServer索引的原理与应用
    [转]AngularJS:何时应该使用Directive、Controller、Service?
    [转]AngularJS移动开发中的坑汇总
    [转]Hibernate对象的三种状态
    [转]AngularJS Cookies Example
    [转]LESS CSS 框架简介
    [转]为ReportViewer导出的PDF文档加上水印
  • 原文地址:https://www.cnblogs.com/pamxy/p/2991409.html
Copyright © 2020-2023  润新知