行波進位加法器
行波進位加法器,又稱爲逐級進位加法器,從左至右,每一級產生的進位傳遞到高一級的加法單元后該單元才能輸出本級的運算結果,隨着加數位寬的增加,最終得到的運算結果的延遲會不斷增大,從而限制了系統的最高運算速度。
以32位二進制加法爲例,就是將一位的二進制加法重複32次(逐位進位加法器),由於每一位的CIN都是由上一位的COUT提供的,所以第二位的計算必須在第一位之後,,以此類推,最後的32位必須在前31位全部計算出結果後才能開始計算,這樣的計算使的實現32位的二進制加法所需時間是實現1位二進制加法的時間的32倍。
Example
以一個4位行波進位加法器代碼進行說明,
FA u0( .a(a[0]),.b(b[0]),.cin(c_in),.sout(sum[0]),.cout(c_tmp[0]) );
FA u1( .a(a[1]),.b(b[1]),.cin(c_tmp[0]),.sout(sum[1]),.cout(c_tmp[1]) );
FA u2( .a(a[2]),.b(b[2]),.cin(c_tmp[1]),.sout(sum[2]),.cout(c_tmp[2]) );
FA u3( .a(a[3]),.b(b[3]),.cin(c_tmp[2]),.sout(sum[3]),.cout(cout) );
最終u3.模塊的運算要在u0~u2全部運行完畢之後進行。
超前進位加法器
根據行波進位加法器可以知道,加法器中的每一級的和值sum和進位輸出cout都取決於前一級的進位輸入和本級的輸入。
全加器
定義:進行加數、被加數和低位來的進位信號相加,並根據求和結果給出該位的進行信號
邏輯表達式
S1=A^B^C ……加數與被加數異或
C1=AB|AC|BC…… 加數與被加數相與
半加器
定義:加法中並沒有考慮來自低位的定義,就是隻求本位的和下一位的進位,暫不考慮低位送來的進位數。
邏輯表達式:
S=A^B ……加數與被加數異或
C=AB…… 加數與被加數相與