資源描述:
《2006031459 黃德榮 5位逐級進位和超前進位加法器設(shè)計》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、深圳大學實驗報告課程名稱:VHDL數(shù)字電路設(shè)計教程實驗項目名稱:5位逐級進位和超前進位加法器設(shè)計學院:信息工程學院專業(yè):電子信息工程指導教師:梁松海報告人:黃德榮學號:20006031459班級:1班實驗時間:2008.10.22實驗報告提交時間:2008.11.5教務(wù)處制實驗目的與要求:用XILINXISE7.1i實現(xiàn)逐級進位和超前進位加法器方法、步驟:1,逐級進位加法器對每一位都使用了全加器FAU,圖中a和b是輸入位,cin是進位輸入位。S是求和的結(jié)果,cout是進位輸出位。C是進位矢量。圖中
2、每個全加器的輸出結(jié)果都依賴于前一級產(chǎn)生的進位。由全加器的特性,可以寫出如下的邏輯表達式:S=aXORbXORcincout=(aANDb)OR(aANDcin)OR(bANDcin)2,超前進位加法器電路實現(xiàn)是需要兩個非常重要的中間信號:generate和propagate,分別由g和p表示。加法器兩個輸入位是a和b,則generate和propagate信號定義如下:g=aANDbp=aXORb這兩個信號與進位無關(guān),只根據(jù)當前的輸入計算。現(xiàn)在兩個輸入矢量是:a=a(4)a(3)a(2)a(1)a(
3、0)和b=b(4)b(3)b(2)b(1)b(0),那么相應的generate矢量為g=g(4)g(3)g(2)g(1)g(0),相應的propagate矢量為p=p(4)p(3)p(2)p(1)p(0)。其中:g(j)=a(j)ANDb(j)p(j)=a(j)XORb(j)同時,進位矢量用c=c(4)c(3)c(2)c(1)c(0)。進位可由g和p按照下面的方法計算得到:c(0)=cin;c(1)=c(0)p(0))+g(0);c(2)=c(0)p(0)p(1))+g(0)p(1)+g(1);c(
4、3)=c(0)p(0)p(1)p(2)+g(0)p(1)p(2)+(g(1)p(2)+g(2);c(4)=c(0)p(0)p(1)p(2)p(3)+g(0)p(1)p(2)p(3)+g(1)p(2)p(3)+g(2)p(3)+g(3);c(5)=c(0)p(0)p(1)p(2)p(3)p(4)+g(0)p(1)p(2)p(3)p(4)+g(1)p(2)p(3)p(4)+g(2)p(3)p(4)+g(4);可見超前進位加法器的每個全加器不依賴與前一級進位輸出的計算結(jié)果,有利于提高電路執(zhí)行速度。實驗過程
5、及內(nèi)容:1,逐級進位加法器VHDL代碼----------------------------------------------------------------------------------Company:--Engineer:----CreateDate:02:59:1810/22/08--DesignName:--ModuleName:adder-Behavioral--ProjectName:--TargetDevice:--Toolversions:--Description:-
6、---Dependencies:----Revision:--Revision0.01-FileCreated--AdditionalComments:----------------------------------------------------------------------------------libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.
7、ALL;----Uncommentthefollowinglibrarydeclarationifinstantiating----anyXilinxprimitivesinthiscode.--libraryUNISIM;--useUNISIM.VComponents.all;entityadderisport(a,b:instd_logic_vector(4downto0);cin:instd_logic;s:outstd_logic_vector(4downto0);cout:outstd_l
8、ogic);endadder;architectureBehavioralofadderissignalc:std_logic_vector(4downto0);beginc(0)<=cin;s(0)<=a(0)xorb(0)xorc(0);c(1)<=(a(0)andb(0))or(a(0)andc(0))or(b(0)andc(0));s(1)<=a(1)xorb(1)xorc(1);c(2)<=(a(1)andb(1))or(a(1)andc(1))or(b(1