基于FPGA的多項(xiàng)式運(yùn)算器設(shè)計(jì)
3 運(yùn)算器設(shè)計(jì)
3.1 四則運(yùn)算電路
文獻(xiàn)中瞄述了各種無符號(hào)整數(shù)間的運(yùn)算電路。雖然也可以進(jìn)行用反碼表示的符號(hào)數(shù)的運(yùn)算,但不傾向于使用。因?yàn)樾枰鏊膭t混合運(yùn)算;反碼易于做加、減法,但不易做乘、除法。而用非反碼的帶符號(hào)位的數(shù)據(jù),符號(hào)位做單獨(dú)計(jì)算,其余數(shù)據(jù)做無符號(hào)運(yùn)算,整個(gè)計(jì)算結(jié)構(gòu)是最簡單的。另外即便是無符號(hào)數(shù)做除法也很復(fù)雜,不過考慮到有種特殊的除法運(yùn)算除外,那就是對于二進(jìn)制數(shù)去掉最末位就相當(dāng)于除以2。所以運(yùn)算時(shí)可以盡量避免除以非2倍數(shù)的數(shù),以此來簡化計(jì)算。
表示小數(shù)在計(jì)算中是必須的。文獻(xiàn)中介紹了二進(jìn)制定點(diǎn)小數(shù),比如需要保留數(shù)的2位二進(jìn)制小數(shù)位,可以將二進(jìn)制小數(shù)“…b3b2b1.a(chǎn)1 a2”表示為:
運(yùn)算中還是可以視為對整數(shù)的計(jì)算。這樣用無符號(hào)的定點(diǎn)數(shù)進(jìn)行計(jì)算,配合獨(dú)立的符號(hào)位表示正負(fù),就可以用簡單的無符號(hào)運(yùn)算器進(jìn)行復(fù)雜的運(yùn)算。
3.2 多項(xiàng)式的變換
式(4)為一個(gè)3次多項(xiàng)式,以它為例來介紹設(shè)計(jì)方法:
y=a0+a1×x+a2×x2+a3×x3 (4)
首先將式(4)中所有的數(shù)都用一個(gè)符號(hào)位加無符號(hào)二進(jìn)制形式表示。分別用N1,N2表示y和x中包含的小數(shù)位數(shù),可以將式(4)寫成:
式中:X,Y是x,y去掉小數(shù)點(diǎn)后的整數(shù)(注:這里和式(3)一樣只是去掉小數(shù)點(diǎn),不是去掉小數(shù)位)。A0,A1,A2,A3作為系統(tǒng)的常數(shù)也是一樣;n0,n1,n2,n3分別是a0,a1,a2,a3二進(jìn)制形式的小數(shù)位數(shù)??梢赃M(jìn)一步變換式(5)為:
不難發(fā)現(xiàn)式(6)是很容易實(shí)現(xiàn)的。先進(jìn)行各項(xiàng)符號(hào)位的計(jì)算,然后就只剩下無符號(hào)整形數(shù)據(jù)計(jì)算;而且除法全是除以2的倍數(shù)。最后各項(xiàng)之間根據(jù)符號(hào)位做加、減運(yùn)算就得到輸出Y,是帶符號(hào)有N1位小數(shù)的定點(diǎn)數(shù)。
評(píng)論