敏捷開發宣言中,有一條定律是「可以工作的軟體勝過面面俱到的文件」。如何定義可可以工作的,這就是需求確定後架構設計的首要問題。而大部分看這句話的同志更喜歡後半句,用於作為不寫文件的藉口。
fpga的架構設計最首先可以確定就是外接介面,就像以前說的,穩定可靠的介面是成功的一半。介面的選擇需要考慮幾個問題。
1, 有無外部成熟ip。一般來說,altera和xilinx都提供大量的介面ip,採用這些ip能夠提公升研發進度,但不同ip在不同fpga上需要不同license,這個需要通過**商來獲得(中國國情,軟體是不賣錢的)。
2, 自研介面ip,能否滿足時間、進度、穩定性、及相容性的要求。
案例1設計乙個網路介面在邏輯設計上相對簡單,比如mii介面等同於4bit資料線的25mhz樣,而rgmii可以使用雙沿125mhz的取樣專用的雙沿取樣暫存器完成(使用暫存器原語)。但是如何支援與不同phy連線乙個相容性問題(所謂設計挑phy的問題,這個問題後面詳述)。
案例2:cpu通過介面連線fpga時,如果cpu此時軟復位,則有管腳會上拉,此時如果該管腳連線fpga介面是控制訊號且控制訊號高電平有效,則此時fpga邏輯必然出錯。同樣fpga在配置時,管教輸出高阻,如此時cpu上電且板級電路管腳上拉,則同樣會導致cpu取樣出錯(誤操作的問題)。
不能只是考慮編寫verilog****能對就行,介面設計應該站在系統的角度來看問題,問題不是孤立的,還是互相聯絡。
設計中,如果需要儲存大量資料,就需要在外部設計外部儲存器,這是因為fpga內部ram的數量是有限的。是採用sram、ddr2、ddr3。這就需要綜合考慮儲存資料大大小,因為sram的容量也有限,但是其介面簡單,實現簡單方便,且讀取延時較小。ddr2、ddr3的容量較大,介面複雜,但fpga內部有成熟ip可用,但是讀取的延時較大,從發起讀訊號到讀回資料一般在十幾個時鐘週期以上。如果對資料時延有要求,需要上一次儲存資料作為下一次使用,且資料量不太大(幾百k到幾兆),則sram是較好的選擇。而其他方面ddr2/ddr3是較好的選擇。為什麼不用sdram或者ddr。這是因為設計完畢,採購會告訴你,市場上這樣老的晶元基本都停產了。
fpga介面在設計選擇的原則就是:能力夠用,簡單易用。特別值得一提的是高速serdes介面,最好使用廠商給的參考設計,有硬核則不選擇軟核,測試穩定後,一定要專門的位置約束,避免後面新增的邏輯擁擠後影響到介面時序,也可避免介面設計人員與最終的邏輯設計人員扯皮(不新增過多邏輯,介面是好用的)。乙個分析高速serdes的示波器,取樣頻率至少20g甚至更高以上,動輒上百萬,出現問題,不一定有硬體條件可除錯。
回到開頭,如何定義「可用的」設計,穩定我想是前提,而介面的穩定性更是前提的前提。這裡穩定包括,滿負荷邊界測試,量產、環境試驗等一系列穩定可靠。而在架構設計中,就選擇成熟的介面,能有效的避免後續流程中的問題,從源頭保證產品的質量。
研發之道(8)架構設計漫談(三)時鐘和復位
介面確定以後,fpga內部如何規劃?首先應該時鐘和復位。時鐘 根據時鐘的分類,可以分為邏輯時鐘,介面時鐘,儲存器時鐘等 1.邏輯時鐘取決與邏輯的關鍵路徑,最終值是設計和優化的結果,從經驗而不是實際出發 低端fpga cyclone spantan 工作頻率在40 80mhz之間,而高階器件 stra...
架構設計之道
這個中介軟體系統的本質是希望能夠用分布式的方式來處理一些資料,但是具體的作用涉及到核心技術,所以這裡不能直接說明。但是他的核心思想,就是把資料分發到很多臺機器上來處理,然後需要有一台機器來控制n多台機器的分布式處理 那麼既然是分布式的處理,就肯定涉及到在master中要維護這個集群的一些核心元資料。...
IT四架構設計模型
按照頂層設計理論和方法的定義,資訊化頂層體系結構包括業務架構 資訊架構 應用架構和技術架構四大範疇。業務架構定義了整體業務能力以及各部門 各業務的協作關係,由業務要素模型表達整體業務能力,包括業務職能 業務布局和業務組合形態,由業務流程模型表達各部門 各業務的協作關係 資訊架構定義了全域性資訊資源組...