VHDL的GENERATE語句實現四位全加器

1位全加器

在這裏插入圖片描述  1位全加器接口如上圖所示,A爲被加數輸入端,B爲加數輸入端,C爲進位輸入端,CO爲進位輸出端,S爲和數輸出端。1位全加器表達式如下:S=ABCS =A \bigoplus B\bigoplus CCO=(AB)+(AC)+(BC)CO =(A \cdot B)+(A \cdot C)+(B \cdot C)
1位全加器VHDL代碼:

--ADD1.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD1 IS
	PORT(
		A,B,C: IN STD_LOGIC;
		S: OUT STD_LOGIC;
		CO:OUT STD_LOGIC
	);
END ADD1;
ARCHITECTURE BHV OF ADD1 IS
BEGIN
	S <= A XOR B XOR C;
	CO <= (A AND C)OR(B AND C)OR(A AND B);
END BHV;

4位全加器

  4位全加器是將低位的1位全加器的CO端接高位的1位全加器的C端,最低位的1位全加器的C端作爲4位全加器的進位輸入端,最高位的1位全加器的CO端作爲1位全加器的進位輸出端,4個1位全加器的A端和B端分別作爲4位被加數和4位加數的輸入端。4位全加器的RTL圖如下圖所示:
在這裏插入圖片描述
4位全加器VHDL代碼:

--ADD_N.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD_N IS
	GENERIC(N : INTEGER:=4);--改這個N的值可以實現其他位數的全加器
	PORT(
		A,B: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
		CI: IN STD_LOGIC;
		S: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0);
		CO: OUT STD_LOGIC
	);
END ADD_N;
ARCHITECTURE RTL OF ADD_N IS
	COMPONENT ADD1
	PORT(
		A,B,C: IN STD_LOGIC;
		S: OUT STD_LOGIC;
		CO:OUT STD_LOGIC
	);
	END COMPONENT;
	SIGNAL TEMP: STD_LOGIC_VECTOR(N DOWNTO 0);
BEGIN
	TEMP(0) <= CI;
	CO <= TEMP(N);
	G: FOR I IN 0 TO N-1 GENERATE
			U: ADD1 PORT MAP(A=>A(I),B=>B(I),C=>TEMP(I),S=>S(I),CO=>TEMP(I+1));
		END GENERATE;
END RTL;

功能仿真波形:
在這裏插入圖片描述

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