新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 采用DAC芯片AD9248和CY7C09449的PCI高速数据采集方案

采用DAC芯片AD9248和CY7C09449的PCI高速数据采集方案

作者:时间:2012-07-02来源:网络收藏

在论述状态机的工作过程之前,先就影响状态机状态转换的一些信号作说明。

本文引用地址:http://www.eepw.com.cn/article/148813.htm

  Reset信号就是的引脚RSOUTD输出的信号,它由低到高的转变将启动FPGA进行一次

  FifoEmpty信号是由FIFO模块提供的,用来指示FIFO是否为空,它为1时表示FIFO是空的,没有数据要传输,否则表示FIFO内有数据等待传输。

  RdyOut信号是的引脚RDY OUT提供的信号,它用来指示的局部总线是否准备好数据传输。当RdyOut为高电平,表示CY7C09449的局部总线已经准备好数据传输,反之表示CY7C09449的局部总线未准备好数据传输。

  Last信号是用来指示将要写的数据是否为本次突发传输要写的最后一个数据。这个信号由局部总线控制模块内部产生。局部总线控制模块内部有一个计数器,当准备一次突发传输的时候,就将要传送的数据长度放入这个计数器内,每传送一个双字数据计数器的值就减去1,当且仅当计数器的值等于l的时候 Last就为高电平。

  现在就状态机的工作过程作简要说明:

  当Reset由0转变到l时就启动一次数据传输。状态机首先进入T1写地址状态。

  状态机在T1写地址状态将本次数据传输存放在CY7C09449内SRAM的起始地址及有关控制信号送到局部总线上。T1状态之后无条件进入T2等待读FIFO数据状态。

  在T2等待读数据状态,如果FifoEmpty=1,将继续等待,如果FifoEmpty=0,将进入T3读FIFO状态。

  在T3读FIFO数据状态,状态机发出有效的读FIFO控制信号,如果从FIFO读取的数据是最后一个将要写入CY7C09559的数据,那么就进入状态T5,否则进入状态T4。

  T4等待写并可能读状态是很关键也很复杂的状态,在这个状态下影响状态机行为的信号比较多。在图3中,确定T4状态的下一个状态的条件被标上序号,序号小的条件是被优先考虑的条件。满足条件(1),RdyOut=0,表示CY7C09449没有准备好数据传输,所以要仍在状态T4继续等待。不满足条件(1),满足条件(2),FifoEmptV=1是表示CY7C09449已经准备好数据传输,同时FIFO是空的,所以下一个状态要进入T2等待读FIFO数据状态。不满足条件(1)、(2),满足条件(3)表示CY7C09449已经准备好数据传输,同时FIFO非空,同时将要传输的数据是本次传输的最后一个数据,所以要下一个状态要进入状态T5等待写最后一个数据。满足条件 (4),也就是不满足条件(1)、(2)、(3),表示本次往CY7-C09449写了一个数据、又从FIFO读了一个数据且不是最后一个要写的数据,所以下一个状态仍旧是T4。

  在T5等待写最后一个数据状态,当RdyOut=0表不CY7C09449没有准备好数据传输,所以要继续等待。否则表示最后一个数据已经可以写入CY7C09449,所以下一个状态要进入T6空闲态。

  在T6空闲状态如果Reset=1就仍旧在空闲状态,否则进入T0复位状态。

  状态机在每种状态下要发出各种控制信号。有控制FIFO的Fif0Read信号,控制CY7C09449局部总线的Select、Strobe、Write和Blast信号。从这些信号的名称就可以知道它们的作用,这里不再赘述。

  局部总线控制逻辑通过使用同步数据传输控制方式,支持突发传输,加快了数据传输速度。

  4 驱动程序设计

  PC使用的操作系统是WindowsXP,软件设计开发环境使用的工具包括WindowsXP DDK、Driver Studio2.7和VC++6.0,以下着重讨论驱动程序设计。

  为了加快数据传输速度,驱动程序使用DMA的方式把CY7C09449共享存储区内的数据读取到主机的存储器内。

  使用DMA数据传输方式,要申请用于存放数据的物理地址连续的内存空间,然后要获取内存空间的物理地址和用户空间地址。

  首先在头文件中创建如下对象:

  KDmaAdapter m_Dma;

  KCommonDmaBuffer m_Buffer;

  然后在MyDriveDevice∷OnStartDevice(Klrp I)函数创建设备描述符结构体m_MiydeviceDescript,设备描述符结构体各个域的设置如下:



评论


相关推荐

技术专区

关闭