系統(tǒng)架構確定,下一步就是fpga與各組成器件之間互聯(lián)的問題了。通常來說,cpu和fpga的互聯(lián)接口,主要取決兩個要素:
(1)cpu所支持的接口。
(2)交互的業(yè)務。
通常來說,fpga一般支持與cpu連接的數(shù)字接口,其常用的有emif,pci,pci-e,upp,網(wǎng)口(mii/gmii/rgmii),ddr等接口。作為總線類接口,fpga通常作為從設備與cpu連接,cpu作為主設備通過訪問直接映射的地址對fpga進行訪問。根據(jù)是否有時鐘同步,通??偩€訪問分為同步或異步的總線,根據(jù)cpu外部總線協(xié)議有所不同,但數(shù)據(jù)、地址、控制信號基本是總線訪問類型中總線信號所不能省略的。cpu手冊中會對信號定義和時序控制有著詳細的說明,fpga需要根據(jù)這些詳細說明來實現(xiàn)相應的邏輯。同時cpu還可以對訪問時序進行設置,比如最快時鐘,甚至所需的最小建立時間和保持時間,這些一般cpu都可以進行設置,而這些具體參數(shù),不僅影響fpga的實現(xiàn),也決定總線訪問的速度和效率。對于同步總線,只需要根據(jù)輸入時鐘進行采樣處理即可,但對于異步總線,則需要的對進入的控制信號進行同步化處理,通常處理方式是寄存兩拍,去掉毛刺。因此用于采樣的時鐘就與cpu所設置的總線參數(shù)相關,如采樣時鐘較低,等控制信號穩(wěn)定后在譯碼后輸出,一個總線操作周期的時間就會相對較長,其處理的效率也相對較低;假如采樣時鐘過快,則對關鍵路徑又是一個挑戰(zhàn),因此合理設定采樣頻率,便于接口的移植并接口的效率是設計的關鍵點和平衡點。
對于總線型的訪問來說,數(shù)據(jù)信號通常為三態(tài)信號,用于輸入和輸出。這種設計的目的是為了減少外部連線的數(shù)量。因為數(shù)據(jù)信號相對較多一般為8/16/32位數(shù)據(jù)總線。總線的訪問的優(yōu)勢是直接映射到系統(tǒng)的地址區(qū)間,訪問較為直觀。但相對傳輸速率不高,通常在幾十到100mbps以下。這種原因的造成主要為以下因素(1)受制總線訪問的間隔,總線操作周期等因素,總線訪問間隔即兩次訪問之間總線空閑的時間,而總線操作周期為從發(fā)起到相應的時間。(2)不支持雙向傳輸,并且fpga需主動發(fā)起對cpu操作時,一般只有發(fā)起cpu的中斷處理一種方式。這種總線型操作特點,使其可以用作系統(tǒng)的管理操作,例如fpga內部寄存器配置,運行過程中所需參數(shù)配置,以及數(shù)據(jù)流量較小的信息交互等操作。這些操作數(shù)據(jù)量和所需帶寬適中,可以應對普通的嵌入式系統(tǒng)的處理需求。
對于大數(shù)據(jù)流量的數(shù)據(jù)交互,一般采用專用的總線交互,其特點是,支持雙向傳輸,總線傳輸速率較快,例如gmii/rgmii、upp、專用lvds接口,及serdes接口。專用serdes接口一般支持的有pci-e,xaui,sgmii,sata,interlaken接口等接口。gmii/rgmii,專用lvds接口一般處理在1gbps一下的業(yè)務形式,而pci-e,根據(jù)其型號不同,支持幾gbps的傳輸速率。而xaui可支持到10gbps的傳輸速率,lnterlaken接口可支持到40gbps的業(yè)務傳輸。
對于不同所需的業(yè)務形式及處理器的類型,則可選擇相應的接口形式,來傳輸具體的業(yè)務。現(xiàn)今主流fpga中都提供的各種接口的ip。選擇fpga與各型cpu互聯(lián)接口,一般選擇主流的應用交互方案,特殊的接口缺少支撐ip,導致開發(fā)、調試、維護和兼容性的成本都較大,同時注意系統(tǒng)的持續(xù)演進的需要,如只在本項目使用一次,而下一項目或開發(fā)階段已摒棄此類接口,則需提前規(guī)劃技術路線。畢竟一個穩(wěn)定、高效的接口互聯(lián)是一個項目成功的基礎。
不是所有的嵌入式系統(tǒng)都需要“高大上”的接口形式,各類低速的穩(wěn)定接口也同樣在fpga的接口互聯(lián)中有著重要的角色,其中uart、spi、i2c等連接形式也非常的常見。畢竟,一個優(yōu)秀的設計不是“高大上”的堆積,而是對需求最小成本的滿足。適合的才是最美的。