FPGA全局復(fù)位及局部復(fù)位設(shè)計
隨著FPGA設(shè)計越來越復(fù)雜,芯片內(nèi)部的時鐘域也越來越多,使全局復(fù)位已不能夠適應(yīng)FPGA設(shè)計的需求,更多的設(shè)計趨向于使用局部的復(fù)位。本節(jié)將會從FPGA內(nèi)部復(fù)位“樹”的結(jié)構(gòu)來分析復(fù)位的結(jié)構(gòu)。
本文引用地址:http://2s4d.com/article/189899.htm我們的復(fù)位線將會是一個和時鐘一樣多扇出的網(wǎng)絡(luò),如此多的扇出,時鐘信號是采用全局時鐘網(wǎng)絡(luò)的,那么復(fù)位如何處理?有人提出用全局時鐘網(wǎng)絡(luò)來傳遞復(fù)位信號,但是在FPGA設(shè)計中,這種方法還是有其弊端。一是無法解決復(fù)位結(jié)束可能造成的時序問題,因為全局網(wǎng)絡(luò)的延時較大,并且不可以直接連到寄存器的復(fù)位端。仍然需要局部走線,這對于時序要求緊張的場合,較難滿足時序;二是會占用全局時鐘資源,多個復(fù)位信號會占用更多的全局時鐘資源。
在這里提出一個區(qū)域化復(fù)位的方案,如圖1所示。外部的異步復(fù)位信號被二級寄存器同步化之后,復(fù)制不同的復(fù)位寄存器連到不同的模塊來作為復(fù)位控制。如果單個模塊的復(fù)位扇出太大的話,還可以在模塊內(nèi)部復(fù)制復(fù)位寄存器。強烈建議那些在datapath上不需要復(fù)位的寄存器不要在代碼中復(fù)位,因為這樣會增加復(fù)位信號的扇出,并增加邏輯資源和降低邏輯速度。
對于那些有多個時鐘區(qū)域,需要多個時鐘區(qū)域內(nèi)獨立復(fù)位的設(shè)計由多個同步化的寄存器的模塊來完成同步,然后送到各模塊進行復(fù)位。
當然,對于選擇同步化的異步復(fù)位的方案,也可以如圖2所示來安排復(fù)位。將復(fù)位信號轉(zhuǎn)換成同步后送到不同的模塊,在各模塊中進行同步化處理,各模塊完成自己的本地復(fù)位。
圖1模塊化復(fù)位
圖2 同步化異步復(fù)位之模塊化復(fù)位
綜合本節(jié)說明的復(fù)位路徑設(shè)計,推薦采用局部復(fù)位,即各模塊或多個模塊采用自己的獨立復(fù)位信號。
評論