程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> vc教程 >> pci卡設計心得

pci卡設計心得

編輯:vc教程

  其實從開始我對pci卡是一竅不通的,硬件還好說,軟件驅動程序更是一頭霧水,由於我的pci卡是要在windows98操作系統下應用的,所以必須編寫pci卡的驅動程序,支持windows98下pnp硬件的驅動程序一般可以編程vxd。如果想為了以後的2k平台兼容就最好編wdm,因為windows2k不支持vxd,而且以後的發展wdm肯定要代替vxd了。不過由於我找到的資料基本上都是介紹vxd的,感覺vxd的技術好像更成熟一點,編的人更多一點,所以偷了一下懶(慚愧),就沒有去研究wdm,就選擇了vxd。

  我的pci卡其實很簡單,僅僅在本地端接了一個遙測信號的處理系統。

  先說說硬件吧,其實按照正常的pci卡開發過程,仔細閱讀pci規范是很重要的,但是由於時間比較短,我也沒有很大的耐性看那些破規范,也就稍稍了解了一下。現在市場上有許多的專用的pci規范接口芯片,這些芯片提供的pci接口完全符合規范,具體符合的規范版本可以參看具體的芯片所以即使開發者不是很了解規范的具體細則,也可成功的設計pci卡。也就是可以達到傻瓜及設計。在連線上只要將對應的引腳連在總線上就可以了,在連線時要注意pci規范中提到了信號用的反射波信號,所以驅動的信號只用了要求電壓的一半,另一半靠反射來提升。所以對信號線的長度有要求:64位卡的32位信號具備的最大連線長度是1500mil,64位擴展信號的附加信號的連線長度最大為2000mil,pci clk的長度為2500mil+/-100mil,如果不夠長度可以多繞幾圈。

  還有一個要注意的是pci信號中prsnt1和prsnt2,開始我對這兩個信號一直不是很清楚,清華bbs上的精華區說得也是含糊,後來師兄devilface告訴我的prsnt1和prsnt2兩者必須有一個接gnd,否則系統肯定找不到卡,主板就是靠這兩個信號來判斷這個插槽上是否有卡,而其接法同pci卡使用的功率有關具體的含義如下(0 表示懸空,1表示接地):

  

  prsnt1 prsnt2  含義
   
        0    0   no card
   
        0    1   15w  
   
        1    0   25w
   
        1    1   7.5w

  另外pci卡上最好在從槽上引的電源上多加幾個電容,所有電源都必須退藕一般規范推薦pci卡做4層板,但是我只做了2層,其實無所謂,只要2層布得開,沒必要布4層,不過我布線的時候還是費了一點功夫,用specctra布了5,6次,為研究室節省開支嘛!(要是導師看見了該多感動呀!)

  pci規范規定了5v和3.3v兩種電氣規范,我們一般的機器上都是5v規范的插槽當然也不乏3.3v的。所以我做的是5v的卡,不要以為5v的插槽上就得不到3.3v,一樣可以提供3.3v的。

  前面提到了pci接口芯片,現在pci接口芯片技術已經比較成熟了,介紹一點我知道的:

  AMCC:早期有5920,後來5933風靡國內,早期的PCI接口都是用這做的amcc最近又推出了5935,估計改了一些5933的bug,我看它的文檔幾乎與 5933一致.

  plx :pci接口芯片的老大了.

  9030,9052,9050:slave芯片

  9050,9052面向isa卡轉pci的市場.

  9030為嵌入式專門設計.他們的文檔不過100頁左右.不難

  價錢便宜.不過170~190.

  9054,9080,9060

  9060是最早的32位master的pci控制芯片.

  9080取代9060;9054可能更成熟一些.(?)

  iop480.

  好東西呀!帶sdram接口和嵌入cpu,只是開發起來困難比較大. 自己直接去plx的網站看看.www.plxtech.com,我就知道這麼點,大家可以補充。

  我用的是9052,還是那句話,用的人多,技術成熟,遇到問題了可以到bbs發問。我就喜歡撿現成的,不服你就說嘛!!!!

  9052的機理比較簡單,它內部提供了兩種配置寄存器。一種叫做pci configuration registers ,這就是我們常說的pci配置空間另外一個叫 local configuration registers,它提供了配置本地端的一些信息。這裡提到了本地端,說一說。其實9052就相當於一個橋,連接pci卡的本地端的芯片到pci總線上,將pci指令例如讀寫某個寄存器、內存、io翻譯到本地端。9052本地端提供了地址線26根(27:2)和數據線32根,還有LBE4根,可以翻譯成不同的地址線,太麻煩了我就不詳細說了,反正我用的LOCAL端是8位數據,在這種模式下LBE1和LBE0提供地址線[1:0]。PCI配置寄存器提供了6個基地址寄存器,這些基地址都是在系統中的物理地址其中BASE1 和BASE2 都是用來訪問LOCAL 配置寄存器的基地址,BASE1是映射到內存的基地址,BASE2是映射到IO的基地址。所以可以通過內存和IO來訪問LOCAL 配置寄存器。

  • 首頁
  • 上一頁
  • 1
  • 2
  • 下一頁
  • 尾頁
  • 共2頁
  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved