研發之道(8)架構設計漫談(三)時鐘和復位

2021-06-22 17:21:58 字數 2097 閱讀 8494

介面確定以後,fpga內部如何規劃?首先應該時鐘和復位。

時鐘:根據時鐘的分類,可以分為邏輯時鐘,介面時鐘,儲存器時鐘等;

1.         邏輯時鐘取決與邏輯的關鍵路徑,最終值是設計和優化的結果,從經驗而不是實際出發:低端fpga(cyclone spantan)工作頻率在40-80mhz之間,而高階器件(stratix virtex)可達100-200mhz之間,根據各系列的先後效能會有所提公升,但不是革命性的。

2.         介面時鐘,非同步訊號的時序一般也是通過fpg**內同步邏輯產生,一般需要同步化,即介面的同步化取樣。某些介面的同步時鐘一般是固定而精確的,例如下示,如serdes的時鐘盡量由該bank的專用時鐘管腳輸入,這樣可保證一組serdes組成的高速介面時鐘偏斜一致。

介面名稱

ip輸入時鐘 備註

mii25mhz

rgmii/gmii

125mhz

xaui

156.25mhz 差分

ip內部倍頻使用

pci33mhz

pci-e

100mz

差分輸入

ip內部倍頻使用

3.         外部儲存器時鐘:這裡時鐘主要為lpddr/ddr2/ddr3等器件的時鐘,一般來說fpga的介面不用工作在相應器件的最高頻率。能夠滿足系統快取資料的效能即可,但是一般這些ip的介面都規定了相應的最小時鐘頻率,因為這些介面狀態機需不停進行外部器件的重新整理(充電),過低的頻率可能會引起重新整理的問題,造成資料丟失或者不穩定。

4.         另外一些需要輸出的低速時鐘,例如i2c、mdio、低速取樣等操作,可以通過內部分頻得到。不用通過pll/dcm產生所需時鐘。在xilinx的fpga中,禁止pll產生的時鐘直接輸出到管腳上,而altera的器件可以如此操作。解決此類問題的方法可通過oddr器件通過時鐘及其180度相位時鐘(反向)接入的時鐘管腳分別取樣0、1邏輯得到。

因為有了dcm/pll這些專用產生時鐘的器件,似乎產生任意時鐘輸出都是可能是,但實際例化的結果,時鐘的輸出只能選取某些範圍和某些頻率,取決於輸入時鐘和分頻係數,clk_out = clk_in *(m/n) 。這些分頻係數基本取整數,其產生的頻率也是有限的值。

復位:根據復位的分類,fpga內部復位可以分為硬復位,邏輯復位、軟復位等;

硬復位:故名思議,即外部引腳引入的復位,可以在上電時給入,使整個fpga邏輯配置完成後,能夠達到穩定的狀態,這種復位重要性在於複雜單板上除了fpga外,可能還有多個器件(cpu、dsp),其上電順序不同,在未完成全部上電之前,其工作狀態為不穩定狀態。這種復位引腳可以通過專用時鐘管腳引入,也可通過普通i/o引入,一般由單板mcu或者cpld給出。

邏輯復位:則是由fpga內部邏輯產生,例如可以通過計數產生,等待一段時間開始工作,一般等待外部某些訊號準備好,另一種fpga內部邏輯準備好的狀態訊號,常見的有dcm/pll的lock訊號;ddr1/2/3等等介面ip的init_done訊號,標示介面ip初始化完成,此時介面ip才能正常工作,一般在300us-1ms之間。只有內部各邏輯準備好後,fpga才能正常工作。另外fpga內部如設計邏輯的看門狗的話,其產生的復位屬於這個層次。

軟復位:嚴格的說,應屬於除錯介面,指fpga接收外部指令產生的復位訊號,用於復位某些模組,用於定位和排除問題,也屬於可測性設計的一部分。例如fpga通過emif介面與cpu連線,內部設定軟復位暫存器,cpu通過寫此暫存器可以復位fpga內部單元邏輯。除錯時,fpga返回錯誤或無返回,通過軟復位能否恢復,可以迅速定位分割問題,加快除錯速度。

這三個復位一般通過或者的方式(高電平或、低電平與),產生統一的復位給各模組使用。

問題:同步復位好、還是非同步復位好?xilinx雖然推薦同步復位,但也不一概而論,復位的目的是使整個系統處於初始狀態,這根據個人寫**經驗,這些操作都可以,前提是整個設計為同步設計,時鐘域之間相互隔開,復位訊號足夠長,而不是毛刺。

時鐘和復位基本上每個模組的基本輸入,也是fpga架構上首先要規劃的部分,而不要用到才考慮,搞的整個設計到處例化dcm或者輸出lock進行復位,這些對於工程的可維護性和問題定位都沒有益處。《治家格言》說:「宜未雨而綢繆,毋臨渴而掘井。這與fpga時鐘和復位的規劃是同乙個意思。

FPGA研發之道(7)架構設計漫談(二)

敏捷開發宣言中,有一條定律是 可以工作的軟體勝過面面俱到的文件 如何定義可可以工作的,這就是需求確定後架構設計的首要問題。而大部分看這句話的同志更喜歡後半句,用於作為不寫文件的藉口。fpga的架構設計最首先可以確定就是外接介面,就像以前說的,穩定可靠的介面是成功的一半。介面的選擇需要考慮幾個問題。1...

架構設計之道

這個中介軟體系統的本質是希望能夠用分布式的方式來處理一些資料,但是具體的作用涉及到核心技術,所以這裡不能直接說明。但是他的核心思想,就是把資料分發到很多臺機器上來處理,然後需要有一台機器來控制n多台機器的分布式處理 那麼既然是分布式的處理,就肯定涉及到在master中要維護這個集群的一些核心元資料。...

MMO遊戲設計三 架構設計

首先要說明,這裡談的架構,並不是說遊戲伺服器由哪些功能伺服器搭建而成,而是想重點談談乙個好的遊戲架構,應該具備哪些特質。對網遊來說,玩家所操作的客戶端資料,往往是服務端針對該玩家資料的映象。打個比方,客戶端儲存了本角色的a的hp,mp等資料,服務端同樣也儲存了角色a的hp,mp。另外,當a的hp,m...