목차
◉ALU(arithmetic-logic unit)란?
◉ALU의 구조
◉레지스터의 구조
◉ORCAD 설계
◉ALU의 구조
◉레지스터의 구조
◉ORCAD 설계
본문내용
공용 ALU를 가진 레지스터집합 시뮬레이션
컴퓨터 구조론
ALU(arithmetic-logic unit)란?
중앙처리장치의 일부로서 산술-논리 장치라는 이름 그대로 컴퓨터 명령어 내에 있는 연산자들에 대해 연산과 논리동작을 담당한다.
ALU의 구조
>n비트 ALU는 n개의 산술장치와 논리장치 및 그것을 결합하는 4X1 MUX의 집합으로 구성된다.
>각 입력들은
>>입력 Ai, Bi 는 연산을 하기 위한 입력값
>>입력 S3, S2는 산술, 논리, 시프트 연산의 선택
>>S1, S0은 각 장치에서의 세부적인 연산
을 선택하는 기능을 담당한다.
>구체적인 작동은 입력된 Ai, Bi값들이 각각의 장치에서 연산되어 Di, Ei로 출력되고, 4X1 MUX에 의해 그중 원하는 값만이 Fi로 출력된다.
레지스터(Register)란?
데이터를 저장하기 위해 플립플롭을 여러개 모아놓은 회로를 말한다.
레지스터의 구조
>n비트 레지스터는 n개의 플립플롭으로 구성되어있으며 모든 플립플롭의 클락입력은 공통으로 묶여있다.
>클락 입력(CLK)의 상승엣지 시점마다 모든 플립플롭이 동시에 입력 Ii을 받아 Qi에 저장하게된다. 출력 Ai은 Qi값과 같다.
ORCAD 설계
1. ALU설계
1) 산술장치 구현
2) 논리장치 구현
>4개의 게이트와 1개의 MUX로 구성
각 게이트가 정해진 논리 연산을 수행하고,
결과중 하나를 MUX로 선택하여 출력값을 결정한다
3) 4X1 MUX 구현
4) 구현된 전체 ALU 회로
>8비트 회로이므로 논리장치, 출력선택 MUX는 각각 8개씩 사용.
>산술장치의 경우 8비트 캐리 룩 어헤드방식의 전가산기 1개를 이용.
2. 레지스터 설계
>ALU에서 나온 출력값을 3X8 디코더를 이용하여 8개의 8비트 레지스터중 하나에 값을 저장
>디코더를 이용하여 선택한 번지에 ALU에서 연산되어 나온 출력값을 저장
>왼쪽의 엔드게이트 묶음에 의해 디코더의 출력(DCi)이 1인 경우에만 레지스터에
ALU의 출력값(Fi)가 저장된다.
3. BUS입력 레지스터 선택기 설계
>원하는 번지의 레지스터를 ASi, BSi를 이용하여 선택, Ai, Bi에 각각 연결함으로서 입력신호를 결정
인에이블‘
선택
출력
E\'
S2
S1
S0
Z
1
X
X
X
0
0
0
0
0
I0
0
0
0
1
I1
0
0
1
0
I2
0
0
1
1
I3
0
1
0
0
I4
0
1
0
1
I5
0
1
1
0
I6
0
1
1
1
I7
*너무 많은 게이트를 이용해서인지 프로그램이 빈번하게 멈추는 현상이 일어나서 8X1 MUX만 칩을 사용했습니다.
*8X1 MUX의 게이트레벨 설계는 다음 페이지에 첨부했습니다
>참고<
8X1 MUX의 내부회로도
S2
S1
S0
Y(출력)
0
0
0
I0
0
0
1
I1
0
1
0
I2
0
1
1
I3
1
0
0
I4
1
0
1
I5
1
1
0
I6
1
1
1
I7
14가지 기능 시뮬레이션 결과
☞A = 10001000 , B = 00100100을 입력
>산술연산
1) S = 0000, C = 0 => F = A + B = 10101100
2) S = 0000, C = 1 => F = A + B + 1 = 10101101
3) S = 0001, C = 0 => F = A + B\' = 01100011*
4) S = 0001, C = 1 => F = A + B\' + 1 = 01100100*
5) S = 0010, C = 0 => F = A = 10001000
6) S = 0010, C = 1 => F = A + 1 = 10001001
7) S = 0011, C = 0 => F = A - 1 = 10000111
8) S = 0011, C = 1 => F = A = 10001000
*출력이 8비트이므로 발생한 9비트 캐리는 생략
>논리연산
9) S = 0100, C = x => F = A and B = 00000000
10) S = 0101, C = x => F = A or B = 10101100
11) S = 0110, C = x => F = A xor B = 10101100
12) S = 0111, C = x => F = A\' = 01110111
>시프트연산
13) S = 10xx, C = x => F = shr A = 00010001
14) S = 11xx, C = x => F = shl A = 01000100
컴퓨터 구조론
ALU(arithmetic-logic unit)란?
중앙처리장치의 일부로서 산술-논리 장치라는 이름 그대로 컴퓨터 명령어 내에 있는 연산자들에 대해 연산과 논리동작을 담당한다.
ALU의 구조
>n비트 ALU는 n개의 산술장치와 논리장치 및 그것을 결합하는 4X1 MUX의 집합으로 구성된다.
>각 입력들은
>>입력 Ai, Bi 는 연산을 하기 위한 입력값
>>입력 S3, S2는 산술, 논리, 시프트 연산의 선택
>>S1, S0은 각 장치에서의 세부적인 연산
을 선택하는 기능을 담당한다.
>구체적인 작동은 입력된 Ai, Bi값들이 각각의 장치에서 연산되어 Di, Ei로 출력되고, 4X1 MUX에 의해 그중 원하는 값만이 Fi로 출력된다.
레지스터(Register)란?
데이터를 저장하기 위해 플립플롭을 여러개 모아놓은 회로를 말한다.
레지스터의 구조
>n비트 레지스터는 n개의 플립플롭으로 구성되어있으며 모든 플립플롭의 클락입력은 공통으로 묶여있다.
>클락 입력(CLK)의 상승엣지 시점마다 모든 플립플롭이 동시에 입력 Ii을 받아 Qi에 저장하게된다. 출력 Ai은 Qi값과 같다.
ORCAD 설계
1. ALU설계
1) 산술장치 구현
2) 논리장치 구현
>4개의 게이트와 1개의 MUX로 구성
각 게이트가 정해진 논리 연산을 수행하고,
결과중 하나를 MUX로 선택하여 출력값을 결정한다
3) 4X1 MUX 구현
4) 구현된 전체 ALU 회로
>8비트 회로이므로 논리장치, 출력선택 MUX는 각각 8개씩 사용.
>산술장치의 경우 8비트 캐리 룩 어헤드방식의 전가산기 1개를 이용.
2. 레지스터 설계
>ALU에서 나온 출력값을 3X8 디코더를 이용하여 8개의 8비트 레지스터중 하나에 값을 저장
>디코더를 이용하여 선택한 번지에 ALU에서 연산되어 나온 출력값을 저장
>왼쪽의 엔드게이트 묶음에 의해 디코더의 출력(DCi)이 1인 경우에만 레지스터에
ALU의 출력값(Fi)가 저장된다.
3. BUS입력 레지스터 선택기 설계
>원하는 번지의 레지스터를 ASi, BSi를 이용하여 선택, Ai, Bi에 각각 연결함으로서 입력신호를 결정
인에이블‘
선택
출력
E\'
S2
S1
S0
Z
1
X
X
X
0
0
0
0
0
I0
0
0
0
1
I1
0
0
1
0
I2
0
0
1
1
I3
0
1
0
0
I4
0
1
0
1
I5
0
1
1
0
I6
0
1
1
1
I7
*너무 많은 게이트를 이용해서인지 프로그램이 빈번하게 멈추는 현상이 일어나서 8X1 MUX만 칩을 사용했습니다.
*8X1 MUX의 게이트레벨 설계는 다음 페이지에 첨부했습니다
>참고<
8X1 MUX의 내부회로도
S2
S1
S0
Y(출력)
0
0
0
I0
0
0
1
I1
0
1
0
I2
0
1
1
I3
1
0
0
I4
1
0
1
I5
1
1
0
I6
1
1
1
I7
14가지 기능 시뮬레이션 결과
☞A = 10001000 , B = 00100100을 입력
>산술연산
1) S = 0000, C = 0 => F = A + B = 10101100
2) S = 0000, C = 1 => F = A + B + 1 = 10101101
3) S = 0001, C = 0 => F = A + B\' = 01100011*
4) S = 0001, C = 1 => F = A + B\' + 1 = 01100100*
5) S = 0010, C = 0 => F = A = 10001000
6) S = 0010, C = 1 => F = A + 1 = 10001001
7) S = 0011, C = 0 => F = A - 1 = 10000111
8) S = 0011, C = 1 => F = A = 10001000
*출력이 8비트이므로 발생한 9비트 캐리는 생략
>논리연산
9) S = 0100, C = x => F = A and B = 00000000
10) S = 0101, C = x => F = A or B = 10101100
11) S = 0110, C = x => F = A xor B = 10101100
12) S = 0111, C = x => F = A\' = 01110111
>시프트연산
13) S = 10xx, C = x => F = shr A = 00010001
14) S = 11xx, C = x => F = shl A = 01000100
소개글