Các hàm khác nhau (ví dụ: cộng, trừ và, v.v.) được triển khai trong ALU như thế nào?


9

Tôi tự hỏi vì có rất nhiều chức năng mà ALU cần phải thực hiện, làm thế nào tôi có thể bắt đầu thực hiện một chức năng (bài tập về nhà mà tôi phải triển khai hệ thống MIPS với Logisim, sử dụng Gates cơ bản, Flip-flops, v.v.).

Phần tôi bối rối là làm thế nào tôi có thể thực hiện ALU có thể thực hiện các chức năng khác nhau như Thêm / Trừ / VÀ / HOẶC / v.v. Tôi có cần kiểm soát logic nhiều hơn không (xem trên cùng bên phải trong "gán trước" bên dưới).

Trong một nhiệm vụ trước, tôi đã triển khai ALU có thể thực hiện Thêm / Trừ / Phủ định. Bây giờ tôi nghĩ ALU sẽ có thể thực hiện các chức năng như

Nhiệm vụ trước của tôi

Câu trả lời:


7

Trong khi tính toán nội bộ tất cả các câu trả lời, và sau đó sử dụng một mux để chọn trong số chúng sẽ hoạt động, nó chắc chắn không phải là một thiết kế tối thiểu.

Hãy xem xét rằng bạn có thể cắt lát vấn đề; thay vì một khối logic duy nhất với hai đầu vào 8 bit, bạn có thể phân vùng này thành hai phần 4 bit, miễn là bạn có thể liên kết chúng để có kết quả tổng thể chính xác. May mắn thay, liên kết các lát không tệ hơn một bit, trong trường hợp bổ sung đại diện cho bit mang. Vì vậy, mỗi lát 4 bit có một bit mang và một bit mang ra. (Lưu ý rằng các logic như AND và NOR thậm chí sẽ không cần điều này, mặc dù nếu sau này bạn thực hiện dịch chuyển trái / phải, bit này dễ dàng được lọc lại).

Mang đến một thái cực, bạn có thể sử dụng 8 lát mỗi bit 1 bit. Thật hữu ích khi nghĩ về các lát 1 bit, bởi vì nó giúp dễ dàng hơn khi nghĩ về một cách tiếp cận chia tỷ lệ thành các lát lớn hơn. Vì vậy, với lát 1 bit, bạn chỉ có 7 đầu vào: mã chức năng 4 bit, một bit từ đầu vào A, một bit từ đầu vào B và một bit mang theo. Bạn cũng chỉ có hai kết quả đầu ra: thực hiện chức năng và thực hiện. Vì vậy, bây giờ bạn có thể viết hai hàm đầu ra theo chỉ 7 đầu vào, nằm trong khả năng của con người để giảm một cách hợp lý. Bạn sẽ kết thúc với một số cổng không nhất thiết phải luôn tính toán tất cả các hàm, nhưng không có vấn đề gì xảy ra trong lát cắt, chỉ là nó tạo ra kết quả chính xác khi nhìn từ bên ngoài.

Bây giờ bạn có thể đi một vài cách. Một cách đơn giản là sử dụng 8 trong số các lát 1 bit này và bạn đã hoàn thành. Một cách khác là tạo ra những lát lớn hơn và sau đó sử dụng chúng. Đi từ 1 bit đến 2 bit, các phương trình đi từ 7 đầu vào đến 9 và 4 bit sẽ yêu cầu chức năng của 13 đầu vào. Nó không hẳn là dễ dàng, nhưng sẽ cho kết quả nhỏ gọn hơn so với phương pháp tính toán mọi thứ-sau đó. Ngoài ra, nếu bạn nhìn vào phần bên trong của lát ALU 74181 4 bit, bạn sẽ không thấy mux trong đó.


Tôi đã nhắm mục tiêu câu trả lời của mình nhiều hơn vào phần "dễ dàng để bắt đầu với" kết thúc phổ, nhưng cảm ơn vì đã chỉ ra một khả năng tối ưu hơn (thông minh về phần cứng).
Martin Thompson

5

Có, bạn cần logic điều khiển nhiều hơn.

Nhiệm vụ trước của bạn hoàn toàn là đối xứng (đó có phải là một từ không?), Vì vậy bạn có thể sử dụng một bộ cộng duy nhất và xoa bóp các đầu vào bằng các tín hiệu điều khiển để tạo ra các chức năng bạn muốn

Các chức năng mới của bạn là logic , vì vậy bạn cần một khối khác để thực hiện các hoạt động logic. Các tín hiệu điều khiển sẽ thay đổi chức năng của khối này.

Sau đó, ở dưới cùng của sơ đồ của bạn, bạn sẽ cần một bộ ghép kênh (đôi khi được gọi là 'mux') được điều khiển bởi các tín hiệu điều khiển để chọn câu trả lời nào bạn sẽ đưa ra (câu trả lời từ bộ cộng và đó là mạch "tạo khối đầu vào" hoặc một từ toán tử logic).

Nếu bạn có thể chọn mã hóa mới cho các dòng điều khiển ALU của mình, tôi có thể muốn sử dụng MSB làm lựa chọn "số học / logic" và các loại khác để chọn "hàm con" nếu điều đó hợp lý, vì nó đơn giản hóa việc giải mã cho mux cuối cùng.


Vâng, số học là một từ :)
Majenko

1
Dường như với tôi chỉ là số học là từ bạn muốn. Lưu ý từ này có trọng âm ở âm tiết thứ ba. Với trọng âm ở âm tiết thứ hai, đó là một từ khác để chỉ các cơ chế thực hiện các thao tác số cơ bản như bạn học ở trường phổ thông.
Olin Lathrop

1

Một cách tiếp cận tốt để xử lý các hoạt động logic là để các bit của hai toán hạng đóng vai trò là đầu vào bộ chọn cho bộ ghép kênh 4 đầu vào và cung cấp cho các đầu vào "dữ liệu" của bộ ghép kênh một mẫu bốn bit tương ứng với hoạt động mong muốn (thường là trong một ALU 8 bit, sẽ có tám bộ ghép kênh - một cho mỗi bit - và đầu vào "dữ liệu" của tất cả 8 bộ ghép kênh sẽ được gắn với nhau).


loại sử dụng bộ ghép kênh như một ROM rất nhỏ - và đó là một cách khác để sử dụng ROM thực tế.
JustJeff

ROM Nx1-bit là bộ ghép kênh có đầu vào "dữ liệu" có dây cứng. Trong kịch bản tôi đã mô tả, các đầu vào "dữ liệu" của bộ ghép kênh sẽ là một toán tử chọn. Trong thực tế, người ta có thể sẽ sử dụng một ROM nhỏ để chọn một vài trong số 16 thao tác logic có thể có, cộng với một vài thao tác khác, từ opcode 3 hoặc 4 bit (nếu muốn, có thể chuyển trực tiếp opcode sang đơn vị logic, nhưng sử dụng các bộ ghép kênh khác để chọn các hoạt động khác trong trường hợp opcode sẽ không tạo ra một hoạt động logic hữu ích).
năm11
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.