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

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

設計思路

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

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

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hE9dp1Oc-1591951738993)(G:\研究生\FPGA課程\筆記文檔\rec\截圖20200612161756.png)]

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

建立工程:

第一步:打開Quartus軟件。

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

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

第四步:在family欄選擇芯片型號-Cyclone IV E,在Name欄選擇EP4CE115F29C7,選擇完之後點擊next。(如果不進行硬件調試時,此處默認即可)

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-k3KoJfbU-1591951739010)(G:\研究生\FPGA課程\筆記文檔\rec\20161122122950778.png)]

程序設計:

全加器頂層文件設計:

--文件名: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。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-FftPSOS2-1591951739032)(G:\研究生\FPGA課程\筆記文檔\rec\QQ截圖20200423165155.png)]

2.打開測試文件。(右鍵點擊添加端口,對輸入信號初始化,賦值。)

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UyQH9aqv-1591951739051)(G:\研究生\FPGA課程\筆記文檔\rec\截圖20200612164132.png)]

3.仿真結果:

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-3ycy2UIv-1591951739053)(G:\研究生\FPGA課程\筆記文檔\rec\截圖20200612164205.png)]

邏輯電路圖:

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

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-PvmAwPJt-1591951739055)(G:\研究生\FPGA課程\筆記文檔\rec\截圖20200612164703.png)]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章