作者從零開始摸索 PCI 卡開發,分享硬體佈局、晶片選型與 Windows 98 VxD 驅動編寫經驗,內容極具實戰價值。
硬體設計關鍵點
- PCI 介面晶片:市面有成熟晶片(AMCC 5933/5935、PLX 9052/9080/9060 等)完整符合 PCI 規範,開發者無需深研規範細節即可設計。作者採用 PLX 9052,資源豐富、技術成熟。
- 訊號佈線:PCI 使用反射波訊號,驅動電壓僅需規格一半。32 位元訊號最大佈線 1500 mil,64 位元擴充訊號 2000 mil,CLK 2500±100 mil,不足可繞線補足。
- PRSNT1/PRSNT2:兩者至少一個接地,否則主機板偵測不到卡。接法對應卡片功耗:01=15W、10=25W、11=7.5W。
- 電源去耦:槽上引入的電源需加足夠電容去耦。規範建議 4 層板,作者 2 層板經 Specctra 多次優化也能穩定運作。
- 電氣規範:5V 與 3.3V 兩種,作者採 5V 卡,仍可從 5V 插槽取得 3.3V。
PLX 9052 運作機制
9052 相當於橋接器,將 PCI 指令(讀寫暫存器/記憶體/I/O)轉譯至本地端。內部提供兩組設定暫存器:
- PCI Configuration Registers:PCI 設定空間,含 6 個基底位址暫存器(BAR)。BAR0/BAR1 映射本地端設定暫存器(記憶體/I/O 空間)。
- Local Configuration Registers:設定本地端介面(位址線 26 條、資料線 32 條、LBE 4 條)。作者採 8 位元資料模式,LBE0/LBE1 作為位址線 [1:0]。
透過 PCI 設定空間的基底位址,驅動程式即可存取本地端暫存器與裝置記憶體,完成資料傳輸控制。