2016年1月6日 星期三

FPGA 速度架構筆記(Latency)


Reference Book : Advanced FPGA Design by Steve Kilts
這篇文章僅是記錄對我來說重要的部分,細節請參閱參考書籍, 這本書真的是本好書!

決定FPGA的速度有三大因素 throughput, latency, timing
Throughtput :  每秒可以處理的資料量(bits per second)
Latency :  輸入資料與輸出處理過後的資料之間的時間(time or clock cycle)
Timing :  sequential element之間的logic delay (clock period or frequency), 如果設計沒有”meet  
                 timing” 表示critical path 大於clock period


throughput相反,要達到low Latency的秘訣就是減少pipeline, 書中以之前的例子繼續做比較
一個Low Latency設計,需要平行化(parallelisms),移除pipeline(removal pipelining),邏輯捷徑(logical short cuts), 但這會降低throughputmax clock speed.

下面的例子為low Latency, pipeline的環境中,每一個Stage都要等上一個stage完成後才能工作,但是在這個例子中不用pipeline,而用combinational expressions,所以不用等待前一級的資料


// reference from : Advanced FPGA Design by Steve Kilts

module power3(
	input [7:0] X,
	output [7:0] XPower);
	
reg [7:0] XPower1, XPower2;
reg [7:0] X1,X2;

assign XPower = XPower2 * X2;

always@(*)
begin 
	X1		<= X;
	XPower1	<= X;
end
	
always@(*)
begin 
	X2		<= X1;
	XPower2	<= XPower1*X1;
end

end module;

Throughput  : (8/1,假設每個clock都有資料輸入)
Latency : 第一個乘法器與第二個乘法器間的delay
Timing  : 兩個乘法器的delay

結論: 要降低latency,必須移除pipeline,但是這樣會增加register之間的combinational delay




沒有留言:

張貼留言