基于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 顯示邏輯電路圖