8位全加器可由2個(gè)4位的全加器串聯(lián)組成,因此,先由一個(gè)半加器構(gòu)成一個(gè)全加器,再由4個(gè)1位全加器構(gòu)成一個(gè)4位全加器并封裝成元器件。加法器間的進(jìn)位可以串行方式實(shí)現(xiàn),即將低位加法器的進(jìn)位輸出cout與相臨的高位加法器的最低進(jìn)位輸入信號(hào)cin相接最高位的輸出即為兩數(shù)之和。最后一個(gè)Cout輸出進(jìn)位,D8顯示。
時(shí)序仿真
1、建立波形文件。為此設(shè)計(jì)建立一個(gè)波形測(cè)試文件。選擇File項(xiàng)及其New,再選擇右側(cè)New窗中的vector Waveform file項(xiàng),打開波形編輯窗。
2、輸入信號(hào)節(jié)點(diǎn)。在波形編輯窗的左方雙擊鼠標(biāo),在出現(xiàn)的窗口中選擇Node finder,在彈出的窗口中首先點(diǎn)擊List鍵,這時(shí)左窗口將列出該項(xiàng)設(shè)計(jì)所以利用中間的“=》”鍵將需要觀察的信號(hào)選到右欄中。
3設(shè)定仿真時(shí)間寬度。選擇edit項(xiàng)及其End time選項(xiàng),在End time選擇窗中選擇適當(dāng)?shù)姆抡鏁r(shí)間域,本次實(shí)驗(yàn)由于是八位的全加器,為避免延遲太大不利于顯示,可將End Time 設(shè)置為50ms,以便有足夠長(zhǎng)的觀察時(shí)間和便于分析的波形仿真波形圖。
4、波形文件存盤。選擇File項(xiàng)及其Save as選項(xiàng),按OK鍵即可。存盤窗中波形文件名是默認(rèn)的(這里是adder.scf所以直接存盤即可。
5、運(yùn)行仿真器。點(diǎn)擊processing中的Start simulation選項(xiàng),如圖是仿真運(yùn)算完成后的時(shí)序波形。注意,剛進(jìn)入如圖所示的窗口時(shí),應(yīng)該將最下方的滑標(biāo)拖向最左側(cè),以便可觀察到初始波形。
仿真波形圖:
分組后的仿真圖:
實(shí)現(xiàn)步驟
1.首先為此工程建立一個(gè)放置與此工程相關(guān)的所有文件的文件夾,認(rèn)為工作庫(kù)(Work Library)。本項(xiàng)設(shè)計(jì)我的文件夾取名為8位全加器。
2. 選File?New,在彈的New對(duì)話框中選擇Device Design Files 頁的原理圖文件編輯輸入項(xiàng)Block diagram\Schematic File,畫半加器原理圖。 3. 另存自己的工程,將已設(shè)計(jì)好的圖文件命名為:h_adder.bdf,并保存在此文件夾內(nèi)。編譯通過之后,將該半加器封裝入庫(kù)待設(shè)計(jì)1位全加器的時(shí)候調(diào)用。
4. 利用封裝后的半加器畫1位的全加器,并封裝成元器件。
5. 利用封裝后的1位全加器,將4個(gè)1位全加器串行,畫4位的全加器,并封裝成元器件。
6. 將2個(gè)4位全加器元器件串行,按照實(shí)驗(yàn)原理設(shè)計(jì)8位全加器。
7.運(yùn)行并調(diào)試成功。
8. 鎖引腳,
9. 連接USB。
按START運(yùn)行。
VHDL源程序
4位二進(jìn)制并行加法器的源程序ADDER4B.VHD --ADDER4B.VHD LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER4B IS
PORT(C4: IN STD_LOGIC;
A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO4: OUT STD_LOGIC); END ENTITY ADDER4B;
ARCHITECTURE ART OF ADDER4B IS
SIGNAL S5: STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL A5, B5: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN
A5《=‘0’& A4; B5《=‘0’& B4; S5《=A5+B5+C4;
S4《=S5(3 DOWNTO 0); CO4《=S5(4);
END ARCHITECTURE ART; --ADDER8B.VHD LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY ADDER8B IS
PORT(C8:IN STD_LOGIC;
A8:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B8:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S8:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); CO8:OUT STD_LOGIC); END ENTITY ADDER8B;
ARCHITECTURE ART OF ADDER8B IS COMPONENT ADDER4B IS PORT(C4:IN STD_LOGIC;
A4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S4:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CO4:OUT STD_LOGIC); END COMPONENT ADDER4B; SIGNAL SC:STD_LOGIC; BEGIN
U1:ADDER4B
PORT MAP(C4=》C8,A4=》A8(3 DOWNTO 0),B4=》B8(3 DOWNTO 0), S4=》S8(3 DOWNTO 0),CO4=》SC); U2:ADDER4B
PORT MAP(C4=》SC,A4=》A8(7 DOWNTO 4),B4=》B8(7 DOWNTO 4), S4=》S8(7 DOWNTO 4),CO4=》CO8); END ARCHITECTURE ART;
在程序調(diào)試和仿真時(shí),我們要使用自底向上的方法進(jìn)行,也就是對(duì)于含有多個(gè)模塊的設(shè)計(jì),我們要先從底層模塊進(jìn)行調(diào)試和仿真,再進(jìn)行更高層次模塊的調(diào)試和仿真,最后進(jìn)行頂層模塊的調(diào)試與仿真。下圖分別使用Quartus II 8.0對(duì)ADDER4B和ADDER8B進(jìn)行時(shí)序仿真的結(jié)果。
ADDER4B的時(shí)序仿真結(jié)果
ADDER8B的時(shí)序仿真結(jié)果
邏輯綜合分析
下面是使用Quartus II 8.0進(jìn)行邏輯綜合ADDER8B的RTL視圖;對(duì)ADDER8B的RTL視圖中ADDER4B進(jìn)行展開的視圖;使用Quartus II 8.0對(duì)ADDER8B進(jìn)行邏輯綜合后的資源使用情況
ADDER8B綜合后的RTL視圖
ADDER8B綜合后的RTL視圖中將ADDER4B展開后的視圖
評(píng)論
查看更多