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), 但這會降低throughput與max 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
沒有留言:
張貼留言