做 PCI 卡无非是这三步:硬件原理图及 PCB 布板、写驱动程序、写上层应用程序
第一步应该算是比较简单。首先是 PCI 协议处理芯片的选型。现在最常用的有两款:
即 PLX 公司的 PCI9052 和 PCI9054。其区别就是 9052 不支持 DMA 传输,而 9054 支持
DMA 传输。如果你的应用对带宽要求较高的话,建议采用 9054,这样比较有把握。如果带
宽要求较低而又想缩减成本的话,9052 是个不错的选择。这两种芯片的可参考的设计资料
也比较多。我们的产品对带宽要求其实并不算高,仅为 10MB/s 左右,但考虑到 PCI 传输
的效率,谨慎起见,我还是选了 9054,这样带宽会有比较多的富裕,就算设计当中驱动的
效率打点折扣,也还是够用的。这里明确一下带宽的问题,如果 PCI 总线的速率是 33MHz
的话,那么它的理论传输带宽就是 33Mx32b=1.056Gb/s,如果换算成字节的话,那就是
1.056Gb/8=132MB/s。请注意这是理论带宽,实际设计不会达到的,因为一方面是硬件设
计的原因,另一方面是驱动设计的效率会多少打点折扣。所以如果能用 9054 的 DMA 方式
达到接近 100MB/s 的带宽的话,已经是相当不错了。在据我所知的实际应用中,通常却并
不需要 PCI 卡达到如此高的带宽,十几 M 或者几十 M 就足够用了,所以选用 9054 还是有
较多富余的,设计风险比较小。
芯片选定后,就要开始原理图的设计了,其实 9054 这端的原理图做起来比较简单,无
非是一些引脚上拉下拉的问题。其中要注意的地方主要有这几个:
1. TEST 引脚要下拉,这是正常操作模式。如果上拉则是进入芯片测试模式。
2. PCI 金手指处的 PRSNT1#和 PRSNT2#引脚一定至少要有一个下拉,或者两个都下拉
(具体可参照 PCI 协议 V2.3),否则找不到卡。
3. 模式选择引脚 MODE0 和 MODE1 如果都下拉,是 C 模式,即 LOCAL 端的地址线和
数据线是分开的;如果 MODE0 上拉,MODE1 下拉,则是 J 模式,即 LOCAL 端的地址线
和数据线复用。通常采用的是 C 模式,可以降低开发难度。
4. 这是很关键的一点,即 EEPROM 的 EEDI/EEDO 引脚的配置。有这样三种情况:A 当
不安装 EEPROM 时,该引脚一定要下拉,用 1k 的下拉电阻即可。此时启动后 9054 会按
默认的值进行配置。B 当安装空白的 EEPROM 时,该引脚需要上拉。C 当安装烧录好的
EEPROM 时,该引脚需要上拉。这里解释一下:卡设计好后,如果没有配置好 EEPROM
的值,也可以测试卡的硬件,按 A 或 B 步骤,把卡插在 PC 的 PCI 插槽上,如果硬件设计
没有问题,是可以找到卡的。所以设计的时候应将此引脚设计成上下拉,根据需要装上拉或
下拉电阻。这可以避免只能等配置好 EEPROM 的值后才能测试卡的硬件设计正确与否。
5. EEPROM 的设计问题,9054 是应该搭配 93C56 的,即 2k 容量的 EEPROM,9052