• 沒有找到結果。

第四章 硬體系統架構

4.3 PCI 裝置

(一) PCI 裝置 ( Altera PCI Development Board )

” PCI Development Board” (如 圖 4.4 所 示 )為 ALTERA 公 司 所 生 產 , 作 為 開 發 PCI 原 型 裝 置 的 一 個 平 台 。 支 援 5V、

3.3V 的 雙 電 壓 規 格,也 支 援 32-bit 或 64-bit 的 PCI 插 槽規格 (一般 PC 準系統為 5V 32bit 插 槽)。同時亦支援 33MHz、66MHz、

133MHz(PCI-X 介面) 三種工作頻率。

使用 Stratix EP1S25F1020C5 Device 作 為 使 用 者 規 劃 設 計 之 FPGA。 同 時 亦 提 供 256M-Byte PC333 DDR SDRAM 外 部 體 模 組 , 透 過 DDR SDRAM connector (SODIMM) 連 接 到 Stratix EP1S25F1020C5 Device 中的 Bank3、Bank4 接腳。PCI 連接器(俗 稱金手指)經過 DC-to-DC 電壓轉換器(Level Conveters)後直接與 Stratix EP1S25F1020C5 Device 的 Bank7、Bank8 接腳作連接,中 間並無經過其他邏輯處理。板上 2 個震盪器提供 33MHz 與 100MHz 兩種 時脈輸入、分別接到 A19、C19 接腳。另外板上還提供 EPM3256ATC144-7 Device 與 8 M-Byte Flash Memory 作 為 FPGA(Stratix EP1S25F1020C5 Device)初始化裝置的 2 個主要元件(在電源供應瞬 間 EPM3256ATC144-7 Device 會 將 存 在 Flash Memory 上 的 FPGA 程 式 載 入 Stratix EP1S25F1020C5 Device 中 )。 另 外 還 提 供 有 8-bit User LEDs 輸 出 顯 示 , 亦 連 接 至 Stratix EP1S25F1020C5 Device 中的 Bank8。(如圖 4.5 所示)

其 他 非 與 本 文 相 關 之 元 件 在 此 不 作 贅 述 , 請 參 考 文 件 PCI Development Kit, Stratix Edition Getting Started User Guide [12]

與 Stratix PCI Development Board Data Sheet [13]。

圖 4.4 PCI Development Board 外 觀 圖

圖 4.5 Stratix Package TOP View

(二) Stratix EP1S25F1020C5 Device 構 造

” PCI Development Board” 使 Stratix EP1S25F1020C5 Device, Stratix Device 結 構 方 塊 圖 如 圖 4.6 所 示 。 主 要 結 構 有 6 種 分 別 為 M-RAM Blocks、M4K RAM Blocks、M512 RAM Blocks、

DSP Blocks、I/O Elements、LAB Structure。

圖 4.6 Stratix Device 結 構 方 塊 圖

M512 RAM Blocks(32x18bit) 、M4K RAM Blocks(128x36bit)、M-RAM Blocks(4Kx144bit)為 3 種不同大小的內部記憶體區塊,以因應設計者 不同的記憶體需求。DSP Blocks 可以快速執行乘法運算或是 FIR 濾波 器運算。I/O Elements 支援 DDR、PCI、GTL+、SSTL-3、SSTL-2、HSTL、

LVDS、LVPECL、PCML、HyperTransport 或是其他 I/O 標準的 pin 腳電 氣規格與時間規格。

M512 RAM Blocks

DSP Blocks

M4K RAM Blocks

I/O Elements

LAB Structure

M-RAM Blocks

一個 LAB Structure 包含了 10 個邏輯元件(LE)與邏輯元件進位鏈 (LE carry chains) , LAB 控 制 訊 號 , 區 域 連 接 線 ( local interconnect),LUT 鏈(LUT chain),以及暫存器鏈連接線(register chain connection lines)。LUT(Look Up Table)為 FPGA 實現邏輯的 基本元件,每個 LE 中擁有一個 4 輸入的 LUT。區域連接線連接同 LAB 的 LE 元件,暫存器鏈連接線連接暫存器到相鄰的 LE(在同 LAB 中)的 暫存器,LUT 鏈連接 LUT 到相鄰的 LE(在同 LAB 中)的 LUT。LAB 藉由各 種連接線即可組成較大的邏輯元件以應付複雜的邏輯實現。詳細的 LE 結構圖如 4.7 所示。

圖 4.7 邏輯元件(LE)結構圖

一個 Stratix Device 基 本 上 就 由 以 上 六 種 結 構 所 組 成 , 不 同 Device 之 間 基 本 六 種 組 成 結 構 為 相 同 , 只 是 每 種 結 構 數 量 以 及 密 度 不 同 , 以 及 晶 片 封 裝 型 態 上 的 不 同 而 已 。

每 個 Stratix EP1S25F1020C5 Device 具 有 2566 個 LAB,即 25660 個 (約 25K)邏輯元件(LE)、80 個 9-bit 高速乘法器(DSP Blocks) 以及 10 個 FIR 濾波器(DSP Blocks)、2 個 M-RAM Blocks、138 個 M4K RAM Blocks 、 224 個 M512 RAM Blocks 、 內 部 記 憶 體 總 計 為 1944576bit(237K-Byte),如表 4.2 所示。另外附加 6 個相鎖迴路 (PLL),此包裝最大可使用的 I/O 接腳為 706 隻接腳。對於更詳盡的 Stratix EP1S25F1020C5 Device 資 料 , 請 參 考 ” Stratix Device Handbook, Volume 1” [14] 、 ” Stratix Device Handbook, Volume 2” [15]文 件 。

表 4.2 Stratix EP1S25F1020C5 Device 資 源 表

EP1S25F1020C5 Device 數 量 邏輯元件(LE) 25660 個 DSP 9-bit 乘法器 80 個

DSP FIR 濾波器 10 個 M-RAM Blocks (4Kx144bit) 2 個 M4K RAM Blocks (128x36bit) 138 個 M512 RAM Blocks (32x18bit) 224 個 記憶體總計(M-RAM、M4K、M512K) 237K-Byte

(三) ALTERA PCI MegaCore Function ( IP CORE )

ALTERA 公 司 提 供 了 兩 樣 MegaCore Function– PCI Compiler 與 DDR SDRAM Controller 供 發 展 PCI Development Board 原 型 裝 置 之 設 計 者 所 使 用 , 藉以縮短原 型 裝 置 的 開 發 與 驗 證 時 間 ( MegaCore Function 為 ALTERA 公 司 針 對 旗 下 FPGA 所 開 發 的 IP CORE 產 品 )。 本 文 中 使 用 PCI Compiler 4.0 版 本 與 DDR SDRAM Controller 1.2.0 版本。為配合 MegaCore Function 版本使用的發展 工具環境為 Quartus II 5.0 與 ModelSim SE 5.7d。

ALTERA 公 司 所提供的 PCI Compiler MegaCore Function 完全 符合 PCI Special Interest Group (PCI-SIG) 制 定 的 ” PCI Local Bus Specifiation,Revision 3.0 ” [11]文 件 所定義的 規格要求,且支援 66MHz 工作頻率,對於開發 PCI 介面提供很好的解 決辦法,省去許多 PCI 介面 timing 與 functional 上的驗證。另外亦 提供行為模型( Behavioral models ) 與 Verilog、 VHDL 兩種版本 的 testbench 供第三者模擬工具 ( third-party simulation tools ) 模 擬 與 驗 證 所 使 用 ( 本 文 模 擬 使 用 ModelSim ) 。 PCI MegaCore functions 包 含 了 32/64 bit、master/target 與 target only 的版本 供使用者選擇。分別對應為 pci_mt64、pci_t64、pci_mt32、pci_t32 等 4 個獨立 IP CORE。每個 MegaCore functions 跟據 Device 不 同 提 供 三 種 版 本 Full、Preliminary、No support。Full 版本保證 timing 與 functional 都 能 達 到 規 格 要 求 , Preliminary 版 本 僅 保 證 functional 達到規格要求,timing 上還需設計者作 re-timing 自行達 到規格要求。對於 Stratix EP1S25F1020C5 Device 而 言 , PCI Compiler 3.0 以 下 版 本 僅 提 供 Preliminary 版本,於今年初推出 的 PCI Compiler 4.0 才 能 支 援 Full 版本。

1. PCI_T32 MegaCore functions

在 本 例 的 應 用 中 主 要 使 用 pci_t32 MegaCore function,其方 塊圖如圖 4.8 所示。使用 pci_t32 需花費 659 個邏輯元件(LE)去實現,

使用 PIN 腳數為 48 個(PCI Target 接腳),且 FloorPlan 位置要求為 bank7、bank8 鄰近位置。pci_t32 MegaCore function 參數規劃如下:

CLASS_CODE=X"FF0000"、DEVICE_ID=X"0004"、REVISION_ID =X"01"、

SUBSYSTEM_ID=X"0000" 、 SUBSYSTEM_VENDOR_ID=X"0000" 、 TARGET_DEVICE=STRING、VENDOR_ID=X"1172"、MIN_GRANT=X"00"、MAX_

LATENCY=X"00" 、 CAP_PTR=X"40" 、 CIS_PTR=X"00000000" 、 BAR0=

X"FFFC0000" 、 BAR1=X"FFFFFC00" 、 NUMBER_OF_BARS=X"00000002" 、 EXP_ROM_BAR=X"FFF00000"、PCI_66MHZ_CAPABLE=STRING、INTERRUPT_

PIN_REG=X"01"、ENABLE_BITS=X"00000003"。

圖 4.8 pci_t32 MegaCore function 方塊圖

To PCI BUS To PCI Local On Chip BUS (PCI-OCB)

2. PCI 匯 流 排 訊 號 功 能 定 義

clk : PCI BUS 端 的 clock 輸 入 訊 號 , 亦 作 為 全 系 統 Clock 來 源 。 除 非 同 步 訊 號 外 , 系 統 所 有 訊 號 皆 在 clk 正 緣 取 樣 。 輸 入 端 必 須 保 證 clk 為 乾 淨 無 彈 跳 訊 號 。

rstn : PCI BUS 端 的 非 同 步 reset 訊 號,亦 作 為 全 系 統 reset 來 源 (命 名 字 尾 小 寫 n 代 表 負 邏 輯 動 作 )。

idsel : PCI BUS 端 的 初 始 化 裝 置 (device)選 擇 訊 號 , 使 用 於 組 態 暫 存 器 ( configuration register ) 的 傳 輸 上。系 統 內 每 個 slot 都 有 其 獨 立 idsel 硬 體 接 線 。

AD[31:0] : PCI BUS 端 的 位 址 與 資 料 雙 向 多 工 匯 流 排 , 在 第 一 個 偵 測 到 framen=〝 0〞的 clk 正 緣 時,AD[31:0]

代 表 位 址 線 (此 時 MegaCore function 會將其 Latch 住送 到 l_adro 上)。其餘時間被則視為資料線,因為 AD[31:0]

為雙向多工通道,所以在每次使用完後需一段反轉週期,以 確保不會有兩邊同時驅動造成邏輯短路情況。

cben[3:0] : PCI BUS 端 的 命 令 與 位 元 組 致 能 雙 向 多 工 匯 流 排 , 如 同 AD[31:0]在 第 一 個 偵 測 到 framen=〝 0〞 的 clk 正 緣 時 代 表 匯 流 排 命 令,其 餘 時 間 則 代 表 位 元 組 致 能 , cben[0] 代 表 最 低 位 元 組 (LSB) , cben[3] 代 表 最 高 位 元 組 (MSB) , cben[x]= 〝 0〞 對 應 的 位 元 才 是 真 正 傳 輸 的 資 料 (命 名 字 尾 小 寫 n 代 表 負 邏 輯 動 作 )。 匯 流 排 命 令 如 表 4.3 所 示 。

par : PCI BUS 端 的 同 位 元 檢 查 訊 號 。 PCI BUS 使 用 〝 偶 同 位 〞 方 式 檢 查 碼 , 檢 查 AD[31:0]&cben[3:0]上 傳 送 之 資 料 。

framen : PCI BUS 端 的 傳 輸 (欄 位 )控 制 訊 號 。 由 PCI BUS Master 控 制,framen 由〝 1〞轉 變 到〝 0〞表 示 要 求 資 料 交 易,維 持 在〝 0〞狀 態 表 示 資 料 持 續 收 送 當 中 , 由 〝 0〞 轉 變 到 〝 1〞 代 表 為 最 後 一 筆 交 易 資 料 。 (以 上 皆 在 CLK 正 緣 取 樣 判 斷 )

irdyn : PCI BUS 主 控 端 (Master/Initiator) ready 訊 號 , irdyn=〝 0〞 代 表 主 控 端 準 備 好 收 送 訊 號 。

itdyn : PCI BUS 被 控 端 (Target) ready 訊 號 , itdyn=〝 0〞

代 表 被 控 端 準 備 好 收 送 訊 號 。

stopn : PCI BUS 被 控 端 (Target) stop 訊 號 , stopn =〝 0〞

代 表 被 控 端 要 求 停 止 目 前 傳 輸 週 期 。

intan : PCI BUS 端 中 斷 訊 號 (Interrupt A), intan =〝 0〞

代 表 裝 置 端 請 求 中 斷 。

perrn : PCI BUS 端 同 位 元 檢 查 錯 誤 訊 號 , perrn =〝 0〞 代 表 裝 置 端 上 筆 傳 輸 資 料 同 位 元 檢 查 錯 誤 (上 一 個 CLK 正 緣 傳 輸 資 料 )。

serrn : PCI BUS 端 系 統 錯 誤 訊 號 , serrn =〝 0〞 代 表 裝 置 端 發 生 系 統 錯 誤 或 是 位 址 、 同 位 元 錯 誤 錯 誤 。

表 4.3 PCI 匯 流 排 命 令 對 照 表

3. PCI Local On Chip BUS (PCI-OCB)端 訊 號 功 能 定 義

cmd_reg[6:0] : PCI-OCB 端 命 令 暫 存 器 , 對 應 到 PCI 組 態 暫 存 器 中 的 命 令 暫 存 器 狀 態 。

stat_reg[6:0] : PCI-OCB 端 狀 態 暫 存 器 , 對 應 到 PCI 組 態 暫 存 器 中 的 狀 態 暫 存 器 狀 態 。

l_adi[31:0] : PCI-OCB 端 位 址 與 資 料 多 工 輸 入 匯 流 排,PCI 讀 取 命 令 狀 態 下 對 應 到 PCI BUS 端 的 ad[31:0] 。 Target Controller 必 須 負 責 在 位 址 週 期 內 送 入 位 址 訊 號 , 在 資 料 週 期 中 送 入 資 料 訊 號 。

l_adro[31:0] : PCI-OCB 端 位 址 輸 出 訊 號 , PCI 寫 入 命 令 狀 態 下 的 位 址 週 期 中 MegaCore function 會將 ad[31:0]

Cben[3:0] 命 令 型 態 Cben[3:0] 命 令 型 態 0000 Interrupt Acknowledge 1000 Reserved

0001 Special Cycle 1001 Reserved

0010 I/O Read 1010 Configuration Read

0011 I/O Write 1011 Configuration Write 0100 Reserved 1100 Memory Read Multiple

0101 Reserved 1101 Dual address Cycle

0110 Memory Read 1110 Memory Read Line

0111 Memory Write 1111 Memory Write and Invalidate

l_dato[31:0] : PCI-OCB 端 資 料 輸 出 訊 號 , PCI 寫 入 命 令 狀 態 下 的 資 料 週 期 中 MegaCore function 會將 ad[31:0]

位 址 Latch 到 l_adro 上。

l_beno[3:0] : PCI-OCB 端 位 元 組 致 能 輸 出 訊 號 , 如 同 l_adro[31:0], 在 PCI 寫 入 命 令 狀 態 下 的 位 址 週 期 中 MegaCore function 會將位 元 組 致 能 訊 號 (cben[3:0]) 對應到 l_beno 上。

l_cmdo[3:0] : PCI-OCB 端 匯 流 排 命 令 輸 出 訊 號 , 如 同 l_dato[31:0], 在 PCI 寫 入 命 令 狀 態 下 的 資 料 週 期 中 MegaCore function 會將匯 流 排 命 令 訊 號 (cben[3:0]) 對應到 l_cmdo 上。

lt_rdyn : PCI-OCB 端 Target ready 訊 號 , 對 應 到 PCI BUS 端 itdyn 訊 號 。 lt_rdyn= 〝 0 〞 代 表 Target Controller 準 備 好 收 送 訊 號 。

lt_abort : PCI-OCB 端 Target abort reguest 訊 號 , lt_abort =〝 0〞 代 表 Target Controller 宣 告 此 次 傳 輸 失 敗 。

lt_discn : PCI-OCB 端 脫 離 (disconnect)或 是 重 試 (retry) 訊 號 , lt_discn=〝 0〞、 lt_rdyn =〝 0〞 代 表 Target Controller 宣 告 脫 離 連 線。lt_discn=〝 0〞、lt_rdyn

=〝 1〞 代 表 Target Controller 忙 碌 中 要 求 稍 後 連

線 。 依 ” PCI Local Bus Specifiation,Revision 3.0 ” [11] 規 格 標 準 , 當 傳 輸 超 過 硬 體 位 址 空 間 時 設 備 端 要 提 出 disconnect 要 求 。

lirgn : PCI-OCB 端 請 求 中 斷 訊 號,對 應 到 PCI BUS 端 intan 訊 號 , lirgn=〝 0〞 代 表 Target Controller 端 請 求 中 斷 。

lt_framen: PCI-OCB 端 傳 輸 (欄 位 )控 制 訊 號 , 對 應 到 PCI BUS 端 framen 訊 號 。

lt_ackn: PCI-OCB 端 acknowledge 訊 號 , lt_ackn=〝 0〞 表 示 MegaCore function 認可交易資料為有效。

lt_dxfm: PCI-OCB 端 資 料 傳 輸 中 訊 號 , lt_dxfm=〝 0〞 表 示 MegaCore function 資料傳 輸 中。

lt_tsr[11:0]: PCI-OCB 端 傳 輸 狀 態 暫 存 器 訊 號 , lt_tsr[5:0] 分 別 對 應 BAR5~0, 若 lt_tsr[0]=〝 0〞

表 示 傳 輸 位址落在 BAR0 範圍中。lt_tsr[8]=〝 0〞表 示 Target 存 取 要 求,lt_tsr[9]=〝 0〞表 示 burst 存 取 模 式 , lt_tsr[10]= 〝 0〞 表 示 前 筆 資 料 傳 輸 成 功 結 束 。

4.PCI_T32 功能規格(Function Specification)

PCI_T32 功能簡單的來說就是一種橋接器(bridge),主 要 功 能 就 是 將 雙 向 多 工 的 PCI 匯 流 排 訊 號 , 處 理 成 單 向 (輸 入 或 輸 出 ) 訊 號 , 並 提 供 雙 向 多 工 安 全 的 反 轉 週 期 , 以 及 控 制 timing 上 的 保 障 。 其 PCI Local On Chip BUS (PCI-OCB)端 的 訊 號 功 能 大 致 上 與 PCI 規 格 一 致 , 只 是 在 時 序 有 些 延 遲 (delay 1~3 clock 週 期 )。 以 下 就 本 文 應 用 所 需 功 能 如 記 憶 體 讀 寫 、 組 態 空 間 讀 寫 作 簡 單 說 明 , 詳 細 規 格 說 明 請 參 照 ” PCI Compiler Data Sheet ” [16] 、 ” PCI MegaCore Function User Guide ” [17] 。 表 4.4 為 寫 入 組 態 空 間 動 作 時 的 組 態 位 址 ad[31:0]各 訊 號 功 能 定 義 、 圖 4.9、 4.10 說 明 pci_t32 在 執 行 組 態 空 間 讀 寫 時 的 動 作 時 序 、 圖 4.11、 4.12 說 明 pci_t32 在 執 行 記 憶 體 讀 寫 時 的 動 作 時 序 。

表 4.4 組 態 位 址 訊 號 功 能 定 義

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 保 留 (全 部 為〝 0〞) 匯 流 排 號 碼 裝 置 號 碼 Fun_num Dword 00

AD[1:0]=〝 00〞: 表 示 使 用 TYPE 0 類 型 主 態 交 易 。 ( TYPE 1 交 易 型 態 在 PCI 2.2 板 之 後 時 已 經 廢 除 。 ) AD[7:2]: 空 間 位 址 共 有 256 byte, 由 AD[7:2]定 址 。 AD[10: 8]: PCI Target 裝 置 之 功 能 號 碼 參 數 。

AD[15:11]: PCI Target 裝 置 之 裝 置 號 碼 參 數 。 AD[23:16]: PCI Target 裝 置 之 匯 流 排 號 碼 參 數 。

在 PCI 的 規 格 中,允 許 系 統 最 多 可 接 256 組 匯 流 排,每 組 匯 流 排 最 多 可 接 32 種 裝 置 , 每 種 裝 置 可 以 有 多 達 8 項 功 能 。 AD[31]=〝 0〞 表 示 為 組 態 存 取 (AD[31]=〝 1〞 為 I/O 存 取 )。

圖 4.9 pci_t32 組 態 讀 取 時 序 圖

圖 4.10 pci_t32 組 態 寫 入 時 序 圖

圖 4.11 pci_t32 記 憶 體 讀 取 時 序 圖

圖 4.12 pci_t32 記 憶 體 寫 入 時 序 圖

(四) DDR SDRAM Controller IP CORE

ALTERA 公 司 所 提 供 的 DDR SDRAM Controller MegaCore Function 管理著複雜的 DDR SDRAM 的控制如記憶體模組初始化、 SDRAM banks 的管理、自動 refresh 功能等等,且提供了易整合的數位介面,

可以幫助使用者避掉設計記憶體時序控制上非同步電路的困擾,使用 這 些 IP 可 以 讓 設 計 者 更 專 注 在 核 心 元 件 的 設 計 上 。 MegaCore functions 跟據 Device 不 同 提 供 三 種 版 本 Full、Preliminary、No

可以幫助使用者避掉設計記憶體時序控制上非同步電路的困擾,使用 這 些 IP 可 以 讓 設 計 者 更 專 注 在 核 心 元 件 的 設 計 上 。 MegaCore functions 跟據 Device 不 同 提 供 三 種 版 本 Full、Preliminary、No

相關文件