新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的PCI接口設(shè)計(jì)

基于FPGA的PCI接口設(shè)計(jì)

作者: 時(shí)間:2012-03-14 來源:網(wǎng)絡(luò) 收藏

Pci_t32內(nèi)部功能模塊及周邊信號(hào)如圖1所示。

左側(cè)PCI信號(hào)是符合PCI規(guī)范的標(biāo)準(zhǔn)信號(hào),在這里不多加解釋。下面重點(diǎn)介紹右側(cè)用戶邏輯接口local信號(hào):
L_aci 31 0 ,local側(cè)地址、數(shù)據(jù)輸入信號(hào)。
L_cbeni 3 0 ,local側(cè)命令、字節(jié)使能輸入信號(hào),位定義及時(shí)序符合PCI規(guī)范。
L_dato 31 0 ,local側(cè)數(shù)據(jù)輸出信號(hào)。
L_adro 31 0 ,local側(cè)地址輸出信號(hào)。
L_beno 30 ,local側(cè)字節(jié)使能輸出信號(hào),位定義及時(shí)序符合PCI規(guī)范。
L_cmdo30,local側(cè)命令輸出信號(hào),位定義及時(shí)序符合PCI規(guī)范。
Lt_rdyn,local側(cè)目標(biāo)設(shè)備準(zhǔn)備好信號(hào)(target ready),對(duì)pci_t32是輸入信號(hào)。
Lt_discn,local側(cè)目標(biāo)設(shè)備通過置低該信號(hào)請(qǐng)求pci_t32向PCI 側(cè)主設(shè)備發(fā)出斷開連接信號(hào)(disconnect request),對(duì)pci_t32是輸入信號(hào)。
Lt_abortn,local側(cè)目標(biāo)設(shè)備通過置低該信號(hào)來請(qǐng)求pci_t32向PCI 側(cè)主設(shè)備發(fā)出放棄操作信號(hào),對(duì)pci_t32是輸入信號(hào)。
Lt_irqn,local側(cè)目標(biāo)設(shè)備中斷請(qǐng)求信號(hào),對(duì)pci_t32是輸入信號(hào)。
Lt_framen,PCI主設(shè)備通過pci_t32讀寫local側(cè)目標(biāo)設(shè)備時(shí),pci_t32置低該信號(hào)(輸出信號(hào)).
Lt_ackn,當(dāng)為目標(biāo)寫操作時(shí),PCI_t32置低該信號(hào)(輸出信號(hào)),表示數(shù)據(jù)有效;當(dāng)為目標(biāo)讀操作時(shí),PCI_t32置低該信號(hào)(輸出信號(hào)),表示已準(zhǔn)備好讀數(shù)。
Lt_dxfrn,輸出信號(hào),表示local 目標(biāo)設(shè)備數(shù)據(jù)傳輸成功。
Lt_tsr 11 0,輸出信號(hào),控制local目標(biāo)設(shè)備狀態(tài)寄存器。
Cmd_reg 5 0,配置命令寄存器輸出信號(hào)。Bit0,I/O操作使能;bit1,Memory操作使能;bit2,保留;bit3,memory寫無效使能;bit4,奇偶校驗(yàn)出錯(cuò)響應(yīng)使能;bit5,系統(tǒng)出錯(cuò)響應(yīng)使能。
Stat_reg 5 0 ,配置狀態(tài)寄存器輸出信號(hào)。

3 讀寫操作時(shí)序分析與設(shè)計(jì)要點(diǎn)

pci規(guī)范中定義了兩種讀寫操作,即Memory和I/O的讀寫。Pci_t32的讀寫操作包括:32位的Memory單周期讀寫、Memory猝發(fā)讀寫、I/O單周期讀寫以及配置讀寫。Pci_t32 的Memory讀寫分為單周期和猝發(fā)兩種模式,而I/O的讀寫只有單周期模式。所謂猝發(fā)模式,即在給出首地址后,主設(shè)備連續(xù)讀寫多個(gè)數(shù)據(jù),用戶設(shè)備應(yīng)能對(duì)首地址自動(dòng)加1。配置讀寫是指pci主設(shè)備對(duì)pci_t32的配置空間寄存器進(jìn)行讀寫操作,pci主設(shè)備與pci_t32之間的接口是無縫連接。本文只分析32位Memory單周期讀寫時(shí)序,其它模式的讀寫時(shí)序大同小異,此略。

3.1 Memory 讀操作
pci_t32的單周期memory read操作時(shí)序如圖2所示。

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



關(guān)鍵詞: PCI總線 FPGA PCI接口

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉