摘 要:首先介紹了PCI總線的技術特點,并結合實際應用,重點敘述了PCI總線設備控制器的VHDL設計與FPGA的實現,他是PCI總線和應用設備的接口,并且用VHDL語言對系統進行了詳細的描述與功能仿真。
關鍵詞:PCI總線;設備控制器;FPGA;VHDL
PCI(PeripheralComponent Interconnection)局部總線不僅是目前的計算機總線,而且是一種兼容性強、功能全的計算機總線。他可同時支持多組外圍設備,而且不受制于處理器的限制,為CPU及高速外圍設備提供高性能、高吞吐量、低延遲的數據通路。圖形用戶界面、高清晰度電視、三維視頻多媒體顯示等新技術的發展以及高速通訊系統的廣泛需求使PCI具有良好的應用前景。并在嵌入式計算機和工業控制計算機方面具有廣泛的應用前景[1]。
1 PCI總線及其特點
Intel公司研制的PCI局部總線既具有VESA局部總線的高數據傳輸率,又與CPU相對獨立且功能更強。他的產生可以說是PC總線技術的第六次創新。1992年6月,Intel公司和多家主要電腦廠商組成了PCI專責小組SIG(SpecialInterestGroup),目的是推廣、統籌并強化PCI標準,使PCI總線標準終成為開放的、非專利的局部總線標準。1999年2月PCI2.2版規范的發布,使其得到更加廣泛的應用[2]。
1.1 PCI總線的特點
圖1給出了典型的PCI總線結構框圖,可以看出,整個系統存在3種不同的總線:HOST(宿主)總線、PCI總線和LEGACY(遺留)總線。在一個 PCI系統中可以做到高速外部設備和低速外部設備共存,PCI總線與ISA/EISA總線并存。PCI總線的特點有:線性突發傳輸、存取延誤極小、總線主控及同步操作、獨立于CPU的結構、低成本高效益、兼容性、預留發展空間[1]。
1.2 PCI總線信號定義與讀寫規范
PCI接口信號線可分為必備的和可選的2大類。條。用這些信號線便可處理數據/地址,實現接口控制及系統功能。綜合主設備與目標設備考慮,按功能將這些信號分組表示于圖2中。
當設備開始驅動有效數據到數據總線上時,作為數據源設備的準備信號(IRDY#和TRDY#)必須有效,同時接收數據的設備保持準備信號無效,直到他準備接收數據。當設備的準備信號有效,他就會保持到當前數據段結束。當設備準備完成當前數據段,他必須不改變控制信號。當IDRY#有效表明主設備準備傳送當前數據項,不管TRDY#的狀態,他可以不改變IDRY#或FRAME#的狀態。只要TDRY#或STOP#有效,直到當前數據段結束,才改變 TRDY#,STOP#或DEVSEL#[3]。
2 PCI總線設備控制器的設計
2.1 設計思想
PCI總線設備控制器是PCI總線和應用設備的接口,分為總線主設備控制器和目標設備控制器,可將這2種控制器的功能集成在一個控制器上實現。PCI 總線控制器的主要功能就是要協調PCI總線信號與應用設備信號,使應用設備能夠正確使用PCI總線來進行數據傳輸,即數據傳輸功能、錯誤檢測與處理功能、命令/地址譯碼功能、配置功能。因此,PCI總線控制器設計目標就是要在PCI總線和應用設備之間產生正確的控制信號。
本文實現的是PCI總線目標設備控制器。其中,時鐘頻率為33 MHz,數據寬度為32 b。支持單數據段和突發傳輸2種方式。提供奇偶校驗生成和奇偶校驗檢測,實現16個雙字的PCI配置空間寄存器,支持配置空間讀/寫、I/O讀寫、存儲器讀/寫等PCI總線命令。PCI總線目標設備控制器不會申請對總線的使用權,是響應由總線主設備提出的總線操作來控制PCI總線與應用設備之間的交易。
2.2 設計的總體框圖
如圖3所示,PCI總線目標控制器從功能上劃分為8個部分。其中奇偶產生模塊是在讀周期產生奇偶校驗位;奇偶檢測模塊是控制器對所接收到的數據進行檢測,以確定所接受到的數據是否正確,并給出相應的錯誤報告;命令寄存器/地址計數器在地址期鎖存來自總線的PCI命令和地址信息,將命令從總線上分離出來,根據命令譯出相應讀寫操作信號,并將命令及讀寫信號傳送到應用設備接口,對于訪問存儲器的突發傳送,產生后繼地址;目標狀態機模塊通過PCI總線在各個狀態的控制下產生相應的PCI總線控制信號和與目標設備相關的應用接口控制信號;數據通路模塊;用戶控制模塊;配置空間模塊保留用于實現配置寄存器,使系統上電時執行系統配置;I2C接口模塊。
2.3 系統描述與功能仿真
當系統的結構設計確定后,對于每個模塊的設計首先要使用硬件描述語言完成系統的描述,然后使用語言及系統仿真及調試工具進行語言級功能仿真與調試。
2.3.1 系統的VHDL描述
本系統用VHDL語言來描述。VHDL語言是一種結構化語言,他支持結構化設計。結構化設計就是將一個系統劃分為多個子模塊,而每個子模塊又可以繼續劃分為更多的模塊。首先根據系統的功能描述,將系統劃分為接口清晰、相互關系簡單的子系統,從而得到系統級的描述。然后,依次對各個子系統(或功能模塊)進行結構設計和寄存器傳輸級描述。
2.3.2 系統功能仿真
為了證明上面的設計模塊是否正確,還需對這些設計模塊進行仿真。本文使用ALDEC公司的設計仿真軟件Activ-HDL進行前后仿真。通過仿真工具,設計者對各設計層次的設計模塊進行仿真,以確定這些設計模塊的功能,邏輯關系及定時關系是否滿足設計要求。頂層模塊的主要信號仿真波形如圖4所示。
3 PCI總線控制器的FPGA實現
在本設計中,PCI總線目標控制器的實現是采用了Altera公司的ACEX系列中的EP1K30QC208-1芯片。其封裝形式是208管腳PQFP (Plastic Quad FlatPack)封裝。布局布線工作是在Altera公司的MAXPLUSII工具上完成的。為了驗證PCI總線設備控制器的功能,我們設計了一塊 PCB驗證板,在設計該驗證板時,考慮到布局布線的方便以及PCI信號線的要求,將PCI信號分布到EP1K器件與PCI總線卡的連接器距離近的管腳上。
4 結 語
本文的PCI總線目標控制器使應用設備與PCI總線連接變得靈活而方便,設計者通過PCI總線目標控制器連接PCI總線消除了對PCI總線復雜時序和規范的理解,通過驗證和實際應用證明我們設計的PCI總線控制器性能完全達到了PCI總線的要求。
參考文獻
[1]李貴山,戚德虎.PCI局部總線開發者指南[M].西安:西安電子科技大學出版,1997.
[2]Tom Shanley,Don Anderson.PCI系統結構[M].劉暉,冀然然,夏意軍譯.北京:電子工業出版社, 2000.
[3]侯伯亨,顧新.VHDL硬件描述語言與數字邏輯電路設計[M].西安:西安電子科技大學,1999.
[4]曾繁泰,侯亞寧,崔元明.可編程器件應用導論[M].北京:清華大學出版社,2001.