基于FPGA的PCI接口設(shè)計(jì)
出處:jinggx 發(fā)布于:2007-05-25 13:19:48
|
摘 要: 介紹一種使用PCI宏核邏輯進(jìn)行的更加簡單高效的PCI口設(shè)計(jì)方法。該方法將PCI接口和PCI用戶邏輯集成在一片F(xiàn)PGA里,可以對整個邏輯進(jìn)行仿真調(diào)試,大大縮短了開發(fā)周期、提高了系統(tǒng)集成度和性能。重點(diǎn)敘述了ALTERA公司提供的32位TAGET接口宏核pci_t32的原理和結(jié)構(gòu),分析了時序設(shè)計(jì)要點(diǎn),給出了典型應(yīng)用的邏輯設(shè)計(jì)框圖和注意事項(xiàng)。
|
|
1 PCI總線及其接口概述
|
| 2 Pci_t32 MegaCore的內(nèi)部結(jié)構(gòu)及外圍信號 Pci_t32是ALTERA公司提供的簡單的32位PCI TARGET接口宏核邏輯,支持33MHz和66MHz的PCI時鐘。 Pci_t32內(nèi)部結(jié)構(gòu)包含如下幾個模塊: PCI總線配置寄存器,是符合PCI規(guī)范2.2版規(guī)定的所有配置寄存器。配置寄存器用于識別設(shè)備、控制PCI總線功能、提供PCI總線狀態(tài)等。 奇偶校驗(yàn)?zāi)K,用于對數(shù)據(jù)、地址、命令等進(jìn)行奇偶校驗(yàn)。 PCI側(cè)TARGET控制模塊(PCI target control block),用于控制pci_t32(作為TARGET)與PCI總線的各種操作。 用戶設(shè)備側(cè)TARGET控制模塊(local target control block),用于控制pci_t32(作為TARGET)與用戶邏輯的各種操作。 用戶設(shè)備側(cè)地址/數(shù)據(jù)/命令/字節(jié)使能模塊,接收和輸出用戶側(cè)的所有地址/數(shù)據(jù)/命令/字節(jié)使能等信號。 |
![]() |
|
左側(cè)PCI信號是符合PCI規(guī)范的標(biāo)準(zhǔn)信號,在這里不多加解釋。下面重點(diǎn)介紹右側(cè)用戶邏輯接口local信號:
|
| 3 讀寫操作時序分析與設(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ù)讀寫多個數(shù)據(jù),用戶設(shè)備應(yīng)能對首地址自動加1。配置讀寫是指pci主設(shè)備對pci_t32的配置空間寄存器進(jìn)行讀寫操作,pci主設(shè)備與pci_t32之間的接口是無縫連接。本文只分析32位Memory單周期讀寫時序,其它模式的讀寫時序大同小異,此略。 3.1 Memory 讀操作 pci_t32的單周期memory read操作時序如圖2所示。 |
![]() |
| 時序分析及用戶邏輯設(shè)計(jì)要點(diǎn):pci主設(shè)備在第2個clk給出要讀的目標(biāo)地址ad 31 0 和Memory讀命令cben 3 0 =6,pci_t32在第3個clk向用戶設(shè)備給出讀目標(biāo)地址1_adro 31 0和Memory讀命令l_cmdo 3 0 =6。用戶設(shè)備要對l_cmdo 3 0 譯碼來判斷是何種操作,對l_adro 31 0 譯碼來選擇目標(biāo)地址。在lt_framen輸出為低的下個時鐘周期,若用戶設(shè)備邏輯準(zhǔn)備好要輸出的數(shù)據(jù),可以置低lt_rdyn。若用戶邏輯沒有準(zhǔn)備好,可以延遲置低lt_rdyn來產(chǎn)生延時等待周期。當(dāng)lt_dxfrn輸出為低電平時(第6個clk),pci用戶設(shè)備必須將目標(biāo)地址的數(shù)據(jù)D0放到l_adi 31 0 ,用戶邏輯可以用lt_dxfrn來作為存儲單元的輸出使能信號(/Output Enable)。這樣,在第7個clk的上升沿pci_t32可以采樣到數(shù)據(jù)D0。在第8個clk的上升沿pci主設(shè)備可以得到數(shù)據(jù)D0。 3.2 Memory寫操作 pci_t32的單周期memory 寫操作時序如圖3所示。 |
![]() |
|
時序分析及用戶邏輯設(shè)計(jì)要點(diǎn):pci主設(shè)備在第2個clk給出要寫的目標(biāo)地址ad 31 0 和Memory寫命令cben 3 0 =7,pci_t32在第3個clk向用戶設(shè)備給出寫目標(biāo)地址l_adro 31 0 和Memory寫命令l_cmdo 3 0 =7。用戶設(shè)備要對l_cmdo 3 0 譯碼來判斷是何種操作,對l_adro 31 0 譯碼來選擇目標(biāo)地址。在lt_framen輸出為低的下個時鐘周期,若用戶設(shè)備邏輯準(zhǔn)備好接收pci_32t寫的數(shù)據(jù),可以置低lt_rdyn。若用戶邏輯沒有準(zhǔn)備好,可以延遲置低lt_rdyn來產(chǎn)生延時等待周期。當(dāng)lt_dxfrn輸出為低電平時(第7個clk),pci_t32已經(jīng)將輸出的有效數(shù)據(jù)放在l_dato 31 0 上,pci用戶設(shè)備必須在第8個clk的上升沿將l_dato 31 0 輸出的數(shù)據(jù)D0鎖存至目標(biāo)地址l_adro 31 0 ,用戶設(shè)備邏輯可以用第8個clk的上升沿來作為鎖存器的鎖存時鐘,用lt_dxfrn作為鎖存器的鎖存使能信號(/Latch Enable)或存儲單元的寫使能信號(/Write Enable)。
|
| 4 應(yīng)用設(shè)計(jì)實(shí)例及注意事項(xiàng) 筆者已經(jīng)成功地將pci_t32用于一個compact PCI的TARGET控制模塊中。在這個模塊中,主設(shè)備Master通過pci_t32來讀寫64個32bit控制寄存器,再由這些寄存器組去控制外部設(shè)備。在本系統(tǒng)的FPGA里,還有仲裁器等其它邏輯,PCI時鐘是33MHz,芯片選用的是EPF10K100EQC240-2。系統(tǒng)邏輯設(shè)計(jì)的框架如圖4所示。 |
![]() |
|
在寄存器組里還有一些簡單的選通、三態(tài)控制等邏輯,此略。L_adro 6 0 譯碼選擇寄存器組里的目標(biāo)寄存器。當(dāng)/WE有效時,l_dato 31 0 上是pci_t32輸出的有效數(shù)據(jù);當(dāng)/OE有效時,寄存器組必須將要輸出的數(shù)據(jù)放到l_adi 31 0 總線上。
|
|
參考文獻(xiàn) 4 PCI datasheet http://m.58mhw.cn/datasheet/PCI_1201469.html. |
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識介紹2025/8/29 16:58:56
- SQL核心知識點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識2025/6/18 16:30:52













