|
作者:阿昏豆 作為FPGA工程師來說,碰到新的問題是設計中最常見的事情了,技術發展趨勢日新月異,所以經常會有新的概念,新的需求,新的設計等待去實現。不是每個通過BAIDU或者GOOGLE都有答案。 因此,新的設計經常會有,那如何實現? 假設,FPGA需要設計一個接口模塊,那我們就需要了解一下幾個問題: (1) 同步接口還是異步接口模塊; (2) 有哪些信號,功能是什么? (3) 信號之間時序關系是什么? (4) 傳遞的效率能夠達到多少; (5) 等等! 誰會給予這些答案,有一個好的tutor就是“datasheet”,一般來說FPGA設計一個接口模塊,必然與其他硬件電路進行連接。 假如是外部連接接口為總線接口,那至少包括卻不限于以下信號, (1) 地址:能夠支持的最大地址空間,數據和地址是否復用接口; (2) 數據:一般讀數據和寫數據復用同一接口,一般數據信號此時都為三態。三態信號有OE信號。 (3) 讀寫命令。單次的讀操作、單次的寫操作 (4) 是否支持突發傳輸,burst的讀寫操作 (5) 同步還是異步。 (6) 控制信號之間的相位關系及建立保持時間的要求。
圖為 TI 系列35X系列處理器的GPMC的接口,由圖中可以看出其時鐘、地址、數據等操作信號。 如果是同步并行接口,一般用于數據流傳輸,如AD/DA的輸入或輸出,網口PHY的輸出信號等,一般的同步并行信號,通常包括,(1)時鐘信號、(2)數據、信號(3)使能信號等。
上圖為RMII的數據接口,圖中可以看到其控制信號,數據信號及使能信號。作為流傳輸接口,一般可以支持雙向雙工傳輸。上述兩種接口描述了兩種主流的FPGA的外部接口,即總線接口和流傳輸接口。通過軟件定義和FPGA內部邏輯設計,總線接口可以實現流的傳輸(總線接口實現雙向傳輸,可以通過輪詢和中斷兩種方式實現),同時流傳輸接口也可以實現總線讀寫功能?梢愿鶕唧w的使用環境進行設計。 SERDES接口則是另一種數據流的傳輸接口, 現在FPGA的serdes最高可以支持到28Gbps。實際上為了滿足減少板級連線,并且提高傳輸速率的需求。集成更多的SERDES也是FPGA發展的趨勢。
上圖為SERDES的框圖,由PCS和PMA模塊構成,PMA一般為硬核IP,PCS為軟核或者硬核模塊,收發獨立,且都為差分信號(serdes將在后續章節詳述)。值得一提的是,SERDES接口對FPGA邏輯的接口一般固定位同步并行接口,數據信號位寬都較大。 這些接口如何做詳細設計,一方面可根據其上述共性特點,這能夠對其特點有大概的認識,另一方面則是FPGA連接的器件的DATASHEET。根據這些器件接口功能的描述和支持的特性。FPGA可根據需要和功能特性,進行有選擇的實現(例如總線接口不需要brust操作,則可只實現單次的讀寫,就可以滿足業務的需求,進行功能裁剪和簡化等等)。 接口設計完成,FPGA就要對設計進行基本測試。對于流接口來說,能夠支持環回的功能的話(即將收到數據流再發回),就極大方便測試。對于總線接口則需要支持對FPGA內部某地址的讀寫操作的測試。這就屬于可測性設計的范疇。(后續將專題詳述FPGA的可測性設計)。 如果一個模塊沒有任何的輸入輸出,其再復雜的功能也等同一塊石頭,或者只有輸入,沒有輸出也等同一塊石頭。因此輸入和輸出則是一個設計的第一步。 |