引言
卷積佔據了CNN網路中絕大部分運算,進行乘法運算通常都是使用FPGA中的DSP,這樣算力就受到了器件中DSP資源的限制。比如在zynq7000器件中,DSP資源就較少,神經網路的性能就無法得到提升。利用xilinx器件中LUT的結構特徵,設計出的乘法器不但能靈活適應數據位寬,而且能最大限度降低LUT資源使用。
01
Xilinx ultrascale器件LUT結構
在這裡簡要介紹一下ultrascale系列器件中的LUT結構,有助於後邊對乘法器設計思路的理解。CLB(configuratble logic block)是主要的資源模塊,其包含了8個LUT,16個寄存器,carry邏輯,以及多路選通器等。其中LUT可以用作6輸入1輸出,或者兩個5輸入LUT,但是這兩個LUT公用輸入,具有不同輸出。每個LUT輸出可以連接到寄存器或者鎖存器,或者從CLB輸出。LUT可以用於64x1和32X2的分散式RAM,一個CLB內最大可以支持512X1大小的RAM。RAM的讀寫地址和輸入的讀寫數據是共享的,數據通道可以使用x和I介面。LUT還可以配置用於4:1選通器,CLB最大能夠支持到32:1的選通器。CLB中的carry邏輯含有異或門和產生進位的門,用於生成進位數據。