「精品博文」關於桶形移位寄存器的討論

圖像處理 科技 電子技術應用 電子技術應用 2017-08-25

桶形移位寄存器即循環移位寄存器,在浮點加減運算、壓縮/解壓縮和圖像處理算法中有應用,所以稍微說明下:

例如設計一個8位桶形移位器:8位桶形移位器是有8個數據輸入位,8個數據輸出位和3個控制輸入位的組合邏輯電路,其輸出字等於輸入字的循環移位,循環移位的次數由控制輸入位指定。比如,如果輸入字等於ABCDEFGH(每個字母表示一位),且輸入控制位為101(5),則輸出字為FGHABCDE。

學校裡的一些教材給出的寫法是:

「精品博文」關於桶形移位寄存器的討論

然而,這樣的設計並不能產生寄存器,綜合出的結果只是純組合電路。(不過可以通過綜合指令或約束,保留寄存器)在Diamond下(使用LSE綜合工具)得到的結果為:

「精品博文」關於桶形移位寄存器的討論

從面積的角度來說,這種設計方式的確可以節省資源,但是在高速時序電路中。這樣的設計就不是很合理了。

隨著FPGA技術的發展,各個廠商已經為開發者提供了大量的IP、基本設計的功能塊(原語)等。在包含DSP Slice的器件中,設計者可以很方便的使用DSP進行桶形移位寄存器設計。但是也有一些早期的FPGA或者是CPLD中並不包含DSP Slice的,但是廠商也為設計者提供了基本的功能塊,在綜合設計的時候,會自動識別用戶設計,並用功能塊進行例化。

下面給出另一種設計:

「精品博文」關於桶形移位寄存器的討論

其綜合結果如下圖所示:

「精品博文」關於桶形移位寄存器的討論

可以發現,綜合工具將移位部門的設計自動替換為廠商提供的功能塊。

相關推薦

推薦中...