基於VHDL語言八位加法器設計
設計思路
加法器是數字系統中的基本邏輯器件,減法器和硬件乘法器都可由加法器來構成。多位加法器的構成有兩種方式:並行進位和串行進位。並行進位加法器設有進位產生邏輯,運算速度較快;串行進位方式是將全加器級聯構成多位加法器。
並行進位加法器通常比串行級聯加法器佔用更多的資源。隨着位數的增加,相同位數的並行加法器與串行加法器的資源佔用差距也越來越大。因此,在工程中使用加法器時,要在速度和容量之間尋找平衡點。
實踐證明,4位二進制並行加法器和串行級聯加法器佔用幾乎相同的資源。這樣,多位加法器由4位二進制並行加法器級聯構成是較好的折中選擇。本設計中的8位二進制並行加法器即是由兩個4位二進制並行加法器級聯而成的,其電路原理圖如圖1所示
軟件說明: ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。
建立工程:
第一步:打開Quartus軟件。
第二步:點擊New Project Wizard -> next.
第三步:選擇工程文件的存放位置,輸入工程名 -> next -> next。
第四步:在family欄選擇芯片型號-Cyclone IV E,在Name欄選擇EP4CE115F29C7,選擇完之後點擊next。(如果不進行硬件調試時,此處默認即可)
第五步:檢查工程有沒有建錯,點擊完成。如下圖:
程序設計:
全加器頂層文件設計:
--文件名:ADDER8B.vhd 應與工程名保持一致:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER8B IS --由4位二進制並行加法器級聯而成的8位二進制加法器
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
--對要調用的元件ADDER4B的界面端口進行定義
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; --4位加法器的進位標誌
BEGIN
U1:ADDER4B --例化(安裝)一個4位二進制加法器U1
PORT MAP(C4=>C8,A4=>A8(3 DOWNTO 0),
B4=>B8(3 DOWNTO 0),
S4=>S8(3 DOWNTO 0),CO4=>SC);
U2:ADDER4B --例化(安裝)一個4位二進制加法器U2
PORT MAP(C4=>SC,A4=>A8(7 DOWNTO 4),
B4=>B8(7 DOWNTO 4),
S4=>S8 (7 DOWNTO 4),CO4=>CO8);
END ARCHITECTURE ART;
對四位二進制加法器原件進行實例化:
--文件名:ADDER4B.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADDER4B IS --4位二進制並行加法器
PORT(C4: IN STD_LOGIC; --低位來的進位
A4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位加數
B4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --4位被加數
S4: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--4位和
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;
--將4位加數矢量擴爲5位,爲進位提供空間
B5<='0'& B4;
--將4位被加數矢量擴爲5位,爲進位提供空間
S5<=A5+B5+C4 ;
S4<=S5(3 DOWNTO 0);
CO4<=S5(4);
END ARCHITECTURE ART;
文件仿真(這裏採用modelsim仿真波形):
- 選擇File-> New -> Verification/Debugging Files ->University Program VWF。
2.打開測試文件。(右鍵點擊添加端口,對輸入信號初始化,賦值。)
3.仿真結果:
邏輯電路圖:
顯示編譯成功後,選擇菜單欄 Tools –>Netlist Viewers –>RTL Viewer 顯示邏輯電路圖