一種基于EP2SGX系列FPGA的PCI接口設計
3 PCI接口設計實(shí)現
本設計利用ALTERA公司的QuartusIl7.2軟件和硬件描述語(yǔ)言,采用自頂向下的設計方法進(jìn)行PCI接口的邏輯設計,并利用QuartusII軟件對設計進(jìn)行了功能和時(shí)序仿真。
設計的具體流程如下:首先從總體上考慮:PCI接口作為一個(gè)功能模塊,嵌入在FPGA內部,內側面向用戶(hù)邏輯,外側通過(guò)芯片的I/O管腳與PCI總線(xiàn)相連。在用戶(hù)端,需要把復雜的PCI總線(xiàn)命令轉換為便于用戶(hù)使用的類(lèi)似ISA總線(xiàn)的命令格式,把地址線(xiàn)與數據線(xiàn)分離,并產(chǎn)生單獨的讀寫(xiě)控制信號。其次,根據總體要求,進(jìn)行頂層設計和內部模塊劃分。最后,對具體的功能模塊用軟件編程實(shí)現并進(jìn)行功能仿真。
本設計中PCI接口的總體框圖如圖4所示。由圖4可知,PCI接口主要由地址/命令鎖存和譯碼、內部通信、外部通信和總線(xiàn)狀態(tài)機、中斷處理等模塊組成。
3.1 地址/命令鎖存和譯碼
由于PCI總線(xiàn)為地址和數據復用型總線(xiàn),在使用中需將地址和數據進(jìn)行分離,首先要對PCI總線(xiàn)上的32位地址/數據總線(xiàn)鎖存。譯碼是對來(lái)自主機的PCI總線(xiàn)命令信號CBE[3..0]和IDSEL信號進(jìn)行識別,并相應地向內部邏輯發(fā)出配置空間讀寫(xiě)操作、I/O讀寫(xiě)操作、存儲器讀寫(xiě)操作等信號。
3.2 外部通信
外部通信接口主要完成對PCI總線(xiàn)的應答,并發(fā)出相應的信號。對于瀆寫(xiě)操作,接口發(fā)出DEVSEL#信號響應PCI的FRAME#信號,完成握手。PCI協(xié)議規定了在交易期間對地址/數據總線(xiàn)和命令/字節使能總線(xiàn)進(jìn)行奇偶校驗。讀交易期間,接口被要求驅動(dòng)PAR信號線(xiàn);寫(xiě)交易期間,目標將計算AD[31..0]和CBE[3..0]上的奇偶性,并把PERR信號送給PCI。
3.3 內部通信
內部通信接口主要產(chǎn),豐面向用戶(hù)端,便于用戶(hù)使用的一信號,包括復位信號、分離的讀和寫(xiě)信號、地址總線(xiàn)、32位的數據讀寫(xiě)總線(xiàn)。
3.4 總線(xiàn)狀態(tài)機
該模塊足本設計的關(guān)鍵部分,其主要功能是根據PCI協(xié)議產(chǎn)生總時(shí)序來(lái)控制總線(xiàn)交易??偩€(xiàn)狀態(tài)機包含的狀態(tài)主要有總線(xiàn)空閑狀態(tài)、總線(xiàn)??繝顟B(tài)、主設備數據傳輸狀態(tài)、從設備數據傳輸狀態(tài)、配置空間讀寫(xiě)狀態(tài)、目標I/O空間讀寫(xiě)狀態(tài)、主設備讀寫(xiě)狀態(tài)、總線(xiàn)翻轉狀態(tài)、數據傳輸終止狀態(tài)等。以上各狀態(tài)主要依據輸入的PCIRST、FRAME#、IDSEL、CBE [3..0 ]、GNT#、IRDY#、TRDY#、STOP#等信號變化進(jìn)行狀態(tài)轉換。
3.5 中斷處理
本模塊主要實(shí)現各種外部中斷源的輸入處理、中斷允許寄存器和中斷狀態(tài)寄存器的控制和管理、INTA#信號的輸出處理等。
評論