天天看點

基于VHDL語言八位加法器設計

基于VHDL語言八位加法器設計

設計思路

​ 加法器是數字系統中的基本邏輯器件,減法器和硬體乘法器都可由加法器來構成。多位加法器的構成有兩種方式:并行進位和串行進位。并行進位加法器設有進位産生邏輯,運算速度較快;串行進位方式是将全加器級聯構成多位加法器。

​ 并行進位加法器通常比串行級聯加法器占用更多的資源。随着位數的增加,相同位數的并行加法器與串行加法器的資源占用差距也越來越大。是以,在工程中使用加法器時,要在速度和容量之間尋找平衡點。

​ 實踐證明,4位二進制并行加法器和串行級聯加法器占用幾乎相同的資源。這樣,多位加法器由4位二進制并行加法器級聯構成是較好的折中選擇。本設計中的8位二進制并行加法器即是由兩個4位二進制并行加法器級聯而成的,其電路原理圖如圖1所示

基于VHDL語言八位加法器設計

軟體說明: ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。

建立工程:

第一步:打開Quartus軟體。

第二步:點選New Project Wizard -> next.

第三步:選擇工程檔案的存放位置,輸入工程名 -> next -> next。

第四步:在family欄選擇晶片型号-Cyclone IV E,在Name欄選擇EP4CE115F29C7,選擇完之後點選next。(如果不進行硬體調試時,此處預設即可)

第五步:檢查工程有沒有建錯,點選完成。如下圖:

基于VHDL語言八位加法器設計

程式設計:

全加器頂層檔案設計:

--檔案名: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仿真波形):

  1. 選擇File-> New -> Verification/Debugging Files ->University Program VWF。
基于VHDL語言八位加法器設計

2.打開測試檔案。(右鍵點選添加端口,對輸入信号初始化,指派。)

基于VHDL語言八位加法器設計

3.仿真結果:

基于VHDL語言八位加法器設計

邏輯電路圖:

顯示編譯成功後,選擇菜單欄 Tools –>Netlist Viewers –>RTL Viewer 顯示邏輯電路圖

基于VHDL語言八位加法器設計