陳燕鳳
摘 要:基于可編程邏輯器件FPGA和硬件描述語言VHDL的8位ALU的設(shè)計方法,該ALU單元有四個寄存器,其中三個為數(shù)據(jù)寄存器,一個為狀態(tài)寄存器。任意三個數(shù)據(jù)寄存器均可作為輸入操作數(shù)(操作數(shù)均為補(bǔ)碼)和輸出操作數(shù)。該ALU單元可實現(xiàn)左移、右移、加法、減法、乘法、與、或、非,指令的加載通過仿真代碼實現(xiàn)。
關(guān)鍵詞:FPGA;VHDL;ALU;算術(shù)邏輯運算
引言
目前FPGA技術(shù)正處于高速發(fā)展時期,新型芯片的規(guī)模越來越大,成本也越來越低,低端的FPGA已逐步取代了傳統(tǒng)數(shù)字元件,高端的FPGA不斷在爭奪ASIC市場份額。算術(shù)邏輯單元ALU應(yīng)用廣泛,是芯片上可編程系統(tǒng)不可缺的一部分,本文利用VHDL語言在FPGA芯片上設(shè)計8位算術(shù)邏輯運算單元ALU,通過VHDL語言實現(xiàn)ALU的功能,并用MAXPLUSII軟件進(jìn)行仿真。
一、設(shè)計概述
一種基于可編程邏輯器件FPGA和硬件描述語言的8位的ALU的設(shè)計方法。該ALU采用模塊設(shè)計方法,有寄存器模塊、控制模塊和顯示模塊組成,能實現(xiàn)8位無符號數(shù)的左移,右移,加,減,乘,與、或、非。該ALU在MAXPLUSII軟件環(huán)境下進(jìn)行功能仿真。
二、設(shè)計工作原理
ALU中包含4個寄存器,其中A,B,C為8位數(shù)據(jù)寄存器,其中A,B寄存器為輸入數(shù)據(jù)寄存器,C為操作數(shù)寄存器。D為狀態(tài)寄存器。
輸入的第一組數(shù)據(jù)(運算數(shù)),存儲在寄存器A中;輸入的第二組數(shù)據(jù)(運算數(shù)),存儲在B中;數(shù)據(jù)的第三組數(shù)據(jù)存儲在C中,根據(jù)C存儲器的數(shù)值,決定操作數(shù)A,B的運算方式(000->左移,001->右移,010->加法,011->減法,100->乘法,101->與,110->或,111->非)。當(dāng)C寄存器數(shù)據(jù)為000,001時,分別對寄存器A,B中的數(shù)值進(jìn)行移位后輸出,狀態(tài)寄存器無變化。當(dāng)C寄存器數(shù)據(jù)為101,110,111時,把A,B進(jìn)行對應(yīng)與,或,非操作,若運算結(jié)果為0,則改變狀態(tài)寄存器的值為0,若運算結(jié)果為非0值,狀態(tài)寄存器值不變。當(dāng)C寄存器數(shù)據(jù)為010,011,100時,把A,B進(jìn)行對應(yīng)的加,減,乘運算,當(dāng)運算結(jié)果為0,溢出,負(fù)數(shù)時,改變狀態(tài)寄存器數(shù)據(jù),否則,狀態(tài)寄存器數(shù)值不變。
三、設(shè)計流程圖
四、仿真實現(xiàn)
RST功能、復(fù)位,RST=0時,各計時器歸零,各輸出歸零。
時鐘CLK_R=200ns
時鐘CLK=200ns
CNT計時器,用于輸入輸出及運算的時序控制,6個一循環(huán)。
OPER運算控制000-111分別表示左移,右移,加,減,乘,與,或,非
SW_A第一個輸入數(shù)
SW_B第二個輸入數(shù)
LU_OUT運算結(jié)果,在CNT計時器計數(shù)為3時得出有效結(jié)果(當(dāng)前分別對應(yīng)復(fù)位,左移,右移,加,減,乘,與,或,非)。
HEX_H和HEX_L分別為運算結(jié)果高低位的數(shù)碼管輸出。
五、總結(jié)
本設(shè)計使用MAXPLUSII軟件進(jìn)行仿真,通過仿真結(jié)果分析可以看出實現(xiàn)設(shè)計要求的功能,此運算器設(shè)計充分利用FPGA和VHDL語言的特點實現(xiàn)了ALU功能。隨著FPGA技術(shù)的發(fā)展,VHDL語言在硬件電路設(shè)計中,越來越顯示出其優(yōu)勢,我們還可根據(jù)實際情況制定一個具有靈活性、可靠性和可擴(kuò)展的,大于八位的ALU。
參考文獻(xiàn):
[1]孔哲,王偉基于FPGA的32位ALU的設(shè)計與實現(xiàn)[J]信息技術(shù),2013(12)
[2]張慶玲,楊勇FPGA原理與實踐[M]北京航空航天大學(xué)出版,2006