- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一种高速CCD数据采集系统的设计
一种高速CCD 数据采集系统的设计 键词: CCD , 数据采集 1 引 言 随着数字技术的进步与发展,对于数据传输的高速率性和时实性提出了很高的要求,IEEE1394 协议的 出现,很好地解决了该问题。IEEE1394 又名FireWire,是一种高速串行总线,已经发展了IEEE1394b 提供最高达3.2 Gb /s 的速率,并将传输距离扩展到100 m。由此可以断定1394 必然成为未来的 “标 准”串行总线。 IEEE1394 支持2 类事务:等时传输和异步传输。 异步传输(asynchronous transactions)保证数据传输的正确性,但是不保证数据传输的时实性,主要 用来传输控制信息和一些对数据的正确性要求很高的数据。一个异步传输由4 部分组成:请求数据包、 请求确认数据包、响应数据包和响应确认数据包。确认数据包是和请求数据包、响应数据包同步的, 当请求数据包和响应数据包发送之后立即就是确认数据包。 异步传输不占据固定的带宽,但能保证节点获得时间上的公平访问,每一个执行异步传输的节点都能 在单一的间隔内准确地访问总线。 等时传输(isochronous transactions)对于数据传输的时实性要求很高,而对于数据传输的正确性要 求相对较低。等时传输通过一个与等时传输关联的信道号码确定设备,其以固定的时间间隔(125μ s) 发送数据,所以必须分配固定的总线带宽,有着高于异步传输的优先级,等时传输可用的最大带宽是 整个带宽的80%。 根据协议的结构可以将1394 协议分成事务层、链路层、物理层、总线管理层。链路层和物理层目前已 经由硬件芯片实现。本设计主要针对芯片的应用,因此对协议本身不做太多介绍和研究。 2 采集系统硬件设计 根据硬件的特点,设计了基于T1 芯片组和FPGA 的CCD 相机采集系统。系统结构如图1所示。 FPGA 选用Altera 公司的Cyclone 系列器件EP1C6T144C8,可以为CCD 相机提供工作所需的驱动时序, 同时接收经过A /D 转换的CCD 输出图像数据。 这里主要介绍1394接口的数据采集,FPGA 内部的CCD 驱动逻辑暂时不介绍。本设计用于大量的数据 的传输,因此使用TSB12LV32 的DM 端口来输入和输出数据。FPGA 与TSB12LV32 的DM 端口的逻辑电路 如图2 所示。 FPGA 内部采用异步FIFO 解决CCD 输出数据频率和TSB12LV32 采集频率不匹配的问题,写时钟由CCD 输出位同步信号提供,写请求信号由FIFO 的满状态共同控制;读时钟由TSB12LV32 的DMCLK 提供,读 请求信号由DMRW。当TSB12LV32 开始传输数据时,在FIFO 的满状态和TSB12LV32 的DMDONE 引脚控制 下,由CCD 输出位同步信号将数据写入FIFO;在DMWR 的控制下,由DMCLK 将FIFO 中的数据由DM0~ DM7 引脚读入TSB12LV32,连接如图2 所示。 2.1 MCU 软件设计 软件的设计分为2 部分:一个是在PC 机上开发设备板的驱动程序;另一个是使用设备板上面使用MCU 控制和配置PDI1394L40 的软件流程。单片的主要负责初始化各个CRF,设置TSB12LV32 的工作模式, 配置ROM 发送ROM,分析包头,构造包头和数据包。配置ROM 是设计的重点也是难点,将设备插入PC 的1394 端口,通过配置ROM,使得PC 机识得设备。配置ROM 的流程如图3 所示。 2.2 异步操作 异步发送 “自动插入header 的异步包发送”为例,介绍如何进行异步发送操作,其流程图如图4 所 示。 2.3 等时操作 等时接收的工作流程图图5 所示。 3 驱动开发 采用Numega 公司的DriverWorks 工具开发驱动,该软件对DDK 中的函数进行很好的封装。使用 DriverWizard 可以直接生成驱动程序源代码的框架,只需对其做修改即可。 由于Windows 已经提供了总线驱动程序和端口驱动程序,因此只需要开发功能驱动程序即可。 DriverWorks 将DDK 下的1394 请求包(IRB)封装成KIrb 类,并将总线驱动程序的功能封装在 K1394LowerDevice 类中,对于等时传输和异步传输也有相应的类对其相应的DDK 进行封装。 1394WDM 驱动程序使用IRB(请求包)和总线进行通信,IRB 被发送到总线驱动,总线驱动将IRB 在总线 上执行。DriverWorks 使用KIrb 类迅速创建一个IRB,同时使用K1394LowerDevic
文档评论(0)