VHDL實作全加器

1.一位全加器
全加器是能夠計算低位進位的二進制加法電路,一位全加器(FA)的邏輯運算式為:
F=A⊕B⊕Ci
Co=Ci(A⊕B)+AB
其中A,B為要相加的數,Ci為進位輸入;F為和,Co是進位輸出
真值表如下:

原理圖如下:

因此在設計物體時,選定三輸入二輸出:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED;
ENTITY homework5 IS
PORT(
a,b,ci:IN STD_LOGIC;
f,co:OUT STD_LOGIC
);
END homework5;
ARCHITECTURE yejiayu OF homework5 IS
BEGIN
f<=(a XOR b)XOR ci; --F=A⊕B⊕Ci
co<=((a XOR b)AND ci)OR(a AND b); --Co=Ci(A⊕B)+AB
END yejiayu;
保存編譯后仿真如下:

2.四位全加器

(1)元件例化方法實作:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY homework6 IS
PORT(
A0,A1,A2,A3,B0,B1,B2,B3:IN STD_LOGIC;
F0,F1,F2,F3:OUT STD_LOGIC;
CI:IN STD_LOGIC;
CO:OUT STD_LOGIC
);
END homework6;
ARCHITECTURE yejiayu OF homework6 IS
COMPONENT homework5 --COMPONENT陳述句來實作元件例化方法
PORT(
a,b,ci:IN STD_LOGIC;
f,co:OUT STD_LOGIC
);
END COMPONENT homework5;
SIGNAL S0,S1,S2:STD_LOGIC;
BEGIN
U1:homework5 port map(A0,B0,CI,F0,S0);
U2:homework5 port map(A1,B1,S0,F1,S1);
U3:homework5 port map(A2,B2,S1,F2,S2);
U4:homework5 port map(A3,B3,S2,F3,CO);
END yejiayu;
其中的homework5為上方一位全加器的物體檔案
(接下來注意!!!)
首先,打開quratusII點擊打開homework5檔案

接著新建VHDL檔案,寫入四位全加器代碼,保存至同一檔案夾(必須在同一檔案夾!!!)

接著在編譯前點擊settings按鈕改變順序(不然編譯的是homework5當時我就倒在了這里)


選擇homework6

再進行編譯仿真

(2)簡化實作四位全加器
通過呼叫 STD_LOGIC_UNSIGNED 包中的“+”號方法設計一個4位全加器
代碼如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY homework7 IS
PORT(
A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
F:OUT STD_LOGIC_VECTOR(4 DOWNTO 0));
END homework7;
ARCHITECTURE yejiayu OF homework7 IS
BEGIN
PROCESS(A,B)
BEGIN
F<="00000"+A+B;
END PROCESS;
END yejiayu;
編譯仿真:

?(?????)? ?? 加油
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/232032.html
標籤:其他
