PSMVLSI

PROJECT
VLSI 설계 자동화
담당교수님 : 조 준동 교수님
1
1. PROJECT : < 4 bit carry lookahead adder 를 이용한
16 bit group ripple carry adder 설계 >
< 8 bit braun array multiplier 설계 >
2. NAME : SKKU 전자공학과 4학년 9251081 박 성민
3. PROJECT GOAL
 SCHEMETIC 방식의 설계와 VHDL 방식의 설계 방법을
통해 전반적인 설계 기법을 익히고자 한다.
 위 주제의 ADDER 를 설계하고 일반적인 RIPPLE
ADDER와 비교 분석을 하고 여러종류의 ADDER 알고리즘
을 이해한다.
 ADDER 설계가 끝나면 8 BIT BRAUN ARRY
MULTIPLIER 를 설계해보고자 한다.
2
4. REARCH BACKGROUND
효율적인 회로는 아니지만 위 주제의 설계를 통해서 설계 기
법을 기초부터 익히는데 가장 접근하기 쉬운 주제라고 생각
해서 선택하였다.
5. Theory 및 design 과정
 기본적인 이론과 설계 알고리즘을 세운다.
 < SCHEMETIC 설계 방식 , VHDL 설계 방식 >
* 4 bit carry lookahead adder >> * 16 bit group ripple carry adder
>> * SIMULATION 검증 및 TIME ANALIZING
>> * 16 bit ripple carry adder 와 비교, 분석
 8 bit braun array multiplier 설계
3
ADDER 설계
SCHEMATIC
4bit carry
lookahead
adder
VHDL
Behavior
modeling
16bit
ripple carry
adder
symbolize
16bit group
ripple carry
adder
4bit CLA 구성
Structure
modeling
4bit CLA
>> 16bit GRCA
Simulation
time analyze
Simulation
time analyze
비교, 분석
Behavior
modeling
Simulation
time analyze
16bit
ripple carry
adder
Simulation
time analyze
비교, 분석
4
< Theory >
 우선 adder 설계를 위한 이론적인 진리표와 논리식을 세운다.
 * full adder 진리표
A
0
0
0
0
1
1
1
1
* CARRY
B
0
0
1
1
0
0
1
1
karnaugh map
CARRY
C
0
AB
00
0
01
0
11
1
10
0
1
0
1
1
1
C
0
1
0
1
0
1
0
1
CARRY
0
0
0
1
0
1
1
1
SUM
0
1
1
0
1
0
0
1
* SUM karnaugh map
SUM
C
0
AB
00
0
01
1
11
0
10
1
1
1
0
1
0
5
* 논리식
CARRY = AB + BC + CA =AB + C(A +B)
SUM = ABC + AB’C’ + A’B’C + A’BC’ = (AB + A’B’) C + (AB’ + A’B) C’
 위 가산기의 논리식으로부터 4 bit 캐리 예측 의 개념을 세우고 논리식을
유도한다.
 캐리 발생의 개념
입력 Ai 및 Bi의 특정 조합에 대해서 A0 -Ai-1,B0 -Bi-1 및 C0 의 입력과 무관한 캐리
아웃 1(Ci-1 =1)이 얻어진다면 ,가산기 단계 i 는 캐리를 발생 (generate)시킨다고
말한다.
논리식은 Gi =Ai Bi
 캐리 전달의 개념
입력 Ai 및 Bi의 특정 조합에 대해서, 만일 1 의 캐리인(Ci+1 =1)을 야기시키는
A0 -Ai -1, B0 -Bi -1 및 C0 의 입력으로써 1 의 캐리아웃(Ci -1 =1)이 얻어진다면 가산기
단계 i 는 전달 (propagate)된다고 말한다.
논리식은 Pi = Ai + Bi = Ai xor Bi(propagation 의미상)
6
위 두 식으로부터 만일 가수비트가 둘 다 1 이 된다면 2 단계에서는 무조건 캐리
가 발생하며, 가수 중에서 적어도 한 비트가 1 이 된다면 캐리가 전달된다. 한 단
계의 캐리 출력은 발생 및 전달신호에 의해 작성될 수가 있다.
즉 위 CARRY 식과 SUM 식의 i 번째 논리식을 다음과 같이 나타낼 수가 있다.
CARRY(Ci+1)=AB +BC +CA =AB + C(A +B) = Gi +PiCi-1
SUM (Si) = ABC + AB’C’ + A’B’C + A’BC’
= (AB + A’B’) C + (AB’ + A’B) C’
= (Ai xorBi )’ Ci+ (Ai xorBi )Ci’
HSi
= Ai xorBi xor Ci
C3 C2 C1 C0
A= A3 A2 A1 A0
B= B3 B2 B1 B0
S3 S2 S1 S0
C4 C3 C2 C1
7
CARRY LOOKAHEAD ADDER 회로도
Ai
XOR
HSi
XOR
Bi
Si
Ci
Ai-1
캐리
Bi-1
예측
Co
논리
8
캐리 리플을 제거하기 위해서, 각각의 단계에 대한 항 Ci 를 순환적으로 전개하며,
2 단 AND – OR 표현식을 얻을 수 있도록 곱전개를 한다. 이러한 기법을 이용하
여, 처음 4 개의 가산기 단계에 대한 캐리 식을 다음과 같이 얻을 수 있다.
C1 = G0 +P0C0
C2 = G1 +P1C1
= G1 +P1 ( G0 +P0C0)
= G1 +P1G0 + P1 P0C0
C3 = G2 +P2C2
= G2 +P2 (G 1 +P1G0 + P1P0C0)
=G2 +P2G 1 + P2P1G0 + P2P1P0C0
C4 = G3 +P3C3
= G3 +P3 ( G2 +P2G 1 + P2P1G0 + P2P1P0C0)
=G3 +P3G2 + P3P2G 1 + P3 P2P1G0 +P3P2P1P0C0
여기서 반전 게이트가 비반전 게이트보다 빠르기 때문에 캐리발생 (Gi )과
캐리 전달(Pi ) 신호의 active-low 버전을 만든다. 따라서 다음과 같은 반합식을
대수적으로 조작할 수 있다.
9
HSi = Ai xor Bi
= Ai Bi ` +Ai `Bi
= Ai Bi ` + Ai Ai ` +Ai `Bi +Bi Bi`
= (Ai +Bi )  (Ai `+Bi`)
= (Ai +Bi )  (AiBi)`
= Pi Gi `
따라서 반전된 입력을 갖는 AND 게이트가 각 반합 비트를 만들기 위해 XOR 게
이트 대신 이용될 수가 있다.
또한, CMOS 나 TTL 반전 게이트와 대략 같은 지연을 갖도록 캐리식들이 약간
수정된 형태로 사용된다. 특히 Ci+1 식은 Gi 대신에 Pi  Gi 항을 이용한다. 이것은
Gi 가 1 이 될 때 Pi 가 항상 1 이 되기 때문에 출력상에는 아무런 영향이 없다.
그러나 이 식들이 다음과 같이 인수분해가 되도록 한다.
Ci+1=Pi  Gi + Pi  Ci
= Pi  (Gi + Ci )
10
여기서 위 캐리식을 다시 전개 하면 다음과 같다.
C1 = P0 (G0 +C0 )
C2 = P1 (G1 +C1 )
= P1 (G1 + P0 (G0 +C0 ))
= P1 (G1 + P0) (G1 + G0 +C0 )
C3 = P2 (G2 +C2 )
= P2 (G2 + P1 (G1 + P0) (G1 + G0 +C0 ))
= P2 (G2 + P1)  (G2 + G1 + P0) (G2 +G1 + G0 +C0 )
C4 = P3 (G3 +C3 )
= P3 (G3 + P2 (G2 + P1) (G2 + G1 +P0 )  (G2+G1 +G0 +C0 ))
= P3 (G3 + P2)  (G3 + G2 + P1 )  (G3 +G2 +G1 +P0 )  (G3 +G2 +G1 +G0 +C0 )
이상으로 기본적인 carry lookahead 이론을 살표보았다.
이 후로 이론을 바탕으로 실제 설계를 시작한다.
11
 SCHEMETIC 설계 
4 bit carry lookahead adder >> symbolize
>> 16 bit group ripple carry adder
>> simulation , time analize
16 bit ripple carry adder
>> simulation, time analize
비교, 분석
12
4 bit carry
lookahead
adder
13
14
15
16 bit group
ripple carry
adder
16
17
비교
graph
18
16 bit
ripple carry
adder
19
20
비교
graph
21
비교 및 분석
16 group RCA
16 RCA
Cin
27.5ns
49.5ns
B0
27.5ns
49.5ns
Simulation 검증과
50
45
40
35
30
25
20
15
10
5
0
Cin
B0
time 분석결과
16 GRA
16 RCA
27.5
49.5
27.5
49.5
group RCA 가 RCA
Cin
B0
보다 speed가 두배정도
빨라지고 waveform에서
보면 glitch가 줄어듬을
볼수 있다.
16 GRA
16 RCA
22
 V H D L 설계 
4 bit carry lookahead adder
( behavior modeling ) >> component
>> 16 bit group ripple carry adder
( structure modeling )
>> simulation , time analize
16 bit ripple carry adder
( behavior modeling )
>> simulation, time analize
비교, 분석
23
4 bit carry
lookahead
adder
-- 4 bit carry lookahead adder
library ieee;
use ieee.std_logic_1164.all;
entity cl_4ad is
port ( a,b : in std_logic_vector(3 downto 0);
c_in : in std_logic;
sum : out std_logic_vector(3 downto 0);
c_out : out std_logic);
end cl_4ad;
architecture behavior_description of cl_4ad is
signal Ci : std_logic_vector (4 downto 0);
begin
process (a,b,c_in)
variable Gi,Pi : std_logic_vector (3 downto 0);
begin
Gi := a(3 downto 0) and b(3 downto 0);
Pi := a(3 downto 0) or b(3 downto 0);
Ci(0) <= c_in;
Ci(1) <= Gi(0) or (Pi(0) and Ci(0));
Ci(2) <= Gi(1) or (Pi(1) and Ci(1));
Ci(3) <= Gi(2) or (Pi(2) and Ci(2));
Ci(4) <= Gi(3) or (Pi(3) and Ci(3));
sum(3 downto 0) <= a(3 downto 0) xor b(3 downto 0) xor Ci(3 downto
0);
c_out <= Ci(4);
end process;
end behavior_description;
configuration cfg_cl_4ad of cl_4ad is
for behavior_description
end for;
end cfg_cl_4ad;
24
25
26
16 bit group
ripple carry
adder
-- 16 bit group ripple carry adder
library ieee;
use ieee.std_logic_1164.all;
entity rcl_16ad is
port ( a,b : in std_logic_vector(15 downto 0);
c_in : in std_logic;
sum : out std_logic_vector(15 downto 0);
c_out : out std_logic);
end rcl_16ad;
architecture structure of rcl_16ad is
signal C_1,C_2,C_3 : std_logic;
component cl_4ad
port ( a,b : in std_logic_vector(3 downto 0);
c_in : in std_logic;
sum : out std_logic_vector(3 downto 0);
c_out : out std_logic);
end component;
begin
cl_0:cl_4ad
port map (a(3 downto 0),b(3 downto 0),c_in,sum(3 downto 0),C_1);
cl_1:cl_4ad
port map (a(7 downto 4),b(7 downto 4),C_1,sum(7 downto 4),C_2);
cl_2:cl_4ad
port map (a(11 downto 8),b(11 downto 8),C_2,sum(11 downto 8),C_3);
cl_3:cl_4ad
port map (a(15 downto 12),b(15 downto 12),C_3,sum(15 downto
27
12),c_out);
end structure;
28
비교
graph
29
-- 2 bit full adder
library ieee;
use ieee.std_logic_1164.all;
entity fuad is
port ( x,y : in std_logic;
c_in : in std_logic;
s_out,c_out : out std_logic);
end fuad;
architecture structure of fuad is
begin
process
begin
c_out <= (x and y) or (c_in and (x or y));
s_out <= x xor y xor c_in;
end process;
end structure;
configuration cfg_fuad of fuad is
for structure
end for;
end cfg_fuad;
16 bit ripple carry adder
-- 16 bit ripple carry adder
library ieee;
use ieee.std_logic_1164.all;
entity rcad is
port ( a,b : in std_logic_vector(15 downto 0);
c_in : in std_logic;
sum : out std_logic_vector(15 downto 0);
c_out : out std_logic);
end rcad;
architecture structure of rcad is
signal
C_1,C_2,C_3,C_4,C_5,C_6,C_7,C_8,C_9,C_10,C_11,C_12,
C_13,C_14,C_15 : std_logic;
component fuad
port ( x,y : in std_logic;
c_in : in std_logic;
s_out : out std_logic;
c_out : out std_logic);
end component;
뒷면 계속
30
begin
cl_0:fuad
port map (a(0),b(0),c_in,sum(0),C_1);
cl_1:fuad
port map (a(1),b(1),C_1,sum(1),C_2);
cl_2:fuad
port map (a(2),b(2),C_2,sum(2),C_3);
cl_3:fuad
port map (a(3),b(3),C_3,sum(3),C_4);
cl_4:fuad
port map (a(4),b(4),C_4,sum(4),C_5);
cl_5:fuad
port map (a(5),b(5),C_5,sum(5),C_6);
cl_6:fuad
port map (a(6),b(6),C_6,sum(6),C_7);
cl_7:fuad
port map (a(7),b(7),C_7,sum(7),C_8);
cl_8:fuad
port map (a(8),b(8),C_8,sum(8),C_9);
cl_9:fuad
port map (a(9),b(9),C_9,sum(9),C_10);
cl_10:fuad
port map (a(10),b(10),C_10,sum(10),C_11);
cl_11:fuad
port map (a(11),b(11),C_11,sum(11),C_12);
cl_12:fuad
port map (a(12),b(12),C_12,sum(12),C_13);
cl_13:fuad
port map (a(13),b(13),C_13,sum(13),C_14);
cl_14:fuad
port map (a(14),b(14),C_14,sum(14),C_15);
cl_15:fuad
port map (a(15),b(15),C_15,sum(15),c_out);
end structure;
31
32
비교
graph
33
비교 및 분석
16 group RCA
16 RCA
Cin
42.5ns
42.5ns
B0
42.5ns
42.5ns
VHDL 설계에서는
Simulation 검증과
45
Cin
B0
16 GRA
16 RCA
27.5
49.5
27.5
49.5
time 분석결과
40
35
group RCA 와 RCA
30
25
Cin
B0
20
waveform에서
15
10
보면 glitch가 줄어듬을
5
0
가 speed가 거의 똑같았고
16 GRA
16 RCA
볼수 있다.
34
전체 비교 및 분석
V(Vhdl), S(Schemetic)
16 GRCA(V)
16 RCA(V)
16 GRCA(S)
16 RCA(S)
Cin
42.5ns
42.5ns
27.5ns
49.5ns
B0
42.5ns
42.5ns
27.5ns
49.5ns
Cin
B0
16 GRA
16 RCA
27.5
49.5
27.5
49.5
16
RCA(S)
16
GRA(S)
16
RCA(V)
Cin
B0
16
GRA(V)
50
45
40
35
30
25
20
15
10
5
0
35