數學運算(一)—— 無符號數加法器
數學運算(二)——無符號數乘法器結構(待更)
數學運算(三)——無符號數除法器(待更)
數學運算(四)——帶符號整數的運算(待更)
數學運算(五)——定點數和科學計數的四則運算(待更)
數學運算(六)——矩陣計算(待更)
數學運算(七)——通用非線性函數計算(待更)
數學運算(八)——通用非線性函數的CORDIC方法(待更)
本系列學習自《IP核芯志》
從今天開始,我們開啟一個新的序列——數學運算。(拖更這麼久,好久沒開張了,還有點小興奮)
第一節呢,我們就來說一說比較簡單的的,無符號數加法器。
1bit的半/全加器大家想必已經很熟了(半加器是忽略了c0的信號,全加器是後面幾個信號都全的),輸入加數a、加數b和低位進位信號c0,輸出的是結果s和進位信號c1。這幾個信號都是1bit。我們就不再說這個全/半加器的設計,我們來講一講這個多bits的加法器。以4bits加法器為例,最基本的組合邏輯的加法器就是逐次進位加法器,如圖。這種單元設計的最高頻率是最低的。
這種「糖葫蘆結構」,在位寬變大時,允許的最高時鐘工作頻率急劇降低。假設加法器處理速度為1ns,在傳輸線上的時延也是1ns,這個系統看下來就是7ns。慢的呀……
如果要是要上速度的話,那麼就要使用流水線了。上面糖葫蘆結構速度慢的主要原因,是每一級運算都要等待上一級的運算結果。而等待的結果就是進位信號,他也就只有0或1兩種可能。我們把運算分解為兩部:第一步就是算出所有的可能結果,第二步就是根據進位信號再去選。由於選擇器勢必比加法器運算速度快得多,所以每一步流水都可以容納更多的逐次進位的處理。如圖是一個三級加法器的分段設計。
但是!這僅僅是介紹一種思路,並不是說這個結構能有多好。首先,這麼多全加器,而且輸入數據的速率也不能很高。並不是適合的設計結構。
去除書中的兩種錯誤演示,直接看正確的範例,無符號數加法器的流水線結構如此:
其實這種1bit的流水線設計,在實際工程裡面,幾乎沒用,但是這確實一個很好的模型去練習。