|
邏輯復制與資源共享 本文節(jié)選自特權同學的圖書《FPGA設計實戰(zhàn)演練(邏輯篇)》 配套例程下載鏈接:http://pan.baidu.com/s/1pJ5bCtt 邏輯復制是一種通過增加面積來改善時序條件的優(yōu)化手段。邏輯復制最主要的應用是調(diào)整信號的扇出。如果某個信號需要驅(qū)動的后級邏輯信號較多,換句話說,也就是其扇出非常大,那么為了增加這個信號的驅(qū)動能力,就必須插入很多級的Buffer,這樣就在一定程度上增加了這個信號的路徑延時。這時可以復制生成這個信號的邏輯,用多路同頻同相的信號驅(qū)動后續(xù)電路,使平均到每路的扇出變低,這樣不需要插入Buffer就能滿足驅(qū)動能力增加的要求,從而節(jié)約該信號的路徑延時。 資源共享和邏輯復制恰恰是邏輯復制的一個逆過程,它的好處就在于節(jié)省面積,同時可能也要以速度的犧牲為代價。(特權同學,版權所有) 看一個實例,如下: // Verilog例程 module example(sel, a, b, c, d, sum); input sel,a,b,c,d; output[1:0] sum; wire[1:0] temp1 = {1'b0,a}+{1'b0,b}; wire[1:0] temp2 = {1'b0,c}+{1'b0,d}; assign sum = sel ? temp1:temp2; endmodule 該代碼綜合后的視圖如圖5.12所示,和我們的代碼表述的一致,有連個加法器進行運算,結果通過2選1選擇器后輸出給sum。(特權同學,版權所有)
同樣實現(xiàn)這個的功能,我們還可以這么編寫代碼: // Verilog例程 module example(sel, a, b, c, d, sum); input sel; input[7:0] a,b,c,d; output[7:0] sum; wire[7:0] temp1 = sel ? a:c; wire[7:0] temp2 = sel ? b:d; assign sum = temp1+temp2; endmodule 綜合后的視圖如圖5.13所示,原先兩個加法器我們現(xiàn)在用一個加法器同樣可以實現(xiàn)。而原先的一個2選1選擇器則需要4選2選擇器(可能是兩個2選1選擇器來實現(xiàn))替代。如果在設計中加法器資源更寶貴些,那么后面這段代碼通過加法器的復用,相比前面一段代碼更加節(jié)約資源。(特權同學,版權所有)
|