ALU에서 다양한 함수 (예 : 더하기, 빼기 등)는 어떻게 구현됩니까?


9

ALU 가해 야 할 기능이 너무 많아서 어떻게 구현을 시작할 수 있을지 궁금합니다 (Logisim으로 MIPS 시스템을 구현하고 기본 게이트, 플립 플롭 등을 사용하여 MIPS 시스템을 구현 해야하는 숙제).

내가 혼란스러워하는 부분은 Add / Subtract / AND / OR / etc와 같은 다른 기능을 수행 할 수있는 ALU를 어떻게 구현할 수 있는지입니다. 더 많은 제어 로직이 필요합니까 (아래 "이전 할당"의 오른쪽 상단 참조).

이전 과제에서는 추가 / 빼기 / 부정을 수행 할 수있는 ALU를 구현했습니다. 이제 ALU가 다음과 같은 기능을 수행 할 수 있어야한다고 생각합니다.

나의 이전 과제

답변:


7

내부적으로 모든 답변을 계산 한 다음 mux를 사용하여 선택하는 것이 효과적이지만 최소한의 디자인은 아닙니다.

문제를 비트 슬라이스 할 수 있다고 생각하십시오. 두 개의 8 비트 입력을 갖는 단일 논리 블록 대신, 정확한 전체 결과를 얻기 위해 이들을 링크 할 수있는 한 이것을 두 개의 4 비트 섹션으로 분할 할 수 있습니다. 다행히도 슬라이스를 연결하는 것이 단일 비트보다 나쁘지 않으며 추가의 경우 캐리 비트를 나타냅니다. 따라서 각 4 비트 슬라이스에는 캐리 비트와 캐리 비트가 있습니다. (AND 및 NOR과 같은 논리는 이것을 필요로하지 않지만, 나중에 왼쪽 / 오른쪽 시프트를 구현하는 경우이 비트는 쉽게 용도가 변경됩니다).

극단적으로 수행하면 각각 1 비트의 8 조각을 사용할 수 있습니다. 1 비트 슬라이스에 대해 생각하면 유용합니다. 더 큰 슬라이스로 확장되는 접근 방식에 대해 더 쉽게 생각할 수 있기 때문입니다. 따라서 1 비트 슬라이스를 사용하면 4 비트 기능 코드, 입력 A의 비트, 입력 B의 비트 및 캐리 비트와 같은 7 개의 입력 만 있습니다. 또한 기능 출력과 수행이라는 두 가지 출력 만 있습니다. 따라서 이제는 단지 7 개의 입력으로 2 개의 출력 기능을 작성할 수 있습니다. 이는 단지 인적 능력의 범위 내에서 합리적으로 줄어 듭니다. 항상 모든 기능을 계산할 필요는없는 소수의 게이트로 끝날 것입니다. 그러나 슬라이스 에서 발생하는 문제는 중요하지 않으며 외부에서 볼 때 올바른 결과를 생성합니다.

이제 몇 가지 방법으로 갈 수 있습니다. 한 가지 방법은이 1 비트 슬라이스 중 8 개를 사용하는 것입니다. 또 다른 방법은 더 큰 슬라이스를 만든 다음 사용하는 것입니다. 1 비트에서 2 비트로 이동하면 방정식은 7 개의 입력에서 9로 이동하며 4 비트에는 13 개의 입력 함수가 필요합니다. 반드시 쉬운 것은 아니지만 컴퓨팅-모든-mux 접근법보다 더 컴팩트 한 결과를 제공합니다. 또한 74181 4 비트 ALU 슬라이스의 내부를 보면 거기에 mux가 표시되지 않습니다.


나는 스펙트럼의 끝에서 "쉽게 시작할 수있는"끝에서 내 대답을 더 많이 목표로 삼고 있었지만보다 최적의 (하드웨어 방식) 가능성을 지적 해 주셔서 감사합니다.
Martin Thompson

5

예, 더 많은 제어 로직이 필요합니다.

이전 과제는 순수하게 산술적 이었습니다 (단어입니까?). 따라서 단일 가산기를 사용하고 원하는 신호를 생성하기 위해 제어 신호를 사용하여 입력을 마사지 할 수 있습니다

새로운 기능은 논리적 이므로 논리적 작업을 수행하려면 다른 블록이 필요합니다. 제어 신호는이 블록의 기능을 변경합니다.

그런 다음 다이어그램의 맨 아래에는 제어 신호에 의해 구동되는 멀티플렉서 (때때로 'mux'라고도 함)가 필요합니다. 또는 논리 연산자의 것).

ALU 제어 라인에 대해 새로운 인코딩을 선택할 수 있다면 MSB를 "산술 / 논리"선택으로 사용하고 다른 것은 "부 기능"을 선택하는 것이 좋습니다. 최종 mux.


네, 산술 은 단어입니다 :)
Majenko

1
나에게 산술 은 당신이 원하는 단어입니다. 이 단어는 세 번째 음절에 악센트가 있습니다. 두 번째 음절의 악센트가 있으면 초등학교에서 배우는 기본 수치 연산을 수행하는 메커니즘을 나타내는 다른 단어입니다.
Olin Lathrop

1

논리 연산을 처리하는 좋은 방법 중 하나는 두 피연산자의 비트를 4 입력 멀티플렉서에 대한 선택기 입력으로 사용하고 원하는 연산에 해당하는 멀티플렉서의 "데이터"입력에 4 비트 패턴을 공급하는 것입니다 (일반적으로 8 비트 ALU의 경우, 각 비트 당 하나씩 8 개의 멀티플렉서가 있으며 8 개의 멀티플렉서의 "데이터"입력은 서로 연결됩니다.


멀티플렉서를 아주 작은 ROM으로 사용하는 것도 실제 ROM을 사용하는 또 다른 방법입니다.
JustJeff

Nx1 비트 ROM은 "데이터"입력이 배선 된 멀티플렉서입니다. 내가 설명한 시나리오에서 멀티플렉서의 "데이터"입력은 운영자 선택입니다. 실제로, 작은 ROM을 사용하여 가능한 16 개의 논리 연산 중 일부와 3 또는 4 비트 opcode에서 다른 일부 연산을 선택할 수 있습니다 (원하는 경우 opcode를 통해 opcode가 유용한 논리 연산을 생성하지 않는 경우 다른 멀티플렉서를 사용하여 다른 연산을 선택하십시오.
supercat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.