百度空间 | 百度首页 
               
 
查看文章
 
教你设计PCI总线的高速数据采集卡(基于PCI9054)
2007-03-13 21:02

        眼下有不少场合需要用到PCI总线的数据采集卡,下面我就来谈一下设计PCI数采卡的原理及要点。
首先我要以我的实际经验,纠正存在于很多人心里的几个误区:


1. 设计PCI采集卡要通读PCI协议。
相信有很多初学者都在这个地方被吓住了,几百页的英文要通读并理解谈何容易!其实PCI协议处理的这部分功能已经被PCI接口芯片完成了,如PLX公司的9054、9056和9052等等,它封装了PCI协议的细节,我们只需要控制这颗接口芯片local端的几个控制线就可以完成PCI总线的数据传输。PCI协议也有它的用处,我们只需要在某些需要注意的地方查阅一下相关章节即可,比如PRSNT1#和PRSNT2#引脚至少要有一个下拉,才能识别到卡,这就是PCI协议中的规定。


2. PCI卡布线很复杂,一不小心就可能不成功。
其实对于32位33MHz的PCI总线来说,布线相对比较简单,只要稍加注意就不会出问题。比如:PCI总线的时钟线要做成2500(+/-100)mil,这个是要注意的一点,一般PCI卡上的蛇行弯曲走线就是这条线,因为走直线距离一般都达不到此长度。其他要求,比如地址和数据线要在1500mil以内,其实你超过一些也没什么问题,不要超太多就好了。


3. PCI卡的驱动程序编写很难。
其实无论是软件还是硬件设计,都有一些相对成熟的资料可以参考。对驱动程序来说也是这样,对实际项目的开发没有几个是从头到尾自己在编代码,都可以在网上找到一些成熟的代码,然后自己修改一下即可,况且PCI卡的驱动程序又相对比较成熟,可参考的资料也较多。所以你要从网上找代码,向PCI接口芯片的供应商要代码,等收集到足够多的代码,再配以适当的教材(比如对于windows2000/XP系统下的WDM驱动程序,可以参考武安河老师的教材就足够),就可以进行你自己的驱动设计了。

下面我再针对具体应用谈谈PCI采集卡的设计:


一般数采卡的情况是将A/D转换后的数据通过PCI总线上传到PCI机,然后利用上层的软件进行分析处理。


这里通常会将一片FPGA与PCI接口芯片相连,对于很多应用来说,PCI总线端向主机上传的速度远远大于A/D通过FPGA处理后的数据向9054传送的速度。比如如果采用PCI9054的DMA方式,向主机上传的带宽很轻松可以达到100MB/s。这是因为比较常用的A/D转换器的位数为8bit,10bit,12bit等,而PCI总线的宽度为32bit。另一方面PCI总线的频率为33MHz,一般应用的A/D也一般远小于此值,这样算下来,PCI总线的带宽自然要富余很多,设计起来还是比较轻松的。


对于8位的A/D来说,如果要完全利用PCI总线的32位宽度的话,需要在FPGA内做数据宽度转换的模块。当然对带宽要求比较低的场合,也可以直接把A/D的八位数据线直接连到PCI的32位数据线的低8位,但这样做是不值得推荐的,对PCI资源也是极大的浪费,况且该宽度转换模块并不复杂,只有几个锁存器就可以解决,也可以用FIFO来实现。


另外,为了将数据通过PCI总线上传,FPGA内要做PCI接口芯片的 local端的控制逻辑模块。所谓local端,就是指PCI9054开放给设计者的端口,主要包括这几条控制信号线:ADS#,blast#, lwr, lhold, lholda, ready, reset#。 相对于local端的另一端是PCI总线端,也就是连到PCI卡金手指的那些信号,这是标准的PCI总线。也就是说,我们只需要通过控制local端的区区几个控制信号,就可以达到控制复杂的PCI总线的目的,而这个从local端到PCI端的映射工作,就是由9054来完成的。


当然,要使9054工作起来,要编写它的驱动程序,无非就是打开设备,初始化设备,设备读写,中断服务程序,关闭设备,这几步,可以先找些现成的驱动程序来看,把这几步的代码实现理清楚,然后把每一步搞懂就可以了。其实主要操作也就是读写9054的各个寄存器,这些可以参照芯片的datasheet来读,上面有寄存器的详细描述。我在这里主要说明一种数采卡的设计原理,以后有时间会继续探讨驱动程序编写的一些问题。


类别:pci卡设计 | 添加到搜藏 | 浏览() | 评论 (8)
 
最近读者:
 
网友评论:
1
2007-12-10 11:03 | 回复
很好,向你学习。可以加一下msn不?我的msn:hnfhc@hotmail.com
 
2
2008-04-13 14:39 | 回复
写的很好,学习啦!
 
3
2008-04-17 18:13 | 回复
学习 学习!
 
4
2008-07-14 17:19 | 回复
我们公司在找人设计PCI卡,有没有兴趣撒 我的QQ:51314279
 
5
2009-02-05 17:36 | 回复
现在正在做一个高速采集卡的方案,不知道兄弟可否指导一下。谢谢 qq:8181458
 
6
2009-03-13 22:07 | 回复
加为好友 好好交流
 
7
2009-04-10 16:26 | 回复
"其他要求,比如地址和数据线要在1500mil以内,其实你超过一些也没什么问题,不要超太多就好了。" 这边说的数据和地址线,是指的连接PCI总线端的,还是连接本地端的?
 
8
2009-04-12 19:14 | 回复
能不能说一下pci-e的呢??
正在学习pci-e之中
 
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu