1 高速數字 I/O 系統
1.1性能名額
傳統數字 I/O 裝置的性能名額主要有傳輸通道數、緩存深度、資料速率等要求。
在多種應用環境下的通用性測試,另外加入了對資料速率、邏輯電平、傳輸方式三種功能的動态重配置名額。
本項目的技術難點主要集中在高速緩存技術、系統總線技術、多功能動态重配置技術三個方面。
1.2 高速緩存技術
1.2.1緩存媒體分析
動态傳輸速率的高速數字I/O 系統,是以跨時鐘域的資料緩存技術在本課題中需要格外注意,異步時鐘域之間的資料緩存,其傳統的設計方法是采用 FPGA 内部的異步 FIFO 來完成,對緩存空間的容量需求較大、速度較快,FPGA 在完成系統各功能設計的情況下,留給高速緩存子產品的存儲資源已經無法滿足緩存的設計要求。為了滿足高速緩存技術對存儲容量和傳輸速率的要求,外部
存儲晶片的使用逐漸成為高速緩存子產品設計的最佳選擇。SRAM、SDRAM 兩種。
SRAM 類型緩存晶片的傳輸速率較快,然而相比于 SDRAM 類型緩存晶片其又存在緩存空間較小、成本較高的缺點。
傳統的 SDRAM 類型晶片存取速率較慢,但是由其衍生的 DDR2 SDRAM 晶片通過采用時鐘上升/下降沿分别觸發的方法,使其最大工作速率達到了 400MHz,高的資料傳輸速率,導緻對信号完整性的要求極高,是以 DDR2 SDRAM 晶片還附加了内部信号終結器 ODT子產品,該子產品主要用于對末端信号的吸收,避免反射信号對後續資料的影響,保證信号傳輸的正确性。
1.2.2 緩存晶片選型
對于 DDR2 SDRAM 晶片的選型,主要需要考慮資料位寬、存儲深度、最高工作速率三項名額。
1.3 系統總線技術
系統總線技術在計算機系統中起到橋梁作用,主要用于實作上位機與外部裝置的電氣連接配接,進而完成資料、指令、狀态等多種資訊的互連通信。
1.3.1 PCIE總線概念
PCI Express(PCIE)總線技術作為新一代的系統總線,充分繼承了 PCI 總線的所有優點,其事務類型同樣分為了 I/O 事物、配置事務、存儲器事務三種類型,且其位址配置的編址方與 PCI 總線的編址方式相同,是以基于 PCI 總線的上位機軟體同樣可以應用在基于 PCIE 總線的系統中,進而最大程度的避免了由于總線更新所帶來的額外負擔。
PCIE對PCI的新改進,PCIE 總線技術通過采用串行傳輸、差分走線和全雙工操作等技術有效的避免了由于速率提升而導緻的互相幹擾,使其在 X1 通道情況下的最高理論速率達了 2.5GHz。與此同時 PCIE 總線采用了 8b/10b 編碼的内嵌時鐘技術,同步時鐘信号直接被編碼到資料流中,基于此編碼技術可以有效的避免同步時鐘信号線的單獨布線,同時保證時鐘、資料信号的同步性,降低硬體設計的布線難度。
PCIE 總線采用交換器(switch)實作了點對點互連的工作模式,這意味着一個主機可以與多個PCIE 外設進行通信,且每個外部裝置都有其專用的通信鍊路。是以基于點對點互連工作模式的 PCIE 總線技術可以有效的解決掉 PCI 總線中多個外部裝置共同占用同一帶寬的問題,且對資料傳輸速率的提高起到了至關重要的作用。
1.3.2 PCIE 總線協定
PCIE 總線的資料傳輸過程采用了與通信系統中 OSI 分層模式相同的劃分方法,根據實作功能的不同主要可以分為事物層、鍊路層、實體層三種,其中每一層都具有一種相應的資料包,用于完成各層之間的資料傳輸。
事務層位于 PCIE 總線内部結構的最頂層,主要用于完成事務層包(TLP)的組裝或拆解,事務類型可以分為存儲器操作、IO 操作、配置、消息四種。事務層根據事務類型的不同又将 TLP包分為 posted、non_posted 和 completion 三種類型。
posted 包用于完成存儲器(寫)和消息兩種事務類型的封裝;non_posted 包則用于其餘的幾種事務類型的封裝。事務層也為使用者提供了互動接口,使用者邏輯可以通過對事務層接口信号的時序控制實作 TLP包的打包和解包操作。
資料鍊路層的作用是對保證資料傳輸的正确性,主要由 DLLP 生成單元、檢錯單元、重發單元和 ACK/NACK 協定邏輯單元四部分組成。
當接收裝置檢測到DLL 錯誤時,則會傳回一個 NACK 資料鍊路層包,當發送裝置接收到相應信号會重新發送該 TLP 包,進而保證了資料包傳輸的準确性,而不是簡單意義上的在 TLP 基礎上添加序列 ID 與 LCRC。
實體層位于 PCIE 總線内部結構的最底層,主要用于完成與 PCIE 鍊路另一端裝置的互連通信。根據實體層主要完成功能的劃分,可以将其分為邏輯實體層和電氣實體層兩個子層,其中邏輯實體層則主要完成實體層包的合成與分解、添加擾碼和解擾碼、并串/串并轉換功能;電氣實體層則用于實作對 RocketIO 傳輸子產品的調用,并在其内部完成資料的差分驅動傳輸、多通道去抖、
8B/10B 編碼/解碼等功能。
TLP包組裝的方式根據事務類型的不同而有所差別,以存儲器操作事務類型為例對 TLP 包進行分析,存儲器型 TLP 包的組裝格式如圖。
TLP 的 12 個位元組的標頭檔案,所有的 R 位,都是為使用者保留的預留位,可以根據使用者需要進行添加。其中 type 标志位和 Fmt 标志位主要用于聲明標頭檔案的類型、大小及是否攜帶負載資料等特性;EP 标志位主要用于聲明事務操作是否正常,為 1 時丢棄負載資料;Length 标志位則用于标記本次 TLP 包所攜帶負載資料的大小,根據 PCIE 總線規範規定,存儲器類型事物中每次最大 4KB 的位址邊界,是以此處可選負載數量為 1~1024 個雙字;Address[63:2]标志位則用于實作起始位址的映射,此處最低 2 位預設為 00bit 主要是為了與與雙字對齊。
1.3.3 PCIE 總線配置空間
PCIE 總線的配置空間主要是由硬體闆卡中的特定位址寄存器實作的,在系統上電時BIOS 會對 PCIE 總線上的硬體闆卡進行檢測,當檢測到 PCIE 裝置配置空間時,會對其配置空間中的寄存器組進行讀取,并根據讀取到的配置資訊對PCIE 裝置進行系統配置,進而實作 PCIE 裝置的即插即用。
PCIE 總線的配置空間采用了 16 個配置寄存器,且以 04h 的偏移位址映了 0x00 至 0x3F 區間。由于 PCIE 總線的配置空間采用了 ID 尋址的方式,是以在這組寄存器中主要存儲了裝置、廠商、版本、分類編碼等 ID 資訊,上位機驅動會根據這些配置資訊來對硬體闆卡進行識别。在 PCIE 裝置中儲存的配置資訊必須和上位機驅動設定的 ID 資訊一緻,否則會導緻系統無法識别 PCIE裝置。
每個 PCIE 總線的配置空間包含 6 個基址寄存器(BAR0~5),主要用于映射 PCIE 存儲空間的位址。此處的 PCIE 存儲空間與配置空間是兩個不同的概念,存儲空間主要分為 Memory 和 I/O 兩種類型,其中Memory 類型主要用于對存儲容量要求較大的情況下,I/O 類型則用于存儲較小空間的使用者資訊。
1.4 PCIE總線方案選型
PCIE 總線接口的設計首先需要針對 PCIE 總線協定中各層的資料包進行嚴格的時序設計,同時為了保證配置空間的自動配置,PCIE 總線接口仍需要大量的存儲空間。
PCIE 總線接口的設計主要有專用橋接晶片、可程式設計邏輯器件兩種方案。
專用 PCIE 橋接晶片方案中,總線協定的事務層、資料鍊路層和實體層三層協定均由晶片完成。使用者手冊,對其使用者接口進行簡單的時序設計即可實作硬體裝置與PCIE 總線的資訊互動。
專用橋接晶片的設計方法能夠有效降低設計難度,但也為系統更新帶來了局限性,如其通道數量、傳輸速度、配置空間等性能名額均無法根據系統更新的需要進行靈活配置,同時導緻硬體成本的增加。
可程式設計邏輯器件方案中,基于 FPGA 器件中 IP 核的設計方法較為常見,總線協定中的資料鍊路層和實體層的所有功能均由 FPGA 器件完成,且其實體層的性能名額可以根據使用者需要進行配置,為系統更新提供了可行性。
PCIE IP 核的設計文檔及參考例程,使用者可以根據系統需要對其進行引用,且可以通過 Modelsim 軟體對其接口時序進行仿真,為系統設計提供了極大的便利性,有效縮短了開發周期。