基于FPGA的32位ALU軟核設(shè)計(jì)
目前許多FPGA的邏輯資源(LE)都已超過1萬門,使得片上可編程系統(tǒng)SOPC已經(jīng)成為可能。算術(shù)邏輯單元ALU應(yīng)用廣泛,是片上可編程系統(tǒng)不可或缺的一部分。利用VHDL語言在FPGA芯片上設(shè)計(jì)ALU的研究較少,文中選用FPGA來設(shè)計(jì)32位算術(shù)邏輯單元ALU,通過VHDL語言實(shí)現(xiàn)ALU的功能。
1 電路總體設(shè)計(jì)思想
算術(shù)邏輯單元ALU采用模塊化設(shè)計(jì),可以完成32位有符號數(shù)和無符號數(shù)的加減乘除,還可以實(shí)現(xiàn)9種邏輯運(yùn)算、6種移位操作以及高低字節(jié)內(nèi)容互換等操作。
總體設(shè)計(jì)圖,如圖1所示。當(dāng)you_wu=1時(shí)實(shí)現(xiàn)有符號數(shù)加減乘除運(yùn)算,否則為無符號數(shù)運(yùn)算。進(jìn)行有符號數(shù)加減運(yùn)算時(shí)c為符號位,無符號數(shù)加減運(yùn)算時(shí)c表示進(jìn)位或借位。加減法運(yùn)算和邏輯運(yùn)算結(jié)果存于y1。乘運(yùn)算時(shí),y1放高32位,y2放低32位。除法運(yùn)算時(shí)y1放商,y2放余數(shù)。a,b表示兩路32位輸入數(shù)據(jù)。
2 主要模塊功能分析
算術(shù)邏輯單元ALU包含5個(gè)模塊:控制模塊、邏輯模塊、加減法模塊、乘法模塊和除法模塊??刂颇K比較簡單,即1個(gè)2線~4線譯碼器,完成其他模塊的控制與選擇。當(dāng)ctr=00時(shí)完成邏輯運(yùn)算,ctr=01時(shí)完成加減法運(yùn)算,ctr=10時(shí)完成乘法運(yùn)算,ctr=11時(shí)完成除法運(yùn)算。
2.1 邏輯運(yùn)算模塊
本模塊實(shí)現(xiàn)與、或、非、與非、或非、異或、同或、邏輯左移、邏輯右移、算術(shù)左移、算術(shù)右移、邏輯循環(huán)左移、邏輯循環(huán)右移以及高低半字(16位)分別取反和高低字內(nèi)容互換等操作。用1個(gè)case語句即可實(shí)現(xiàn)上述全部功能。
2.2 加減法模塊
加減法模塊可根據(jù)需要完成32位有符號數(shù)和無符號數(shù)的加減運(yùn)算,在程序開始時(shí)先判斷所要進(jìn)行的運(yùn)算有無符號數(shù),對于有符號數(shù),用符號位將兩組數(shù)擴(kuò)展為33位二進(jìn)制數(shù),否則用0擴(kuò)展為33位二進(jìn)制數(shù),其中減法運(yùn)算采用補(bǔ)碼實(shí)現(xiàn),所以整個(gè)程序只有加法運(yùn)算。程序只占用68個(gè)邏輯資源(LE),非常節(jié)省資源,而且速度很快,是一種優(yōu)化設(shè)計(jì)。仿真圖如圖2所示。
評論