[논리회로설계]CLA adder (carry look ahdead adder)
본 자료는 5페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
해당 자료는 5페이지 까지만 미리보기를 제공합니다.
5페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

[논리회로설계]CLA adder (carry look ahdead adder)에 대한 보고서 자료입니다.

목차

1. 개요
2. 디자인
3. 결론
4. 느낀점

본문내용

gic;
G, P, Sum : out std_logic);
end component;
component Lookahead_carry_generator
port(G, P : in std_logic_vector (3 downto 0);
Ci : in std_logic;
m : in std_logic;
C : out std_logic_vector (4 downto 1);
PG, GG : out std_logic);
end component;
begin
B_sig(0) <= B(0) Xor m;
B_sig(1) <= B(1) Xor m;
B_sig(2) <= B(2) Xor m;
B_sig(3) <= B(3) Xor m;
LCG: Lookahead_carry_generator port map (G_sig, P_sig, Cin, m ,C_sig, Pout, Gout);
Cout <=C_sig(4);
GPFA0: GPFullAdder port map (A(0), B_sig(0), (Cin xor m), G_sig(0), P_sig(0), Sum(0));
GPFA1: GPFullAdder port map (A(1), B_sig(1), c_sig(1), G_sig(1), P_sig(1), Sum(1));
GPFA2: GPFullAdder port map (A(2), B_sig(2), c_sig(2), G_sig(2), P_sig(2), Sum(2));
GPFA3: GPFullAdder port map (A(3), B_sig(3), c_sig(3), G_sig(3), P_sig(3), Sum(3));
end Behavioral;
가산기에서 감산기도 겸할 수 있는 가/감산기 설계는 저번 시간의 배움을 통해 크게 어렵지 않다. 단지 입력 B 벡터와 m을 xor 연산하여 미리 선언한 B_sig에 설정하고 이를 A와 덧셈연산을 하면 될 뿐이다. 물론 제일 처음 carry in 은 m 이 1일 경우 1로 설정하여 B의 2의 보수 연산을 완료한 후에 A와 더하게 된다. 이하는 위의 소스 코드를 테스트하기 위한 테스트 벤치 코드이다.
TB
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
ENTITY CLA_4bit_TB IS
END CLA_4bit_TB;
ARCHITECTURE behavior OF CLA_4bit_TB IS
COMPONENT cla_4bit
PORT(
Cin : IN std_logic;
A : IN std_logic_vector(3 downto 0);
B : IN std_logic_vector(3 downto 0);
m : IN std_logic;
Sum : OUT std_logic_vector(3 downto 0);
Cout : OUT std_logic;
Pout : OUT std_logic;
Gout : OUT std_logic
);
END COMPONENT;
--Inputs
signal Ci : std_logic := '0';
signal m : std_logic := '0';
signal x : std_logic_vector(3 downto 0) := (others => '0');
signal y : std_logic_vector(3 downto 0) := (others => '0');
--Outputs
signal Sum : std_logic_vector(3 downto 0);
signal Cout : std_logic;
signal Pout : std_logic;
signal Gout : std_logic;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: cla_4bit PORT MAP (
Cin => Ci,
A => x,
B => y,
m => m,
Sum => Sum,
Cout => Cout,
Pout => Pout,
Gout => Gout
);
process
begin
x<="0000";
y<="0000";
Ci <='0';
m<='0';
wait for 10 ns;
x<="0010";
y<="0011";
Ci <='0';
m<='0';
wait for 10 ns;
x<="0011";
y<="1101";
Ci <='1';
m<='0';
wait for 10 ns;
x<="0101";
y<="0010";
Ci <='1';
m<='0';
wait for 10 ns;
x<="1100";
y<="1111";
Ci <='1';
m<='0';
wait for 10 ns;
x<="0101";
y<="0001";
Ci <='0';
m<='1';
wait for 10 ns;
x<="1010";
y<="0011";
Ci <='0';
m<='1';
wait for 10 ns;
x<="1111";
y<="1100";
Ci <='0';
m<='1';
wait for 10 ns;
x<="0011";
y<="1011";
Ci <='0';
m<='1';
wait for 10 ns;
x<="0100";
y<="0110";
Ci <='0';
m<='1';
wait for 10 ns;
end process;
END;
이하는 결과 파형이다.
모범답안과 동일함을 알 수 있다.
실제 결과 값이 다른 것은 overflow가 생겨서 그렇다.
추가내용2. 장단점 설명
Ripple Carry Adder
장점 : ① 1bit Full Adder 1개를 만들어 놓으면 module로 사용이 가능하다.
② 코드가 짧아서 단순하다.
단점 : ① carry 전달 과정에서 delay가 생긴다. bit가 커지면 연산이 길어진다. 만약에 64bit만 되도 carry 전달을 63번을 해야 한다.
Carry Lookahead Adder
장점 : ① carry 전달 과정이 생략된다. 따라서 delay가 줄어든다. 즉, bit가 커져도 연산의 속도가 빠르다.
단점 : ① lookahead carry logic이 단순하지는 않다. bit가 커질수록 carry를 표현하는 식이 복잡해진다. 그리고 carry를 계산하는데 복잡해지면서 거기서 delay가 생길 수 있다. 하지만 이는 '4bit CLA'를 module로 사용하게 되면 해결이 되기는 한다.
  • 가격1,500
  • 페이지수17페이지
  • 등록일2014.06.23
  • 저작시기2014.5
  • 파일형식한글(hwp)
  • 자료번호#925437
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니