Vivado綜合屬性:USE_DSP
- 2019 年 10 月 31 日
- 筆記
在Vivado中,默認情況下用HDL描述的乘法、乘加、乘減、乘累加以及預加相乘最終都會映射到DSP48中,但是加法、減法和累加運算則會用常規的邏輯資源即查找表、進位鏈等來實現。相比於查找表,DSP48在功耗和速度上都有優勢。如果期望加法運算也能映射到DSP48中,那麼就要用到綜合屬性use_dsp(它取代了之前的use_dsp48,目前仍然可以使用use_dsp48,但建議使用新的名稱)。
該綜合屬性有4個值,分別是simd,logic,yes和no。這裡重點介紹simd。實際上simd(Single Instruction, Multiple Data)是DSP48的一個特徵。它使得48-bit的ALU可配置為4個12-bit的ALU(執行加法、減法或位邏輯運算)或者2個24-bit的ALU,如下圖所示。此時DSP48內部的乘法器是無法使用的。

從圖中可以看出,simd可以有效節省LUT和FF,同時提升時鐘頻率。在使用simd時,要遵循simd的代碼風格。如下圖所示的VHDL和Verilog代碼。


當只有一個加法操作時,將use_dsp的值設置為」yes」則可將該加法運算映射到DSP48內。
結論
-USE_DSP可使得加法、減法或累加映射到DSP內
-USE_DSP的simd可使得2個24-bit加法或4個12-bit加法映射到DSP內
上期內容:
下期內容:
Vivado綜合屬性:RAM_STYLE和ROM_STYLE


