基于FPGA的PCI接口設計
Pci_t32內部功能模塊及周邊信號如圖1所示。

左側PCI信號是符合PCI規范的標準信號,在這里不多加解釋。下面重點(diǎn)介紹右側用戶(hù)邏輯接口local信號:
L_aci 31 0 ,local側地址、數據輸入信號。
L_cbeni 3 0 ,local側命令、字節使能輸入信號,位定義及時(shí)序符合PCI規范。
L_dato 31 0 ,local側數據輸出信號。
L_adro 31 0 ,local側地址輸出信號。
L_beno 30 ,local側字節使能輸出信號,位定義及時(shí)序符合PCI規范。
L_cmdo30,local側命令輸出信號,位定義及時(shí)序符合PCI規范。
Lt_rdyn,local側目標設備準備好信號(target ready),對pci_t32是輸入信號。
Lt_discn,local側目標設備通過(guò)置低該信號請求pci_t32向PCI 側主設備發(fā)出斷開(kāi)連接信號(disconnect request),對pci_t32是輸入信號。
Lt_abortn,local側目標設備通過(guò)置低該信號來(lái)請求pci_t32向PCI 側主設備發(fā)出放棄操作信號,對pci_t32是輸入信號。
Lt_irqn,local側目標設備中斷請求信號,對pci_t32是輸入信號。
Lt_framen,PCI主設備通過(guò)pci_t32讀寫(xiě)local側目標設備時(shí),pci_t32置低該信號(輸出信號).
Lt_ackn,當為目標寫(xiě)操作時(shí),PCI_t32置低該信號(輸出信號),表示數據有效;當為目標讀操作時(shí),PCI_t32置低該信號(輸出信號),表示已準備好讀數。
Lt_dxfrn,輸出信號,表示local 目標設備數據傳輸成功。
Lt_tsr 11 0,輸出信號,控制local目標設備狀態(tài)寄存器。
Cmd_reg 5 0,配置命令寄存器輸出信號。Bit0,I/O操作使能;bit1,Memory操作使能;bit2,保留;bit3,memory寫(xiě)無(wú)效使能;bit4,奇偶校驗出錯響應使能;bit5,系統出錯響應使能。
Stat_reg 5 0 ,配置狀態(tài)寄存器輸出信號。
3 讀寫(xiě)操作時(shí)序分析與設計要點(diǎn)
pci規范中定義了兩種讀寫(xiě)操作,即Memory和I/O的讀寫(xiě)。Pci_t32的讀寫(xiě)操作包括:32位的Memory單周期讀寫(xiě)、Memory猝發(fā)讀寫(xiě)、I/O單周期讀寫(xiě)以及配置讀寫(xiě)。Pci_t32 的Memory讀寫(xiě)分為單周期和猝發(fā)兩種模式,而I/O的讀寫(xiě)只有單周期模式。所謂猝發(fā)模式,即在給出首地址后,主設備連續讀寫(xiě)多個(gè)數據,用戶(hù)設備應能對首地址自動(dòng)加1。配置讀寫(xiě)是指pci主設備對pci_t32的配置空間寄存器進(jìn)行讀寫(xiě)操作,pci主設備與pci_t32之間的接口是無(wú)縫連接。本文只分析32位Memory單周期讀寫(xiě)時(shí)序,其它模式的讀寫(xiě)時(shí)序大同小異,此略。
3.1 Memory 讀操作
pci_t32的單周期memory read操作時(shí)序如圖2所示。

時(shí)序分析及用戶(hù)邏輯設計要點(diǎn):pci主設備在第2個(gè)clk給出要讀的目標地址ad 31 0 和Memory讀命令cben 3 0 =6,pci_t32在第3個(gè)clk向用戶(hù)設備給出讀目標地址1_adro 31 0和Memory讀命令l_cmdo 3 0 =6。用戶(hù)設備要對l_cmdo 3 0 譯碼來(lái)判斷是何種操作,對l_adro 31 0 譯碼來(lái)選擇目標地址。在lt_framen輸出為低的下個(gè)時(shí)鐘周期,若用戶(hù)設備邏輯準備好要輸出的數據,可以置低lt_rdyn。若用戶(hù)邏輯沒(méi)有準備好,可以延遲置低lt_rdyn來(lái)產(chǎn)生延時(shí)等待周期。當lt_dxfrn輸出為低電平時(shí)(第6個(gè)clk),pci用戶(hù)設備必須將目標地址的數據D0放到l_adi 31 0 ,用戶(hù)邏輯可以用lt_dxfrn來(lái)作為存儲單元的輸出使能信號(/Output Enable)。這樣,在第7個(gè)clk的上升沿pci_t32可以采樣到數據D0。在第8個(gè)clk的上升沿pci主設備可以得到數據D0。
評論