전자계산기 보고서
곱셈/나눗셈, BCD 연산
곱셈 알고리즘
2개의 숫자를 곱하는 프로그램을 생각해보면, 프로그램을 간단히 아히 귀해 부호비트를 무시하고 양수만을 가정한다. 2개의 2진수는 8비트 이하로서 그들의 곱은 16비트를 초과할 수 없다고 가정하고, 나중에 부호가 있는 경우와 16비트 숫자들에 대한 경우로 확장시켜 보기로 하자.
아래 그림 1과 같이 곱셈과정은 승수 Y의 비트들을 검사하여 그것이 1일 경우에 피승수 X를 더하는 과정으로 구서오디는데, Y비트 검사시마다 X는 왼쪽으로 한비트씩 Shift된다. 한 번에 두 개의 숫자만으로 더할 수 있으므로 중간합을 저장하기 위하여 P를 따로 마련한다. 그 중간합을 partial product라고 하며, 이것은 처음에 0에서 시자고딘다. 피승수 X는 승수 Y의 각 비트 중에서 1인 경우만 P에 더해지고, 각 비트를 체크할 때마다 X값은 왼쪽으로 시프트 된다. 따라서 X값은 왼쪽으로 시프트된다. 따라서, P의 마지막 값이 두수의 고비 된다.
[그림 1]
그림 1의 흐름도는 곱셈 동작의 프로그래밍에 대한 단계적 과정을 보여준다. 프로그램은 여덟번 되풀이하는 루프를 갖고 있고, 처음에 X는 피승수, Y는 승수를 나타내며, 카운터 CTR은 -8에 시트되고 P는 0에 세트된다.
승수의 비트는 E레지스터에 옮겨서 체크할 수 있는데, 이것은 E를 클리어 시킨 후 Y값을 AC에 로드시키고, E와 AC를 오른쪽으로 순환(circulate)시키고나서 시프트된 숫자를 다시 Y에 저장함으로써 실행된다. E에 저장된 이 비트는 승수의 하단부 비트인데, 이것이 1이면 피승수 X는 AC에 로드하여 E와 AC를 순환시킴으로써 X값을 왼쪽으로 시프트시킨다. 루프는 CTR을 0이 될 대까지 증가시켜서 여덟번을 반복하게 된다. 카운터가 0이 되면 P에는 곱의 결과가 저장되고, 프로그램은 루프로부터 빠져나온다.
표 1에 있는 프로그램은 부호없는 두…(생략)
1 0 0 0
|
코더 IC이다.
BCD/10진 디코더의 논리 회로 설계시 논리 회로는 10개의 출력을 가지므로 각각에 대해 하나의 부울 함수를 가지며, 이 부울 함수를 간소화시키기 위하여 10개의 카르노 맵이 필요하다. 그러나, 10개의 출력은 모두가 1개의 최소항을 가지므로 무관조건을 이용해 논리회로를 구성한다.
*10진/BCD 인코더
10진/BCD 인코더는 10개의 BCD 코드의 입력과 이에 대응하는 2진수를 출력하는 4개의 출력으로 구성된다. 10진/BCD 인코더는 4개의 OR 게이트로 구성되며, 이 OR 게이트들의 입력은 아래 표의 진리표로부터 구할 수 있다.
BCD 코드
입력
출력
A B C D
0
1
2
3
4
5
6
7
8
9
I0
I1
I2
I3
I4
I5
I6
I7
I8
I9
0 0 0 0
0 0 0 1
0 0 1 0
0 0 1 1
0 0 1 1
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0 0 1
3개의 출력에 대한 부울 함수는 다음과 같다.
10진/BCD 인코더의 논리 회로는 출력 A는 입력의 BCD 숫자가 8, 9 일 때 논리 1이 되고, 출력 B는 입력의 BCD의 숫자가 4, 5, 6, 7 일 때 논리 1이 된다. 또, 출력 C는 입력의 BCD의 숫자가 2, 3, 6, 7이면 논리 1이 되고, 출력 D는 입력의 BCD의 숫자가 1, 3, 5, 7, 9이면 논리 1이 된다.