新闻中心

EEPW首页>测试测量>设计应用> 基于CY7CO9449的高速PCI数据采集卡设计

基于CY7CO9449的高速PCI数据采集卡设计

作者: 时间:2010-09-01 来源:网络 收藏

现在就状态机的工作过程作简要说明:
当Reset由0转变到l时就启动一次数据传输。状态机首先进入T1写地址状态。
状态机在T1写地址状态将本次数据传输存放在C0内SRAM的起始地址及有关控制信号送到局部总线上。T1状态之后无条件进入T2等待读FIFO数据状态。
在T2等待读数据状态,如果FifoEmpty=1,将继续等待,如果FifoEmpty=0,将进入T3读FIFO状态。
在T3读FIFO数据状态,状态机发出有效的读FIFO控制信号,如果从FIFO读取的数据是最后一个将要写入C09559的数据,那么就进入状态T5,否则进入状态T4。
T4等待写并可能读状态是很关键也很复杂的状态,在这个状态下影响状态机行为的信号比较多。在图3中,确定T4状态的下一个状态的条件被标上序号,序号小的条件是被优先考虑的条件。满足条件(1),RdyOut=0,表示C0没有准备好数据传输,所以要仍在状态T4继续等待。不满足条件(1),满足条件(2),FifoEmptV=1是表示CY7C0已经准备好数据传输,同时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信号。从这些信号的名称就可以知道它们的作用,这里不再赘述。
局部总线控制逻辑通过使用同步数据传输控制方式,支持突发传输,加快了数据传输速度。

本文引用地址://m.amcfsurvey.com/article/195310.htm

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,设备描述符结构体各个域的设置如下:
5d.jpg5d.jpg

将UserSIpaceAddress传递给应用程序,则应用程序就可以访问存放数据的内存空间了。
FPGA在每传送给CY7C09449一块2k双字的数据后就通过CY7C09449的引脚IRQ_IN向主机发送中断请求。在主机的中断服务程序中用m_Me-morjPhyPhysicalAddress设置CY7C09449的DMA3E机物理基地址寄存器,然后设置DMA局部基地址寄存器、DMA长度寄存器来配置数据传输的源地址地址和数据长度,然后再写CY7C09449的DMA控制寄存器来启动DMA传输。在所有数据块传输完毕,主机中断服务程序发送给应用程序一个消息,这时应用程序就可以通过UserSpaceAddress访问接收到的数据了。

5 结论
在高速数据采集卡的设计中FPGA对局部总线的控制逻辑由于采用了同步数据传输控制方式使得局部总线的最高传输速度可达200Mb/s。在WindowsXP下的驱动程序设计使用了DMA数据传输方式,提高了数据存储速度。高速数据采集卡可以达到80Mb/s的数据采集速度,设备
运行稳定,达到了设计要求。


上一页 1 2 3 下一页

关键词:94497COCY7PCI

评论


相关推荐

技术专区

关闭