74181의 산술 함수에 대한 이유는 무엇입니까?

74181 이 작동하는 이유를 이해할 수 없습니다. 논리 기능 (AND, NAND, OR, NOR, XOR, shift)의 전체 세트를 제공하지만 산술 기능이 명확하지 않습니다. 예를 들어 A - BA + B 같은 모드입니다.

설계 방법에 대한 배경 정보를 제공해 주시겠습니까?

댓글

  • 좋은 질문이지만 ' 우리 칩 해커 사용자 중 누구도 데이터 시트 나 위키 백과에있는 것 이상의 TI 동기를 알 것이라고 생각하지 않습니다. en.wikipedia.org/wiki/74181
  • @Jason : 귀하의 의견에 감사드립니다. 그렇다면이 질문에 대한 좋은 위치는 어디입니까?
  • 확실하지 않습니다 … TI 영업 담당자에게 문의하십시오. 1970 년에 74181을 작업했던 노년층 중 한 명과 연락 할 수있을 것입니다. ' s.

답변

이것은 오래된 질문이라는 것을 알고 있지만 최근에 74181을 리버스 엔지니어링했으며 왜 기능이 있는지 자세히 설명 할 수 있습니다.

74181은 피연산자 A와 B에서 16 개의 논리 함수와 16 개의 산술 함수를 제공하는 4 비트 ALU 칩입니다. 많은 논리 함수는 예상 할 수있는 것입니다 (AND, OR, XOR), 그러나 A OR NOT B와 같은 특이한 것도 있습니다. 산술 함수는 더 이상합니다. A PLUS B와 A MINUS B가 있지만 (A OR B) PLUS (A AND NOT B)와 같은 일부는 매우 무작위로 보입니다.

실제로 이러한 일련의 작업에는 이유가 있습니다. 논리 함수는 16 개의 부울 함수 f (A, B)를 모두 제공합니다. 산술 함수는 모두 A PLUS f (A, B) PLUS 캐리 인으로 요약됩니다.

16 개가있는 이유를 보려면 뒤로 물러서십시오. 1 비트 입력에 부울 함수 f (A, B)가있는 경우 진리표에 4 개의 행이 있습니다. 각 행은 0 또는 1을 출력 할 수 있습니다. 따라서 2 ^ 4 = 16 개의 가능한 함수가 있습니다. 4 비트로, 그리고 이것은 사소한 0과 1에서 A AND B와 같은 예상 논리, NOT A AND B와 같은 인위적인 연산에 이르기까지 74181의 정확히 16 개의 논리 함수입니다.

산술 함수는 다음과 같습니다. 기내 반입이 추가 된 A에 16 개의 기능이 추가되었습니다. 예를 들어 f (A, B) = B 인 경우 A PLUS B PLUS 기내 반입을받습니다. f (A, B) = NOT B 인 경우 A PLUS를받습니다. NOT B PLUS 캐리 인. 2 “s- 보완 논리에서 A MINUS B MINUS 1 PLUS 캐리 인으로 바뀝니다.

기타 산술 fu nction은 좀 더 분석이 필요합니다. f (A, B) = NOT (A OR B)이라고 가정합니다. 그러면 A PLUS f (A, B)의 각 비트는 A가 0이고 B가 1 인 경우를 제외하고 항상 1이됩니다. 따라서 결과는 A OR NOT B입니다. 덧셈을 수행하더라도 결과는 a 논리 함수입니다. 다른 이상한 산술 함수도 비슷하게 설명 할 수 있습니다.

한 가지 주목할 점은 A PLUS A가 왼쪽 시프트를 제공하지만 74181에서는 오른쪽 시프트를 수행 할 방법이 없다는 것입니다.

이 구현에서 74181에는 16 개의 f (A, B) 함수 중 사용되는 것을 선택하는 4 개의 선택 라인이 있습니다. 칩 회로의 전반부는 f (A, B)를 사용하여 A의 1 비트 합 4 개를 계산합니다. (특히 carry lookahead . 이렇게하면 74181이 리플 캐리를 사용하는 대신 병렬로 작동 할 수 있습니다.) 칩 회로의 후반부는 모든 캐리를 병렬로 생성하고 최종 합계를 계산합니다.

내부적으로, 논리 기능은 M 라인에 의해 강제로 높은 내부 캐리를 모두 추가하여 구현됩니다. 모든 캐리와 함께 A PLUS f (A, B). 이것이 여전히 16 개의 고유 한 논리 함수를 생성한다는 것을 확인하는 것은 간단합니다. 그러나 순서를 바꾸므로 데이터 시트를 보면 논리 함수와 산술 함수 사이에 명확한 연결이 없습니다.

74181 “의 내부를 이해하려면 먼저 2 년 전에 나온 7483 4 비트 가산기를 살펴보세요. 동일한 캐리 계산 기술이지만 32가 아닌 하나의 기능을 제공하므로 이해하기 더 쉽습니다. 74181은 7483의 일반화로 생각할 수 있습니다.

Answer

A minus B minus 1는 빼기에 사용되며 carry 플래그의 보완은 차용 플래그로 볼 수 있습니다.

Comments

  • 사실 AVR조차도 이것을 사용합니다-그들은 쉽게 하나를 다른 것으로 변환 할 수 있기 때문에 즉시 추가 명령 (즉시 빼기 만)이 없습니다. 두 값이 모두 레지스터에서 오는 경우 그럼 둘 다 b 및 add는 훌륭하고 빠르지 만 여전히 반드시 필요한 것은 아닙니다.
  • 예, stackoverflow.com/questions/1337831/

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다